ETH Price: $3,158.01 (+2.85%)
Gas: 1 Gwei

Contract

0xB0af4D5b1D0cd3F3859d27191f52852568F7a146
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer189462302024-01-06 5:53:59189 days ago1704520439IN
0xB0af4D5b...568F7a146
0 ETH0.0012163317.60558241
Approve180896942023-09-08 5:43:47309 days ago1694151827IN
0xB0af4D5b...568F7a146
0 ETH0.0005158311.08249764
Approve179838542023-08-24 10:05:47324 days ago1692871547IN
0xB0af4D5b...568F7a146
0 ETH0.000866118.70924543
Approve179838252023-08-24 9:59:59324 days ago1692871199IN
0xB0af4D5b...568F7a146
0 ETH0.0008162417.63214082
Approve179838112023-08-24 9:57:11324 days ago1692871031IN
0xB0af4D5b...568F7a146
0 ETH0.000768916.6096014
Approve179838002023-08-24 9:54:59324 days ago1692870899IN
0xB0af4D5b...568F7a146
0 ETH0.0007671816.57233265
Approve179837892023-08-24 9:52:47324 days ago1692870767IN
0xB0af4D5b...568F7a146
0 ETH0.000794617.1646059
Approve179464612023-08-19 4:32:11329 days ago1692419531IN
0xB0af4D5b...568F7a146
0 ETH0.000666414.39539783
Approve178658822023-08-07 21:58:23340 days ago1691445503IN
0xB0af4D5b...568F7a146
0 ETH0.0011301624.2811184
Approve178201672023-08-01 12:31:11346 days ago1690893071IN
0xB0af4D5b...568F7a146
0 ETH0.0008712818.83576176
Approve178142522023-07-31 16:42:11347 days ago1690821731IN
0xB0af4D5b...568F7a146
0 ETH0.0019774642.48510164
Approve178033662023-07-30 4:08:23349 days ago1690690103IN
0xB0af4D5b...568F7a146
0 ETH0.000672614.54065411
Transfer177886772023-07-28 2:49:11351 days ago1690512551IN
0xB0af4D5b...568F7a146
0 ETH0.00100122.14611845
Approve177886512023-07-28 2:43:59351 days ago1690512239IN
0xB0af4D5b...568F7a146
0 ETH0.0010501322.53270695
Approve177174312023-07-18 3:25:59361 days ago1689650759IN
0xB0af4D5b...568F7a146
0 ETH0.0006291913.500611
Approve177071662023-07-16 16:54:23362 days ago1689526463IN
0xB0af4D5b...568F7a146
0 ETH0.0006786814.56255611
Approve176997602023-07-15 15:48:35363 days ago1689436115IN
0xB0af4D5b...568F7a146
0 ETH0.0008137417.48307112
Approve176864632023-07-13 18:49:35365 days ago1689274175IN
0xB0af4D5b...568F7a146
0 ETH0.0026447357.13038834
Approve176857282023-07-13 16:21:23365 days ago1689265283IN
0xB0af4D5b...568F7a146
0 ETH0.0043387693.21656638
Approve176807642023-07-12 23:32:59366 days ago1689204779IN
0xB0af4D5b...568F7a146
0 ETH0.0008311617.94523056
Approve176798442023-07-12 20:27:11366 days ago1689193631IN
0xB0af4D5b...568F7a146
0 ETH0.002781559.68261786
Approve176798402023-07-12 20:26:23366 days ago1689193583IN
0xB0af4D5b...568F7a146
0 ETH0.0015643233.56565705
Approve176798172023-07-12 20:21:47366 days ago1689193307IN
0xB0af4D5b...568F7a146
0 ETH0.002681957.54536082
Approve176798142023-07-12 20:21:11366 days ago1689193271IN
0xB0af4D5b...568F7a146
0 ETH0.0023768551
Approve176403032023-07-07 6:59:59372 days ago1688713199IN
0xB0af4D5b...568F7a146
0 ETH0.0009096119.6490792
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
175036152023-06-18 2:11:47391 days ago1687054307
0xB0af4D5b...568F7a146
0.00870415 ETH
175036152023-06-18 2:11:47391 days ago1687054307
0xB0af4D5b...568F7a146
0.00870415 ETH
175033452023-06-18 1:17:35391 days ago1687051055
0xB0af4D5b...568F7a146
0.01295826 ETH
175033452023-06-18 1:17:35391 days ago1687051055
0xB0af4D5b...568F7a146
0.01295826 ETH
175006422023-06-17 16:12:47391 days ago1687018367
0xB0af4D5b...568F7a146
0.01219536 ETH
175006422023-06-17 16:12:47391 days ago1687018367
0xB0af4D5b...568F7a146
0.01219536 ETH
174944482023-06-16 19:23:11392 days ago1686943391
0xB0af4D5b...568F7a146
0.01531352 ETH
174944482023-06-16 19:23:11392 days ago1686943391
0xB0af4D5b...568F7a146
0.01531352 ETH
174930162023-06-16 14:33:35392 days ago1686926015
0xB0af4D5b...568F7a146
0.01042577 ETH
174930162023-06-16 14:33:35392 days ago1686926015
0xB0af4D5b...568F7a146
0.01042577 ETH
174870962023-06-15 18:36:11393 days ago1686854171
0xB0af4D5b...568F7a146
0.00928257 ETH
174870962023-06-15 18:36:11393 days ago1686854171
0xB0af4D5b...568F7a146
0.00928257 ETH
174865372023-06-15 16:42:35393 days ago1686847355
0xB0af4D5b...568F7a146
0.01344615 ETH
174865372023-06-15 16:42:35393 days ago1686847355
0xB0af4D5b...568F7a146
0.01344615 ETH
174854692023-06-15 13:06:35393 days ago1686834395
0xB0af4D5b...568F7a146
0.01493908 ETH
174854692023-06-15 13:06:35393 days ago1686834395
0xB0af4D5b...568F7a146
0.01493908 ETH
174827512023-06-15 3:54:23394 days ago1686801263
0xB0af4D5b...568F7a146
0.01251452 ETH
174827512023-06-15 3:54:23394 days ago1686801263
0xB0af4D5b...568F7a146
0.01251452 ETH
174817712023-06-15 0:36:23394 days ago1686789383
0xB0af4D5b...568F7a146
0.01175328 ETH
174817712023-06-15 0:36:23394 days ago1686789383
0xB0af4D5b...568F7a146
0.01175328 ETH
174798992023-06-14 18:17:11394 days ago1686766631
0xB0af4D5b...568F7a146
0.00670168 ETH
174798992023-06-14 18:17:11394 days ago1686766631
0xB0af4D5b...568F7a146
0.00670168 ETH
174769632023-06-14 8:21:11395 days ago1686730871
0xB0af4D5b...568F7a146
0.00671999 ETH
174769632023-06-14 8:21:11395 days ago1686730871
0xB0af4D5b...568F7a146
0.00671999 ETH
174756582023-06-14 3:56:11395 days ago1686714971
0xB0af4D5b...568F7a146
0.00860877 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MrMowser

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-13
*/

// SPDX-License-Identifier: MIT
/*
 * https://t.me/mrmowser
 * 
 * https://twitter.com/mrmowserbot
 * 
 * https://mrmowser.com/
 */

