ETH Price: $2,981.23 (+1.70%)
Gas: 2 Gwei

Token

GROKZILLA (GROKZILLA)
 

Overview

Max Total Supply

6,900,000,000 GROKZILLA

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
lowkibop.eth
Balance
0.000000005568079125 GROKZILLA

Value
$0.00
0x9409a97013716036ff31638985ef71b3c2cdf55c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GROKZILLA

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-11-15
*/

/* Grok + Zilla fusion
Telegram: https://t.me/Grokzilla_eth
Website: https://www.grokzilla.wtf
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

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

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

interface IUniswapV2Pair {
    function permit(
        address owner,
        address spender,
        uint value,
        uint deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract LockToken is Ownable {
    bool public isOpen = false;
    mapping(address => bool) private _whiteList;
    modifier open(address from, address to) {
        require(isOpen || _whiteList[from] || _whiteList[to], "Not Open");
        _;
    }

    constructor() {
        _whiteList[msg.sender] = true;
        _whiteList[address(this)] = true;
    }

    function openTrade() external onlyOwner {
        isOpen = true;
    }

    function includeToWhiteList(address _address) public onlyOwner {
        _whiteList[_address] = true;
    }
}

contract GROKZILLA is Context, IERC20, LockToken {
    using SafeMath for uint256;
    address payable public marketingWallet =
        payable(0x71F2F7399135D7ECB2D86760D9b145f9AB0a5819);
    address payable public teamWallet =
        payable(0x06Fc4e7fD676F857Cc86EaAE0d7f0BEF153d63e4);
    address public newOwnr = 0x06Fc4e7fD676F857Cc86EaAE0d7f0BEF153d63e4;
    address public uniRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _feeWhitelisted;
    mapping(address => bool) private _limitWhitelisted;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;
    string private _name = "GROKZILLA";
    string private _symbol = "GROKZILLA";
    uint8 private _decimals = 18;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 6900000000 * 10 ** 18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public _liquidityFeeBuys = 0;
    uint256 public _marketingFeeBuys = 300;
    uint256 public _teamFeeBuys = 0;
    uint256 public _totalFeeBuys =
        _liquidityFeeBuys + _marketingFeeBuys + _teamFeeBuys;
    uint256[] buyFeesBackup = [_liquidityFeeBuys, _marketingFeeBuys, _teamFeeBuys];
    uint256 public _liquidityFeeSells = 0;
    uint256 public _marketingFeeSells = 300;
    uint256 public _teamFeeSells = 0;
    uint256 public _totalFeeSells =
        _liquidityFeeSells + _marketingFeeSells + _teamFeeSells;

    uint256 public _liquidityTokens = 0;
    uint256 public _marketingTokens = 0;
    uint256 public _teamTokens = 0;
    uint256 public transferTotalFee =
        _liquidityTokens + _marketingTokens + _teamTokens;

    uint256 public _txLimit = _tTotal.div(100).mul(1); //x% of total supply
    uint256 public _walletLimit = _tTotal.div(100).mul(2); //x% of total supply
    uint256 private _minBalanceForSwapback = 69000000 * 10 ** 18;

    IUniswapV2Router02 public immutable uniRouterContract;
    address public immutable uniPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapTokensForETH(uint256 amountIn, address[] path);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        _rOwned[newOwnr] = _rTotal;
        IUniswapV2Router02 _uniRouterContract = IUniswapV2Router02(uniRouter);
        uniPair = IUniswapV2Factory(_uniRouterContract.factory())
            .createPair(address(this), _uniRouterContract.WETH());
        uniRouterContract = _uniRouterContract;
        _feeWhitelisted[newOwnr] = true;
        _feeWhitelisted[address(this)] = true;
        includeToWhiteList(newOwnr);
        _limitWhitelisted[newOwnr] = true;
        emit Transfer(address(0), newOwnr, _tTotal);
        excludeWalletsFromWhales();

        transferOwnership(newOwnr);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[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 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 totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function _minBalanceForSwapbackAmount() public view returns (uint256) {
        return _minBalanceForSwapback;
    }

    function tokenFromReflection(
        uint256 rAmount
    ) private view returns (uint256) {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    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 open(from, to) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (from != owner() && to != owner()) {
            require(
                amount <= _txLimit,
                "Transfer amount exceeds the maxTxAmount."
            );
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >=
            _minBalanceForSwapback;

        checkForWhale(from, to, amount);

        if (
            !inSwapAndLiquify && swapAndLiquifyEnabled && from != uniPair
        ) {
            if (overMinimumTokenBalance) {
                contractTokenBalance = _minBalanceForSwapback;
                swapTokens(contractTokenBalance);
            }
        }

        bool takeFee = true;

        //if any account belongs to _feeWhitelisted account then remove the fee
        if (_feeWhitelisted[from] || _feeWhitelisted[to]) {
            takeFee = false;
        }
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        uint256 ___totalFeeBuys = _liquidityFeeBuys.add(_marketingFeeBuys).add(
            _teamFeeBuys
        );
        uint256 ___totalFeeSells = _liquidityFeeSells.add(_marketingFeeSells).add(
            _teamFeeSells
        );
        uint256 totalSwapableFees = ___totalFeeBuys.add(___totalFeeSells);
                if (totalSwapableFees == 0) {
            return;
        }

        uint256 halfLiquidityTokens = contractTokenBalance
            .mul(_liquidityFeeBuys + _liquidityFeeSells)
            .div(totalSwapableFees)
            .div(2);
        uint256 swapableTokens = contractTokenBalance.sub(halfLiquidityTokens);
        swapTokensForEth(swapableTokens);

        uint256 newBalance = address(this).balance;
        uint256 ethForLiquidity = newBalance
            .mul(_liquidityFeeBuys + _liquidityFeeSells)
            .div(totalSwapableFees)
            .div(2);

        if (halfLiquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(halfLiquidityTokens, ethForLiquidity);
        }

        uint256 ethForMarketing = newBalance
            .mul(_marketingFeeBuys + _marketingFeeSells)
            .div(totalSwapableFees);
        if (ethForMarketing > 0) {
            marketingWallet.transfer(ethForMarketing);
        }

        uint256 ethForTeam = newBalance.sub(ethForLiquidity).sub(
            ethForMarketing
        );
        if (ethForTeam > 0) {
            teamWallet.transfer(ethForTeam);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniRouterContract.WETH();
        _approve(address(this), address(uniRouterContract), tokenAmount);
        uniRouterContract.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniRouterContract), tokenAmount);

        // add the liquidity
        uniRouterContract.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {
            removeAllFee();
        } else {
            if (recipient == uniPair) {
                setSellFee();
            }

            if (sender != uniPair && recipient != uniPair) {
                setWalletToWalletTransferFee();
            }
        }

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 tTransferAmount,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
        if (tLiquidity > 0) {
            emit Transfer(sender, address(this), tLiquidity);
        }
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 tTransferAmount,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
        if (tLiquidity > 0) {
            emit Transfer(sender, address(this), tLiquidity);
        }
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 tTransferAmount,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
        if (tLiquidity > 0) {
            emit Transfer(sender, address(this), tLiquidity);
        }
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 tTransferAmount,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
        if (tLiquidity > 0) {
            emit Transfer(sender, address(this), tLiquidity);
        }
    }

    function _getValues(
        uint256 tAmount
    ) private view returns (uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(
            tAmount,
            tLiquidity,
            _getRate()
        );
        return (rAmount, rTransferAmount, tTransferAmount, tLiquidity);
    }

    function _getTValues(
        uint256 tAmount
    ) private view returns (uint256, uint256) {
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tLiquidity);
        return (tTransferAmount, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tLiquidity,
        uint256 currentRate
    ) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rLiquidity);
        return (rAmount, rTransferAmount);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
        }
    }

    function calculateLiquidityFee(
        uint256 _amount
    ) private view returns (uint256) {
        uint256 fees = _liquidityFeeBuys.add(_marketingFeeBuys).add(_teamFeeBuys);
        return _amount.mul(fees).div(1000);
    }

    function isExcludedFromFee(
        address account
    ) public view onlyOwner returns (bool) {
        return _feeWhitelisted[account];
    }

    function excludeFromFee(address account) public onlyOwner {
        _feeWhitelisted[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _feeWhitelisted[account] = false;
    }

    function removeAllFee() private {
        _liquidityFeeBuys = 0;
        _marketingFeeBuys = 0;
        _teamFeeBuys = 0;
    }

    function restoreAllFee() private {
        _liquidityFeeBuys = buyFeesBackup[0];
        _marketingFeeBuys = buyFeesBackup[1];
        _teamFeeBuys = buyFeesBackup[2];
    }

    function setSellFee() private {
        _liquidityFeeBuys = _liquidityFeeSells;
        _marketingFeeBuys = _marketingFeeSells;
        _teamFeeBuys = _teamFeeSells;
    }

    function setWalletToWalletTransferFee() private {
        _liquidityFeeBuys = _liquidityTokens;
        _marketingFeeBuys = _marketingTokens;
        _teamFeeBuys = _teamTokens;
    }

    function _setBuyFees(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _teamFee
    ) external onlyOwner {
        _liquidityFeeBuys = _liquidityFee;
        _marketingFeeBuys = _marketingFee;
        _teamFeeBuys = _teamFee;
        buyFeesBackup = [_liquidityFeeBuys, _marketingFeeBuys, _teamFeeBuys];
        uint256 totalFee = _liquidityFee.add(_marketingFee).add(_teamFee);
        _totalFeeBuys = _liquidityFeeBuys + _marketingFeeBuys + _teamFeeBuys;
        require(totalFee <= 700, "Too High Fee");
    }

    function _setSellFees(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _teamFee
    ) external onlyOwner {
        _liquidityFeeSells = _liquidityFee;
        _marketingFeeSells = _marketingFee;
        _teamFeeSells = _teamFee;
        uint256 totalFee = _liquidityFee.add(_marketingFee).add(_teamFee);
        _totalFeeSells = _liquidityFeeSells + _marketingFeeSells + _teamFeeSells;
        require(totalFee <= 700, "Too High Fee");
    }

    function _setTransferFees(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _teamFee
    ) external onlyOwner {
        _liquidityTokens = _liquidityFee;
        _marketingTokens = _marketingFee;
        _teamTokens = _teamFee;
        transferTotalFee = _liquidityTokens + _marketingTokens + _teamTokens;
        uint256 totalFee = _liquidityFee.add(_marketingFee).add(_teamFee);
        require(totalFee <= 100, "Too High Fee");
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner {
        _txLimit = maxTxAmount;
        require(_txLimit >= _tTotal.div(5), "Too low limit");
    }

    function setMinimumTokensBeforeSwap(
        uint256 __minBalanceForSwapback
    ) external onlyOwner {
        _minBalanceForSwapback = __minBalanceForSwapback;
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = payable(_marketingWallet);
    }

    function setTeamWallet(address _teamWallet) external onlyOwner {
        teamWallet = payable(_teamWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function excludeWalletsFromWhales() private {
        _limitWhitelisted[owner()] = true;
        _limitWhitelisted[address(this)] = true;
        _limitWhitelisted[uniPair] = true;
        _limitWhitelisted[teamWallet] = true;
        _limitWhitelisted[marketingWallet] = true;
    }

    function checkForWhale(
        address from,
        address to,
        uint256 amount
    ) private view {
        uint256 newBalance = balanceOf(to).add(amount);
        if (!_limitWhitelisted[from] && !_limitWhitelisted[to]) {
            require(
                newBalance <= _walletLimit,
                "Exceeding max tokens limit in the wallet"
            );
        }
        if (from == uniPair && !_limitWhitelisted[to]) {
            require(
                newBalance <= _walletLimit,
                "Exceeding max tokens limit in the wallet"
            );
        }
    }

    function setExcludedFromWhale(
        address account,
        bool _enabled
    ) public onlyOwner {
        _limitWhitelisted[account] = _enabled;
    }

    function setWalletMaxHoldingLimit(uint256 _amount) public onlyOwner {
        _walletLimit = _amount;
        require(
            _walletLimit > _tTotal.div(100).mul(1),
            "Too less limit"
        ); //min 1%
    }

    function rescueStuckBalance() public onlyOwner {
        (bool success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "Transfer failed.");
    }

    function forceSwapback() public {
        uint256 allBalance = balanceOf(address(this));
        swapTokens(allBalance);
    }

    receive() external payable {}
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwnr","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":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_liquidityFeeBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minBalanceForSwapbackAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"_setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"_setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"_setTransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_teamFeeBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamFeeSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalFeeBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalFeeSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_txLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletLimit","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":"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"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"includeToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwnr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setExcludedFromWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__minBalanceForSwapback","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamWallet","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setWalletMaxHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newOwnr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniRouterContract","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6003805460ff19169055600580546001600160a01b03199081167371f2f7399135d7ecb2d86760d9b145f9ab0a5819179091556006805482167306fc4e7fd676f857cc86eaae0d7f0bef153d63e4908117909155600780548316909117905560088054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055610100604052600960c09081526847524f4b5a494c4c4160b81b60e052601090620000a990826200091c565b5060408051808201909152600981526847524f4b5a494c4c4160b81b6020820152601190620000d990826200091c565b506012805460ff1916811790556b164b8bd581eb74d77400000060138190556200010690600019620009fe565b620001149060001962000a2b565b6014556000601681905561012c6017819055601882905562000137908262000a41565b62000143919062000a41565b601955604051806060016040528060165481526020016017548152602001601854815250601a9060036200017992919062000810565b506000601b81905561012c601c819055601d8290556200019a908262000a41565b620001a6919062000a41565b601e556000601f81905560208190556021819055620001c6818062000a41565b620001d2919062000a41565b602255601354620001f490600190620001ed906064620004f2565b9062000545565b6023556013546200020f90600290620001ed906064620004f2565b6024556a3913517ebd3c0c650000006025556026805461ff0019166101001790553480156200023d57600080fd5b50600080546001600160a01b031916339081178255604051909182916000805160206200393e833981519152908290a3503360009081526004602081815260408084208054600160ff199182168117909255308652828620805490911690911790556014546007546001600160a01b039081168652600984529482902055600854815163c45a015560e01b81529151941693849363c45a01559383820193909291908290030181865afa158015620002f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031f919062000a57565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000393919062000a57565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000407919062000a57565b6001600160a01b0390811660a0528181166080526007805482166000908152600c60205260408082208054600160ff1991821681179092553084529190922080549091169091179055546200045d9116620005d3565b600780546001600160a01b039081166000908152600d6020526040808220805460ff191660011790559254601354935192169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620004c29190815260200190565b60405180910390a3620004d462000642565b600754620004eb906001600160a01b0316620006d8565b5062000b03565b60006200053c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007d460201b60201c565b90505b92915050565b60008260000362000559575060006200053f565b600062000567838562000a82565b90508262000576858362000a9c565b146200053c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b6000546001600160a01b031633146200061e5760405162461bcd60e51b815260206004820181905260248201526000805160206200391e8339815191526044820152606401620005ca565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6001600d60006200065b6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d90935281832080548516600190811790915560a051821684528284208054861682179055600654821684528284208054861682179055600554909116835291208054909216179055565b6000546001600160a01b03163314620007235760405162461bcd60e51b815260206004820181905260248201526000805160206200391e8339815191526044820152606401620005ca565b6001600160a01b0381166200078a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620005ca565b600080546040516001600160a01b03808516939216916000805160206200393e83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008183620007f85760405162461bcd60e51b8152600401620005ca919062000ab3565b50600062000807848662000a9c565b95945050505050565b8280548282559060005260206000209081019282156200084e579160200282015b828111156200084e57825182559160200191906001019062000831565b506200085c92915062000860565b5090565b5b808211156200085c576000815560010162000861565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620008a257607f821691505b602082108103620008c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200091757600081815260208120601f850160051c81016020861015620008f25750805b601f850160051c820191505b818110156200091357828155600101620008fe565b5050505b505050565b81516001600160401b0381111562000938576200093862000877565b62000950816200094984546200088d565b84620008c9565b602080601f8311600181146200098857600084156200096f5750858301515b600019600386901b1c1916600185901b17855562000913565b600085815260208120601f198616915b82811015620009b95788860151825594840194600190910190840162000998565b5085821015620009d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b60008262000a105762000a10620009e8565b500690565b634e487b7160e01b600052601160045260246000fd5b818103818111156200053f576200053f62000a15565b808201808211156200053f576200053f62000a15565b60006020828403121562000a6a57600080fd5b81516001600160a01b03811681146200053c57600080fd5b80820281158282048414176200053f576200053f62000a15565b60008262000aae5762000aae620009e8565b500490565b600060208083528351808285015260005b8181101562000ae25785810183015185820160400152820162000ac4565b506000604082860101526040601f19601f8301168501019250505092915050565b60805160a051612daf62000b6f600039600081816104bd015281816117b601528181611c9001528181611d2f01528181611d7f0152611dbc0152600081816107a401528181611fde01528181612097015281816120d30152818161218601526121ad0152612daf6000f3fe6080604052600436106103545760003560e01c80636f4b6f0c116101c6578063a9059cbb116100f7578063c49b9a8011610095578063ec1c14f11161006f578063ec1c14f114610977578063ec28438a1461098d578063f2fde38b146109ad578063fb201b1d146109cd57600080fd5b8063c49b9a80146108f1578063dd62ed3e14610911578063ea2f0b371461095757600080fd5b8063ade44a8f116100d1578063ade44a8f14610885578063aee50b1e146108a5578063b60439ff146108c5578063b863864c146108db57600080fd5b8063a9059cbb14610839578063aa13008f14610859578063acdde69f1461086f57600080fd5b806383ac614d116101645780638da5cb5b1161013e5780638da5cb5b146107c657806395d89b41146107e4578063a0e47bf6146107f9578063a457c2d71461081957600080fd5b806383ac614d1461075c578063848ad89e1461077c57806384ee9d9c1461079257600080fd5b8063715018a6116101a0578063715018a6146106f1578063749e8cb61461070657806375f0a8741461072657806383a9f0c71461074657600080fd5b80636f4b6f0c1461069c5780636fee4f7a146106bc57806370a08231146106d157600080fd5b806339509351116102a05780634b880e881161023e5780635537121f116102185780635537121f1461063157806359927044146106465780635d098b381461066657806363553e7c1461068657600080fd5b80634b880e88146105d15780634e3c06b1146105f15780635342acb41461061157600080fd5b806344d4225f1161027a57806344d4225f1461056357806347535d7b1461058357806348990b7a1461059d5780634a74bb02146105b257600080fd5b8063395093511461050d5780634197d5ca1461052d578063437823ec1461054357600080fd5b806318160ddd1161030d57806323e6958a116102e757806323e6958a14610473578063313ce5671461048957806332972e46146104ab57806334302720146104f757600080fd5b806318160ddd146104285780631e25abbb1461043d57806323b872dd1461045357600080fd5b806301cd34f51461036057806306fdde0314610389578063095ea7b3146103ab5780630e2351e2146103db57806313114a9d146103f15780631525ff7d1461040657600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660185481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b5061039e6109e2565b60405161038091906128f4565b3480156103b757600080fd5b506103cb6103c6366004612957565b610a74565b6040519015158152602001610380565b3480156103e757600080fd5b5061037660245481565b3480156103fd57600080fd5b50601554610376565b34801561041257600080fd5b50610426610421366004612983565b610a8b565b005b34801561043457600080fd5b50601354610376565b34801561044957600080fd5b5061037660205481565b34801561045f57600080fd5b506103cb61046e3660046129a0565b610ae0565b34801561047f57600080fd5b50610376601b5481565b34801561049557600080fd5b5060125460405160ff9091168152602001610380565b3480156104b757600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610380565b34801561050357600080fd5b5061037660195481565b34801561051957600080fd5b506103cb610528366004612957565b610b49565b34801561053957600080fd5b5061037660175481565b34801561054f57600080fd5b5061042661055e366004612983565b610b7f565b34801561056f57600080fd5b5061042661057e3660046129e1565b610bcd565b34801561058f57600080fd5b506003546103cb9060ff1681565b3480156105a957600080fd5b50602554610376565b3480156105be57600080fd5b506026546103cb90610100900460ff1681565b3480156105dd57600080fd5b506104266105ec366004612983565b610c5b565b3480156105fd57600080fd5b5061042661060c366004612a0a565b610ca9565b34801561061d57600080fd5b506103cb61062c366004612983565b610cfe565b34801561063d57600080fd5b50610426610d4c565b34801561065257600080fd5b506006546104df906001600160a01b031681565b34801561067257600080fd5b50610426610681366004612983565b610d62565b34801561069257600080fd5b5061037660235481565b3480156106a857600080fd5b506007546104df906001600160a01b031681565b3480156106c857600080fd5b50610426610dae565b3480156106dd57600080fd5b506103766106ec366004612983565b610e63565b3480156106fd57600080fd5b50610426610ec2565b34801561071257600080fd5b50610426610721366004612a3f565b610f36565b34801561073257600080fd5b506005546104df906001600160a01b031681565b34801561075257600080fd5b5061037660165481565b34801561076857600080fd5b50610426610777366004612a3f565b610fcf565b34801561078857600080fd5b50610376601f5481565b34801561079e57600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107d257600080fd5b506000546001600160a01b03166104df565b3480156107f057600080fd5b5061039e611085565b34801561080557600080fd5b506008546104df906001600160a01b031681565b34801561082557600080fd5b506103cb610834366004612957565b611094565b34801561084557600080fd5b506103cb610854366004612957565b6110e3565b34801561086557600080fd5b50610376601c5481565b34801561087b57600080fd5b5061037660215481565b34801561089157600080fd5b506104266108a0366004612a3f565b6110f0565b3480156108b157600080fd5b506104266108c03660046129e1565b611174565b3480156108d157600080fd5b50610376601d5481565b3480156108e757600080fd5b5061037660225481565b3480156108fd57600080fd5b5061042661090c366004612a6b565b6111a3565b34801561091d57600080fd5b5061037661092c366004612a86565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561096357600080fd5b50610426610972366004612983565b611221565b34801561098357600080fd5b50610376601e5481565b34801561099957600080fd5b506104266109a83660046129e1565b61126c565b3480156109b957600080fd5b506104266109c8366004612983565b6112ea565b3480156109d957600080fd5b506104266113d4565b6060601080546109f190612abf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d90612abf565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b5050505050905090565b6000610a8133848461140d565b5060015b92915050565b6000546001600160a01b03163314610abe5760405162461bcd60e51b8152600401610ab590612af9565b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610aed848484611531565b610b3f8433610b3a85604051806060016040528060288152602001612d2d602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611865565b61140d565b5060019392505050565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610a81918590610b3a908661189f565b6000546001600160a01b03163314610ba95760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314610bf75760405162461bcd60e51b8152600401610ab590612af9565b6024819055601354610c1790600190610c11906064611905565b90611947565b60245411610c585760405162461bcd60e51b815260206004820152600e60248201526d151bdbc81b195cdcc81b1a5b5a5d60921b6044820152606401610ab5565b50565b6000546001600160a01b03163314610c855760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610cd35760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610d295760405162461bcd60e51b8152600401610ab590612af9565b506001600160a01b0381166000908152600c602052604090205460ff165b919050565b6000610d5730610e63565b9050610c58816119c9565b6000546001600160a01b03163314610d8c5760405162461bcd60e51b8152600401610ab590612af9565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610dd85760405162461bcd60e51b8152600401610ab590612af9565b604051600090339047908381818185875af1925050503d8060008114610e1a576040519150601f19603f3d011682016040523d82523d6000602084013e610e1f565b606091505b5050905080610c585760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610ab5565b6001600160a01b0381166000908152600e602052604081205460ff1615610ea057506001600160a01b03166000908152600a602052604090205490565b6001600160a01b038216600090815260096020526040902054610a8590611b96565b6000546001600160a01b03163314610eec5760405162461bcd60e51b8152600401610ab590612af9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f605760405162461bcd60e51b8152600401610ab590612af9565b601b839055601c829055601d8190556000610f8582610f7f868661189f565b9061189f565b9050601d54601c54601b54610f9a9190612b44565b610fa49190612b44565b601e556102bc811115610fc95760405162461bcd60e51b8152600401610ab590612b57565b50505050565b6000546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610ab590612af9565b601683905560178290556018819055604080516060810182528481526020810184905290810182905261103090601a906003612894565b50600061104182610f7f868661189f565b90506018546017546016546110569190612b44565b6110609190612b44565b6019556102bc811115610fc95760405162461bcd60e51b8152600401610ab590612b57565b6060601180546109f190612abf565b6000610a813384610b3a85604051806060016040528060258152602001612d5560259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611865565b6000610a81338484611531565b6000546001600160a01b0316331461111a5760405162461bcd60e51b8152600401610ab590612af9565b601f83905560208290556021819055806111348385612b44565b61113e9190612b44565b602255600061115182610f7f868661189f565b90506064811115610fc95760405162461bcd60e51b8152600401610ab590612b57565b6000546001600160a01b0316331461119e5760405162461bcd60e51b8152600401610ab590612af9565b602555565b6000546001600160a01b031633146111cd5760405162461bcd60e51b8152600401610ab590612af9565b602680548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061121690831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461124b5760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b031633146112965760405162461bcd60e51b8152600401610ab590612af9565b60238190556013546112a9906005611905565b6023541015610c585760405162461bcd60e51b815260206004820152600d60248201526c151bdbc81b1bddc81b1a5b5a5d609a1b6044820152606401610ab5565b6000546001600160a01b031633146113145760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b0381166113795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113fe5760405162461bcd60e51b8152600401610ab590612af9565b6003805460ff19166001179055565b6001600160a01b03831661146f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab5565b6001600160a01b0382166114d05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab5565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff168061155e57506001600160a01b03821660009081526004602052604090205460ff165b8061158157506001600160a01b03811660009081526004602052604090205460ff165b6115b85760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610ab5565b6001600160a01b03851661161c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab5565b6001600160a01b03841661167e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab5565b600083116116e05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ab5565b6000546001600160a01b0386811691161480159061170c57506000546001600160a01b03858116911614155b15611774576023548311156117745760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ab5565b600061177f30610e63565b602554909150811015611793878787611c13565b60265460ff161580156117ad5750602654610100900460ff165b80156117eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614155b15611804578015611804576025549150611804826119c9565b6001600160a01b0387166000908152600c602052604090205460019060ff168061184657506001600160a01b0387166000908152600c602052604090205460ff165b1561184f575060005b61185b88888884611d0f565b5050505050505050565b600081848411156118895760405162461bcd60e51b8152600401610ab591906128f4565b5060006118968486612b7d565b95945050505050565b6000806118ac8385612b44565b9050838110156118fe5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ab5565b9392505050565b60006118fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f17565b60008260000361195957506000610a85565b60006119658385612b90565b9050826119728583612ba7565b146118fe5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ab5565b6026805460ff191660011790556018546017546016546000926119f1929091610f7f9161189f565b90506000611a12601d54610f7f601c54601b5461189f90919063ffffffff16565b90506000611a20838361189f565b905080600003611a3257505050611b89565b6000611a5d6002611a5784611a57601b54601654611a509190612b44565b8a90611947565b90611905565b90506000611a6b8683611f45565b9050611a7681611f87565b60004790506000611aa06002611a5787611a57601b54601654611a999190612b44565b8790611947565b9050600084118015611ab25750600081115b15611ac157611ac18482612180565b6000611ae186611a57601c54601754611ada9190612b44565b8690611947565b90508015611b25576005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b23573d6000803e3d6000fd5b505b6000611b3b82611b358686611f45565b90611f45565b90508015611b7f576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b7d573d6000803e3d6000fd5b505b5050505050505050505b506026805460ff19169055565b6000601454821115611bfd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ab5565b6000611c07612286565b90506118fe8382611905565b6000611c2282610f7f85610e63565b6001600160a01b0385166000908152600d602052604090205490915060ff16158015611c6757506001600160a01b0383166000908152600d602052604090205460ff16155b15611c8e57602454811115611c8e5760405162461bcd60e51b8152600401610ab590612bc9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015611ce857506001600160a01b0383166000908152600d602052604090205460ff16155b15610fc957602454811115610fc95760405162461bcd60e51b8152600401610ab590612bc9565b80611d2d57611d28600060168190556017819055601855565b611e0d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603611d7d57611d7d601b54601655601c54601755601d54601855565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614158015611df157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611e0d57611e0d601f54601655602054601755602154601855565b6001600160a01b0384166000908152600e602052604090205460ff168015611e4e57506001600160a01b0383166000908152600e602052604090205460ff16155b15611e6357611e5e8484846122a9565b611f0f565b6001600160a01b0384166000908152600e602052604090205460ff16158015611ea457506001600160a01b0383166000908152600e602052604090205460ff165b15611eb457611e5e848484612402565b6001600160a01b0384166000908152600e602052604090205460ff168015611ef457506001600160a01b0383166000908152600e602052604090205460ff165b15611f0457611e5e8484846124a3565b611f0f84848461250e565b610fc961254a565b60008183611f385760405162461bcd60e51b8152600401610ab591906128f4565b5060006118968486612ba7565b60006118fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611865565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fbc57611fbc612c11565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e9190612c27565b8160018151811061207157612071612c11565b60200260200101906001600160a01b031690816001600160a01b0316815250506120bc307f00000000000000000000000000000000000000000000000000000000000000008461140d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612111908590600090869030904290600401612c88565b600060405180830381600087803b15801561212b57600080fd5b505af115801561213f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612174929190612cc4565b60405180910390a15050565b6121ab307f00000000000000000000000000000000000000000000000000000000000000008461140d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806121f26000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561225a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061227f9190612ce5565b5050505050565b60008060006122936125b9565b90925090506122a28282611905565b9250505090565b6000806000806122b88561273b565b6001600160a01b038b166000908152600a6020526040902054939750919550935091506122e59086611f45565b6001600160a01b0388166000908152600a60209081526040808320939093556009905220546123149085611f45565b6001600160a01b038089166000908152600960205260408082209390935590881681522054612343908461189f565b6001600160a01b03871660009081526009602052604090205561236581612779565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123aa91815260200190565b60405180910390a380156123f95760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050565b6000806000806124118561273b565b6001600160a01b038b166000908152600960205260409020549397509195509350915061243e9085611f45565b6001600160a01b038089166000908152600960209081526040808320949094559189168152600a9091522054612474908361189f565b6001600160a01b0387166000908152600a6020908152604080832093909355600990522054612343908461189f565b6000806000806124b28561273b565b6001600160a01b038b166000908152600a6020526040902054939750919550935091506124df9086611f45565b6001600160a01b0388166000908152600a602090815260408083209390935560099052205461243e9085611f45565b60008060008061251d8561273b565b6001600160a01b038b16600090815260096020526040902054939750919550935091506123149085611f45565b601a60008154811061255e5761255e612c11565b9060005260206000200154601681905550601a60018154811061258357612583612c11565b9060005260206000200154601781905550601a6002815481106125a8576125a8612c11565b600091825260209091200154601855565b6014546013546000918291825b600f5481101561270b578260096000600f84815481106125e8576125e8612c11565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612653575081600a6000600f848154811061262c5761262c612c11565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561266957601454601354945094505050509091565b6126af60096000600f848154811061268357612683612c11565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611f45565b92506126f7600a6000600f84815481106126cb576126cb612c11565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611f45565b91508061270381612d13565b9150506125c6565b5060135460145461271b91611905565b821015612732576014546013549350935050509091565b90939092509050565b60008060008060008061274d87612802565b915091506000806127668984612761612286565b612829565b909a909950939750919550919350505050565b6000612783612286565b905060006127918383611947565b306000908152600960205260409020549091506127ae908261189f565b30600090815260096020908152604080832093909355600e9052205460ff16156127fd57306000908152600a60205260409020546127ec908461189f565b306000908152600a60205260409020555b505050565b600080600061281084612862565b9050600061281e8583611f45565b959194509092505050565b600080806128378685611947565b905060006128458686611947565b905060006128538383611f45565b92989297509195505050505050565b600080612882601854610f7f60175460165461189f90919063ffffffff16565b90506118fe6103e8611a578584611947565b8280548282559060005260206000209081019282156128cf579160200282015b828111156128cf5782518255916020019190600101906128b4565b506128db9291506128df565b5090565b5b808211156128db57600081556001016128e0565b600060208083528351808285015260005b8181101561292157858101830151858201604001528201612905565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c5857600080fd5b6000806040838503121561296a57600080fd5b823561297581612942565b946020939093013593505050565b60006020828403121561299557600080fd5b81356118fe81612942565b6000806000606084860312156129b557600080fd5b83356129c081612942565b925060208401356129d081612942565b929592945050506040919091013590565b6000602082840312156129f357600080fd5b5035919050565b80358015158114610d4757600080fd5b60008060408385031215612a1d57600080fd5b8235612a2881612942565b9150612a36602084016129fa565b90509250929050565b600080600060608486031215612a5457600080fd5b505081359360208301359350604090920135919050565b600060208284031215612a7d57600080fd5b6118fe826129fa565b60008060408385031215612a9957600080fd5b8235612aa481612942565b91506020830135612ab481612942565b809150509250929050565b600181811c90821680612ad357607f821691505b602082108103612af357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a8557610a85612b2e565b6020808252600c908201526b546f6f20486967682046656560a01b604082015260600190565b81810381811115610a8557610a85612b2e565b8082028115828204841417610a8557610a85612b2e565b600082612bc457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526028908201527f457863656564696e67206d617820746f6b656e73206c696d697420696e20746860408201526719481dd85b1b195d60c21b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612c3957600080fd5b81516118fe81612942565b600081518084526020808501945080840160005b83811015612c7d5781516001600160a01b031687529582019590820190600101612c58565b509495945050505050565b85815284602082015260a060408201526000612ca760a0830186612c44565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612cdd6040830184612c44565b949350505050565b600080600060608486031215612cfa57600080fd5b8351925060208401519150604084015190509250925092565b600060018201612d2557612d25612b2e565b506001019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204157b3e6e0102904e79f75d4b05bb60512ba9e655f9460ab11cbe6c807a747a764736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106103545760003560e01c80636f4b6f0c116101c6578063a9059cbb116100f7578063c49b9a8011610095578063ec1c14f11161006f578063ec1c14f114610977578063ec28438a1461098d578063f2fde38b146109ad578063fb201b1d146109cd57600080fd5b8063c49b9a80146108f1578063dd62ed3e14610911578063ea2f0b371461095757600080fd5b8063ade44a8f116100d1578063ade44a8f14610885578063aee50b1e146108a5578063b60439ff146108c5578063b863864c146108db57600080fd5b8063a9059cbb14610839578063aa13008f14610859578063acdde69f1461086f57600080fd5b806383ac614d116101645780638da5cb5b1161013e5780638da5cb5b146107c657806395d89b41146107e4578063a0e47bf6146107f9578063a457c2d71461081957600080fd5b806383ac614d1461075c578063848ad89e1461077c57806384ee9d9c1461079257600080fd5b8063715018a6116101a0578063715018a6146106f1578063749e8cb61461070657806375f0a8741461072657806383a9f0c71461074657600080fd5b80636f4b6f0c1461069c5780636fee4f7a146106bc57806370a08231146106d157600080fd5b806339509351116102a05780634b880e881161023e5780635537121f116102185780635537121f1461063157806359927044146106465780635d098b381461066657806363553e7c1461068657600080fd5b80634b880e88146105d15780634e3c06b1146105f15780635342acb41461061157600080fd5b806344d4225f1161027a57806344d4225f1461056357806347535d7b1461058357806348990b7a1461059d5780634a74bb02146105b257600080fd5b8063395093511461050d5780634197d5ca1461052d578063437823ec1461054357600080fd5b806318160ddd1161030d57806323e6958a116102e757806323e6958a14610473578063313ce5671461048957806332972e46146104ab57806334302720146104f757600080fd5b806318160ddd146104285780631e25abbb1461043d57806323b872dd1461045357600080fd5b806301cd34f51461036057806306fdde0314610389578063095ea7b3146103ab5780630e2351e2146103db57806313114a9d146103f15780631525ff7d1461040657600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660185481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b5061039e6109e2565b60405161038091906128f4565b3480156103b757600080fd5b506103cb6103c6366004612957565b610a74565b6040519015158152602001610380565b3480156103e757600080fd5b5061037660245481565b3480156103fd57600080fd5b50601554610376565b34801561041257600080fd5b50610426610421366004612983565b610a8b565b005b34801561043457600080fd5b50601354610376565b34801561044957600080fd5b5061037660205481565b34801561045f57600080fd5b506103cb61046e3660046129a0565b610ae0565b34801561047f57600080fd5b50610376601b5481565b34801561049557600080fd5b5060125460405160ff9091168152602001610380565b3480156104b757600080fd5b506104df7f00000000000000000000000073271d93b482237f6b8dace6952b4fe88fa8115581565b6040516001600160a01b039091168152602001610380565b34801561050357600080fd5b5061037660195481565b34801561051957600080fd5b506103cb610528366004612957565b610b49565b34801561053957600080fd5b5061037660175481565b34801561054f57600080fd5b5061042661055e366004612983565b610b7f565b34801561056f57600080fd5b5061042661057e3660046129e1565b610bcd565b34801561058f57600080fd5b506003546103cb9060ff1681565b3480156105a957600080fd5b50602554610376565b3480156105be57600080fd5b506026546103cb90610100900460ff1681565b3480156105dd57600080fd5b506104266105ec366004612983565b610c5b565b3480156105fd57600080fd5b5061042661060c366004612a0a565b610ca9565b34801561061d57600080fd5b506103cb61062c366004612983565b610cfe565b34801561063d57600080fd5b50610426610d4c565b34801561065257600080fd5b506006546104df906001600160a01b031681565b34801561067257600080fd5b50610426610681366004612983565b610d62565b34801561069257600080fd5b5061037660235481565b3480156106a857600080fd5b506007546104df906001600160a01b031681565b3480156106c857600080fd5b50610426610dae565b3480156106dd57600080fd5b506103766106ec366004612983565b610e63565b3480156106fd57600080fd5b50610426610ec2565b34801561071257600080fd5b50610426610721366004612a3f565b610f36565b34801561073257600080fd5b506005546104df906001600160a01b031681565b34801561075257600080fd5b5061037660165481565b34801561076857600080fd5b50610426610777366004612a3f565b610fcf565b34801561078857600080fd5b50610376601f5481565b34801561079e57600080fd5b506104df7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156107d257600080fd5b506000546001600160a01b03166104df565b3480156107f057600080fd5b5061039e611085565b34801561080557600080fd5b506008546104df906001600160a01b031681565b34801561082557600080fd5b506103cb610834366004612957565b611094565b34801561084557600080fd5b506103cb610854366004612957565b6110e3565b34801561086557600080fd5b50610376601c5481565b34801561087b57600080fd5b5061037660215481565b34801561089157600080fd5b506104266108a0366004612a3f565b6110f0565b3480156108b157600080fd5b506104266108c03660046129e1565b611174565b3480156108d157600080fd5b50610376601d5481565b3480156108e757600080fd5b5061037660225481565b3480156108fd57600080fd5b5061042661090c366004612a6b565b6111a3565b34801561091d57600080fd5b5061037661092c366004612a86565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561096357600080fd5b50610426610972366004612983565b611221565b34801561098357600080fd5b50610376601e5481565b34801561099957600080fd5b506104266109a83660046129e1565b61126c565b3480156109b957600080fd5b506104266109c8366004612983565b6112ea565b3480156109d957600080fd5b506104266113d4565b6060601080546109f190612abf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d90612abf565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b5050505050905090565b6000610a8133848461140d565b5060015b92915050565b6000546001600160a01b03163314610abe5760405162461bcd60e51b8152600401610ab590612af9565b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610aed848484611531565b610b3f8433610b3a85604051806060016040528060288152602001612d2d602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611865565b61140d565b5060019392505050565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610a81918590610b3a908661189f565b6000546001600160a01b03163314610ba95760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314610bf75760405162461bcd60e51b8152600401610ab590612af9565b6024819055601354610c1790600190610c11906064611905565b90611947565b60245411610c585760405162461bcd60e51b815260206004820152600e60248201526d151bdbc81b195cdcc81b1a5b5a5d60921b6044820152606401610ab5565b50565b6000546001600160a01b03163314610c855760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610cd35760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610d295760405162461bcd60e51b8152600401610ab590612af9565b506001600160a01b0381166000908152600c602052604090205460ff165b919050565b6000610d5730610e63565b9050610c58816119c9565b6000546001600160a01b03163314610d8c5760405162461bcd60e51b8152600401610ab590612af9565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610dd85760405162461bcd60e51b8152600401610ab590612af9565b604051600090339047908381818185875af1925050503d8060008114610e1a576040519150601f19603f3d011682016040523d82523d6000602084013e610e1f565b606091505b5050905080610c585760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610ab5565b6001600160a01b0381166000908152600e602052604081205460ff1615610ea057506001600160a01b03166000908152600a602052604090205490565b6001600160a01b038216600090815260096020526040902054610a8590611b96565b6000546001600160a01b03163314610eec5760405162461bcd60e51b8152600401610ab590612af9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f605760405162461bcd60e51b8152600401610ab590612af9565b601b839055601c829055601d8190556000610f8582610f7f868661189f565b9061189f565b9050601d54601c54601b54610f9a9190612b44565b610fa49190612b44565b601e556102bc811115610fc95760405162461bcd60e51b8152600401610ab590612b57565b50505050565b6000546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610ab590612af9565b601683905560178290556018819055604080516060810182528481526020810184905290810182905261103090601a906003612894565b50600061104182610f7f868661189f565b90506018546017546016546110569190612b44565b6110609190612b44565b6019556102bc811115610fc95760405162461bcd60e51b8152600401610ab590612b57565b6060601180546109f190612abf565b6000610a813384610b3a85604051806060016040528060258152602001612d5560259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611865565b6000610a81338484611531565b6000546001600160a01b0316331461111a5760405162461bcd60e51b8152600401610ab590612af9565b601f83905560208290556021819055806111348385612b44565b61113e9190612b44565b602255600061115182610f7f868661189f565b90506064811115610fc95760405162461bcd60e51b8152600401610ab590612b57565b6000546001600160a01b0316331461119e5760405162461bcd60e51b8152600401610ab590612af9565b602555565b6000546001600160a01b031633146111cd5760405162461bcd60e51b8152600401610ab590612af9565b602680548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061121690831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461124b5760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b031633146112965760405162461bcd60e51b8152600401610ab590612af9565b60238190556013546112a9906005611905565b6023541015610c585760405162461bcd60e51b815260206004820152600d60248201526c151bdbc81b1bddc81b1a5b5a5d609a1b6044820152606401610ab5565b6000546001600160a01b031633146113145760405162461bcd60e51b8152600401610ab590612af9565b6001600160a01b0381166113795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113fe5760405162461bcd60e51b8152600401610ab590612af9565b6003805460ff19166001179055565b6001600160a01b03831661146f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab5565b6001600160a01b0382166114d05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab5565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff168061155e57506001600160a01b03821660009081526004602052604090205460ff165b8061158157506001600160a01b03811660009081526004602052604090205460ff165b6115b85760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610ab5565b6001600160a01b03851661161c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab5565b6001600160a01b03841661167e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab5565b600083116116e05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ab5565b6000546001600160a01b0386811691161480159061170c57506000546001600160a01b03858116911614155b15611774576023548311156117745760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ab5565b600061177f30610e63565b602554909150811015611793878787611c13565b60265460ff161580156117ad5750602654610100900460ff165b80156117eb57507f00000000000000000000000073271d93b482237f6b8dace6952b4fe88fa811556001600160a01b0316876001600160a01b031614155b15611804578015611804576025549150611804826119c9565b6001600160a01b0387166000908152600c602052604090205460019060ff168061184657506001600160a01b0387166000908152600c602052604090205460ff165b1561184f575060005b61185b88888884611d0f565b5050505050505050565b600081848411156118895760405162461bcd60e51b8152600401610ab591906128f4565b5060006118968486612b7d565b95945050505050565b6000806118ac8385612b44565b9050838110156118fe5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ab5565b9392505050565b60006118fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f17565b60008260000361195957506000610a85565b60006119658385612b90565b9050826119728583612ba7565b146118fe5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ab5565b6026805460ff191660011790556018546017546016546000926119f1929091610f7f9161189f565b90506000611a12601d54610f7f601c54601b5461189f90919063ffffffff16565b90506000611a20838361189f565b905080600003611a3257505050611b89565b6000611a5d6002611a5784611a57601b54601654611a509190612b44565b8a90611947565b90611905565b90506000611a6b8683611f45565b9050611a7681611f87565b60004790506000611aa06002611a5787611a57601b54601654611a999190612b44565b8790611947565b9050600084118015611ab25750600081115b15611ac157611ac18482612180565b6000611ae186611a57601c54601754611ada9190612b44565b8690611947565b90508015611b25576005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b23573d6000803e3d6000fd5b505b6000611b3b82611b358686611f45565b90611f45565b90508015611b7f576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b7d573d6000803e3d6000fd5b505b5050505050505050505b506026805460ff19169055565b6000601454821115611bfd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ab5565b6000611c07612286565b90506118fe8382611905565b6000611c2282610f7f85610e63565b6001600160a01b0385166000908152600d602052604090205490915060ff16158015611c6757506001600160a01b0383166000908152600d602052604090205460ff16155b15611c8e57602454811115611c8e5760405162461bcd60e51b8152600401610ab590612bc9565b7f00000000000000000000000073271d93b482237f6b8dace6952b4fe88fa811556001600160a01b0316846001600160a01b0316148015611ce857506001600160a01b0383166000908152600d602052604090205460ff16155b15610fc957602454811115610fc95760405162461bcd60e51b8152600401610ab590612bc9565b80611d2d57611d28600060168190556017819055601855565b611e0d565b7f00000000000000000000000073271d93b482237f6b8dace6952b4fe88fa811556001600160a01b0316836001600160a01b031603611d7d57611d7d601b54601655601c54601755601d54601855565b7f00000000000000000000000073271d93b482237f6b8dace6952b4fe88fa811556001600160a01b0316846001600160a01b031614158015611df157507f00000000000000000000000073271d93b482237f6b8dace6952b4fe88fa811556001600160a01b0316836001600160a01b031614155b15611e0d57611e0d601f54601655602054601755602154601855565b6001600160a01b0384166000908152600e602052604090205460ff168015611e4e57506001600160a01b0383166000908152600e602052604090205460ff16155b15611e6357611e5e8484846122a9565b611f0f565b6001600160a01b0384166000908152600e602052604090205460ff16158015611ea457506001600160a01b0383166000908152600e602052604090205460ff165b15611eb457611e5e848484612402565b6001600160a01b0384166000908152600e602052604090205460ff168015611ef457506001600160a01b0383166000908152600e602052604090205460ff165b15611f0457611e5e8484846124a3565b611f0f84848461250e565b610fc961254a565b60008183611f385760405162461bcd60e51b8152600401610ab591906128f4565b5060006118968486612ba7565b60006118fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611865565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fbc57611fbc612c11565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e9190612c27565b8160018151811061207157612071612c11565b60200260200101906001600160a01b031690816001600160a01b0316815250506120bc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461140d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612111908590600090869030904290600401612c88565b600060405180830381600087803b15801561212b57600080fd5b505af115801561213f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612174929190612cc4565b60405180910390a15050565b6121ab307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461140d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806121f26000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561225a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061227f9190612ce5565b5050505050565b60008060006122936125b9565b90925090506122a28282611905565b9250505090565b6000806000806122b88561273b565b6001600160a01b038b166000908152600a6020526040902054939750919550935091506122e59086611f45565b6001600160a01b0388166000908152600a60209081526040808320939093556009905220546123149085611f45565b6001600160a01b038089166000908152600960205260408082209390935590881681522054612343908461189f565b6001600160a01b03871660009081526009602052604090205561236581612779565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123aa91815260200190565b60405180910390a380156123f95760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050565b6000806000806124118561273b565b6001600160a01b038b166000908152600960205260409020549397509195509350915061243e9085611f45565b6001600160a01b038089166000908152600960209081526040808320949094559189168152600a9091522054612474908361189f565b6001600160a01b0387166000908152600a6020908152604080832093909355600990522054612343908461189f565b6000806000806124b28561273b565b6001600160a01b038b166000908152600a6020526040902054939750919550935091506124df9086611f45565b6001600160a01b0388166000908152600a602090815260408083209390935560099052205461243e9085611f45565b60008060008061251d8561273b565b6001600160a01b038b16600090815260096020526040902054939750919550935091506123149085611f45565b601a60008154811061255e5761255e612c11565b9060005260206000200154601681905550601a60018154811061258357612583612c11565b9060005260206000200154601781905550601a6002815481106125a8576125a8612c11565b600091825260209091200154601855565b6014546013546000918291825b600f5481101561270b578260096000600f84815481106125e8576125e8612c11565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612653575081600a6000600f848154811061262c5761262c612c11565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561266957601454601354945094505050509091565b6126af60096000600f848154811061268357612683612c11565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611f45565b92506126f7600a6000600f84815481106126cb576126cb612c11565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611f45565b91508061270381612d13565b9150506125c6565b5060135460145461271b91611905565b821015612732576014546013549350935050509091565b90939092509050565b60008060008060008061274d87612802565b915091506000806127668984612761612286565b612829565b909a909950939750919550919350505050565b6000612783612286565b905060006127918383611947565b306000908152600960205260409020549091506127ae908261189f565b30600090815260096020908152604080832093909355600e9052205460ff16156127fd57306000908152600a60205260409020546127ec908461189f565b306000908152600a60205260409020555b505050565b600080600061281084612862565b9050600061281e8583611f45565b959194509092505050565b600080806128378685611947565b905060006128458686611947565b905060006128538383611f45565b92989297509195505050505050565b600080612882601854610f7f60175460165461189f90919063ffffffff16565b90506118fe6103e8611a578584611947565b8280548282559060005260206000209081019282156128cf579160200282015b828111156128cf5782518255916020019190600101906128b4565b506128db9291506128df565b5090565b5b808211156128db57600081556001016128e0565b600060208083528351808285015260005b8181101561292157858101830151858201604001528201612905565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c5857600080fd5b6000806040838503121561296a57600080fd5b823561297581612942565b946020939093013593505050565b60006020828403121561299557600080fd5b81356118fe81612942565b6000806000606084860312156129b557600080fd5b83356129c081612942565b925060208401356129d081612942565b929592945050506040919091013590565b6000602082840312156129f357600080fd5b5035919050565b80358015158114610d4757600080fd5b60008060408385031215612a1d57600080fd5b8235612a2881612942565b9150612a36602084016129fa565b90509250929050565b600080600060608486031215612a5457600080fd5b505081359360208301359350604090920135919050565b600060208284031215612a7d57600080fd5b6118fe826129fa565b60008060408385031215612a9957600080fd5b8235612aa481612942565b91506020830135612ab481612942565b809150509250929050565b600181811c90821680612ad357607f821691505b602082108103612af357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a8557610a85612b2e565b6020808252600c908201526b546f6f20486967682046656560a01b604082015260600190565b81810381811115610a8557610a85612b2e565b8082028115828204841417610a8557610a85612b2e565b600082612bc457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526028908201527f457863656564696e67206d617820746f6b656e73206c696d697420696e20746860408201526719481dd85b1b195d60c21b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612c3957600080fd5b81516118fe81612942565b600081518084526020808501945080840160005b83811015612c7d5781516001600160a01b031687529582019590820190600101612c58565b509495945050505050565b85815284602082015260a060408201526000612ca760a0830186612c44565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612cdd6040830184612c44565b949350505050565b600080600060608486031215612cfa57600080fd5b8351925060208401519150604084015190509250925092565b600060018201612d2557612d25612b2e565b506001019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204157b3e6e0102904e79f75d4b05bb60512ba9e655f9460ab11cbe6c807a747a764736f6c63430008130033

Deployed Bytecode Sourcemap

6158:21906:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7378:31;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7378:31:0;;;;;;;;9469:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10431:186::-;;;;;;;;;;-1:-1:-1;10431:186:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;10431:186:0;1205:187:1;8133:53:0;;;;;;;;;;;;;;;;11781:87;;;;;;;;;;-1:-1:-1;11850:10:0;;11781:87;;26082:115;;;;;;;;;;-1:-1:-1;26082:115:0;;;;;:::i;:::-;;:::i;:::-;;9746:95;;;;;;;;;;-1:-1:-1;9826:7:0;;9746:95;;7876:35;;;;;;;;;;;;;;;;10625:446;;;;;;;;;;-1:-1:-1;10625:446:0;;;;;:::i;:::-;;:::i;7600:37::-;;;;;;;;;;;;;;;;9655:83;;;;;;;;;;-1:-1:-1;9721:9:0;;9655:83;;9721:9;;;;2252:36:1;;2240:2;2225:18;9655:83:0;2110:184:1;8343:32:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;8343:32:0;2299:203:1;7416:92:0;;;;;;;;;;;;;;;;11079:293;;;;;;;;;;-1:-1:-1;11079:293:0;;;;;:::i;:::-;;:::i;7333:38::-;;;;;;;;;;;;;;;;23116:108;;;;;;;;;;-1:-1:-1;23116:108:0;;;;;:::i;:::-;;:::i;27467:231::-;;;;;;;;;;-1:-1:-1;27467:231:0;;;;;:::i;:::-;;:::i;5622:26::-;;;;;;;;;;-1:-1:-1;5622:26:0;;;;;;;;11876:118;;;;;;;;;;-1:-1:-1;11964:22:0;;11876:118;;8412:40;;;;;;;;;;-1:-1:-1;8412:40:0;;;;;;;;;;;6042:109;;;;;;;;;;-1:-1:-1;6042:109:0;;;;;:::i;:::-;;:::i;27299:160::-;;;;;;;;;;-1:-1:-1;27299:160:0;;;;;:::i;:::-;;:::i;22961:147::-;;;;;;;;;;-1:-1:-1;22961:147:0;;;;;:::i;:::-;;:::i;27895:129::-;;;;;;;;;;;;;:::i;6355:96::-;;;;;;;;;;-1:-1:-1;6355:96:0;;;;-1:-1:-1;;;;;6355:96:0;;;25939:135;;;;;;;;;;-1:-1:-1;25939:135:0;;;;;:::i;:::-;;:::i;8056:49::-;;;;;;;;;;;;;;;;6458:67;;;;;;;;;;-1:-1:-1;6458:67:0;;;;-1:-1:-1;;;;;6458:67:0;;;27706:181;;;;;;;;;;;;;:::i;9849:198::-;;;;;;;;;;-1:-1:-1;9849:198:0;;;;;:::i;:::-;;:::i;3649:148::-;;;;;;;;;;;;;:::i;24610:482::-;;;;;;;;;;-1:-1:-1;24610:482:0;;;;;:::i;:::-;;:::i;6247:101::-;;;;;;;;;;-1:-1:-1;6247:101:0;;;;-1:-1:-1;;;;;6247:101:0;;;7290:36;;;;;;;;;;;;;;;;24049:553;;;;;;;;;;-1:-1:-1;24049:553:0;;;;;:::i;:::-;;:::i;7834:35::-;;;;;;;;;;;;;;;;8283:53;;;;;;;;;;;;;;;3435:79;;;;;;;;;;-1:-1:-1;3473:7:0;3500:6;-1:-1:-1;;;;;3500:6:0;3435:79;;9560:87;;;;;;;;;;;;;:::i;6532:69::-;;;;;;;;;;-1:-1:-1;6532:69:0;;;;-1:-1:-1;;;;;6532:69:0;;;11380:393;;;;;;;;;;-1:-1:-1;11380:393:0;;;;;:::i;:::-;;:::i;10055:192::-;;;;;;;;;;-1:-1:-1;10055:192:0;;;;;:::i;:::-;;:::i;7644:39::-;;;;;;;;;;;;;;;;7918:30;;;;;;;;;;;;;;;;25100:476;;;;;;;;;;-1:-1:-1;25100:476:0;;;;;:::i;:::-;;:::i;25760:171::-;;;;;;;;;;-1:-1:-1;25760:171:0;;;;;:::i;:::-;;:::i;7690:32::-;;;;;;;;;;;;;;;;7955:92;;;;;;;;;;;;;;;;26205:171;;;;;;;;;;-1:-1:-1;26205:171:0;;;;;:::i;:::-;;:::i;10255:168::-;;;;;;;;;;-1:-1:-1;10255:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;10388:18:0;;;10361:7;10388:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10255:168;23232:107;;;;;;;;;;-1:-1:-1;23232:107:0;;;;;:::i;:::-;;:::i;7729:96::-;;;;;;;;;;;;;;;;25584:168;;;;;;;;;;-1:-1:-1;25584:168:0;;;;;:::i;:::-;;:::i;3805:277::-;;;;;;;;;;-1:-1:-1;3805:277:0;;;;;:::i;:::-;;:::i;5962:72::-;;;;;;;;;;;;;:::i;9469:83::-;9506:13;9539:5;9532:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9469:83;:::o;10431:186::-;10531:4;10548:39;295:10;10571:7;10580:6;10548:8;:39::i;:::-;-1:-1:-1;10605:4:0;10431:186;;;;;:::o;26082:115::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;;;;;;;;;26156:10:::1;:33:::0;;-1:-1:-1;;;;;;26156:33:0::1;-1:-1:-1::0;;;;;26156:33:0;;;::::1;::::0;;;::::1;::::0;;26082:115::o;10625:446::-;10757:4;10774:36;10784:6;10792:9;10803:6;10774:9;:36::i;:::-;10821:220;10844:6;295:10;10892:138;10948:6;10892:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10892:19:0;;;;;;:11;:19;;;;;;;;295:10;10892:33;;;;;;;;;;:37;:138::i;:::-;10821:8;:220::i;:::-;-1:-1:-1;11059:4:0;10625:446;;;;;:::o;11079:293::-;295:10;11192:4;11281:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11281:34:0;;;;;;;;;;11192:4;;11209:133;;11259:7;;11281:50;;11320:10;11281:38;:50::i;23116:108::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23185:24:0::1;;::::0;;;:15:::1;:24;::::0;;;;:31;;-1:-1:-1;;23185:31:0::1;23212:4;23185:31;::::0;;23116:108::o;27467:231::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;27546:12:::1;:22:::0;;;27616:7:::1;::::0;:23:::1;::::0;27637:1:::1;::::0;27616:16:::1;::::0;27628:3:::1;27616:11;:16::i;:::-;:20:::0;::::1;:23::i;:::-;27601:12;;:38;27579:102;;;::::0;-1:-1:-1;;;27579:102:0;;5482:2:1;27579:102:0::1;::::0;::::1;5464:21:1::0;5521:2;5501:18;;;5494:30;-1:-1:-1;;;5540:18:1;;;5533:44;5594:18;;27579:102:0::1;5280:338:1::0;27579:102:0::1;27467:231:::0;:::o;6042:109::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6116:20:0::1;;::::0;;;:10:::1;:20;::::0;;;;:27;;-1:-1:-1;;6116:27:0::1;6139:4;6116:27;::::0;;6042:109::o;27299:160::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27414:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;27414:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27299:160::o;22961:147::-;23052:4;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;23076:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;3632:1;22961:147:::0;;;:::o;27895:129::-;27938:18;27959:24;27977:4;27959:9;:24::i;:::-;27938:45;;27994:22;28005:10;27994;:22::i;25939:135::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;26023:15:::1;:43:::0;;-1:-1:-1;;;;;;26023:43:0::1;-1:-1:-1::0;;;;;26023:43:0;;;::::1;::::0;;;::::1;::::0;;25939:135::o;27706:181::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;27783:49:::1;::::0;27765:12:::1;::::0;27783:10:::1;::::0;27806:21:::1;::::0;27765:12;27783:49;27765:12;27783:49;27806:21;27783:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27764:68;;;27851:7;27843:36;;;::::0;-1:-1:-1;;;27843:36:0;;6035:2:1;27843:36:0::1;::::0;::::1;6017:21:1::0;6074:2;6054:18;;;6047:30;-1:-1:-1;;;6093:18:1;;;6086:46;6149:18;;27843:36:0::1;5833:340:1::0;9849:198:0;-1:-1:-1;;;;;9939:20:0;;9915:7;9939:20;;;:11;:20;;;;;;;;9935:49;;;-1:-1:-1;;;;;;9968:16:0;;;;;:7;:16;;;;;;;9849:198::o;9935:49::-;-1:-1:-1;;;;;10022:16:0;;;;;;:7;:16;;;;;;10002:37;;:19;:37::i;3649:148::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;3756:1:::1;3740:6:::0;;3719:40:::1;::::0;-1:-1:-1;;;;;3740:6:0;;::::1;::::0;3719:40:::1;::::0;3756:1;;3719:40:::1;3787:1;3770:19:::0;;-1:-1:-1;;;;;;3770:19:0::1;::::0;;3649:148::o;24610:482::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;24760:18:::1;:34:::0;;;24805:18:::1;:34:::0;;;24850:13:::1;:24:::0;;;-1:-1:-1;24904:46:0::1;24866:8:::0;24904:32:::1;24781:13:::0;24826;24904:17:::1;:32::i;:::-;:36:::0;::::1;:46::i;:::-;24885:65;;25020:13;;24999:18;;24978;;:39;;;;:::i;:::-;:55;;;;:::i;:::-;24961:14;:72:::0;25064:3:::1;25052:15:::0;::::1;;25044:40;;;;-1:-1:-1::0;;;25044:40:0::1;;;;;;;:::i;:::-;24749:343;24610:482:::0;;;:::o;24049:553::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;24198:17:::1;:33:::0;;;24242:17:::1;:33:::0;;;24286:12:::1;:23:::0;;;24320:68:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;:13:::1;::::0;:68:::1;;:::i;:::-;-1:-1:-1::0;24399:16:0::1;24418:46;24455:8:::0;24418:32:::1;:13:::0;24436;24418:17:::1;:32::i;:46::-;24399:65;;24531:12;;24511:17;;24491;;:37;;;;:::i;:::-;:52;;;;:::i;:::-;24475:13;:68:::0;24574:3:::1;24562:15:::0;::::1;;24554:40;;;;-1:-1:-1::0;;;24554:40:0::1;;;;;;;:::i;9560:87::-:0;9599:13;9632:7;9625:14;;;;;:::i;11380:393::-;11498:4;11515:228;295:10;11565:7;11587:145;11644:15;11587:145;;;;;;;;;;;;;;;;;295:10;11587:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11587:34:0;;;;;;;;;;;;:38;:145::i;10055:192::-;10158:4;10175:42;295:10;10199:9;10210:6;10175:9;:42::i;25100:476::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;25254:16:::1;:32:::0;;;25297:16:::1;:32:::0;;;25340:11:::1;:22:::0;;;25354:8;25392:35:::1;25316:13:::0;25273;25392:35:::1;:::i;:::-;:49;;;;:::i;:::-;25373:16;:68:::0;25452:16:::1;25471:46;25508:8:::0;25471:32:::1;:13:::0;25489;25471:17:::1;:32::i;:46::-;25452:65;;25548:3;25536:8;:15;;25528:40;;;;-1:-1:-1::0;;;25528:40:0::1;;;;;;;:::i;25760:171::-:0;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;25875:22:::1;:48:::0;25760:171::o;26205:::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;26282:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;26282:32:0;;::::1;;::::0;;26330:38:::1;::::0;::::1;::::0;::::1;::::0;26306:8;1370:14:1;1363:22;1345:41;;1333:2;1318:18;;1205:187;26330:38:0::1;;;;;;;;26205:171:::0;:::o;23232:107::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23299:24:0::1;23326:5;23299:24:::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;23299:32:0::1;::::0;;23232:107::o;25584:168::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;25659:8:::1;:22:::0;;;25712:7:::1;::::0;:14:::1;::::0;25724:1:::1;25712:11;:14::i;:::-;25700:8;;:26;;25692:52;;;::::0;-1:-1:-1;;;25692:52:0;;6983:2:1;25692:52:0::1;::::0;::::1;6965:21:1::0;7022:2;7002:18;;;6995:30;-1:-1:-1;;;7041:18:1;;;7034:43;7094:18;;25692:52:0::1;6781:337:1::0;3805:277:0;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3907:21:0;::::1;3885:109;;;::::0;-1:-1:-1;;;3885:109:0;;7325:2:1;3885:109:0::1;::::0;::::1;7307:21:1::0;7364:2;7344:18;;;7337:30;7403:34;7383:18;;;7376:62;-1:-1:-1;;;7454:18:1;;;7447:36;7500:19;;3885:109:0::1;7123:402:1::0;3885:109:0::1;4031:6;::::0;;4010:37:::1;::::0;-1:-1:-1;;;;;4010:37:0;;::::1;::::0;4031:6;::::1;::::0;4010:37:::1;::::0;::::1;4058:6;:16:::0;;-1:-1:-1;;;;;;4058:16:0::1;-1:-1:-1::0;;;;;4058:16:0;;;::::1;::::0;;;::::1;::::0;;3805:277::o;5962:72::-;3562:6;;-1:-1:-1;;;;;3562:6:0;295:10;3562:22;3554:67;;;;-1:-1:-1;;;3554:67:0;;;;;;;:::i;:::-;6013:6:::1;:13:::0;;-1:-1:-1;;6013:13:0::1;6022:4;6013:13;::::0;;5962:72::o;12317:335::-;-1:-1:-1;;;;;12410:19:0;;12402:68;;;;-1:-1:-1;;;12402:68:0;;7732:2:1;12402:68:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;-1:-1:-1;;;7861:18:1;;;7854:34;7905:19;;12402:68:0;7530:400:1;12402:68:0;-1:-1:-1;;;;;12489:21:0;;12481:68;;;;-1:-1:-1;;;12481:68:0;;8137:2:1;12481:68:0;;;8119:21:1;8176:2;8156:18;;;8149:30;8215:34;8195:18;;;8188:62;-1:-1:-1;;;8266:18:1;;;8259:32;8308:19;;12481:68:0;7935:398:1;12481:68:0;-1:-1:-1;;;;;12560:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12612:32;;160:25:1;;;12612:32:0;;133:18:1;12612:32:0;;;;;;;12317:335;;;:::o;12660:1321::-;5764:6;;12768:4;;12774:2;;5764:6;;;:26;;-1:-1:-1;;;;;;5774:16:0;;;;;;:10;:16;;;;;;;;5764:26;:44;;;-1:-1:-1;;;;;;5794:14:0;;;;;;:10;:14;;;;;;;;5764:44;5756:65;;;;-1:-1:-1;;;5756:65:0;;8540:2:1;5756:65:0;;;8522:21:1;8579:1;8559:18;;;8552:29;-1:-1:-1;;;8597:18:1;;;8590:38;8645:18;;5756:65:0;8338:331:1;5756:65:0;-1:-1:-1;;;;;12797:18:0;::::1;12789:68;;;::::0;-1:-1:-1;;;12789:68:0;;8876:2:1;12789:68:0::1;::::0;::::1;8858:21:1::0;8915:2;8895:18;;;8888:30;8954:34;8934:18;;;8927:62;-1:-1:-1;;;9005:18:1;;;8998:35;9050:19;;12789:68:0::1;8674:401:1::0;12789:68:0::1;-1:-1:-1::0;;;;;12876:16:0;::::1;12868:64;;;::::0;-1:-1:-1;;;12868:64:0;;9282:2:1;12868:64:0::1;::::0;::::1;9264:21:1::0;9321:2;9301:18;;;9294:30;9360:34;9340:18;;;9333:62;-1:-1:-1;;;9411:18:1;;;9404:33;9454:19;;12868:64:0::1;9080:399:1::0;12868:64:0::1;12960:1;12951:6;:10;12943:64;;;::::0;-1:-1:-1;;;12943:64:0;;9686:2:1;12943:64:0::1;::::0;::::1;9668:21:1::0;9725:2;9705:18;;;9698:30;9764:34;9744:18;;;9737:62;-1:-1:-1;;;9815:18:1;;;9808:39;9864:19;;12943:64:0::1;9484:405:1::0;12943:64:0::1;3473:7:::0;3500:6;-1:-1:-1;;;;;13022:15:0;;::::1;3500:6:::0;;13022:15:::1;::::0;::::1;::::0;:32:::1;;-1:-1:-1::0;3473:7:0;3500:6;-1:-1:-1;;;;;13041:13:0;;::::1;3500:6:::0;;13041:13:::1;;13022:32;13018:185;;;13107:8;;13097:6;:18;;13071:120;;;::::0;-1:-1:-1;;;13071:120:0;;10096:2:1;13071:120:0::1;::::0;::::1;10078:21:1::0;10135:2;10115:18;;;10108:30;10174:34;10154:18;;;10147:62;-1:-1:-1;;;10225:18:1;;;10218:38;10273:19;;13071:120:0::1;9894:404:1::0;13071:120:0::1;13215:28;13246:24;13264:4;13246:9;:24::i;:::-;13349:22;::::0;13215:55;;-1:-1:-1;13312:59:0;::::1;;13384:31;13398:4:::0;13404:2;13408:6;13384:13:::1;:31::i;:::-;13447:16;::::0;::::1;;13446:17;:42:::0;::::1;;;-1:-1:-1::0;13467:21:0::1;::::0;::::1;::::0;::::1;;;13446:42;:61;;;;;13500:7;-1:-1:-1::0;;;;;13492:15:0::1;:4;-1:-1:-1::0;;;;;13492:15:0::1;;;13446:61;13428:277;;;13538:23;13534:160;;;13605:22;;13582:45;;13646:32;13657:20;13646:10;:32::i;:::-;-1:-1:-1::0;;;;;13834:21:0;::::1;13717:12;13834:21:::0;;;:15:::1;:21;::::0;;;;;13732:4:::1;::::0;13834:21:::1;;::::0;:44:::1;;-1:-1:-1::0;;;;;;13859:19:0;::::1;;::::0;;;:15:::1;:19;::::0;;;;;::::1;;13834:44;13830:92;;;-1:-1:-1::0;13905:5:0::1;13830:92;13932:41;13947:4;13953:2;13957:6;13965:7;13932:14;:41::i;:::-;12778:1203;;;12660:1321:::0;;;;;:::o;1726:226::-;1846:7;1882:12;1874:6;;;;1866:29;;;;-1:-1:-1;;;1866:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1906:9:0;1918:5;1922:1;1918;:5;:::i;:::-;1906:17;1726:226;-1:-1:-1;;;;;1726:226:0:o;1393:181::-;1451:7;;1483:5;1487:1;1483;:5;:::i;:::-;1471:17;;1512:1;1507;:6;;1499:46;;;;-1:-1:-1;;;1499:46:0;;10638:2:1;1499:46:0;;;10620:21:1;10677:2;10657:18;;;10650:30;10716:29;10696:18;;;10689:57;10763:18;;1499:46:0;10436:351:1;1499:46:0;1565:1;1393:181;-1:-1:-1;;;1393:181:0:o;2218:132::-;2276:7;2303:39;2307:1;2310;2303:39;;;;;;;;;;;;;;;;;:3;:39::i;1960:250::-;2018:7;2042:1;2047;2042:6;2038:47;;-1:-1:-1;2072:1:0;2065:8;;2038:47;2097:9;2109:5;2113:1;2109;:5;:::i;:::-;2097:17;-1:-1:-1;2142:1:0;2133:5;2137:1;2097:17;2133:5;:::i;:::-;:10;2125:56;;;;-1:-1:-1;;;2125:56:0;;11389:2:1;2125:56:0;;;11371:21:1;11428:2;11408:18;;;11401:30;11467:34;11447:18;;;11440:62;-1:-1:-1;;;11518:18:1;;;11511:31;11559:19;;2125:56:0;11187:397:1;13989:1582:0;8750:16;:23;;-1:-1:-1;;8750:23:0;8769:4;8750:23;;;14155:12:::1;::::0;14118:17:::1;::::0;14096::::1;::::0;8750:16;;14096:82:::1;::::0;14155:12;;14096:40:::1;::::0;:21:::1;:40::i;:82::-;14070:108;;14189:24;14216:85;14277:13;;14216:42;14239:18;;14216;;:22;;:42;;;;:::i;:85::-;14189:112:::0;-1:-1:-1;14312:25:0::1;14340:37;:15:::0;14189:112;14340:19:::1;:37::i;:::-;14312:65;;14400:17;14421:1;14400:22:::0;14396:61:::1;;14439:7;;;;;14396:61;14469:27;14499:136;14633:1;14499:115;14596:17;14499:78;14558:18;;14538:17;;:38;;;;:::i;:::-;14499:20:::0;;:38:::1;:78::i;:::-;:96:::0;::::1;:115::i;:136::-;14469:166:::0;-1:-1:-1;14646:22:0::1;14671:45;:20:::0;14469:166;14671:24:::1;:45::i;:::-;14646:70;;14727:32;14744:14;14727:16;:32::i;:::-;14772:18;14793:21;14772:42;;14825:23;14851:126;14975:1;14851:105;14938:17;14851:68;14900:18;;14880:17;;:38;;;;:::i;:::-;14851:10:::0;;:28:::1;:68::i;:126::-;14825:152;;15016:1;14994:19;:23;:46;;;;;15039:1;15021:15;:19;14994:46;14990:129;;;15057:50;15070:19;15091:15;15057:12;:50::i;:::-;15131:23;15157:105;15244:17;15157:68;15206:18;;15186:17;;:38;;;;:::i;:::-;15157:10:::0;;:28:::1;:68::i;:105::-;15131:131:::0;-1:-1:-1;15277:19:0;;15273:93:::1;;15313:15;::::0;:41:::1;::::0;-1:-1:-1;;;;;15313:15:0;;::::1;::::0;:41;::::1;;;::::0;15338:15;;15313::::1;:41:::0;:15;:41;15338:15;15313;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15273:93;15378:18;15399:76;15449:15:::0;15399:31:::1;:10:::0;15414:15;15399:14:::1;:31::i;:::-;:35:::0;::::1;:76::i;:::-;15378:97:::0;-1:-1:-1;15490:14:0;;15486:78:::1;;15521:10;::::0;:31:::1;::::0;-1:-1:-1;;;;;15521:10:0;;::::1;::::0;:31;::::1;;;::::0;15541:10;;15521::::1;:31:::0;:10;:31;15541:10;15521;:31;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15486:78;14059:1512;;;;;;;;;8784:1;-1:-1:-1::0;8796:16:0;:24;;-1:-1:-1;;8796:24:0;;;13989:1582::o;12002:307::-;12086:7;12139;;12128;:18;;12106:110;;;;-1:-1:-1;;;12106:110:0;;11791:2:1;12106:110:0;;;11773:21:1;11830:2;11810:18;;;11803:30;11869:34;11849:18;;;11842:62;-1:-1:-1;;;11920:18:1;;;11913:40;11970:19;;12106:110:0;11589:406:1;12106:110:0;12227:19;12249:10;:8;:10::i;:::-;12227:32;-1:-1:-1;12277:24:0;:7;12227:32;12277:11;:24::i;26681:610::-;26804:18;26825:25;26843:6;26825:13;26835:2;26825:9;:13::i;:25::-;-1:-1:-1;;;;;26866:23:0;;;;;;:17;:23;;;;;;26804:46;;-1:-1:-1;26866:23:0;;26865:24;:50;;;;-1:-1:-1;;;;;;26894:21:0;;;;;;:17;:21;;;;;;;;26893:22;26865:50;26861:211;;;26972:12;;26958:10;:26;;26932:128;;;;-1:-1:-1;;;26932:128:0;;;;;;;:::i;:::-;27094:7;-1:-1:-1;;;;;27086:15:0;:4;-1:-1:-1;;;;;27086:15:0;;:41;;;;-1:-1:-1;;;;;;27106:21:0;;;;;;:17;:21;;;;;;;;27105:22;27086:41;27082:202;;;27184:12;;27170:10;:26;;27144:128;;;;-1:-1:-1;;;27144:128:0;;;;;;;:::i;16640:953::-;16796:7;16791:288;;16820:14;23410:1;23390:17;:21;;;23422:17;:21;;;23454:12;:16;23347:131;16820:14;16791:288;;;16884:7;-1:-1:-1;;;;;16871:20:0;:9;-1:-1:-1;;;;;16871:20:0;;16867:73;;16912:12;23732:18;;23712:17;:38;23781:18;;23761:17;:38;23825:13;;23810:12;:28;23671:175;16912:12;16970:7;-1:-1:-1;;;;;16960:17:0;:6;-1:-1:-1;;;;;16960:17:0;;;:41;;;;;16994:7;-1:-1:-1;;;;;16981:20:0;:9;-1:-1:-1;;;;;16981:20:0;;;16960:41;16956:112;;;17022:30;23933:16;;23913:17;:36;23980:16;;23960:17;:36;24022:11;;24007:12;:26;23854:187;17022:30;-1:-1:-1;;;;;17095:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;17119:22:0;;;;;;:11;:22;;;;;;;;17118:23;17095:46;17091:467;;;17158:48;17180:6;17188:9;17199:6;17158:21;:48::i;:::-;17091:467;;;-1:-1:-1;;;;;17229:19:0;;;;;;:11;:19;;;;;;;;17228:20;:46;;;;-1:-1:-1;;;;;;17252:22:0;;;;;;:11;:22;;;;;;;;17228:46;17224:334;;;17291:46;17311:6;17319:9;17330:6;17291:19;:46::i;17224:334::-;-1:-1:-1;;;;;17359:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;17382:22:0;;;;;;:11;:22;;;;;;;;17359:45;17355:203;;;17421:48;17443:6;17451:9;17462:6;17421:21;:48::i;17355:203::-;17502:44;17520:6;17528:9;17539:6;17502:17;:44::i;:::-;17570:15;:13;:15::i;2358:312::-;2478:7;2513:12;2506:5;2498:28;;;;-1:-1:-1;;;2498:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2537:9:0;2549:5;2553:1;2549;:5;:::i;1582:136::-;1640:7;1667:43;1671:1;1674;1667:43;;;;;;;;;;;;;;;;;:3;:43::i;15579:528::-;15669:16;;;15683:1;15669:16;;;;;;;;15645:21;;15669:16;;;;;;;;;;-1:-1:-1;15669:16:0;15645:40;;15714:4;15696;15701:1;15696:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15696:23:0;;;-1:-1:-1;;;;;15696:23:0;;;;;15740:17;-1:-1:-1;;;;;15740:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15730:4;15735:1;15730:7;;;;;;;;:::i;:::-;;;;;;:34;-1:-1:-1;;;;;15730:34:0;;;-1:-1:-1;;;;;15730:34:0;;;;;15775:64;15792:4;15807:17;15827:11;15775:8;:64::i;:::-;15850:198;;-1:-1:-1;;;15850:198:0;;-1:-1:-1;;;;;15850:17:0;:68;;;;:198;;15933:11;;15959:1;;15975:4;;16002;;16022:15;;15850:198;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16064:35;16081:11;16094:4;16064:35;;;;;;;:::i;:::-;;;;;;;;15634:473;15579:528;:::o;16115:517::-;16263:64;16280:4;16295:17;16315:11;16263:8;:64::i;:::-;16370:17;-1:-1:-1;;;;;16370:33:0;;16411:9;16444:4;16464:11;16490:1;16533;16576:7;3473;3500:6;-1:-1:-1;;;;;3500:6:0;;3435:79;16576:7;16370:254;;;;;;-1:-1:-1;;;;;;16370:254:0;;;-1:-1:-1;;;;;14678:15:1;;;16370:254:0;;;14660:34:1;14710:18;;;14703:34;;;;14753:18;;;14746:34;;;;14796:18;;;14789:34;14860:15;;;14839:19;;;14832:44;16598:15:0;14892:19:1;;;14885:35;14594:19;;16370:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16115:517;;:::o;21560:164::-;21602:7;21623:15;21640;21659:19;:17;:19::i;:::-;21622:56;;-1:-1:-1;21622:56:0;-1:-1:-1;21696:20:0;21622:56;;21696:11;:20::i;:::-;21689:27;;;;21560:164;:::o;18974:703::-;19125:15;19155:23;19193;19231:18;19263:19;19274:7;19263:10;:19::i;:::-;-1:-1:-1;;;;;19311:15:0;;;;;;:7;:15;;;;;;19110:172;;-1:-1:-1;19110:172:0;;-1:-1:-1;19110:172:0;-1:-1:-1;19110:172:0;-1:-1:-1;19311:28:0;;19331:7;19311:19;:28::i;:::-;-1:-1:-1;;;;;19293:15:0;;;;;;:7;:15;;;;;;;;:46;;;;19368:7;:15;;;;:28;;19388:7;19368:19;:28::i;:::-;-1:-1:-1;;;;;19350:15:0;;;;;;;:7;:15;;;;;;:46;;;;19428:18;;;;;;;:39;;19451:15;19428:22;:39::i;:::-;-1:-1:-1;;;;;19407:18:0;;;;;;:7;:18;;;;;:60;19478:26;19493:10;19478:14;:26::i;:::-;19537:9;-1:-1:-1;;;;;19520:44:0;19529:6;-1:-1:-1;;;;;19520:44:0;;19548:15;19520:44;;;;160:25:1;;148:2;133:18;;14:177;19520:44:0;;;;;;;;19579:14;;19575:95;;19615:43;;160:25:1;;;19640:4:0;;-1:-1:-1;;;;;19615:43:0;;;;;148:2:1;133:18;19615:43:0;;;;;;;19575:95;19099:578;;;;18974:703;;;:::o;18251:715::-;18400:15;18430:23;18468;18506:18;18538:19;18549:7;18538:10;:19::i;:::-;-1:-1:-1;;;;;18586:15:0;;;;;;:7;:15;;;;;;18385:172;;-1:-1:-1;18385:172:0;;-1:-1:-1;18385:172:0;-1:-1:-1;18385:172:0;-1:-1:-1;18586:28:0;;18385:172;18586:19;:28::i;:::-;-1:-1:-1;;;;;18568:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;18646:18;;;;;:7;:18;;;;;:39;;18669:15;18646:22;:39::i;:::-;-1:-1:-1;;;;;18625:18:0;;;;;;:7;:18;;;;;;;;:60;;;;18717:7;:18;;;;:39;;18740:15;18717:22;:39::i;19685:774::-;19836:15;19866:23;19904;19942:18;19974:19;19985:7;19974:10;:19::i;:::-;-1:-1:-1;;;;;20022:15:0;;;;;;:7;:15;;;;;;19821:172;;-1:-1:-1;19821:172:0;;-1:-1:-1;19821:172:0;-1:-1:-1;19821:172:0;-1:-1:-1;20022:28:0;;20042:7;20022:19;:28::i;:::-;-1:-1:-1;;;;;20004:15:0;;;;;;:7;:15;;;;;;;;:46;;;;20079:7;:15;;;;:28;;20099:7;20079:19;:28::i;17601:642::-;17748:15;17778:23;17816;17854:18;17886:19;17897:7;17886:10;:19::i;:::-;-1:-1:-1;;;;;17934:15:0;;;;;;:7;:15;;;;;;17733:172;;-1:-1:-1;17733:172:0;;-1:-1:-1;17733:172:0;-1:-1:-1;17733:172:0;-1:-1:-1;17934:28:0;;17733:172;17934:19;:28::i;23486:177::-;23550:13;23564:1;23550:16;;;;;;;;:::i;:::-;;;;;;;;;23530:17;:36;;;;23597:13;23611:1;23597:16;;;;;;;;:::i;:::-;;;;;;;;;23577:17;:36;;;;23639:13;23653:1;23639:16;;;;;;;;:::i;:::-;;;;;;;;;;;23624:12;:31;23486:177::o;21732:605::-;21830:7;;21866;;21783;;;;;21884:338;21908:9;:16;21904:20;;21884:338;;;21992:7;21968;:21;21976:9;21986:1;21976:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21976:12:0;21968:21;;;;;;;;;;;;;:31;;:83;;;22044:7;22020;:21;22028:9;22038:1;22028:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22028:12:0;22020:21;;;;;;;;;;;;;:31;21968:83;21946:146;;;22075:7;;22084;;22067:25;;;;;;;21732:605;;:::o;21946:146::-;22117:34;22129:7;:21;22137:9;22147:1;22137:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22137:12:0;22129:21;;;;;;;;;;;;;22117:7;;:11;:34::i;:::-;22107:44;;22176:34;22188:7;:21;22196:9;22206:1;22196:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22196:12:0;22188:21;;;;;;;;;;;;;22176:7;;:11;:34::i;:::-;22166:44;-1:-1:-1;21926:3:0;;;;:::i;:::-;;;;21884:338;;;-1:-1:-1;22258:7:0;;22246;;:20;;:11;:20::i;:::-;22236:7;:30;22232:61;;;22276:7;;22285;;22268:25;;;;;;21732:605;;:::o;22232:61::-;22312:7;;22321;;-1:-1:-1;21732:605:0;-1:-1:-1;21732:605:0:o;20467:421::-;20542:7;20551;20560;20569;20590:23;20615:18;20637:20;20649:7;20637:11;:20::i;:::-;20589:68;;;;20669:15;20686:23;20713:94;20739:7;20761:10;20786;:8;:10::i;:::-;20713:11;:94::i;:::-;20668:139;;;;-1:-1:-1;20852:15:0;;-1:-1:-1;20869:10:0;;-1:-1:-1;20467:421:0;;-1:-1:-1;;;;20467:421:0:o;22345:368::-;22408:19;22430:10;:8;:10::i;:::-;22408:32;-1:-1:-1;22451:18:0;22472:27;:10;22408:32;22472:14;:27::i;:::-;22551:4;22535:22;;;;:7;:22;;;;;;22451:48;;-1:-1:-1;22535:38:0;;22451:48;22535:26;:38::i;:::-;22526:4;22510:22;;;;:7;:22;;;;;;;;:63;;;;22588:11;:26;;;;;;22584:122;;;22672:4;22656:22;;;;:7;:22;;;;;;:38;;22683:10;22656:26;:38::i;:::-;22647:4;22631:22;;;;:7;:22;;;;;:63;22584:122;22397:316;;22345:368;:::o;20896:271::-;20972:7;20981;21001:18;21022:30;21044:7;21022:21;:30::i;:::-;21001:51;-1:-1:-1;21063:23:0;21089;:7;21001:51;21089:11;:23::i;:::-;21063:49;21148:10;;-1:-1:-1;20896:271:0;;-1:-1:-1;;;20896:271:0:o;21175:377::-;21310:7;;;21357:24;:7;21369:11;21357;:24::i;:::-;21339:42;-1:-1:-1;21392:18:0;21413:27;:10;21428:11;21413:14;:27::i;:::-;21392:48;-1:-1:-1;21451:23:0;21477;:7;21392:48;21477:11;:23::i;:::-;21519:7;;;;-1:-1:-1;21175:377:0;;-1:-1:-1;;;;;;21175:377:0:o;22721:232::-;22807:7;22827:12;22842:58;22887:12;;22842:40;22864:17;;22842;;:21;;:40;;;;:::i;:58::-;22827:73;-1:-1:-1;22918:27:0;22940:4;22918:17;:7;22827:73;22918:11;:17::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:548:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:160::-;2757:20;;2813:13;;2806:21;2796:32;;2786:60;;2842:1;2839;2832:12;2857:315;2922:6;2930;2983:2;2971:9;2962:7;2958:23;2954:32;2951:52;;;2999:1;2996;2989:12;2951:52;3038:9;3025:23;3057:31;3082:5;3057:31;:::i;:::-;3107:5;-1:-1:-1;3131:35:1;3162:2;3147:18;;3131:35;:::i;:::-;3121:45;;2857:315;;;;;:::o;3401:316::-;3478:6;3486;3494;3547:2;3535:9;3526:7;3522:23;3518:32;3515:52;;;3563:1;3560;3553:12;3515:52;-1:-1:-1;;3586:23:1;;;3656:2;3641:18;;3628:32;;-1:-1:-1;3707:2:1;3692:18;;;3679:32;;3401:316;-1:-1:-1;3401:316:1:o;3956:180::-;4012:6;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:26;4120:9;4104:26;:::i;4141:388::-;4209:6;4217;4270:2;4258:9;4249:7;4245:23;4241:32;4238:52;;;4286:1;4283;4276:12;4238:52;4325:9;4312:23;4344:31;4369:5;4344:31;:::i;:::-;4394:5;-1:-1:-1;4451:2:1;4436:18;;4423:32;4464:33;4423:32;4464:33;:::i;:::-;4516:7;4506:17;;;4141:388;;;;;:::o;4534:380::-;4613:1;4609:12;;;;4656;;;4677:61;;4731:4;4723:6;4719:17;4709:27;;4677:61;4784:2;4776:6;4773:14;4753:18;4750:38;4747:161;;4830:10;4825:3;4821:20;4818:1;4811:31;4865:4;4862:1;4855:15;4893:4;4890:1;4883:15;4747:161;;4534:380;;;:::o;4919:356::-;5121:2;5103:21;;;5140:18;;;5133:30;5199:34;5194:2;5179:18;;5172:62;5266:2;5251:18;;4919:356::o;6178:127::-;6239:10;6234:3;6230:20;6227:1;6220:31;6270:4;6267:1;6260:15;6294:4;6291:1;6284:15;6310:125;6375:9;;;6396:10;;;6393:36;;;6409:18;;:::i;6440:336::-;6642:2;6624:21;;;6681:2;6661:18;;;6654:30;-1:-1:-1;;;6715:2:1;6700:18;;6693:42;6767:2;6752:18;;6440:336::o;10303:128::-;10370:9;;;10391:11;;;10388:37;;;10405:18;;:::i;10792:168::-;10865:9;;;10896;;10913:15;;;10907:22;;10893:37;10883:71;;10934:18;;:::i;10965:217::-;11005:1;11031;11021:132;;11075:10;11070:3;11066:20;11063:1;11056:31;11110:4;11107:1;11100:15;11138:4;11135:1;11128:15;11021:132;-1:-1:-1;11167:9:1;;10965:217::o;12000:404::-;12202:2;12184:21;;;12241:2;12221:18;;;12214:30;12280:34;12275:2;12260:18;;12253:62;-1:-1:-1;;;12346:2:1;12331:18;;12324:38;12394:3;12379:19;;12000:404::o;12541:127::-;12602:10;12597:3;12593:20;12590:1;12583:31;12633:4;12630:1;12623:15;12657:4;12654:1;12647:15;12673:251;12743:6;12796:2;12784:9;12775:7;12771:23;12767:32;12764:52;;;12812:1;12809;12802:12;12764:52;12844:9;12838:16;12863:31;12888:5;12863:31;:::i;12929:461::-;12982:3;13020:5;13014:12;13047:6;13042:3;13035:19;13073:4;13102:2;13097:3;13093:12;13086:19;;13139:2;13132:5;13128:14;13160:1;13170:195;13184:6;13181:1;13178:13;13170:195;;;13249:13;;-1:-1:-1;;;;;13245:39:1;13233:52;;13305:12;;;;13340:15;;;;13281:1;13199:9;13170:195;;;-1:-1:-1;13381:3:1;;12929:461;-1:-1:-1;;;;;12929:461:1:o;13395:582::-;13694:6;13683:9;13676:25;13737:6;13732:2;13721:9;13717:18;13710:34;13780:3;13775:2;13764:9;13760:18;13753:31;13657:4;13801:57;13853:3;13842:9;13838:19;13830:6;13801:57;:::i;:::-;-1:-1:-1;;;;;13894:32:1;;;;13889:2;13874:18;;13867:60;-1:-1:-1;13958:3:1;13943:19;13936:35;13793:65;13395:582;-1:-1:-1;;;13395:582:1:o;13982:332::-;14189:6;14178:9;14171:25;14232:2;14227;14216:9;14212:18;14205:30;14152:4;14252:56;14304:2;14293:9;14289:18;14281:6;14252:56;:::i;:::-;14244:64;13982:332;-1:-1:-1;;;;13982:332:1:o;14931:306::-;15019:6;15027;15035;15088:2;15076:9;15067:7;15063:23;15059:32;15056:52;;;15104:1;15101;15094:12;15056:52;15133:9;15127:16;15117:26;;15183:2;15172:9;15168:18;15162:25;15152:35;;15227:2;15216:9;15212:18;15206:25;15196:35;;14931:306;;;;;:::o;15242:135::-;15281:3;15302:17;;;15299:43;;15322:18;;:::i;:::-;-1:-1:-1;15369:1:1;15358:13;;15242:135::o

Swarm Source

ipfs://4157b3e6e0102904e79f75d4b05bb60512ba9e655f9460ab11cbe6c807a747a7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.