pragma solidity ^0.8.18;

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

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

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

	function WETH() external pure returns (address);

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

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

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

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

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {
	function name() external view returns (string memory);
	function symbol() external view returns (string memory);
	function decimals() external view returns (uint8);
}

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) {
		// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
		// benefit is lost if 'b' is also tested.
		// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
		if (a == 0) {
			return 0;
		}

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

		return c;
	}

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

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

		return c;
	}

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) internal {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
	using SafeMath for uint256;

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

	uint256 private _totalSupply;
	string private _name;
	string private _symbol;

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

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

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

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

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

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

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

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

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

	function transferFrom(
		address sender,
		address recipient,
		uint256 amount
	) public virtual override returns (bool) {
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
		return true;
	}

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

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

	function _transfer(
		address sender,
		address recipient,
		uint256 amount
	) internal virtual {
		require(sender != address(0), "ERC20: transfer from the zero address");
		require(recipient != address(0), "ERC20: transfer to the zero address");
		_beforeTokenTransfer(sender, recipient, amount);
		_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
		_balances[recipient] = _balances[recipient].add(amount);
		emit Transfer(sender, recipient, amount);
	}

	function _mint(address account, uint256 amount) internal virtual {
		require(account != address(0), "ERC20: mint to the zero address");
		_beforeTokenTransfer(address(0), account, amount);
		_totalSupply = _totalSupply.add(amount);
		_balances[account] = _balances[account].add(amount);
		emit Transfer(address(0), account, amount);
	}

	function _burn(address account, uint256 amount) internal virtual {
		require(account != address(0), "ERC20: burn from the zero address");
		_beforeTokenTransfer(account, address(0), amount);
		_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
		_totalSupply = _totalSupply.sub(amount);
		emit Transfer(account, address(0), amount);
	}

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

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

contract MrMowser is ERC20, Ownable {
    IRouter public uniswapV2Router;
    address public immutable uniswapV2Pair;

    string private constant _name = "Mr.Mowser";
    string private constant _symbol = "MOW";
    uint8 private constant _decimals = 18;

    // initialSupply
    uint256 constant initialSupply = 1_000_000_000 * (10**_decimals);

    bool private _swapping;
    uint256 public minimumTokensBeforeSwap = initialSupply * 25 / 100000;

    address public taxWallet;

    struct CustomTaxPeriod {
        bytes23 periodName;
        uint8 blocksInPeriod;
        uint256 timeInPeriod;
        uint8 taxFeeOnBuy;
        uint8 taxFeeOnSell;
    }

    // Base taxes
    CustomTaxPeriod private _base = CustomTaxPeriod('base',0,0,20,40);

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) public automatedMarketMakerPairs;

    uint8 private _taxFee;
    uint8 private _totalFee;

    event AutomatedMarketMakerPairChange(address indexed pair, bool indexed value);
    event UniswapV2RouterChange(address indexed newAddress, address indexed oldAddress);
    event WalletChange(string indexed indentifier, address indexed newWallet, address indexed oldWallet);
    event FeeChange(string indexed identifier, uint8 taxFee);
    event CustomTaxPeriodChange(uint256 indexed newValue, uint256 indexed oldValue, string indexed taxType, bytes23 period);
    event MaxTransactionAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
    event MaxWalletAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
    event AllowedWhenTradingDisabledChange(address indexed account, bool isExcluded);
    event ExcludeFromFeesChange(address indexed account, bool isExcluded);
    event ExcludeFromMaxTransferChange(address indexed account, bool isExcluded);
    event ExcludeFromMaxWalletChange(address indexed account, bool isExcluded);
    event MinTokenAmountBeforeSwapChange(uint256 indexed newValue, uint256 indexed oldValue);
    event Swap(uint256 tokensSwapped, uint256 ethReceived,uint256 tokensIntoLiqudity);
    event FeeOnSelectedWalletTransfersChange(address indexed account, bool newValue);
    event ClaimETHOverflow(uint256 amount);
    event FeesApplied(uint8 taxFee, uint256 totalFee);

    constructor() ERC20(_name, _symbol) {
        taxWallet = 0xa0F1d851Ade6e52C4D0aE137d48a177bF09c26ab;

        IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Mainnet
        address _uniswapV2Pair = IFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

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

        _mint(owner(), initialSupply);
    }

    receive() external payable {}

    // Setters
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Mr.Mowser: Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit AutomatedMarketMakerPairChange(pair, value);
    }
    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFee[account] != excluded, "Mr.Mowser: Account is already the value of 'excluded'");
        _isExcludedFromFee[account] = excluded;
        emit ExcludeFromFeesChange(account, excluded);
    }
    function setWallets(address newtaxWallet) external onlyOwner {
        if(taxWallet != newtaxWallet) {
            require(newtaxWallet != address(0), "Mr.Mowser: The taxWallet cannot be 0");
            emit WalletChange('taxWallet', newtaxWallet, taxWallet);
            taxWallet = newtaxWallet;
        }
    }
    // Base fees
    function setFeesOnBuy(uint8 _taxFeeOnBuy) external onlyOwner {
        _setCustomBuyTaxPeriod(_base, _taxFeeOnBuy);
        emit FeeChange('baseFees-Buy', _taxFeeOnBuy);
    }
    function setFeesOnSell(uint8 _taxFeeOnSell) external onlyOwner {
        _setCustomSellTaxPeriod(_base, _taxFeeOnSell);
        emit FeeChange('baseFees-Sell', _taxFeeOnSell);
    }
    function setUniswapRouter(address newAddress) external onlyOwner {
        require(newAddress != address(uniswapV2Router), "Mr.Mowser: The router already has that address");
        emit UniswapV2RouterChange(newAddress, address(uniswapV2Router));
        uniswapV2Router = IRouter(newAddress);
    }
    function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
        require(newValue != minimumTokensBeforeSwap, "Mr.Mowser: Cannot update minimumTokensBeforeSwap to same value");
        emit MinTokenAmountBeforeSwapChange(newValue, minimumTokensBeforeSwap);
        minimumTokensBeforeSwap = newValue;
    }
    function claimETHOverflow() external onlyOwner {
        uint256 amount = address(this).balance;
        (bool success,) = address(owner()).call{value : amount}("");
        if (success){
            emit ClaimETHOverflow(amount);
        }
    }

    // Getters
    function getBaseBuyFees() external view returns (uint8) {
        return (_base.taxFeeOnBuy);
    }
    function getBaseSellFees() external view returns (uint8) {
        return (_base.taxFeeOnSell);
    }

    // Main
    function _transfer(
        address from,
        address to,
        uint256 amount
        ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        bool isBuyFromLp = automatedMarketMakerPairs[from];
        bool isSelltoLp = automatedMarketMakerPairs[to];

        _adjustTaxes(isBuyFromLp, isSelltoLp);
        bool canSwap = balanceOf(address(this)) >= minimumTokensBeforeSwap;

        if (
            canSwap &&
            !_swapping &&
            _totalFee > 0 &&
            automatedMarketMakerPairs[to]
        ) {
            _swapping = true;
            _swap();
            _swapping = false;
        }

        bool takeFee = !_swapping;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }

        if (takeFee && _totalFee > 0) {
            uint256 fee = amount * _totalFee / 100;
            amount = amount - fee;
            super._transfer(from, address(this), fee);
        }

        super._transfer(from, to, amount);
    }
    function _adjustTaxes(bool isBuyFromLp, bool isSelltoLp) private {
        _taxFee = 0;

        if (isBuyFromLp) {
            _taxFee = _base.taxFeeOnBuy;

        }
        if (isSelltoLp) {
            _taxFee = _base.taxFeeOnSell;
        }
        if (!isSelltoLp && !isBuyFromLp) {
            _taxFee = _base.taxFeeOnSell;
		}
        _totalFee = _taxFee;
        emit FeesApplied(_taxFee, _totalFee);
    }
    function _setCustomSellTaxPeriod(CustomTaxPeriod storage map,
        uint8 _taxFeeOnSell
        ) private {

        if (map.taxFeeOnSell != _taxFeeOnSell) {
            emit CustomTaxPeriodChange(_taxFeeOnSell, map.taxFeeOnSell, 'taxFeeOnSell', map.periodName);
            map.taxFeeOnSell = _taxFeeOnSell;
        }
    }
    function _setCustomBuyTaxPeriod(CustomTaxPeriod storage map,
        uint8 _taxFeeOnBuy
        ) private {
        if (map.taxFeeOnBuy != _taxFeeOnBuy) {
            emit CustomTaxPeriodChange(_taxFeeOnBuy, map.taxFeeOnBuy, 'taxFeeOnBuy', map.periodName);
            map.taxFeeOnBuy = _taxFeeOnBuy;
        }
    }
    function _swap() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 initialETHBalance = address(this).balance;
        uint8 _totalFeePrior = _totalFee;

        uint256 amountToSwap = contractBalance;

        _swapTokensForETH(amountToSwap);

        uint256 ETHBalanceAfterSwap = address(this).balance - initialETHBalance;
        uint256 totalETHFee = _totalFeePrior;
        uint256 amountETHtax = ETHBalanceAfterSwap * _taxFee / totalETHFee;

        payable(taxWallet).transfer(amountETHtax);

        _totalFee = _totalFeePrior;
    }

    function _swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"AllowedWhenTradingDisabledChange","type":"event"},{"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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"AutomatedMarketMakerPairChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimETHOverflow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"bytes23","name":"period","type":"bytes23"}],"name":"CustomTaxPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFeesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxTransferChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"identifier","type":"string"},{"indexed":false,"internalType":"uint8","name":"taxFee","type":"uint8"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"newValue","type":"bool"}],"name":"FeeOnSelectedWalletTransfersChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"taxFee","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalFee","type":"uint256"}],"name":"FeesApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxTransactionAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxWalletAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MinTokenAmountBeforeSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"Swap","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UniswapV2RouterChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indentifier","type":"string"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"WalletChange","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimETHOverflow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBaseBuyFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSellFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_taxFeeOnBuy","type":"uint8"}],"name":"setFeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_taxFeeOnSell","type":"uint8"}],"name":"setFeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newtaxWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620186a0620000166012600a6200073e565b6200002690633b9aca0062000756565b6200003390601962000756565b6200003f919062000770565b6007556040805160a081018252636261736560e01b8152600060208201819052918101829052601460608201526028608090910152600980546001600160c01b031916636261736560981b179055600a55600b805461281461ffff19909116179055348015620000ae57600080fd5b506040518060400160405280600981526020016826b91726b7bbb9b2b960b91b815250604051806040016040528060038152602001624d4f5760e81b8152508160039081620000fe919062000837565b5060046200010d828262000837565b5050506200012a620001246200038460201b60201c565b62000388565b600880546001600160a01b03191673a0f1d851ade6e52c4d0ae137d48a177bf09c26ab1790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048083019260209291908290030181865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000903565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000903565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b4919062000903565b600680546001600160a01b0319166001600160a01b038581169190911790915581166080529050620002e8816001620003da565b6001600c6000620003016005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600c9092529020805490911660011790556200037c620003586005546001600160a01b031690565b620003666012600a6200073e565b6200037690633b9aca0062000756565b620004d6565b505062000944565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152600d602052604090205481151560ff909116151503620004825760405162461bcd60e51b815260206004820152604360248201527f4d722e4d6f777365723a204175746f6d61746564206d61726b6574206d616b6560448201527f72207061697220697320616c72656164792073657420746f20746861742076616064820152626c756560e81b608482015260a4015b60405180910390fd5b6001600160a01b0382166000818152600d6020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6001600160a01b0382166200052e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000479565b6002546200053d9082620005bf565b6002556001600160a01b038216600090815260208190526040902054620005659082620005bf565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b600080620005ce83856200092e565b905083811015620006225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000479565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006825781600019048211156200066657620006666200062b565b808516156200067457918102915b93841c939080029062000646565b509250929050565b6000826200069b5750600162000625565b81620006aa5750600062000625565b8160018114620006c35760028114620006ce57620006ee565b600191505062000625565b60ff841115620006e257620006e26200062b565b50506001821b62000625565b5060208310610133831016604e8410600b841016171562000713575081810a62000625565b6200071f838362000641565b80600019048211156200073657620007366200062b565b029392505050565b60006200074f60ff8416836200068a565b9392505050565b80820281158282048414176200062557620006256200062b565b6000826200078e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007be57607f821691505b602082108103620007df57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005ba57600081815260208120601f850160051c810160208610156200080e5750805b601f850160051c820191505b818110156200082f578281556001016200081a565b505050505050565b81516001600160401b0381111562000853576200085362000793565b6200086b81620008648454620007a9565b84620007e5565b602080601f831160018114620008a357600084156200088a5750858301515b600019600386901b1c1916600185901b1785556200082f565b600085815260208120601f198616915b82811015620008d457888601518255948401946001909101908401620008b3565b5085821015620008f35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200091657600080fd5b81516001600160a01b03811681146200062257600080fd5b808201808211156200062557620006256200062b565b608051611b6162000960600039600061030d0152611b616000f3fe6080604052600436106101bb5760003560e01c806395d89b41116100ec578063c02466681161008a578063dd62ed3e11610064578063dd62ed3e14610502578063eb50e70e14610548578063f2fde38b14610568578063fe0175351461058857600080fd5b8063c0246668146104b4578063cd43e228146104d4578063d2d7ad83146104ec57600080fd5b8063aee50b1e116100c6578063aee50b1e14610424578063b62496f514610444578063bea8c58314610474578063bea9849e1461049457600080fd5b806395d89b41146103cf578063a457c2d7146103e4578063a9059cbb1461040457600080fd5b8063395093511161015957806366164f6f1161013357806366164f6f1461035157806370a0823114610366578063715018a61461039c5780638da5cb5b146103b157600080fd5b806339509351146102db57806349bd5a5e146102fb57806353e74ddc1461032f57600080fd5b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102795780632dc0562d14610299578063313ce567146102b957600080fd5b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6105a5565b6040516101e99190611713565b60405180910390f35b3480156101fe57600080fd5b5061021261020d366004611776565b610637565b60405190151581526020016101e9565b34801561022e57600080fd5b50600654610242906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b34801561026657600080fd5b506002545b6040519081526020016101e9565b34801561028557600080fd5b506102126102943660046117a2565b61064e565b3480156102a557600080fd5b50600854610242906001600160a01b031681565b3480156102c557600080fd5b5060125b60405160ff90911681526020016101e9565b3480156102e757600080fd5b506102126102f6366004611776565b6106b7565b34801561030757600080fd5b506102427f000000000000000000000000000000000000000000000000000000000000000081565b34801561033b57600080fd5b5061034f61034a3660046117e3565b6106ed565b005b34801561035d57600080fd5b5061034f610784565b34801561037257600080fd5b5061026b610381366004611806565b6001600160a01b031660009081526020819052604090205490565b3480156103a857600080fd5b5061034f610855565b3480156103bd57600080fd5b506005546001600160a01b0316610242565b3480156103db57600080fd5b506101dc61088b565b3480156103f057600080fd5b506102126103ff366004611776565b61089a565b34801561041057600080fd5b5061021261041f366004611776565b6108e9565b34801561043057600080fd5b5061034f61043f366004611823565b6108f6565b34801561045057600080fd5b5061021261045f366004611806565b600d6020526000908152604090205460ff1681565b34801561048057600080fd5b5061034f61048f3660046117e3565b6109ca565b3480156104a057600080fd5b5061034f6104af366004611806565b610a1d565b3480156104c057600080fd5b5061034f6104cf36600461183c565b610b19565b3480156104e057600080fd5b50600b5460ff166102c9565b3480156104f857600080fd5b5061026b60075481565b34801561050e57600080fd5b5061026b61051d36600461187a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561055457600080fd5b5061034f610563366004611806565b610c30565b34801561057457600080fd5b5061034f610583366004611806565b610d47565b34801561059457600080fd5b50600b54610100900460ff166102c9565b6060600380546105b4906118a8565b80601f01602080910402602001604051908101604052809291908181526020018280546105e0906118a8565b801561062d5780601f106106025761010080835404028352916020019161062d565b820191906000526020600020905b81548152906001019060200180831161061057829003601f168201915b5050505050905090565b6000610644338484610ddf565b5060015b92915050565b600061065b848484610f04565b6106ad84336106a885604051806060016040528060288152602001611adf602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906110f7565b610ddf565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106449185906106a89086611131565b6005546001600160a01b031633146107205760405162461bcd60e51b8152600401610717906118e2565b60405180910390fd5b61072b600982611197565b6040516b62617365466565732d42757960a01b8152600c015b60405190819003812060ff83168252907fcd92f5810a4dc7c5d85d79e82e3cb46e2e9957f91e402abeafda957bbf2021dd9060200160405180910390a250565b6005546001600160a01b031633146107ae5760405162461bcd60e51b8152600401610717906118e2565b4760006107c36005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811461080d576040519150601f19603f3d011682016040523d82523d6000602084013e610812565b606091505b505090508015610851576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6005546001600160a01b0316331461087f5760405162461bcd60e51b8152600401610717906118e2565b610889600061122e565b565b6060600480546105b4906118a8565b600061064433846106a885604051806060016040528060258152602001611b07602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906110f7565b6000610644338484610f04565b6005546001600160a01b031633146109205760405162461bcd60e51b8152600401610717906118e2565b60075481036109975760405162461bcd60e51b815260206004820152603e60248201527f4d722e4d6f777365723a2043616e6e6f7420757064617465206d696e696d756d60448201527f546f6b656e734265666f72655377617020746f2073616d652076616c756500006064820152608401610717565b60075460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600755565b6005546001600160a01b031633146109f45760405162461bcd60e51b8152600401610717906118e2565b6109ff600982611280565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01610744565b6005546001600160a01b03163314610a475760405162461bcd60e51b8152600401610717906118e2565b6006546001600160a01b0390811690821603610abc5760405162461bcd60e51b815260206004820152602e60248201527f4d722e4d6f777365723a2054686520726f7574657220616c726561647920686160448201526d732074686174206164647265737360901b6064820152608401610717565b6006546040516001600160a01b03918216918316907f2afbff3ed601a8723765c7072d8ea8445e08f6f1874afd34a2b747a272c3ebad90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b435760405162461bcd60e51b8152600401610717906118e2565b6001600160a01b0382166000908152600c602052604090205481151560ff909116151503610bd15760405162461bcd60e51b815260206004820152603560248201527f4d722e4d6f777365723a204163636f756e7420697320616c7265616479207468604482015274652076616c7565206f6620276578636c756465642760581b6064820152608401610717565b6001600160a01b0382166000818152600c6020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b910160405180910390a25050565b6005546001600160a01b03163314610c5a5760405162461bcd60e51b8152600401610717906118e2565b6008546001600160a01b03828116911614610d44576001600160a01b038116610cd15760405162461bcd60e51b8152602060048201526024808201527f4d722e4d6f777365723a205468652074617857616c6c65742063616e6e6f74206044820152630626520360e41b6064820152608401610717565b600854604051681d185e15d85b1b195d60ba1b81526001600160a01b0391821691831690600901604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600880546001600160a01b0319166001600160a01b0383161790555b50565b6005546001600160a01b03163314610d715760405162461bcd60e51b8152600401610717906118e2565b6001600160a01b038116610dd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610717565b610d448161122e565b6001600160a01b038316610e415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610717565b6001600160a01b038216610ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610717565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610f2a5760405162461bcd60e51b815260040161071790611917565b6001600160a01b038216610f505760405162461bcd60e51b81526004016107179061195c565b80600003610f6957610f6483836000611327565b505050565b6001600160a01b038084166000908152600d602052604080822054928516825290205460ff9182169116610f9d8282611430565b60075430600090815260208190526040902054108015908190610fca5750600654600160a01b900460ff16155b8015610fdf5750600e54610100900460ff1615155b801561100357506001600160a01b0385166000908152600d602052604090205460ff165b15611031576006805460ff60a01b1916600160a01b179055611023611501565b6006805460ff60a01b191690555b6006546001600160a01b0387166000908152600c602052604090205460ff600160a01b90920482161591168061107f57506001600160a01b0386166000908152600c602052604090205460ff165b15611088575060005b80801561109e5750600e54610100900460ff1615155b156110e357600e546000906064906110be90610100900460ff16886119b5565b6110c891906119cc565b90506110d481876119ee565b95506110e1883083611327565b505b6110ee878787611327565b50505050505050565b6000818484111561111b5760405162461bcd60e51b81526004016107179190611713565b50600061112884866119ee565b95945050505050565b60008061113e8385611a01565b9050838110156111905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610717565b9392505050565b600282015460ff828116911614610851576040516a7461784665654f6e42757960a81b8152600b016040519081900381206002840154845460481b68ffffffffffffffffff19168352909160ff918216918416907eedc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e9060200160405180910390a460028201805460ff831660ff199091161790555050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600282015460ff8281166101009092041614610851576040516b1d185e11995953db94d95b1b60a21b8152600c016040519081900381206002840154845460481b68ffffffffffffffffff19168352909160ff6101009092048216918416907eedc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e9060200160405180910390a460028201805460ff83166101000261ff00199091161790555050565b6001600160a01b03831661134d5760405162461bcd60e51b815260040161071790611917565b6001600160a01b0382166113735760405162461bcd60e51b81526004016107179061195c565b6113b081604051806060016040528060268152602001611ab9602691396001600160a01b03861660009081526020819052604090205491906110f7565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546113df9082611131565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ef7565b600e805460ff19169055811561145757600b54600e805460ff191660ff9092169190911790555b801561147a57600b54600e805461010090920460ff1660ff199092169190911790555b80158015611486575081155b156114a857600b54600e805461010090920460ff1660ff199092169190911790555b600e805460ff80821661010081810261ff00199094168417948590556040805194841690921784529093041660208201527f25fca78de77271b0dd487ed64ec4fd0e437d2ae82ae56ee31e6bbf339849288d9101610848565b30600090815260208190526040902054600e544790610100900460ff1682611528816115b9565b600061153484476119ee565b600e5490915060ff8085169160009183916115509116856119b5565b61155a91906119cc565b6008546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611595573d6000803e3d6000fd5b5050600e805460ff9095166101000261ff0019909516949094179093555050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115ee576115ee611a14565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166b9190611a2a565b8160018151811061167e5761167e611a14565b6001600160a01b0392831660209182029290920101526006546116a49130911684610ddf565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116dd908590600090869030904290600401611a47565b600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561174057858101830151858201604001528201611724565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d4457600080fd5b6000806040838503121561178957600080fd5b823561179481611761565b946020939093013593505050565b6000806000606084860312156117b757600080fd5b83356117c281611761565b925060208401356117d281611761565b929592945050506040919091013590565b6000602082840312156117f557600080fd5b813560ff8116811461119057600080fd5b60006020828403121561181857600080fd5b813561119081611761565b60006020828403121561183557600080fd5b5035919050565b6000806040838503121561184f57600080fd5b823561185a81611761565b91506020830135801515811461186f57600080fd5b809150509250929050565b6000806040838503121561188d57600080fd5b823561189881611761565b9150602083013561186f81611761565b600181811c908216806118bc57607f821691505b6020821081036118dc57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106485761064861199f565b6000826119e957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106485761064861199f565b808201808211156106485761064861199f565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a3c57600080fd5b815161119081611761565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a975784516001600160a01b031683529383019391830191600101611a72565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201423d5d629c35029e063a8a7070d8fc3949682011f3375833cddff661aa6e22c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806395d89b41116100ec578063c02466681161008a578063dd62ed3e11610064578063dd62ed3e14610502578063eb50e70e14610548578063f2fde38b14610568578063fe0175351461058857600080fd5b8063c0246668146104b4578063cd43e228146104d4578063d2d7ad83146104ec57600080fd5b8063aee50b1e116100c6578063aee50b1e14610424578063b62496f514610444578063bea8c58314610474578063bea9849e1461049457600080fd5b806395d89b41146103cf578063a457c2d7146103e4578063a9059cbb1461040457600080fd5b8063395093511161015957806366164f6f1161013357806366164f6f1461035157806370a0823114610366578063715018a61461039c5780638da5cb5b146103b157600080fd5b806339509351146102db57806349bd5a5e146102fb57806353e74ddc1461032f57600080fd5b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102795780632dc0562d14610299578063313ce567146102b957600080fd5b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6105a5565b6040516101e99190611713565b60405180910390f35b3480156101fe57600080fd5b5061021261020d366004611776565b610637565b60405190151581526020016101e9565b34801561022e57600080fd5b50600654610242906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b34801561026657600080fd5b506002545b6040519081526020016101e9565b34801561028557600080fd5b506102126102943660046117a2565b61064e565b3480156102a557600080fd5b50600854610242906001600160a01b031681565b3480156102c557600080fd5b5060125b60405160ff90911681526020016101e9565b3480156102e757600080fd5b506102126102f6366004611776565b6106b7565b34801561030757600080fd5b506102427f000000000000000000000000281da4742336062ad10acf552a4baaf28f664dec81565b34801561033b57600080fd5b5061034f61034a3660046117e3565b6106ed565b005b34801561035d57600080fd5b5061034f610784565b34801561037257600080fd5b5061026b610381366004611806565b6001600160a01b031660009081526020819052604090205490565b3480156103a857600080fd5b5061034f610855565b3480156103bd57600080fd5b506005546001600160a01b0316610242565b3480156103db57600080fd5b506101dc61088b565b3480156103f057600080fd5b506102126103ff366004611776565b61089a565b34801561041057600080fd5b5061021261041f366004611776565b6108e9565b34801561043057600080fd5b5061034f61043f366004611823565b6108f6565b34801561045057600080fd5b5061021261045f366004611806565b600d6020526000908152604090205460ff1681565b34801561048057600080fd5b5061034f61048f3660046117e3565b6109ca565b3480156104a057600080fd5b5061034f6104af366004611806565b610a1d565b3480156104c057600080fd5b5061034f6104cf36600461183c565b610b19565b3480156104e057600080fd5b50600b5460ff166102c9565b3480156104f857600080fd5b5061026b60075481565b34801561050e57600080fd5b5061026b61051d36600461187a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561055457600080fd5b5061034f610563366004611806565b610c30565b34801561057457600080fd5b5061034f610583366004611806565b610d47565b34801561059457600080fd5b50600b54610100900460ff166102c9565b6060600380546105b4906118a8565b80601f01602080910402602001604051908101604052809291908181526020018280546105e0906118a8565b801561062d5780601f106106025761010080835404028352916020019161062d565b820191906000526020600020905b81548152906001019060200180831161061057829003601f168201915b5050505050905090565b6000610644338484610ddf565b5060015b92915050565b600061065b848484610f04565b6106ad84336106a885604051806060016040528060288152602001611adf602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906110f7565b610ddf565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106449185906106a89086611131565b6005546001600160a01b031633146107205760405162461bcd60e51b8152600401610717906118e2565b60405180910390fd5b61072b600982611197565b6040516b62617365466565732d42757960a01b8152600c015b60405190819003812060ff83168252907fcd92f5810a4dc7c5d85d79e82e3cb46e2e9957f91e402abeafda957bbf2021dd9060200160405180910390a250565b6005546001600160a01b031633146107ae5760405162461bcd60e51b8152600401610717906118e2565b4760006107c36005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811461080d576040519150601f19603f3d011682016040523d82523d6000602084013e610812565b606091505b505090508015610851576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6005546001600160a01b0316331461087f5760405162461bcd60e51b8152600401610717906118e2565b610889600061122e565b565b6060600480546105b4906118a8565b600061064433846106a885604051806060016040528060258152602001611b07602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906110f7565b6000610644338484610f04565b6005546001600160a01b031633146109205760405162461bcd60e51b8152600401610717906118e2565b60075481036109975760405162461bcd60e51b815260206004820152603e60248201527f4d722e4d6f777365723a2043616e6e6f7420757064617465206d696e696d756d60448201527f546f6b656e734265666f72655377617020746f2073616d652076616c756500006064820152608401610717565b60075460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600755565b6005546001600160a01b031633146109f45760405162461bcd60e51b8152600401610717906118e2565b6109ff600982611280565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01610744565b6005546001600160a01b03163314610a475760405162461bcd60e51b8152600401610717906118e2565b6006546001600160a01b0390811690821603610abc5760405162461bcd60e51b815260206004820152602e60248201527f4d722e4d6f777365723a2054686520726f7574657220616c726561647920686160448201526d732074686174206164647265737360901b6064820152608401610717565b6006546040516001600160a01b03918216918316907f2afbff3ed601a8723765c7072d8ea8445e08f6f1874afd34a2b747a272c3ebad90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b435760405162461bcd60e51b8152600401610717906118e2565b6001600160a01b0382166000908152600c602052604090205481151560ff909116151503610bd15760405162461bcd60e51b815260206004820152603560248201527f4d722e4d6f777365723a204163636f756e7420697320616c7265616479207468604482015274652076616c7565206f6620276578636c756465642760581b6064820152608401610717565b6001600160a01b0382166000818152600c6020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b910160405180910390a25050565b6005546001600160a01b03163314610c5a5760405162461bcd60e51b8152600401610717906118e2565b6008546001600160a01b03828116911614610d44576001600160a01b038116610cd15760405162461bcd60e51b8152602060048201526024808201527f4d722e4d6f777365723a205468652074617857616c6c65742063616e6e6f74206044820152630626520360e41b6064820152608401610717565b600854604051681d185e15d85b1b195d60ba1b81526001600160a01b0391821691831690600901604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600880546001600160a01b0319166001600160a01b0383161790555b50565b6005546001600160a01b03163314610d715760405162461bcd60e51b8152600401610717906118e2565b6001600160a01b038116610dd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610717565b610d448161122e565b6001600160a01b038316610e415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610717565b6001600160a01b038216610ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610717565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610f2a5760405162461bcd60e51b815260040161071790611917565b6001600160a01b038216610f505760405162461bcd60e51b81526004016107179061195c565b80600003610f6957610f6483836000611327565b505050565b6001600160a01b038084166000908152600d602052604080822054928516825290205460ff9182169116610f9d8282611430565b60075430600090815260208190526040902054108015908190610fca5750600654600160a01b900460ff16155b8015610fdf5750600e54610100900460ff1615155b801561100357506001600160a01b0385166000908152600d602052604090205460ff165b15611031576006805460ff60a01b1916600160a01b179055611023611501565b6006805460ff60a01b191690555b6006546001600160a01b0387166000908152600c602052604090205460ff600160a01b90920482161591168061107f57506001600160a01b0386166000908152600c602052604090205460ff165b15611088575060005b80801561109e5750600e54610100900460ff1615155b156110e357600e546000906064906110be90610100900460ff16886119b5565b6110c891906119cc565b90506110d481876119ee565b95506110e1883083611327565b505b6110ee878787611327565b50505050505050565b6000818484111561111b5760405162461bcd60e51b81526004016107179190611713565b50600061112884866119ee565b95945050505050565b60008061113e8385611a01565b9050838110156111905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610717565b9392505050565b600282015460ff828116911614610851576040516a7461784665654f6e42757960a81b8152600b016040519081900381206002840154845460481b68ffffffffffffffffff19168352909160ff918216918416907eedc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e9060200160405180910390a460028201805460ff831660ff199091161790555050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600282015460ff8281166101009092041614610851576040516b1d185e11995953db94d95b1b60a21b8152600c016040519081900381206002840154845460481b68ffffffffffffffffff19168352909160ff6101009092048216918416907eedc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e9060200160405180910390a460028201805460ff83166101000261ff00199091161790555050565b6001600160a01b03831661134d5760405162461bcd60e51b815260040161071790611917565b6001600160a01b0382166113735760405162461bcd60e51b81526004016107179061195c565b6113b081604051806060016040528060268152602001611ab9602691396001600160a01b03861660009081526020819052604090205491906110f7565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546113df9082611131565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ef7565b600e805460ff19169055811561145757600b54600e805460ff191660ff9092169190911790555b801561147a57600b54600e805461010090920460ff1660ff199092169190911790555b80158015611486575081155b156114a857600b54600e805461010090920460ff1660ff199092169190911790555b600e805460ff80821661010081810261ff00199094168417948590556040805194841690921784529093041660208201527f25fca78de77271b0dd487ed64ec4fd0e437d2ae82ae56ee31e6bbf339849288d9101610848565b30600090815260208190526040902054600e544790610100900460ff1682611528816115b9565b600061153484476119ee565b600e5490915060ff8085169160009183916115509116856119b5565b61155a91906119cc565b6008546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611595573d6000803e3d6000fd5b5050600e805460ff9095166101000261ff0019909516949094179093555050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115ee576115ee611a14565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166b9190611a2a565b8160018151811061167e5761167e611a14565b6001600160a01b0392831660209182029290920101526006546116a49130911684610ddf565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116dd908590600090869030904290600401611a47565b600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561174057858101830151858201604001528201611724565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d4457600080fd5b6000806040838503121561178957600080fd5b823561179481611761565b946020939093013593505050565b6000806000606084860312156117b757600080fd5b83356117c281611761565b925060208401356117d281611761565b929592945050506040919091013590565b6000602082840312156117f557600080fd5b813560ff8116811461119057600080fd5b60006020828403121561181857600080fd5b813561119081611761565b60006020828403121561183557600080fd5b5035919050565b6000806040838503121561184f57600080fd5b823561185a81611761565b91506020830135801515811461186f57600080fd5b809150509250929050565b6000806040838503121561188d57600080fd5b823561189881611761565b9150602083013561186f81611761565b600181811c908216806118bc57607f821691505b6020821081036118dc57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106485761064861199f565b6000826119e957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106485761064861199f565b808201808211156106485761064861199f565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a3c57600080fd5b815161119081611761565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a975784516001600160a01b031683529383019391830191600101611a72565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201423d5d629c35029e063a8a7070d8fc3949682011f3375833cddff661aa6e22c64736f6c63430008130033

Deployed Bytecode Sourcemap

8881:8991:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5421:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6245:154;;;;;;;;;;-1:-1:-1;6245:154:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6245:154:0;1023:187:1;8924:30:0;;;;;;;;;;-1:-1:-1;8924:30:0;;;;-1:-1:-1;;;;;8924:30:0;;;;;;-1:-1:-1;;;;;1393:32:1;;;1375:51;;1363:2;1348:18;8924:30:0;1215:217:1;5706:99:0;;;;;;;;;;-1:-1:-1;5788:12:0;;5706:99;;;1583:25:1;;;1571:2;1556:18;5706:99:0;1437:177:1;6404:313:0;;;;;;;;;;-1:-1:-1;6404:313:0;;;;;:::i;:::-;;:::i;9351:24::-;;;;;;;;;;-1:-1:-1;9351:24:0;;;;-1:-1:-1;;;;;9351:24:0;;;5617:84;;;;;;;;;;-1:-1:-1;5694:2:0;5617:84;;;2460:4:1;2448:17;;;2430:36;;2418:2;2403:18;5617:84:0;2288:184:1;6722:203:0;;;;;;;;;;-1:-1:-1;6722:203:0;;;;;:::i;:::-;;:::i;8961:38::-;;;;;;;;;;;;;;;12861:178;;;;;;;;;;-1:-1:-1;12861:178:0;;;;;:::i;:::-;;:::i;:::-;;13879:252;;;;;;;;;;;;;:::i;5810:118::-;;;;;;;;;;-1:-1:-1;5810:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;5905:18:0;5884:7;5905:18;;;;;;;;;;;;5810:118;4540:94;;;;;;;;;;;;;:::i;4317:87::-;;;;;;;;;;-1:-1:-1;4390:6:0;;-1:-1:-1;;;;;4390:6:0;4317:87;;5517:95;;;;;;;;;;;;;:::i;6930:254::-;;;;;;;;;;-1:-1:-1;6930:254:0;;;;;:::i;:::-;;:::i;5933:160::-;;;;;;;;;;-1:-1:-1;5933:160:0;;;;;:::i;:::-;;:::i;13545:328::-;;;;;;;;;;-1:-1:-1;13545:328:0;;;;;:::i;:::-;;:::i;9723:58::-;;;;;;;;;;-1:-1:-1;9723:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13045:184;;;;;;;;;;-1:-1:-1;13045:184:0;;;;;:::i;:::-;;:::i;13235:304::-;;;;;;;;;;-1:-1:-1;13235:304:0;;;;;:::i;:::-;;:::i;12206:305::-;;;;;;;;;;-1:-1:-1;12206:305:0;;;;;:::i;:::-;;:::i;14155:101::-;;;;;;;;;;-1:-1:-1;14230:17:0;;;;14155:101;;9274:68;;;;;;;;;;;;;;;;6098:142;;;;;;;;;;-1:-1:-1;6098:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;6208:18:0;;;6187:7;6208:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6098:142;12517:320;;;;;;;;;;-1:-1:-1;12517:320:0;;;;;:::i;:::-;;:::i;4642:192::-;;;;;;;;;;-1:-1:-1;4642:192:0;;;;;:::i;:::-;;:::i;14262:103::-;;;;;;;;;;-1:-1:-1;14338:18:0;;;;;;;14262:103;;5421:91;5475:13;5502:5;5495:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5421:91;:::o;6245:154::-;6328:4;6339:39;3839:10;6362:7;6371:6;6339:8;:39::i;:::-;-1:-1:-1;6390:4:0;6245:154;;;;;:::o;6404:313::-;6523:4;6534:36;6544:6;6552:9;6563:6;6534:9;:36::i;:::-;6575:121;6584:6;3839:10;6606:89;6644:6;6606:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6606:19:0;;;;;;:11;:19;;;;;;;;3839:10;6606:33;;;;;;;;;;:37;:89::i;:::-;6575:8;:121::i;:::-;-1:-1:-1;6708:4:0;6404:313;;;;;:::o;6722:203::-;3839:10;6810:4;6853:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6853:34:0;;;;;;;;;;6810:4;;6821:83;;6844:7;;6853:50;;6892:10;6853:38;:50::i;12861:178::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;;;;;;;;;12933:43:::1;12956:5;12963:12;12933:22;:43::i;:::-;12992:39;::::0;-1:-1:-1;;;4950:27:1;;5002:2;4993:12;12992:39:0::1;;::::0;;;;::::1;::::0;;2460:4:1;2448:17;;2430:36;;12992:39:0;::::1;::::0;2418:2:1;2403:18;12992:39:0::1;;;;;;;12861:178:::0;:::o;13879:252::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;13954:21:::1;13937:14;14012:7;4390:6:::0;;-1:-1:-1;;;;;4390:6:0;;4317:87;14012:7:::1;-1:-1:-1::0;;;;;14004:21:0::1;14034:6;14004:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13986:59;;;14060:7;14056:68;;;14088:24;::::0;1583:25:1;;;14088:24:0::1;::::0;1571:2:1;1556:18;14088:24:0::1;;;;;;;;14056:68;13926:205;;13879:252::o:0;4540:94::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;4605:21:::1;4623:1;4605:9;:21::i;:::-;4540:94::o:0;5517:95::-;5573:13;5600:7;5593:14;;;;;:::i;6930:254::-;7023:4;7034:129;3839:10;7057:7;7066:96;7105:15;7066:96;;;;;;;;;;;;;;;;;3839:10;7066:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7066:34:0;;;;;;;;;;;;:38;:96::i;5933:160::-;6019:4;6030:42;3839:10;6054:9;6065:6;6030:9;:42::i;13545:328::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;13649:23:::1;;13637:8;:35:::0;13629:110:::1;;;::::0;-1:-1:-1;;;13629:110:0;;5428:2:1;13629:110:0::1;::::0;::::1;5410:21:1::0;5467:2;5447:18;;;5440:30;5506:34;5486:18;;;5479:62;5577:32;5557:18;;;5550:60;5627:19;;13629:110:0::1;5226:426:1::0;13629:110:0::1;13796:23;::::0;13755:65:::1;::::0;13786:8;;13755:65:::1;::::0;;;::::1;13831:23;:34:::0;13545:328::o;13045:184::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;13119:45:::1;13143:5;13150:13;13119:23;:45::i;:::-;13180:41;::::0;-1:-1:-1;;;5859:28:1;;5912:2;5903:12;13180:41:0::1;5657:264:1::0;13235:304:0;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;13341:15:::1;::::0;-1:-1:-1;;;;;13341:15:0;;::::1;13319:38:::0;;::::1;::::0;13311:97:::1;;;::::0;-1:-1:-1;;;13311:97:0;;6128:2:1;13311:97:0::1;::::0;::::1;6110:21:1::0;6167:2;6147:18;;;6140:30;6206:34;6186:18;;;6179:62;-1:-1:-1;;;6257:18:1;;;6250:44;6311:19;;13311:97:0::1;5926:410:1::0;13311:97:0::1;13466:15;::::0;13424:59:::1;::::0;-1:-1:-1;;;;;13466:15:0;;::::1;::::0;13424:59;::::1;::::0;::::1;::::0;13466:15:::1;::::0;13424:59:::1;13494:15;:37:::0;;-1:-1:-1;;;;;;13494:37:0::1;-1:-1:-1::0;;;;;13494:37:0;;;::::1;::::0;;;::::1;::::0;;13235:304::o;12206:305::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12301:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:39;::::1;;:27;::::0;;::::1;:39;;::::0;12293:105:::1;;;::::0;-1:-1:-1;;;12293:105:0;;6543:2:1;12293:105:0::1;::::0;::::1;6525:21:1::0;6582:2;6562:18;;;6555:30;6621:34;6601:18;;;6594:62;-1:-1:-1;;;6672:18:1;;;6665:51;6733:19;;12293:105:0::1;6341:417:1::0;12293:105:0::1;-1:-1:-1::0;;;;;12409:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;12409:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12463:40;;1163:41:1;;;12463:40:0::1;::::0;1136:18:1;12463:40:0::1;;;;;;;12206:305:::0;;:::o;12517:320::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;12592:9:::1;::::0;-1:-1:-1;;;;;12592:25:0;;::::1;:9:::0;::::1;:25;12589:241;;-1:-1:-1::0;;;;;12642:26:0;::::1;12634:75;;;::::0;-1:-1:-1;;;12634:75:0;;6965:2:1;12634:75:0::1;::::0;::::1;6947:21:1::0;7004:2;6984:18;;;6977:30;7043:34;7023:18;;;7016:62;-1:-1:-1;;;7094:18:1;;;7087:34;7138:19;;12634:75:0::1;6763:400:1::0;12634:75:0::1;12769:9;::::0;12729:50:::1;::::0;-1:-1:-1;;;7370:24:1;;-1:-1:-1;;;;;12769:9:0;;::::1;::::0;12729:50;::::1;::::0;7419:1:1;7410:11;12729:50:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;12794:9;:24:::0;;-1:-1:-1;;;;;;12794:24:0::1;-1:-1:-1::0;;;;;12794:24:0;::::1;;::::0;;12589:241:::1;12517:320:::0;:::o;4642:192::-;4390:6;;-1:-1:-1;;;;;4390:6:0;3839:10;4452:23;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4731:22:0;::::1;4723:73;;;::::0;-1:-1:-1;;;4723:73:0;;7634:2:1;4723:73:0::1;::::0;::::1;7616:21:1::0;7673:2;7653:18;;;7646:30;7712:34;7692:18;;;7685:62;-1:-1:-1;;;7763:18:1;;;7756:36;7809:19;;4723:73:0::1;7432:402:1::0;4723:73:0::1;4807:19;4817:8;4807:9;:19::i;8435:330::-:0;-1:-1:-1;;;;;8544:19:0;;8536:68;;;;-1:-1:-1;;;8536:68:0;;8041:2:1;8536:68:0;;;8023:21:1;8080:2;8060:18;;;8053:30;8119:34;8099:18;;;8092:62;-1:-1:-1;;;8170:18:1;;;8163:34;8214:19;;8536:68:0;7839:400:1;8536:68:0;-1:-1:-1;;;;;8617:21:0;;8609:68;;;;-1:-1:-1;;;8609:68:0;;8446:2:1;8609:68:0;;;8428:21:1;8485:2;8465:18;;;8458:30;8524:34;8504:18;;;8497:62;-1:-1:-1;;;8575:18:1;;;8568:32;8617:19;;8609:68:0;8244:398:1;8609:68:0;-1:-1:-1;;;;;8682:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8728:32;;1583:25:1;;;8728:32:0;;1556:18:1;8728:32:0;;;;;;;;8435:330;;;:::o;14386:1271::-;-1:-1:-1;;;;;14522:18:0;;14514:68;;;;-1:-1:-1;;;14514:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14601:16:0;;14593:64;;;;-1:-1:-1;;;14593:64:0;;;;;;;:::i;:::-;14673:6;14683:1;14673:11;14670:92;;14701:28;14717:4;14723:2;14727:1;14701:15;:28::i;:::-;14386:1271;;;:::o;14670:92::-;-1:-1:-1;;;;;14793:31:0;;;14774:16;14793:31;;;:25;:31;;;;;;;14853:29;;;;;;;;14793:31;;;;;14853:29;14895:37;14793:31;14853:29;14895:12;:37::i;:::-;14986:23;;14976:4;14943:12;5905:18;;;;;;;;;;;-1:-1:-1;14958:51:0;;;;;15040:34;;-1:-1:-1;15065:9:0;;-1:-1:-1;;;15065:9:0;;;;15064:10;15040:34;:64;;;;-1:-1:-1;15091:9:0;;;;;;;:13;;15040:64;:110;;;;-1:-1:-1;;;;;;15121:29:0;;;;;;:25;:29;;;;;;;;15040:110;15022:237;;;15177:9;:16;;-1:-1:-1;;;;15177:16:0;-1:-1:-1;;;15177:16:0;;;15208:7;:5;:7::i;:::-;15230:9;:17;;-1:-1:-1;;;;15230:17:0;;;15022:237;15287:9;;-1:-1:-1;;;;;15312:24:0;;15271:12;15312:24;;;:18;:24;;;;;;15287:9;-1:-1:-1;;;15287:9:0;;;;;15286:10;;15312:24;;:50;;-1:-1:-1;;;;;;15340:22:0;;;;;;:18;:22;;;;;;;;15312:50;15309:96;;;-1:-1:-1;15388:5:0;15309:96;15421:7;:24;;;;-1:-1:-1;15432:9:0;;;;;;;:13;;15421:24;15417:187;;;15485:9;;15462:11;;15497:3;;15476:18;;15485:9;;;;;15476:6;:18;:::i;:::-;:24;;;;:::i;:::-;15462:38;-1:-1:-1;15524:12:0;15462:38;15524:6;:12;:::i;:::-;15515:21;;15551:41;15567:4;15581;15588:3;15551:15;:41::i;:::-;15447:157;15417:187;15616:33;15632:4;15638:2;15642:6;15616:15;:33::i;:::-;14503:1154;;;;14386:1271;;;:::o;2475:171::-;2561:7;2591:12;2583:6;;;;2575:29;;;;-1:-1:-1;;;2575:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2609:9:0;2621:5;2625:1;2621;:5;:::i;:::-;2609:17;2475:171;-1:-1:-1;;;;;2475:171:0:o;2178:160::-;2236:7;;2262:5;2266:1;2262;:5;:::i;:::-;2250:17;;2285:1;2280;:6;;2272:46;;;;-1:-1:-1;;;2272:46:0;;10449:2:1;2272:46:0;;;10431:21:1;10488:2;10468:18;;;10461:30;10527:29;10507:18;;;10500:57;10574:18;;2272:46:0;10247:351:1;2272:46:0;2332:1;2178:160;-1:-1:-1;;;2178:160:0:o;16439:323::-;16562:15;;;;:31;;;;:15;;:31;16558:197;;16615:83;;-1:-1:-1;;;10805:26:1;;10856:2;10847:12;16615:83:0;;;;;;;;16651:15;;;;16683:14;;;;-1:-1:-1;;11034:38:1;11016:57;;16615:83:0;;16651:15;;;;;16615:83;;;;;11004:2:1;10989:18;16615:83:0;;;;;;;16713:15;;;:30;;;;;-1:-1:-1;;16713:30:0;;;;;;16439:323;;:::o;4842:174::-;4918:6;;;-1:-1:-1;;;;;4935:17:0;;;-1:-1:-1;;;;;;4935:17:0;;;;;;;4968:40;;4918:6;;;4935:17;4918:6;;4968:40;;4899:16;;4968:40;4888:128;4842:174;:::o;16099:334::-;16226:16;;;;:33;;;;:16;;;;;:33;16222:204;;16281:86;;-1:-1:-1;;;11286:27:1;;11338:2;11329:12;16281:86:0;;;;;;;;16318:16;;;;16352:14;;;;-1:-1:-1;;11034:38:1;11016:57;;16281:86:0;;16318:16;;;;;;;;16281:86;;;;;11004:2:1;10989:18;16281:86:0;;;;;;;16382:16;;;:32;;;;;;;-1:-1:-1;;16382:32:0;;;;;;16099:334;;:::o;7189:509::-;-1:-1:-1;;;;;7302:20:0;;7294:70;;;;-1:-1:-1;;;7294:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7377:23:0;;7369:71;;;;-1:-1:-1;;;7369:71:0;;;;;;;:::i;:::-;7517;7539:6;7517:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7517:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7497:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7616:20;;;;;;;:32;;7641:6;7616:24;:32::i;:::-;-1:-1:-1;;;;;7593:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7658:35;1583:25:1;;;7593:20:0;;7658:35;;;;;;1556:18:1;7658:35:0;1437:177:1;15663:430:0;15739:7;:11;;-1:-1:-1;;15739:11:0;;;15763:73;;;;15805:17;;15795:7;:27;;-1:-1:-1;;15795:27:0;15805:17;;;;15795:27;;;;;;15763:73;15850:10;15846:71;;;15887:18;;15877:7;:28;;15887:18;;;;;;-1:-1:-1;;15877:28:0;;;;;;;;;15846:71;15932:10;15931:11;:27;;;;;15947:11;15946:12;15931:27;15927:82;;;15985:18;;15975:7;:28;;15985:18;;;;;;-1:-1:-1;;15975:28:0;;;;;;;;;15927:82;16031:7;;;;;;;;16019:19;;;-1:-1:-1;;16019:19:0;;;;;;;;;16054:31;;;16066:7;;;;;;11520:36:1;;16075:9:0;;;;11587:2:1;11572:18;;11565:45;16054:31:0;;11493:18:1;16054:31:0;11352:264:1;16768:593:0;16848:4;16804:23;5905:18;;;;;;;;;;;16948:9;;16893:21;;16948:9;;;;;5905:18;17021:31;5905:18;17021:17;:31::i;:::-;17065:27;17095:41;17119:17;17095:21;:41;:::i;:::-;17239:7;;17065:71;;-1:-1:-1;17147:36:0;;;;;:19;;:36;;17217:29;;17239:7;17065:71;17217:29;:::i;:::-;:43;;;;:::i;:::-;17281:9;;17273:41;;17194:66;;-1:-1:-1;;;;;;17281:9:0;;17273:41;;;;;17194:66;;17281:9;17273:41;17281:9;17273:41;17194:66;17281:9;17273:41;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17327:9:0;:26;;;;;;;;-1:-1:-1;;17327:26:0;;;;;;;;;;-1:-1:-1;;;;;16768:593:0:o;17369:500::-;17460:16;;;17474:1;17460:16;;;;;;;;17436:21;;17460:16;;;;;;;;;;-1:-1:-1;17460:16:0;17436:40;;17505:4;17487;17492:1;17487:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17487:23:0;;;:7;;;;;;;;;;:23;;;;17531:15;;:22;;;-1:-1:-1;;;17531:22:0;;;;:15;;;;;:20;;:22;;;;;17487:7;;17531:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17521:4;17526:1;17521:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17521:32:0;;;:7;;;;;;;;;:32;17596:15;;17564:62;;17581:4;;17596:15;17614:11;17564:8;:62::i;:::-;17637:15;;:224;;-1:-1:-1;;;17637:224:0;;-1:-1:-1;;;;;17637:15:0;;;;:66;;:224;;17718:11;;17637:15;;17788:4;;17815;;17835:15;;17637:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17425:444;17369:500;:::o;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;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;1619:456::-;1696:6;1704;1712;1765:2;1753:9;1744:7;1740:23;1736:32;1733:52;;;1781:1;1778;1771:12;1733:52;1820:9;1807:23;1839:31;1864:5;1839:31;:::i;:::-;1889:5;-1:-1:-1;1946:2:1;1931:18;;1918:32;1959:33;1918:32;1959:33;:::i;:::-;1619:456;;2011:7;;-1:-1:-1;;;2065:2:1;2050:18;;;;2037:32;;1619:456::o;2477:269::-;2534:6;2587:2;2575:9;2566:7;2562:23;2558:32;2555:52;;;2603:1;2600;2593:12;2555:52;2642:9;2629:23;2692:4;2685:5;2681:16;2674:5;2671:27;2661:55;;2712:1;2709;2702:12;2751:247;2810:6;2863:2;2851:9;2842:7;2838:23;2834:32;2831:52;;;2879:1;2876;2869:12;2831:52;2918:9;2905:23;2937:31;2962:5;2937:31;:::i;3003:180::-;3062:6;3115:2;3103:9;3094:7;3090:23;3086:32;3083:52;;;3131:1;3128;3121:12;3083:52;-1:-1:-1;3154:23:1;;3003:180;-1:-1:-1;3003:180:1:o;3188:416::-;3253:6;3261;3314:2;3302:9;3293:7;3289:23;3285:32;3282:52;;;3330:1;3327;3320:12;3282:52;3369:9;3356:23;3388:31;3413:5;3388:31;:::i;:::-;3438:5;-1:-1:-1;3495:2:1;3480:18;;3467:32;3537:15;;3530:23;3518:36;;3508:64;;3568:1;3565;3558:12;3508:64;3591:7;3581:17;;;3188:416;;;;;:::o;3609:388::-;3677:6;3685;3738:2;3726:9;3717:7;3713:23;3709:32;3706:52;;;3754:1;3751;3744:12;3706:52;3793:9;3780:23;3812:31;3837:5;3812:31;:::i;:::-;3862:5;-1:-1:-1;3919:2:1;3904:18;;3891:32;3932:33;3891:32;3932:33;:::i;4002:380::-;4081:1;4077:12;;;;4124;;;4145:61;;4199:4;4191:6;4187:17;4177:27;;4145:61;4252:2;4244:6;4241:14;4221:18;4218:38;4215:161;;4298:10;4293:3;4289:20;4286:1;4279:31;4333:4;4330:1;4323:15;4361:4;4358:1;4351:15;4215:161;;4002:380;;;:::o;4387:356::-;4589:2;4571:21;;;4608:18;;;4601:30;4667:34;4662:2;4647:18;;4640:62;4734:2;4719:18;;4387:356::o;8647:401::-;8849:2;8831:21;;;8888:2;8868:18;;;8861:30;8927:34;8922:2;8907:18;;8900:62;-1:-1:-1;;;8993:2:1;8978:18;;8971:35;9038:3;9023:19;;8647:401::o;9053:399::-;9255:2;9237:21;;;9294:2;9274:18;;;9267:30;9333:34;9328:2;9313:18;;9306:62;-1:-1:-1;;;9399:2:1;9384:18;;9377:33;9442:3;9427:19;;9053:399::o;9457:127::-;9518:10;9513:3;9509:20;9506:1;9499:31;9549:4;9546:1;9539:15;9573:4;9570:1;9563:15;9589:168;9662:9;;;9693;;9710:15;;;9704:22;;9690:37;9680:71;;9731:18;;:::i;9762:217::-;9802:1;9828;9818:132;;9872:10;9867:3;9863:20;9860:1;9853:31;9907:4;9904:1;9897:15;9935:4;9932:1;9925:15;9818:132;-1:-1:-1;9964:9:1;;9762:217::o;9984:128::-;10051:9;;;10072:11;;;10069:37;;;10086:18;;:::i;10117:125::-;10182:9;;;10203:10;;;10200:36;;;10216:18;;:::i;11753:127::-;11814:10;11809:3;11805:20;11802:1;11795:31;11845:4;11842:1;11835:15;11869:4;11866:1;11859:15;11885:251;11955:6;12008:2;11996:9;11987:7;11983:23;11979:32;11976:52;;;12024:1;12021;12014:12;11976:52;12056:9;12050:16;12075:31;12100:5;12075:31;:::i;12141:980::-;12403:4;12451:3;12440:9;12436:19;12482:6;12471:9;12464:25;12508:2;12546:6;12541:2;12530:9;12526:18;12519:34;12589:3;12584:2;12573:9;12569:18;12562:31;12613:6;12648;12642:13;12679:6;12671;12664:22;12717:3;12706:9;12702:19;12695:26;;12756:2;12748:6;12744:15;12730:29;;12777:1;12787:195;12801:6;12798:1;12795:13;12787:195;;;12866:13;;-1:-1:-1;;;;;12862:39:1;12850:52;;12957:15;;;;12922:12;;;;12898:1;12816:9;12787:195;;;-1:-1:-1;;;;;;;13038:32:1;;;;13033:2;13018:18;;13011:60;-1:-1:-1;;;13102:3:1;13087:19;13080:35;12999:3;12141:980;-1:-1:-1;;;12141:980:1:o

Swarm Source

ipfs://1423d5d629c35029e063a8a7070d8fc3949682011f3375833cddff661aa6e22c

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.