ETH Price: $3,506.50 (-0.09%)
Gas: 2 Gwei

Token

Fanatics Inu (FAN)
 

Overview

Max Total Supply

1,000,000,000 FAN

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,499,481.3 FAN

Value
$0.00
0x3fce0fb365a770390afd4fe6aba327eb0d92c415
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:
FAN

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-05
*/

/**

Fanatics Inu!

Sports. Fans. Web3.

https://linktr.ee/fanaticsinu

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

interface IReceiver {
    function score() external;
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function allPairsLength() external view returns (uint256);

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

    function allPairs(uint256) external view returns (address pair);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

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

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
}

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

    function transfer(address to, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }
}

 contract FAN is ERC20, Ownable {
    // TOKENOMICS START ==========================================================>
    string private _name = "Fanatics Inu";
    string private _symbol = "FAN";
    uint8 private _decimals = 9;
    uint256 private _supply = 1000000000;
    uint256 public lpEntryFees = 0;
    uint256 public entryFees = 5;
    uint256 public lpWithdrawFees = 0;
    uint256 public withdrawFees = 5;
    uint256 public maxTxAmount = 10000001 * 10**_decimals;
    uint256 public maxWalletAmount = 10000001 * 10**_decimals;
    address public houseManager = 0xFbA8340db65a45B3b5FbA09f10CE2E9045125495;
    // TOKENOMICS END ============================================================>

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    mapping (address => bool) public _whitelistedAddresses1;
    mapping (address => bool) public _whitelistedAddresses2;
    mapping (address => bool) public _whitelistedAddresses3;
    uint256 private _houseReserves = 0;
    uint256 private _liquidityReserves = 0;
    uint256 private addToLiquidity = 500000 * 10**_decimals;
    uint256 private addToETH = 200000 * 10**_decimals;
    bool public earlySellEnabled = true;
    bool public reserves = true;
    bool private onlyRef = true;
    bool public whitelistActive1 = false;
    bool public whitelistActive2 = false;
    bool public whitelistActive3 = false;
    bool public tradingActive = false;
    uint256 public tradingActiveBlock = 0;
    bool inSwapAndLiquify;

    // anti-bot and anti-whale mappings and variables
    mapping (address => uint256) private lastTrade;
    mapping (address => uint256) private _buyBlock;
    mapping (address => uint256) private snapBall; 
    mapping (address => uint256) private passBall;  
    mapping (address => bool) public _isScalper; 
    mapping (address => bool) public _isBot; 
    bool public quarterbackSack = false;
    bool private sameBlockActive = true; 
    bool private offsides = false;
    uint256 private buyBlock = 0;
    uint256 private sellBlock = 0;

    uint256 private scalpBlockAmt = 0;
    uint256 public scalpersCaught = 0;
    uint256 public botsCaught = 0;  

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    // exlcude from fees and max amounts
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public _isExcludedMaxWalletAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

    event WL1Removed(address indexed WL1);
    event WL2Removed(address indexed WL2);
    event WL3Removed(address indexed WL3);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludedMaxTransactionAmount(address indexed account, bool isExcluded);
    event ExcludedMaxWalletAmount(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event ScalperCaught(address indexed scalperAddress);
	event ScalperRemoved(address indexed scalperAddress);
    event BotCaught(address indexed botAddress);
	event BotRemoved(address indexed botAddress);

    // staking and trade platform
    address public feeRecipient;
    bool public triggerReceivers = false;
    bool public staking = false;
    event SetFeeRecipient(address recipient);
    event StakingPool(bool indexed onOff);

    constructor() ERC20(_name, _symbol) {
        _gameOn(msg.sender, (_supply * 10**_decimals));

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        excludeFromMaxWallet(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(houseManager), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(houseManager), true);

        excludeFromMaxWallet(owner(), true);
        excludeFromMaxWallet(address(this), true);
        excludeFromMaxWallet(address(0xdead), true);
        excludeFromMaxWallet(address(houseManager), true);

    }

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

        if(onlyRef) {
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Game Not Live");
        }

        if (whitelistActive1) {
            require(_whitelistedAddresses1[from] || _whitelistedAddresses1[to] || 
            _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
            if(!_isExcludedMaxWalletAmount[to]) {
            require(balanceOf(to) + amount <= maxWalletAmount, "Max Wallet Exceeded");
            } 
            if (_whitelistedAddresses1[from]) { revert ("Red Carpet Mode."); 
            }
        }

        if (whitelistActive2) {
            require(_whitelistedAddresses2[from] || _whitelistedAddresses2[to] || 
            _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
            if(!_isExcludedMaxWalletAmount[to]) {
            require(balanceOf(to) + amount <= (maxWalletAmount / 2), "Max Wallet Exceeded");
            } 
            if (_whitelistedAddresses2[from]) { revert ("Red Carpet Mode."); 
            }
        }

        if (whitelistActive3) {
            require(_whitelistedAddresses3[from] || _whitelistedAddresses3[to] || 
            _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
            if(!_isExcludedMaxWalletAmount[to]) {
            require(balanceOf(to) + amount <= (maxWalletAmount / 5), "Max Wallet Exceeded");
            } 
            if (_whitelistedAddresses3[from]) { revert ("Red Carpet Mode."); 
            }
        }
            
        if(offsides) {
            require(_buyBlock[from] != block.number, "Bot Fumbled");
            _buyBlock[to] = block.number;
        }

        if(sameBlockActive){	
            // anti-sniper & anti-bot mapping variables 	
            if(_isScalper[from] && to != houseManager) {	
                revert("Sniper Fumbled.");	
            }
        
            if(block.number - tradingActiveBlock < scalpBlockAmt) {
                _isScalper[to] = true;
                scalpersCaught ++;
                emit ScalperCaught(to);
            }

            if(quarterbackSack) {
                if(automatedMarketMakerPairs[from]){
                    snapBall[to] = block.number;
                }
                if(automatedMarketMakerPairs[to]){
                    passBall[from] = block.number;
                }
            
            if(_isBot[from] && to != houseManager) {	
                revert("Bot Fumbled.");	
                }

            if(snapBall[to] == passBall[from]) {
                _isBot[to] = true;
                botsCaught ++;
                emit BotCaught(to);
                }
            }
        }
           
        if ((automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) && !inSwapAndLiquify) {
            if (!automatedMarketMakerPairs[from]) {
                uint256 contractLiquidityBalance = _liquidityReserves;
                if (contractLiquidityBalance >= addToLiquidity) {
                    _swapAndLiquify(addToLiquidity);
                }
                if ((_houseReserves) >= addToETH && reserves) {
                    _swapTokensForEth(addToETH);
                    _houseReserves -= addToETH;
                    (bool sent,) = payable(houseManager).call{value: address(this).balance}("");
                    require(sent);
                }
            }
        }

        if(automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
            require(amount <= maxTxAmount);
            if (sameBlockActive) {
                if (from == uniswapV2Pair){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                }  else {
                        require(lastTrade[from] != block.number);
                        lastTrade[from] = block.number;
                    }
            }
        }

        if (!_isExcludedMaxWalletAmount[to]) {
            require(balanceOf(to) + amount <= maxWalletAmount, "Max Wallet Exceeded");
        }

        bool takeFee = true;
        uint256 fees = 0;
        uint256 lpPool = 0;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        } 

        if (takeFee) {
            if(automatedMarketMakerPairs[to] && withdrawFees > 0) {
                fees = amount * withdrawFees / 100;
                lpPool = amount * lpWithdrawFees / 100;
                _houseReserves += fees;
                _liquidityReserves += lpPool;
            }
            else if(automatedMarketMakerPairs[from] && entryFees > 0) {
                fees = amount * entryFees / 100;
                lpPool = amount * lpEntryFees / 100;
                _houseReserves += fees;
                _liquidityReserves += lpPool;
            }

            if (earlySellEnabled && automatedMarketMakerPairs[to] && _whitelistedAddresses1[from]) {
                fees = amount * 75 / 100;
                _houseReserves += fees;
            } else if (earlySellEnabled && _whitelistedAddresses1[from]) {
                fees = amount * 75 / 100;
                _houseReserves += fees;
            }

            if(fees > 0 && !staking) {
            super._transfer(from, address(this), (fees + lpPool));
            }

            if(fees > 0 && staking) {
            super._transfer(from, feeRecipient, (fees + lpPool));

                if (feeRecipient != address(this) && triggerReceivers) {
                    IReceiver(feeRecipient).score();
                }
            }
            amount -= (fees + lpPool);
        }
        
        super._transfer(from, to, amount);
    }
        
    function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 half = (contractTokenBalance / 2);
        uint256 otherHalf = (contractTokenBalance - half);

        uint256 initialBalance = address(this).balance;

        _swapTokensForEth(half);

        uint256 newBalance = (address(this).balance - initialBalance);

        _addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            (block.timestamp + 300)
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount)
        private
        lockTheSwap
    {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function excludeFromMaxTransaction(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[account] = excluded;
        emit ExcludedMaxTransactionAmount(account, excluded);
    }

    function excludeFromMaxWallet(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedMaxWalletAmount[account] = excluded;
        emit ExcludedMaxWalletAmount(account, excluded);
    }

    function redCarpet(bool WL1) external onlyOwner {
        require(!tradingActive);
        whitelistActive1 = WL1; 
        onlyRef = false;
    }

    function roundTwo(bool WL2) external onlyOwner {
        require(!tradingActive);
        whitelistActive2 = WL2; 
        whitelistActive1 = false;
        onlyRef = false;
    }

    function roundThree(bool WL3) external onlyOwner {
        require(!tradingActive);
        whitelistActive3 = WL3;
        whitelistActive2 = false;
        onlyRef = false;
    }

    function showTime(uint256 _scalpBlockAmt) external onlyOwner {
        tradingActive = true;
        tradingActiveBlock = block.number;
        scalpBlockAmt = _scalpBlockAmt;
        onlyRef = false;
        whitelistActive1 = false;
        whitelistActive2 = false;
        whitelistActive3 = false;
        offsides = false;
        reserves = true;
    }

    function offsideEnabled(bool onOff) external onlyOwner {
        offsides = onOff;
    }

    function deposit(uint256 amount) external
        returns (bool) {
        require(
            amount > 0,
            'Zero Amount'
        );
         uint256 marketingShare = amount;
        _houseReserves += marketingShare;

        address from = _msgSender();
        super._transfer(from, address(this), marketingShare);
        return true;
    }

    function isWhitelist1(address account) public view returns (bool) {	
        return _whitelistedAddresses1[account];	
    }

    function isWhitelist2(address account) public view returns (bool) {	
        return _whitelistedAddresses2[account];	
    }	

    function isWhitelist3(address account) public view returns (bool) {	
        return _whitelistedAddresses3[account];	
    }	

    function changeMarketingWallet(address newWallet)
        public
        onlyOwner
        returns (bool)
    {
        houseManager = newWallet;
        return true;
    }

    function changeFees(
        uint256 _lpEntryFees, 
        uint256 _entryFees,
        uint256 _lpWithdrawFees, 
        uint256 _withdrawFees
        )
        public
        onlyOwner
        returns (bool)
    {
        lpEntryFees = _lpEntryFees;
        entryFees = _entryFees;
        lpWithdrawFees = _lpWithdrawFees;
        withdrawFees = _withdrawFees;
        require((lpEntryFees + entryFees
        + lpWithdrawFees + withdrawFees) <= 20);

        return true;
    }

    function changeMaxTxAmount(uint256 _maxTxAmount)
        public
        onlyOwner
        returns (bool)
    {   require(_maxTxAmount >= (_supply * 1 / 100), "Can not set below 1%");
        maxTxAmount = _maxTxAmount * 10**_decimals;

        return true;
    }

    function changeMaxWalletAmount(uint256 _maxWalletAmount)
        public
        onlyOwner
        returns (bool)
    {   require(_maxWalletAmount >= (_supply * 1 / 100), "Can not set below 1%");
        maxWalletAmount = _maxWalletAmount * 10**_decimals;

        return true;
    }

    function removeEarlySellFee(bool enabled) external onlyOwner {
        earlySellEnabled = enabled;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        excludeFromMaxTransaction(address(pair), value);
        excludeFromMaxWallet(address(pair), value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public {
        require(msg.sender == houseManager);
        require(pair != uniswapV2Pair,"The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function burnScalper(address account) public {
        require(msg.sender == houseManager);
        require(_isScalper[account]);
        require(account != uniswapV2Pair, 'Cannot be Uniswap Pair');
        uint256 amount = balanceOf(account);
        _transfer(account, houseManager, amount);
            
    }

    function burnBot(address account) public {
        require(msg.sender == houseManager);
        require(_isBot[account]);
        require(account != uniswapV2Pair, 'Cannot be Uniswap Pair');
        uint256 amount = balanceOf(account);
        _transfer(account, houseManager, amount);

    }

    function claim(uint256 percent) external {
        require(_msgSender() == houseManager);
        require(percent <= 100 && percent >= 0);
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToSwap = contractTokenBalance * (percent) / 100;
        _swapTokensForEth(amountToSwap);
    }

    function scout(bool onOff, uint256 _numAddETH) external returns (bool) {
        require(_msgSender() == houseManager);
        reserves = onOff;
        addToETH = _numAddETH * 10**_decimals;

        return true;
    }

    function withdraw(address token) external  {
        require(_msgSender() == houseManager);
        require(token != address(0), 'Zero Address');
        bool s = IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
        require(s, 'Failure On Token Withdraw');
    }

    function withdrawETH() external  {
        require(_msgSender() == houseManager);
        (bool s,) = payable(houseManager).call{value: address(this).balance}("");
        require(s);
    }

    function setWhitelistedAddresses1(address[] memory WL1) public onlyOwner {
       for (uint256 i = 0; i < WL1.length; i++) {
            _whitelistedAddresses1[WL1[i]] = true;
       }
    }

    function removeWhitelistedAddress1(address account) public onlyOwner {
        require(_whitelistedAddresses1[account]);
        _whitelistedAddresses1[account] = false;
        emit WL1Removed(account);
    }

    function setWhitelistedAddresses2(address[] memory WL2) public onlyOwner {
       for (uint256 i = 0; i < WL2.length; i++) {
            _whitelistedAddresses2[WL2[i]] = true;
       }
    }

    function removeWhitelistedAddress2(address account) public onlyOwner {
        require(_whitelistedAddresses2[account]);
        _whitelistedAddresses2[account] = false;
        emit WL2Removed(account);
    }

    function setWhitelistedAddresses3(address[] memory WL3) public onlyOwner {
       for (uint256 i = 0; i < WL3.length; i++) {
            _whitelistedAddresses3[WL3[i]] = true;
       }
    }

    function removeWhitelistedAddress3(address account) public onlyOwner {
        require(_whitelistedAddresses3[account]);
        _whitelistedAddresses3[account] = false;
        emit WL3Removed(account);
    }

    function removeBot(address notBot) public onlyOwner {
        _isBot[notBot] = false;

        emit BotRemoved(notBot);
    }

    function removeScalper(address notScalper) public onlyOwner {
        _isScalper[notScalper] = false;
        
        emit ScalperRemoved(notScalper);
    }

    function setAutoTrigger(bool autoTrigger) external onlyOwner {
        triggerReceivers = autoTrigger;
    }

    function setFeeRecipient(address recipient) external onlyOwner {
        require(recipient != address(0), 'Zero Address');
        feeRecipient = recipient;
        _isExcludedFromFees[recipient] =  true;
        _isExcludedMaxTransactionAmount[recipient] = true;
        _isExcludedMaxWalletAmount[recipient] = true;
        emit SetFeeRecipient(recipient);
    }

    function setStaking(bool onOff) external onlyOwner {
        staking = onOff;
        emit StakingPool(onOff);
    }

    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":"botAddress","type":"address"}],"name":"BotCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"botAddress","type":"address"}],"name":"BotRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"scalperAddress","type":"address"}],"name":"ScalperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"scalperAddress","type":"address"}],"name":"ScalperRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"onOff","type":"bool"}],"name":"StakingPool","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL1","type":"address"}],"name":"WL1Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL2","type":"address"}],"name":"WL2Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL3","type":"address"}],"name":"WL3Removed","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isScalper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"burnBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"burnScalper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpEntryFees","type":"uint256"},{"internalType":"uint256","name":"_entryFees","type":"uint256"},{"internalType":"uint256","name":"_lpWithdrawFees","type":"uint256"},{"internalType":"uint256","name":"_withdrawFees","type":"uint256"}],"name":"changeFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"changeMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"houseManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelist1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelist2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelist3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpEntryFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWithdrawFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"offsideEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quarterbackSack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"WL1","type":"bool"}],"name":"redCarpet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notBot","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"removeEarlySellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notScalper","type":"address"}],"name":"removeScalper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserves","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"WL3","type":"bool"}],"name":"roundThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"WL2","type":"bool"}],"name":"roundTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"scalpersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"},{"internalType":"uint256","name":"_numAddETH","type":"uint256"}],"name":"scout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"autoTrigger","type":"bool"}],"name":"setAutoTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"setStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL1","type":"address[]"}],"name":"setWhitelistedAddresses1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL2","type":"address[]"}],"name":"setWhitelistedAddresses2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL3","type":"address[]"}],"name":"setWhitelistedAddresses3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_scalpBlockAmt","type":"uint256"}],"name":"showTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staking","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerReceivers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c60809081526b46616e617469637320496e7560a01b60a0526006906200002d9082620009ea565b506040805180820190915260038152622320a760e91b6020820152600790620000579082620009ea565b506008805460ff19166009908117909155633b9aca0081556000600a8181556005600b819055600c92909255600d9190915562000095919062000bcb565b620000a4906298968162000be3565b600e55600854620000ba9060ff16600a62000bcb565b620000c9906298968162000be3565b600f55601080546001600160a01b03191673fba8340db65a45b3b5fba09f10ce2e9045125495179055600060168190556017556008546200010f9060ff16600a62000bcb565b6200011e906207a12062000be3565b601855600854620001349060ff16600a62000bcb565b620001439062030d4062000be3565b601955601a805466ffffffffffffff1916620101011790556000601b8190556023805462ffffff19166101001790556024819055602581905560268190556027819055602855602d805461ffff60a01b19169055348015620001a457600080fd5b5060068054620001b4906200095b565b80601f0160208091040260200160405190810160405280929190818152602001828054620001e2906200095b565b8015620002335780601f10620002075761010080835404028352916020019162000233565b820191906000526020600020905b8154815290600101906020018083116200021557829003601f168201915b50505050506007805462000247906200095b565b80601f016020809104026020016040519081016040528092919081815260200182805462000275906200095b565b8015620002c65780601f106200029a57610100808354040283529160200191620002c6565b820191906000526020600020905b815481529060010190602001808311620002a857829003601f168201915b50505050508160039081620002dc9190620009ea565b506004620002eb8282620009ea565b50505062000308620003026200062260201b60201c565b62000626565b60085462000337903390620003229060ff16600a62000bcb565b60095462000331919062000be3565b62000678565b737a250d5630b4cf539739df2c5dacb4c659f2488d620003598160016200073f565b601180546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620003b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d9919062000c05565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d919062000c05565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200049b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c1919062000c05565b601280546001600160a01b0319166001600160a01b03929092169182179055620004ed9060016200073f565b60125462000506906001600160a01b03166001620007a9565b6012546200051f906001600160a01b031660016200080c565b6200053e620005366005546001600160a01b031690565b600162000884565b6200054b30600162000884565b6200055a61dead600162000884565b60105462000573906001600160a01b0316600162000884565b620005926200058a6005546001600160a01b031690565b60016200073f565b6200059f3060016200073f565b620005ae61dead60016200073f565b601054620005c7906001600160a01b031660016200073f565b620005e6620005de6005546001600160a01b031690565b6001620007a9565b620005f3306001620007a9565b6200060261dead6001620007a9565b6010546200061b906001600160a01b03166001620007a9565b5062000c46565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620006d45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060026000828254620006e8919062000c30565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b62000749620008e7565b6001600160a01b0382166000818152602a6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9591015b60405180910390a25050565b620007b3620008e7565b6001600160a01b0382166000818152602b6020908152604091829020805460ff191685151590811790915591519182527f5956094251965a24e12663de1458c0d93ae46d0299678c87fb094b82fe3f268791016200079d565b6001600160a01b0382166000908152602c60205260409020805460ff19168215151790556200083c82826200073f565b620008488282620007a9565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6200088e620008e7565b6001600160a01b038216600081815260296020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016200079d565b6005546001600160a01b03163314620009435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006cb565b565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200097057607f821691505b6020821081036200099157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620009e557600081815260208120601f850160051c81016020861015620009c05750805b601f850160051c820191505b81811015620009e157828155600101620009cc565b5050505b505050565b81516001600160401b0381111562000a065762000a0662000945565b62000a1e8162000a1784546200095b565b8462000997565b602080601f83116001811462000a56576000841562000a3d5750858301515b600019600386901b1c1916600185901b178555620009e1565b600085815260208120601f198616915b8281101562000a875788860151825594840194600190910190840162000a66565b508582101562000aa65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000b0d57816000190482111562000af15762000af162000ab6565b8085161562000aff57918102915b93841c939080029062000ad1565b509250929050565b60008262000b265750600162000bc5565b8162000b355750600062000bc5565b816001811462000b4e576002811462000b595762000b79565b600191505062000bc5565b60ff84111562000b6d5762000b6d62000ab6565b50506001821b62000bc5565b5060208310610133831016604e8410600b841016171562000b9e575081810a62000bc5565b62000baa838362000acc565b806000190482111562000bc15762000bc162000ab6565b0290505b92915050565b600062000bdc60ff84168362000b15565b9392505050565b600081600019048311821515161562000c005762000c0062000ab6565b500290565b60006020828403121562000c1857600080fd5b81516001600160a01b038116811462000bdc57600080fd5b8082018082111562000bc55762000bc562000ab6565b613acc8062000c566000396000f3fe60806040526004361061046c5760003560e01c80637639f70b1161024a578063b4c3289c11610139578063ca45b5e5116100b6578063e086e5ec1161007a578063e086e5ec14610e49578063e74b981b14610e5e578063ee40166e14610e7e578063f2fde38b14610e94578063f3da41a214610eb457600080fd5b8063ca45b5e514610db3578063d2fcc00114610dd3578063daf06b0714610df3578063dd62ed3e14610e09578063ddb3635f14610e2957600080fd5b8063bb85c6d1116100fd578063bb85c6d114610d12578063bbc0c74214610d32578063bf36429b14610d53578063c024666814610d73578063c841085214610d9357600080fd5b8063b4c3289c14610c52578063b582892b14610c72578063b62496f514610ca2578063b6b55f2514610cd2578063b94e8df214610cf257600080fd5b806395d89b41116101c7578063a527bcd71161018b578063a527bcd714610bb6578063a9059cbb14610bd6578063aa4bde2814610bf6578063abb8105214610c0c578063b3182ba514610c3c57600080fd5b806395d89b4114610b1157806396880b1714610b265780639a7a23d614610b565780639d1eba6114610b76578063a457c2d714610b9657600080fd5b8063847d89941161020e578063847d899414610a7a5780638c0b5e2214610a9d5780638da5cb5b14610ab3578063910730a814610ad1578063933cac0f14610af157600080fd5b80637639f70b146109e45780637c1be58014610a0457806381bfdcca14610a245780638211486714610a44578063823eb82014610a6457600080fd5b80634690484011610366578063650c4226116102e357806370a08231116102a757806370a0823114610940578063715018a61461096057806375172a8b146109755780637571336a1461099457806375e661ee146109b457600080fd5b8063650c4226146108ae578063677daa57146108ce5780636b0a894c146108ee5780636d4a066f146109045780636e999dbf1461092657600080fd5b806351c3707f1161032a57806351c3707f146107e557806351cff8d91461080557806356070e7914610825578063595f57421461085e5780635fecd9261461088e57600080fd5b80634690484014610735578063476343ee1461075557806349bd5a5e1461076b5780634cf088d91461078b5780634d5a0143146107ac57600080fd5b80631694505e116103f4578063313ce567116103b8578063313ce56714610680578063379607f51461069c57806339509351146106bc57806339984182146106dc5780633f5aef12146106fc57600080fd5b80631694505e146105d357806318160ddd1461060b57806322042cc11461062a57806323b872dd1461064a57806324e7412e1461066a57600080fd5b80630c371cdf1161043b5780630c371cdf146105205780630f1098c31461054257806310d5de531461056257806311f76d931461059257806315e17e4b146105b257600080fd5b8063035bc61d1461047857806306fdde03146104ae578063095ea7b3146104d05780630bcfc1ee146104f057600080fd5b3661047357005b600080fd5b34801561048457600080fd5b50601a54610499906301000000900460ff1681565b60405190151581526020015b60405180910390f35b3480156104ba57600080fd5b506104c3610ece565b6040516104a591906133a7565b3480156104dc57600080fd5b506104996104eb366004613415565b610f60565b3480156104fc57600080fd5b5061049961050b366004613441565b60146020526000908152604090205460ff1681565b34801561052c57600080fd5b5061054061053b366004613441565b610f7a565b005b34801561054e57600080fd5b5061049961055d366004613473565b61103c565b34801561056e57600080fd5b5061049961057d366004613441565b602a6020526000908152604090205460ff1681565b34801561059e57600080fd5b506105406105ad366004613491565b611099565b3480156105be57600080fd5b50602d5461049990600160a01b900460ff1681565b3480156105df57600080fd5b506011546105f3906001600160a01b031681565b6040516001600160a01b0390911681526020016104a5565b34801561061757600080fd5b506002545b6040519081526020016104a5565b34801561063657600080fd5b50610540610645366004613491565b6110bd565b34801561065657600080fd5b506104996106653660046134ae565b611101565b34801561067657600080fd5b5061061c600a5481565b34801561068c57600080fd5b50604051600981526020016104a5565b3480156106a857600080fd5b506105406106b73660046134ef565b611125565b3480156106c857600080fd5b506104996106d7366004613415565b611192565b3480156106e857600080fd5b506105406106f736600461351e565b6111b4565b34801561070857600080fd5b50610499610717366004613441565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561074157600080fd5b50602d546105f3906001600160a01b031681565b34801561076157600080fd5b5061061c600d5481565b34801561077757600080fd5b506012546105f3906001600160a01b031681565b34801561079757600080fd5b50602d5461049990600160a81b900460ff1681565b3480156107b857600080fd5b506104996107c7366004613441565b6001600160a01b031660009081526015602052604090205460ff1690565b3480156107f157600080fd5b50610540610800366004613491565b611224565b34801561081157600080fd5b50610540610820366004613441565b61126b565b34801561083157600080fd5b50610499610840366004613441565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561086a57600080fd5b50610499610879366004613441565b60216020526000908152604090205460ff1681565b34801561089a57600080fd5b506105406108a9366004613441565b611403565b3480156108ba57600080fd5b506104996108c93660046135e3565b611454565b3480156108da57600080fd5b506104996108e93660046134ef565b61149f565b3480156108fa57600080fd5b5061061c60285481565b34801561091057600080fd5b50601a5461049990640100000000900460ff1681565b34801561093257600080fd5b50601a546104999060ff1681565b34801561094c57600080fd5b5061061c61095b366004613441565b611531565b34801561096c57600080fd5b5061054061154c565b34801561098157600080fd5b50601a5461049990610100900460ff1681565b3480156109a057600080fd5b506105406109af366004613615565b611560565b3480156109c057600080fd5b506104996109cf366004613441565b60156020526000908152604090205460ff1681565b3480156109f057600080fd5b506105406109ff36600461351e565b6115c8565b348015610a1057600080fd5b50610540610a1f366004613441565b611638565b348015610a3057600080fd5b50610499610a3f3660046134ef565b6116ae565b348015610a5057600080fd5b50610540610a5f3660046134ef565b61173f565b348015610a7057600080fd5b5061061c60275481565b348015610a8657600080fd5b50601a546104999065010000000000900460ff1681565b348015610aa957600080fd5b5061061c600e5481565b348015610abf57600080fd5b506005546001600160a01b03166105f3565b348015610add57600080fd5b50610540610aec366004613491565b61177a565b348015610afd57600080fd5b506010546105f3906001600160a01b031681565b348015610b1d57600080fd5b506104c36117cb565b348015610b3257600080fd5b50610499610b41366004613441565b602b6020526000908152604090205460ff1681565b348015610b6257600080fd5b50610540610b71366004613615565b6117da565b348015610b8257600080fd5b50610540610b91366004613491565b61187f565b348015610ba257600080fd5b50610499610bb1366004613415565b61189a565b348015610bc257600080fd5b50610540610bd1366004613441565b611915565b348015610be257600080fd5b50610499610bf1366004613415565b611951565b348015610c0257600080fd5b5061061c600f5481565b348015610c1857600080fd5b50610499610c27366004613441565b60226020526000908152604090205460ff1681565b348015610c4857600080fd5b5061061c600b5481565b348015610c5e57600080fd5b50610540610c6d36600461351e565b61195f565b348015610c7e57600080fd5b50610499610c8d366004613441565b60136020526000908152604090205460ff1681565b348015610cae57600080fd5b50610499610cbd366004613441565b602c6020526000908152604090205460ff1681565b348015610cde57600080fd5b50610499610ced3660046134ef565b6119cf565b348015610cfe57600080fd5b50610540610d0d366004613491565b611a41565b348015610d1e57600080fd5b50610499610d2d366004613441565b611a67565b348015610d3e57600080fd5b50601a5461049990600160301b900460ff1681565b348015610d5f57600080fd5b50610540610d6e366004613441565b611a96565b348015610d7f57600080fd5b50610540610d8e366004613615565b611b0c565b348015610d9f57600080fd5b50610540610dae366004613491565b611b6c565b348015610dbf57600080fd5b50610540610dce366004613441565b611bb6565b348015610ddf57600080fd5b50610540610dee366004613615565b611c2c565b348015610dff57600080fd5b5061061c600c5481565b348015610e1557600080fd5b5061061c610e2436600461364e565b611c8c565b348015610e3557600080fd5b50610540610e44366004613441565b611cb7565b348015610e5557600080fd5b50610540611d08565b348015610e6a57600080fd5b50610540610e79366004613441565b611d8b565b348015610e8a57600080fd5b5061061c601b5481565b348015610ea057600080fd5b50610540610eaf366004613441565b611e6a565b348015610ec057600080fd5b506023546104999060ff1681565b606060038054610edd9061367c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f099061367c565b8015610f565780601f10610f2b57610100808354040283529160200191610f56565b820191906000526020600020905b815481529060010190602001808311610f3957829003601f168201915b5050505050905090565b600033610f6e818585611ee0565b60019150505b92915050565b6010546001600160a01b03163314610f9157600080fd5b6001600160a01b03811660009081526021602052604090205460ff16610fb657600080fd5b6012546001600160a01b03908116908216036110125760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba103132902ab734b9bbb0b8102830b4b960511b60448201526064015b60405180910390fd5b600061101d82611531565b6010549091506110389083906001600160a01b031683612004565b5050565b6010546000906001600160a01b0316336001600160a01b03161461105f57600080fd5b601a805461ff001916610100851515021790556008546110839060ff16600a6137b0565b61108d90836137bf565b60195550600192915050565b6110a1612e1d565b60238054911515620100000262ff000019909216919091179055565b6110c5612e1d565b601a54600160301b900460ff16156110dc57600080fd5b601a805463ffff0000191663010000009215159290920262ff00001916919091179055565b60003361110f858285612e77565b61111a858585612004565b506001949350505050565b6010546001600160a01b0316336001600160a01b03161461114557600080fd5b60648111158015611154575060015b61115d57600080fd5b600061116830611531565b90506000606461117884846137bf565b61118291906137de565b905061118d81612ef1565b505050565b600033610f6e8185856111a58383611c8c565b6111af9190613800565b611ee0565b6111bc612e1d565b60005b8151811015611038576001601360008484815181106111e0576111e0613813565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061121c81613829565b9150506111bf565b61122c612e1d565b601a54600160301b900460ff161561124357600080fd5b601a805464ffffff000019166401000000009215159290920263ffff00001916919091179055565b6010546001600160a01b0316336001600160a01b03161461128b57600080fd5b6001600160a01b0381166112d05760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401611009565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015611321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113459190613842565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b4919061385b565b9050806110385760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205769746864726177000000000000006044820152606401611009565b61140b612e1d565b6001600160a01b038116600081815260226020526040808220805460ff19169055517ff98765b2b5e26c3266491f2a9f51d7fdae1c9c7ac2016fade7789d1f9e4ff3a09190a250565b600061145e612e1d565b600a859055600b849055600c839055600d829055601482846114808789613800565b61148a9190613800565b6114949190613800565b111561111a57600080fd5b60006114a9612e1d565b606460095460016114ba91906137bf565b6114c491906137de565b82101561150a5760405162461bcd60e51b815260206004820152601460248201527343616e206e6f74207365742062656c6f7720312560601b6044820152606401611009565b60085461151b9060ff16600a6137b0565b61152590836137bf565b600e555060015b919050565b6001600160a01b031660009081526020819052604090205490565b611554612e1d565b61155e600061306b565b565b611568612e1d565b6001600160a01b0382166000818152602a6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9591015b60405180910390a25050565b6115d0612e1d565b60005b8151811015611038576001601560008484815181106115f4576115f4613813565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061163081613829565b9150506115d3565b611640612e1d565b6001600160a01b03811660009081526013602052604090205460ff1661166557600080fd5b6001600160a01b038116600081815260136020526040808220805460ff19169055517f6866e503d38134a78fda39bc98d3b6b8fbc24d5904303f6017770e935f7c63649190a250565b60006116b8612e1d565b606460095460016116c991906137bf565b6116d391906137de565b8210156117195760405162461bcd60e51b815260206004820152601460248201527343616e206e6f74207365742062656c6f7720312560601b6044820152606401611009565b60085461172a9060ff16600a6137b0565b61173490836137bf565b600f55506001919050565b611747612e1d565b601a805443601b556026929092556023805462ff00001916905566ffffffffffff00199091166601000000000100179055565b611782612e1d565b602d805460ff60a81b1916600160a81b831515908102919091179091556040517f6309678de3d124e7477ea01bc701ec79980dbbd97aaa4b95760862586e3bd5ed90600090a250565b606060048054610edd9061367c565b6010546001600160a01b031633146117f157600080fd5b6012546001600160a01b03908116908316036118755760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401611009565b61103882826130bd565b611887612e1d565b601a805460ff1916911515919091179055565b600033816118a88286611c8c565b9050838110156119085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401611009565b61111a8286868403611ee0565b6010546001600160a01b0316331461192c57600080fd5b6001600160a01b03811660009081526022602052604090205460ff16610fb657600080fd5b600033610f6e818585612004565b611967612e1d565b60005b81518110156110385760016014600084848151811061198b5761198b613813565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806119c781613829565b91505061196a565b6000808211611a0e5760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b6044820152606401611009565b60008290508060166000828254611a259190613800565b90915550339050611a37813084613131565b5060019392505050565b611a49612e1d565b602d8054911515600160a01b0260ff60a01b19909216919091179055565b6000611a71612e1d565b50601080546001600160a01b0383166001600160a01b03199091161790556001919050565b611a9e612e1d565b6001600160a01b03811660009081526015602052604090205460ff16611ac357600080fd5b6001600160a01b038116600081815260156020526040808220805460ff19169055517fadc11009a6ac1fa921e16ae93be742414c0a1aa0d7ab40607979525431a28f719190a250565b611b14612e1d565b6001600160a01b038216600081815260296020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016115bc565b611b74612e1d565b601a54600160301b900460ff1615611b8b57600080fd5b601a805465ffff00ff00001916650100000000009215159290920264ff00ff00001916919091179055565b611bbe612e1d565b6001600160a01b03811660009081526014602052604090205460ff16611be357600080fd5b6001600160a01b038116600081815260146020526040808220805460ff19169055517fb85c02cbf00e487c2dbdb1c51961f5580d56d7d3ef3de3734c5b6bdc1874e4029190a250565b611c34612e1d565b6001600160a01b0382166000818152602b6020908152604091829020805460ff191685151590811790915591519182527f5956094251965a24e12663de1458c0d93ae46d0299678c87fb094b82fe3f268791016115bc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611cbf612e1d565b6001600160a01b038116600081815260216020526040808220805460ff19169055517f8e4501af8f6552345ec79b0b5ca3d3556fa28417bdd0a64d110bc9a99171c8a89190a250565b6010546001600160a01b0316336001600160a01b031614611d2857600080fd5b6010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611d75576040519150601f19603f3d011682016040523d82523d6000602084013e611d7a565b606091505b5050905080611d8857600080fd5b50565b611d93612e1d565b6001600160a01b038116611dd85760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401611009565b602d80546001600160a01b0319166001600160a01b0383169081179091556000818152602960209081526040808320805460ff199081166001908117909255602a84528285208054821683179055602b84529382902080549094161790925590519182527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73910160405180910390a150565b611e72612e1d565b6001600160a01b038116611ed75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611009565b611d888161306b565b6001600160a01b038316611f425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611009565b6001600160a01b038216611fa35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611009565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661202a5760405162461bcd60e51b815260040161100990613878565b6001600160a01b0382166120505760405162461bcd60e51b8152600401611009906138bd565b8061205a84611531565b10156120785760405162461bcd60e51b815260040161100990613900565b601a5462010000900460ff1615612104576001600160a01b03831660009081526029602052604090205460ff16806120c857506001600160a01b03821660009081526029602052604090205460ff165b6121045760405162461bcd60e51b815260206004820152600d60248201526c47616d65204e6f74204c69766560981b6044820152606401611009565b601a546301000000900460ff1615612245576001600160a01b03831660009081526013602052604090205460ff168061215557506001600160a01b03821660009081526013602052604090205460ff165b8061217857506001600160a01b03831660009081526029602052604090205460ff165b8061219b57506001600160a01b03821660009081526029602052604090205460ff165b6121b75760405162461bcd60e51b815260040161100990613946565b6001600160a01b0382166000908152602b602052604090205460ff1661220c57600f54816121e484611531565b6121ee9190613800565b111561220c5760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526013602052604090205460ff16156122455760405162461bcd60e51b81526004016110099061399d565b601a54640100000000900460ff1615612393576001600160a01b03831660009081526014602052604090205460ff168061229757506001600160a01b03821660009081526014602052604090205460ff165b806122ba57506001600160a01b03831660009081526029602052604090205460ff165b806122dd57506001600160a01b03821660009081526029602052604090205460ff165b6122f95760405162461bcd60e51b815260040161100990613946565b6001600160a01b0382166000908152602b602052604090205460ff1661235a576002600f5461232891906137de565b8161233284611531565b61233c9190613800565b111561235a5760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526014602052604090205460ff16156123935760405162461bcd60e51b81526004016110099061399d565b601a5465010000000000900460ff16156124e2576001600160a01b03831660009081526015602052604090205460ff16806123e657506001600160a01b03821660009081526015602052604090205460ff165b8061240957506001600160a01b03831660009081526029602052604090205460ff165b8061242c57506001600160a01b03821660009081526029602052604090205460ff165b6124485760405162461bcd60e51b815260040161100990613946565b6001600160a01b0382166000908152602b602052604090205460ff166124a9576005600f5461247791906137de565b8161248184611531565b61248b9190613800565b11156124a95760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526015602052604090205460ff16156124e25760405162461bcd60e51b81526004016110099061399d565b60235462010000900460ff1615612565576001600160a01b0383166000908152601e60205260409020544390036125495760405162461bcd60e51b815260206004820152600b60248201526a109bdd08119d5b589b195960aa1b6044820152606401611009565b6001600160a01b0382166000908152601e602052604090204390555b602354610100900460ff16156127f9576001600160a01b03831660009081526021602052604090205460ff1680156125ab57506010546001600160a01b03838116911614155b156125ea5760405162461bcd60e51b815260206004820152600f60248201526e29b734b832b910233ab6b13632b21760891b6044820152606401611009565b602654601b546125fa90436139c7565b101561266b576001600160a01b0382166000908152602160205260408120805460ff19166001179055602780549161263183613829565b90915550506040516001600160a01b038316907fed3eb9c9c53bbed100569a6acf470061ee9f83f19d9ed652e31aae0e71a3882690600090a25b60235460ff16156127f9576001600160a01b0383166000908152602c602052604090205460ff16156126b3576001600160a01b0382166000908152601f602052604090204390555b6001600160a01b0382166000908152602c602052604090205460ff16156126ef576001600160a01b038316600090815260208052604090204390555b6001600160a01b03831660009081526022602052604090205460ff16801561272557506010546001600160a01b03838116911614155b156127615760405162461bcd60e51b815260206004820152600c60248201526b2137ba10233ab6b13632b21760a11b6044820152606401611009565b6001600160a01b03808416600090815260208080526040808320549386168352601f909152902054036127f9576001600160a01b0382166000908152602260205260408120805460ff1916600117905560288054916127bf83613829565b90915550506040516001600160a01b038316907f83f3ba6ccfab035b4d0e02cbd3348d17e3fae04af10d16e650758656c8f2c22890600090a25b6001600160a01b0383166000908152602c602052604090205460ff168061283857506001600160a01b0382166000908152602c602052604090205460ff165b80156128475750601c5460ff16155b1561292b576001600160a01b0383166000908152602c602052604090205460ff1661292b5760175460185481106128835761288360185461321d565b6019546016541015801561289e5750601a54610100900460ff165b15612929576128ae601954612ef1565b601954601660008282546128c291906139c7565b90915550506010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114612914576040519150601f19603f3d011682016040523d82523d6000602084013e612919565b606091505b505090508061292757600080fd5b505b505b6001600160a01b0383166000908152602c602052604090205460ff16801561296c57506001600160a01b0382166000908152602a602052604090205460ff16155b15612a2c57600e5481111561298057600080fd5b602354610100900460ff1615612a2c576012546001600160a01b03908116908416036129eb576001600160a01b0382166000908152601d60205260409020544390036129cb57600080fd5b6001600160a01b0382166000908152601d60205260409020439055612a2c565b6001600160a01b0383166000908152601d6020526040902054439003612a1057600080fd5b6001600160a01b0383166000908152601d602052604090204390555b6001600160a01b0382166000908152602b602052604090205460ff16612a8157600f5481612a5984611531565b612a639190613800565b1115612a815760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526029602052604081205460019190819060ff1680612ac657506001600160a01b03851660009081526029602052604090205460ff165b15612ad057600092505b8215612e0a576001600160a01b0385166000908152602c602052604090205460ff168015612b0057506000600d54115b15612b73576064600d5485612b1591906137bf565b612b1f91906137de565b91506064600c5485612b3191906137bf565b612b3b91906137de565b90508160166000828254612b4f9190613800565b925050819055508060176000828254612b689190613800565b90915550612c0b9050565b6001600160a01b0386166000908152602c602052604090205460ff168015612b9d57506000600b54115b15612c0b576064600b5485612bb291906137bf565b612bbc91906137de565b91506064600a5485612bce91906137bf565b612bd891906137de565b90508160166000828254612bec9190613800565b925050819055508060176000828254612c059190613800565b90915550505b601a5460ff168015612c3557506001600160a01b0385166000908152602c602052604090205460ff165b8015612c5957506001600160a01b03861660009081526013602052604090205460ff165b15612c94576064612c6b85604b6137bf565b612c7591906137de565b91508160166000828254612c899190613800565b90915550612cf49050565b601a5460ff168015612cbe57506001600160a01b03861660009081526013602052604090205460ff165b15612cf4576064612cd085604b6137bf565b612cda91906137de565b91508160166000828254612cee9190613800565b90915550505b600082118015612d0e5750602d54600160a81b900460ff16155b15612d2757612d278630612d228486613800565b613131565b600082118015612d405750602d54600160a81b900460ff165b15612df357602d54612d619087906001600160a01b0316612d228486613800565b602d546001600160a01b03163014801590612d855750602d54600160a01b900460ff165b15612df357602d60009054906101000a90046001600160a01b03166001600160a01b031663efedc6696040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612dda57600080fd5b505af1158015612dee573d6000803e3d6000fd5b505050505b612dfd8183613800565b612e0790856139c7565b93505b612e15868686613131565b505050505050565b6005546001600160a01b0316331461155e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611009565b6000612e838484611c8c565b90506000198114612eeb5781811015612ede5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611009565b612eeb8484848403611ee0565b50505050565b601c805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110612f3357612f33613813565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb091906139da565b81600181518110612fc357612fc3613813565b6001600160a01b039283166020918202929092010152601154612fe99130911684611ee0565b6011546001600160a01b031663791ac947836000843061300b4261012c613800565b6040518663ffffffff1660e01b815260040161302b9594939291906139f7565b600060405180830381600087803b15801561304557600080fd5b505af1158015613059573d6000803e3d6000fd5b5050601c805460ff1916905550505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152602c60205260409020805460ff19168215151790556130eb8282611560565b6130f58282611c2c565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b0383166131575760405162461bcd60e51b815260040161100990613878565b6001600160a01b03821661317d5760405162461bcd60e51b8152600401611009906138bd565b6001600160a01b038316600090815260208190526040902054818110156131b65760405162461bcd60e51b815260040161100990613900565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b601c805460ff1916600117905560006132376002836137de565b9050600061324582846139c7565b90504761325183612ef1565b600061325d82476139c7565b905061326983826132bb565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601c805460ff19169055505050565b601c805460ff191660011790556011546132e09030906001600160a01b031684611ee0565b6011546001600160a01b031663f305d7198230856000806133096005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613371573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133969190613a68565b5050601c805460ff19169055505050565b600060208083528351808285015260005b818110156133d4578581018301518582016040015282016133b8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d8857600080fd5b803561152c816133f5565b6000806040838503121561342857600080fd5b8235613433816133f5565b946020939093013593505050565b60006020828403121561345357600080fd5b813561345e816133f5565b9392505050565b8015158114611d8857600080fd5b6000806040838503121561348657600080fd5b823561343381613465565b6000602082840312156134a357600080fd5b813561345e81613465565b6000806000606084860312156134c357600080fd5b83356134ce816133f5565b925060208401356134de816133f5565b929592945050506040919091013590565b60006020828403121561350157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561353157600080fd5b823567ffffffffffffffff8082111561354957600080fd5b818501915085601f83011261355d57600080fd5b81358181111561356f5761356f613508565b8060051b604051601f19603f8301168101818110858211171561359457613594613508565b6040529182528482019250838101850191888311156135b257600080fd5b938501935b828510156135d7576135c88561340a565b845293850193928501926135b7565b98975050505050505050565b600080600080608085870312156135f957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561362857600080fd5b8235613633816133f5565b9150602083013561364381613465565b809150509250929050565b6000806040838503121561366157600080fd5b823561366c816133f5565b91506020830135613643816133f5565b600181811c9082168061369057607f821691505b6020821081036136b057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137075781600019048211156136ed576136ed6136b6565b808516156136fa57918102915b93841c93908002906136d1565b509250929050565b60008261371e57506001610f74565b8161372b57506000610f74565b8160018114613741576002811461374b57613767565b6001915050610f74565b60ff84111561375c5761375c6136b6565b50506001821b610f74565b5060208310610133831016604e8410600b841016171561378a575081810a610f74565b61379483836136cc565b80600019048211156137a8576137a86136b6565b029392505050565b600061345e60ff84168361370f565b60008160001904831182151516156137d9576137d96136b6565b500290565b6000826137fb57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610f7457610f746136b6565b634e487b7160e01b600052603260045260246000fd5b60006001820161383b5761383b6136b6565b5060010190565b60006020828403121561385457600080fd5b5051919050565b60006020828403121561386d57600080fd5b815161345e81613465565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526010908201526f2932b21021b0b93832ba1027b7363c9760811b604082015260600190565b60208082526013908201527213585e0815d85b1b195d08115e18d959591959606a1b604082015260600190565b60208082526010908201526f2932b21021b0b93832ba1026b7b2329760811b604082015260600190565b81810381811115610f7457610f746136b6565b6000602082840312156139ec57600080fd5b815161345e816133f5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a475784516001600160a01b031683529383019391830191600101613a22565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613a7d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220627fe1fb212fa47b3d2424b0478abd862b722e7a0db65b4fab75548cd1e5525364736f6c63430008100033

Deployed Bytecode

0x60806040526004361061046c5760003560e01c80637639f70b1161024a578063b4c3289c11610139578063ca45b5e5116100b6578063e086e5ec1161007a578063e086e5ec14610e49578063e74b981b14610e5e578063ee40166e14610e7e578063f2fde38b14610e94578063f3da41a214610eb457600080fd5b8063ca45b5e514610db3578063d2fcc00114610dd3578063daf06b0714610df3578063dd62ed3e14610e09578063ddb3635f14610e2957600080fd5b8063bb85c6d1116100fd578063bb85c6d114610d12578063bbc0c74214610d32578063bf36429b14610d53578063c024666814610d73578063c841085214610d9357600080fd5b8063b4c3289c14610c52578063b582892b14610c72578063b62496f514610ca2578063b6b55f2514610cd2578063b94e8df214610cf257600080fd5b806395d89b41116101c7578063a527bcd71161018b578063a527bcd714610bb6578063a9059cbb14610bd6578063aa4bde2814610bf6578063abb8105214610c0c578063b3182ba514610c3c57600080fd5b806395d89b4114610b1157806396880b1714610b265780639a7a23d614610b565780639d1eba6114610b76578063a457c2d714610b9657600080fd5b8063847d89941161020e578063847d899414610a7a5780638c0b5e2214610a9d5780638da5cb5b14610ab3578063910730a814610ad1578063933cac0f14610af157600080fd5b80637639f70b146109e45780637c1be58014610a0457806381bfdcca14610a245780638211486714610a44578063823eb82014610a6457600080fd5b80634690484011610366578063650c4226116102e357806370a08231116102a757806370a0823114610940578063715018a61461096057806375172a8b146109755780637571336a1461099457806375e661ee146109b457600080fd5b8063650c4226146108ae578063677daa57146108ce5780636b0a894c146108ee5780636d4a066f146109045780636e999dbf1461092657600080fd5b806351c3707f1161032a57806351c3707f146107e557806351cff8d91461080557806356070e7914610825578063595f57421461085e5780635fecd9261461088e57600080fd5b80634690484014610735578063476343ee1461075557806349bd5a5e1461076b5780634cf088d91461078b5780634d5a0143146107ac57600080fd5b80631694505e116103f4578063313ce567116103b8578063313ce56714610680578063379607f51461069c57806339509351146106bc57806339984182146106dc5780633f5aef12146106fc57600080fd5b80631694505e146105d357806318160ddd1461060b57806322042cc11461062a57806323b872dd1461064a57806324e7412e1461066a57600080fd5b80630c371cdf1161043b5780630c371cdf146105205780630f1098c31461054257806310d5de531461056257806311f76d931461059257806315e17e4b146105b257600080fd5b8063035bc61d1461047857806306fdde03146104ae578063095ea7b3146104d05780630bcfc1ee146104f057600080fd5b3661047357005b600080fd5b34801561048457600080fd5b50601a54610499906301000000900460ff1681565b60405190151581526020015b60405180910390f35b3480156104ba57600080fd5b506104c3610ece565b6040516104a591906133a7565b3480156104dc57600080fd5b506104996104eb366004613415565b610f60565b3480156104fc57600080fd5b5061049961050b366004613441565b60146020526000908152604090205460ff1681565b34801561052c57600080fd5b5061054061053b366004613441565b610f7a565b005b34801561054e57600080fd5b5061049961055d366004613473565b61103c565b34801561056e57600080fd5b5061049961057d366004613441565b602a6020526000908152604090205460ff1681565b34801561059e57600080fd5b506105406105ad366004613491565b611099565b3480156105be57600080fd5b50602d5461049990600160a01b900460ff1681565b3480156105df57600080fd5b506011546105f3906001600160a01b031681565b6040516001600160a01b0390911681526020016104a5565b34801561061757600080fd5b506002545b6040519081526020016104a5565b34801561063657600080fd5b50610540610645366004613491565b6110bd565b34801561065657600080fd5b506104996106653660046134ae565b611101565b34801561067657600080fd5b5061061c600a5481565b34801561068c57600080fd5b50604051600981526020016104a5565b3480156106a857600080fd5b506105406106b73660046134ef565b611125565b3480156106c857600080fd5b506104996106d7366004613415565b611192565b3480156106e857600080fd5b506105406106f736600461351e565b6111b4565b34801561070857600080fd5b50610499610717366004613441565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561074157600080fd5b50602d546105f3906001600160a01b031681565b34801561076157600080fd5b5061061c600d5481565b34801561077757600080fd5b506012546105f3906001600160a01b031681565b34801561079757600080fd5b50602d5461049990600160a81b900460ff1681565b3480156107b857600080fd5b506104996107c7366004613441565b6001600160a01b031660009081526015602052604090205460ff1690565b3480156107f157600080fd5b50610540610800366004613491565b611224565b34801561081157600080fd5b50610540610820366004613441565b61126b565b34801561083157600080fd5b50610499610840366004613441565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561086a57600080fd5b50610499610879366004613441565b60216020526000908152604090205460ff1681565b34801561089a57600080fd5b506105406108a9366004613441565b611403565b3480156108ba57600080fd5b506104996108c93660046135e3565b611454565b3480156108da57600080fd5b506104996108e93660046134ef565b61149f565b3480156108fa57600080fd5b5061061c60285481565b34801561091057600080fd5b50601a5461049990640100000000900460ff1681565b34801561093257600080fd5b50601a546104999060ff1681565b34801561094c57600080fd5b5061061c61095b366004613441565b611531565b34801561096c57600080fd5b5061054061154c565b34801561098157600080fd5b50601a5461049990610100900460ff1681565b3480156109a057600080fd5b506105406109af366004613615565b611560565b3480156109c057600080fd5b506104996109cf366004613441565b60156020526000908152604090205460ff1681565b3480156109f057600080fd5b506105406109ff36600461351e565b6115c8565b348015610a1057600080fd5b50610540610a1f366004613441565b611638565b348015610a3057600080fd5b50610499610a3f3660046134ef565b6116ae565b348015610a5057600080fd5b50610540610a5f3660046134ef565b61173f565b348015610a7057600080fd5b5061061c60275481565b348015610a8657600080fd5b50601a546104999065010000000000900460ff1681565b348015610aa957600080fd5b5061061c600e5481565b348015610abf57600080fd5b506005546001600160a01b03166105f3565b348015610add57600080fd5b50610540610aec366004613491565b61177a565b348015610afd57600080fd5b506010546105f3906001600160a01b031681565b348015610b1d57600080fd5b506104c36117cb565b348015610b3257600080fd5b50610499610b41366004613441565b602b6020526000908152604090205460ff1681565b348015610b6257600080fd5b50610540610b71366004613615565b6117da565b348015610b8257600080fd5b50610540610b91366004613491565b61187f565b348015610ba257600080fd5b50610499610bb1366004613415565b61189a565b348015610bc257600080fd5b50610540610bd1366004613441565b611915565b348015610be257600080fd5b50610499610bf1366004613415565b611951565b348015610c0257600080fd5b5061061c600f5481565b348015610c1857600080fd5b50610499610c27366004613441565b60226020526000908152604090205460ff1681565b348015610c4857600080fd5b5061061c600b5481565b348015610c5e57600080fd5b50610540610c6d36600461351e565b61195f565b348015610c7e57600080fd5b50610499610c8d366004613441565b60136020526000908152604090205460ff1681565b348015610cae57600080fd5b50610499610cbd366004613441565b602c6020526000908152604090205460ff1681565b348015610cde57600080fd5b50610499610ced3660046134ef565b6119cf565b348015610cfe57600080fd5b50610540610d0d366004613491565b611a41565b348015610d1e57600080fd5b50610499610d2d366004613441565b611a67565b348015610d3e57600080fd5b50601a5461049990600160301b900460ff1681565b348015610d5f57600080fd5b50610540610d6e366004613441565b611a96565b348015610d7f57600080fd5b50610540610d8e366004613615565b611b0c565b348015610d9f57600080fd5b50610540610dae366004613491565b611b6c565b348015610dbf57600080fd5b50610540610dce366004613441565b611bb6565b348015610ddf57600080fd5b50610540610dee366004613615565b611c2c565b348015610dff57600080fd5b5061061c600c5481565b348015610e1557600080fd5b5061061c610e2436600461364e565b611c8c565b348015610e3557600080fd5b50610540610e44366004613441565b611cb7565b348015610e5557600080fd5b50610540611d08565b348015610e6a57600080fd5b50610540610e79366004613441565b611d8b565b348015610e8a57600080fd5b5061061c601b5481565b348015610ea057600080fd5b50610540610eaf366004613441565b611e6a565b348015610ec057600080fd5b506023546104999060ff1681565b606060038054610edd9061367c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f099061367c565b8015610f565780601f10610f2b57610100808354040283529160200191610f56565b820191906000526020600020905b815481529060010190602001808311610f3957829003601f168201915b5050505050905090565b600033610f6e818585611ee0565b60019150505b92915050565b6010546001600160a01b03163314610f9157600080fd5b6001600160a01b03811660009081526021602052604090205460ff16610fb657600080fd5b6012546001600160a01b03908116908216036110125760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba103132902ab734b9bbb0b8102830b4b960511b60448201526064015b60405180910390fd5b600061101d82611531565b6010549091506110389083906001600160a01b031683612004565b5050565b6010546000906001600160a01b0316336001600160a01b03161461105f57600080fd5b601a805461ff001916610100851515021790556008546110839060ff16600a6137b0565b61108d90836137bf565b60195550600192915050565b6110a1612e1d565b60238054911515620100000262ff000019909216919091179055565b6110c5612e1d565b601a54600160301b900460ff16156110dc57600080fd5b601a805463ffff0000191663010000009215159290920262ff00001916919091179055565b60003361110f858285612e77565b61111a858585612004565b506001949350505050565b6010546001600160a01b0316336001600160a01b03161461114557600080fd5b60648111158015611154575060015b61115d57600080fd5b600061116830611531565b90506000606461117884846137bf565b61118291906137de565b905061118d81612ef1565b505050565b600033610f6e8185856111a58383611c8c565b6111af9190613800565b611ee0565b6111bc612e1d565b60005b8151811015611038576001601360008484815181106111e0576111e0613813565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061121c81613829565b9150506111bf565b61122c612e1d565b601a54600160301b900460ff161561124357600080fd5b601a805464ffffff000019166401000000009215159290920263ffff00001916919091179055565b6010546001600160a01b0316336001600160a01b03161461128b57600080fd5b6001600160a01b0381166112d05760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401611009565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015611321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113459190613842565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b4919061385b565b9050806110385760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205769746864726177000000000000006044820152606401611009565b61140b612e1d565b6001600160a01b038116600081815260226020526040808220805460ff19169055517ff98765b2b5e26c3266491f2a9f51d7fdae1c9c7ac2016fade7789d1f9e4ff3a09190a250565b600061145e612e1d565b600a859055600b849055600c839055600d829055601482846114808789613800565b61148a9190613800565b6114949190613800565b111561111a57600080fd5b60006114a9612e1d565b606460095460016114ba91906137bf565b6114c491906137de565b82101561150a5760405162461bcd60e51b815260206004820152601460248201527343616e206e6f74207365742062656c6f7720312560601b6044820152606401611009565b60085461151b9060ff16600a6137b0565b61152590836137bf565b600e555060015b919050565b6001600160a01b031660009081526020819052604090205490565b611554612e1d565b61155e600061306b565b565b611568612e1d565b6001600160a01b0382166000818152602a6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9591015b60405180910390a25050565b6115d0612e1d565b60005b8151811015611038576001601560008484815181106115f4576115f4613813565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061163081613829565b9150506115d3565b611640612e1d565b6001600160a01b03811660009081526013602052604090205460ff1661166557600080fd5b6001600160a01b038116600081815260136020526040808220805460ff19169055517f6866e503d38134a78fda39bc98d3b6b8fbc24d5904303f6017770e935f7c63649190a250565b60006116b8612e1d565b606460095460016116c991906137bf565b6116d391906137de565b8210156117195760405162461bcd60e51b815260206004820152601460248201527343616e206e6f74207365742062656c6f7720312560601b6044820152606401611009565b60085461172a9060ff16600a6137b0565b61173490836137bf565b600f55506001919050565b611747612e1d565b601a805443601b556026929092556023805462ff00001916905566ffffffffffff00199091166601000000000100179055565b611782612e1d565b602d805460ff60a81b1916600160a81b831515908102919091179091556040517f6309678de3d124e7477ea01bc701ec79980dbbd97aaa4b95760862586e3bd5ed90600090a250565b606060048054610edd9061367c565b6010546001600160a01b031633146117f157600080fd5b6012546001600160a01b03908116908316036118755760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401611009565b61103882826130bd565b611887612e1d565b601a805460ff1916911515919091179055565b600033816118a88286611c8c565b9050838110156119085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401611009565b61111a8286868403611ee0565b6010546001600160a01b0316331461192c57600080fd5b6001600160a01b03811660009081526022602052604090205460ff16610fb657600080fd5b600033610f6e818585612004565b611967612e1d565b60005b81518110156110385760016014600084848151811061198b5761198b613813565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806119c781613829565b91505061196a565b6000808211611a0e5760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b6044820152606401611009565b60008290508060166000828254611a259190613800565b90915550339050611a37813084613131565b5060019392505050565b611a49612e1d565b602d8054911515600160a01b0260ff60a01b19909216919091179055565b6000611a71612e1d565b50601080546001600160a01b0383166001600160a01b03199091161790556001919050565b611a9e612e1d565b6001600160a01b03811660009081526015602052604090205460ff16611ac357600080fd5b6001600160a01b038116600081815260156020526040808220805460ff19169055517fadc11009a6ac1fa921e16ae93be742414c0a1aa0d7ab40607979525431a28f719190a250565b611b14612e1d565b6001600160a01b038216600081815260296020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016115bc565b611b74612e1d565b601a54600160301b900460ff1615611b8b57600080fd5b601a805465ffff00ff00001916650100000000009215159290920264ff00ff00001916919091179055565b611bbe612e1d565b6001600160a01b03811660009081526014602052604090205460ff16611be357600080fd5b6001600160a01b038116600081815260146020526040808220805460ff19169055517fb85c02cbf00e487c2dbdb1c51961f5580d56d7d3ef3de3734c5b6bdc1874e4029190a250565b611c34612e1d565b6001600160a01b0382166000818152602b6020908152604091829020805460ff191685151590811790915591519182527f5956094251965a24e12663de1458c0d93ae46d0299678c87fb094b82fe3f268791016115bc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611cbf612e1d565b6001600160a01b038116600081815260216020526040808220805460ff19169055517f8e4501af8f6552345ec79b0b5ca3d3556fa28417bdd0a64d110bc9a99171c8a89190a250565b6010546001600160a01b0316336001600160a01b031614611d2857600080fd5b6010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611d75576040519150601f19603f3d011682016040523d82523d6000602084013e611d7a565b606091505b5050905080611d8857600080fd5b50565b611d93612e1d565b6001600160a01b038116611dd85760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401611009565b602d80546001600160a01b0319166001600160a01b0383169081179091556000818152602960209081526040808320805460ff199081166001908117909255602a84528285208054821683179055602b84529382902080549094161790925590519182527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73910160405180910390a150565b611e72612e1d565b6001600160a01b038116611ed75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611009565b611d888161306b565b6001600160a01b038316611f425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611009565b6001600160a01b038216611fa35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611009565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661202a5760405162461bcd60e51b815260040161100990613878565b6001600160a01b0382166120505760405162461bcd60e51b8152600401611009906138bd565b8061205a84611531565b10156120785760405162461bcd60e51b815260040161100990613900565b601a5462010000900460ff1615612104576001600160a01b03831660009081526029602052604090205460ff16806120c857506001600160a01b03821660009081526029602052604090205460ff165b6121045760405162461bcd60e51b815260206004820152600d60248201526c47616d65204e6f74204c69766560981b6044820152606401611009565b601a546301000000900460ff1615612245576001600160a01b03831660009081526013602052604090205460ff168061215557506001600160a01b03821660009081526013602052604090205460ff165b8061217857506001600160a01b03831660009081526029602052604090205460ff165b8061219b57506001600160a01b03821660009081526029602052604090205460ff165b6121b75760405162461bcd60e51b815260040161100990613946565b6001600160a01b0382166000908152602b602052604090205460ff1661220c57600f54816121e484611531565b6121ee9190613800565b111561220c5760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526013602052604090205460ff16156122455760405162461bcd60e51b81526004016110099061399d565b601a54640100000000900460ff1615612393576001600160a01b03831660009081526014602052604090205460ff168061229757506001600160a01b03821660009081526014602052604090205460ff165b806122ba57506001600160a01b03831660009081526029602052604090205460ff165b806122dd57506001600160a01b03821660009081526029602052604090205460ff165b6122f95760405162461bcd60e51b815260040161100990613946565b6001600160a01b0382166000908152602b602052604090205460ff1661235a576002600f5461232891906137de565b8161233284611531565b61233c9190613800565b111561235a5760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526014602052604090205460ff16156123935760405162461bcd60e51b81526004016110099061399d565b601a5465010000000000900460ff16156124e2576001600160a01b03831660009081526015602052604090205460ff16806123e657506001600160a01b03821660009081526015602052604090205460ff165b8061240957506001600160a01b03831660009081526029602052604090205460ff165b8061242c57506001600160a01b03821660009081526029602052604090205460ff165b6124485760405162461bcd60e51b815260040161100990613946565b6001600160a01b0382166000908152602b602052604090205460ff166124a9576005600f5461247791906137de565b8161248184611531565b61248b9190613800565b11156124a95760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526015602052604090205460ff16156124e25760405162461bcd60e51b81526004016110099061399d565b60235462010000900460ff1615612565576001600160a01b0383166000908152601e60205260409020544390036125495760405162461bcd60e51b815260206004820152600b60248201526a109bdd08119d5b589b195960aa1b6044820152606401611009565b6001600160a01b0382166000908152601e602052604090204390555b602354610100900460ff16156127f9576001600160a01b03831660009081526021602052604090205460ff1680156125ab57506010546001600160a01b03838116911614155b156125ea5760405162461bcd60e51b815260206004820152600f60248201526e29b734b832b910233ab6b13632b21760891b6044820152606401611009565b602654601b546125fa90436139c7565b101561266b576001600160a01b0382166000908152602160205260408120805460ff19166001179055602780549161263183613829565b90915550506040516001600160a01b038316907fed3eb9c9c53bbed100569a6acf470061ee9f83f19d9ed652e31aae0e71a3882690600090a25b60235460ff16156127f9576001600160a01b0383166000908152602c602052604090205460ff16156126b3576001600160a01b0382166000908152601f602052604090204390555b6001600160a01b0382166000908152602c602052604090205460ff16156126ef576001600160a01b038316600090815260208052604090204390555b6001600160a01b03831660009081526022602052604090205460ff16801561272557506010546001600160a01b03838116911614155b156127615760405162461bcd60e51b815260206004820152600c60248201526b2137ba10233ab6b13632b21760a11b6044820152606401611009565b6001600160a01b03808416600090815260208080526040808320549386168352601f909152902054036127f9576001600160a01b0382166000908152602260205260408120805460ff1916600117905560288054916127bf83613829565b90915550506040516001600160a01b038316907f83f3ba6ccfab035b4d0e02cbd3348d17e3fae04af10d16e650758656c8f2c22890600090a25b6001600160a01b0383166000908152602c602052604090205460ff168061283857506001600160a01b0382166000908152602c602052604090205460ff165b80156128475750601c5460ff16155b1561292b576001600160a01b0383166000908152602c602052604090205460ff1661292b5760175460185481106128835761288360185461321d565b6019546016541015801561289e5750601a54610100900460ff165b15612929576128ae601954612ef1565b601954601660008282546128c291906139c7565b90915550506010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114612914576040519150601f19603f3d011682016040523d82523d6000602084013e612919565b606091505b505090508061292757600080fd5b505b505b6001600160a01b0383166000908152602c602052604090205460ff16801561296c57506001600160a01b0382166000908152602a602052604090205460ff16155b15612a2c57600e5481111561298057600080fd5b602354610100900460ff1615612a2c576012546001600160a01b03908116908416036129eb576001600160a01b0382166000908152601d60205260409020544390036129cb57600080fd5b6001600160a01b0382166000908152601d60205260409020439055612a2c565b6001600160a01b0383166000908152601d6020526040902054439003612a1057600080fd5b6001600160a01b0383166000908152601d602052604090204390555b6001600160a01b0382166000908152602b602052604090205460ff16612a8157600f5481612a5984611531565b612a639190613800565b1115612a815760405162461bcd60e51b815260040161100990613970565b6001600160a01b03831660009081526029602052604081205460019190819060ff1680612ac657506001600160a01b03851660009081526029602052604090205460ff165b15612ad057600092505b8215612e0a576001600160a01b0385166000908152602c602052604090205460ff168015612b0057506000600d54115b15612b73576064600d5485612b1591906137bf565b612b1f91906137de565b91506064600c5485612b3191906137bf565b612b3b91906137de565b90508160166000828254612b4f9190613800565b925050819055508060176000828254612b689190613800565b90915550612c0b9050565b6001600160a01b0386166000908152602c602052604090205460ff168015612b9d57506000600b54115b15612c0b576064600b5485612bb291906137bf565b612bbc91906137de565b91506064600a5485612bce91906137bf565b612bd891906137de565b90508160166000828254612bec9190613800565b925050819055508060176000828254612c059190613800565b90915550505b601a5460ff168015612c3557506001600160a01b0385166000908152602c602052604090205460ff165b8015612c5957506001600160a01b03861660009081526013602052604090205460ff165b15612c94576064612c6b85604b6137bf565b612c7591906137de565b91508160166000828254612c899190613800565b90915550612cf49050565b601a5460ff168015612cbe57506001600160a01b03861660009081526013602052604090205460ff165b15612cf4576064612cd085604b6137bf565b612cda91906137de565b91508160166000828254612cee9190613800565b90915550505b600082118015612d0e5750602d54600160a81b900460ff16155b15612d2757612d278630612d228486613800565b613131565b600082118015612d405750602d54600160a81b900460ff165b15612df357602d54612d619087906001600160a01b0316612d228486613800565b602d546001600160a01b03163014801590612d855750602d54600160a01b900460ff165b15612df357602d60009054906101000a90046001600160a01b03166001600160a01b031663efedc6696040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612dda57600080fd5b505af1158015612dee573d6000803e3d6000fd5b505050505b612dfd8183613800565b612e0790856139c7565b93505b612e15868686613131565b505050505050565b6005546001600160a01b0316331461155e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611009565b6000612e838484611c8c565b90506000198114612eeb5781811015612ede5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611009565b612eeb8484848403611ee0565b50505050565b601c805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110612f3357612f33613813565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb091906139da565b81600181518110612fc357612fc3613813565b6001600160a01b039283166020918202929092010152601154612fe99130911684611ee0565b6011546001600160a01b031663791ac947836000843061300b4261012c613800565b6040518663ffffffff1660e01b815260040161302b9594939291906139f7565b600060405180830381600087803b15801561304557600080fd5b505af1158015613059573d6000803e3d6000fd5b5050601c805460ff1916905550505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152602c60205260409020805460ff19168215151790556130eb8282611560565b6130f58282611c2c565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b0383166131575760405162461bcd60e51b815260040161100990613878565b6001600160a01b03821661317d5760405162461bcd60e51b8152600401611009906138bd565b6001600160a01b038316600090815260208190526040902054818110156131b65760405162461bcd60e51b815260040161100990613900565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b601c805460ff1916600117905560006132376002836137de565b9050600061324582846139c7565b90504761325183612ef1565b600061325d82476139c7565b905061326983826132bb565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601c805460ff19169055505050565b601c805460ff191660011790556011546132e09030906001600160a01b031684611ee0565b6011546001600160a01b031663f305d7198230856000806133096005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613371573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133969190613a68565b5050601c805460ff19169055505050565b600060208083528351808285015260005b818110156133d4578581018301518582016040015282016133b8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d8857600080fd5b803561152c816133f5565b6000806040838503121561342857600080fd5b8235613433816133f5565b946020939093013593505050565b60006020828403121561345357600080fd5b813561345e816133f5565b9392505050565b8015158114611d8857600080fd5b6000806040838503121561348657600080fd5b823561343381613465565b6000602082840312156134a357600080fd5b813561345e81613465565b6000806000606084860312156134c357600080fd5b83356134ce816133f5565b925060208401356134de816133f5565b929592945050506040919091013590565b60006020828403121561350157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561353157600080fd5b823567ffffffffffffffff8082111561354957600080fd5b818501915085601f83011261355d57600080fd5b81358181111561356f5761356f613508565b8060051b604051601f19603f8301168101818110858211171561359457613594613508565b6040529182528482019250838101850191888311156135b257600080fd5b938501935b828510156135d7576135c88561340a565b845293850193928501926135b7565b98975050505050505050565b600080600080608085870312156135f957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561362857600080fd5b8235613633816133f5565b9150602083013561364381613465565b809150509250929050565b6000806040838503121561366157600080fd5b823561366c816133f5565b91506020830135613643816133f5565b600181811c9082168061369057607f821691505b6020821081036136b057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137075781600019048211156136ed576136ed6136b6565b808516156136fa57918102915b93841c93908002906136d1565b509250929050565b60008261371e57506001610f74565b8161372b57506000610f74565b8160018114613741576002811461374b57613767565b6001915050610f74565b60ff84111561375c5761375c6136b6565b50506001821b610f74565b5060208310610133831016604e8410600b841016171561378a575081810a610f74565b61379483836136cc565b80600019048211156137a8576137a86136b6565b029392505050565b600061345e60ff84168361370f565b60008160001904831182151516156137d9576137d96136b6565b500290565b6000826137fb57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610f7457610f746136b6565b634e487b7160e01b600052603260045260246000fd5b60006001820161383b5761383b6136b6565b5060010190565b60006020828403121561385457600080fd5b5051919050565b60006020828403121561386d57600080fd5b815161345e81613465565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526010908201526f2932b21021b0b93832ba1027b7363c9760811b604082015260600190565b60208082526013908201527213585e0815d85b1b195d08115e18d959591959606a1b604082015260600190565b60208082526010908201526f2932b21021b0b93832ba1026b7b2329760811b604082015260600190565b81810381811115610f7457610f746136b6565b6000602082840312156139ec57600080fd5b815161345e816133f5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a475784516001600160a01b031683529383019391830191600101613a22565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613a7d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220627fe1fb212fa47b3d2424b0478abd862b722e7a0db65b4fab75548cd1e5525364736f6c63430008100033

Deployed Bytecode Sourcemap

17156:20905:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18462:36;;;;;;;;;;-1:-1:-1;18462:36:0;;;;;;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;18462:36:0;;;;;;;;12326:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13292:244::-;;;;;;;;;;-1:-1:-1;13292:244:0;;;;;:::i;:::-;;:::i;18024:55::-;;;;;;;;;;-1:-1:-1;18024:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;34120:319;;;;;;;;;;-1:-1:-1;34120:319:0;;;;;:::i;:::-;;:::i;:::-;;35089:226;;;;;;;;;;-1:-1:-1;35089:226:0;;;;;:::i;:::-;;:::i;19741:63::-;;;;;;;;;;-1:-1:-1;19741:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;31258:90;;;;;;;;;;-1:-1:-1;31258:90:0;;;;;:::i;:::-;;:::i;20670:36::-;;;;;;;;;;-1:-1:-1;20670:36:0;;;;-1:-1:-1;;;20670:36:0;;;;;;17877:41;;;;;;;;;;-1:-1:-1;17877:41:0;;;;-1:-1:-1;;;;;17877:41:0;;;;;;-1:-1:-1;;;;;2479:32:1;;;2461:51;;2449:2;2434:18;17877:41:0;2289:229:1;12721:110:0;;;;;;;;;;-1:-1:-1;12811:12:0;;12721:110;;;2669:25:1;;;2657:2;2642:18;12721:110:0;2523:177:1;30338:150:0;;;;;;;;;;-1:-1:-1;30338:150:0;;;;;:::i;:::-;;:::i;13544:297::-;;;;;;;;;;-1:-1:-1;13544:297:0;;;;;:::i;:::-;;:::i;17437:30::-;;;;;;;;;;;;;;;;12621:92;;;;;;;;;;-1:-1:-1;12621:92:0;;12704:1;3308:36:1;;3296:2;3281:18;12621:92:0;3166:184:1;34754:327:0;;;;;;;;;;-1:-1:-1;34754:327:0;;;;;:::i;:::-;;:::i;14364:272::-;;;;;;;;;;-1:-1:-1;14364:272:0;;;;;:::i;:::-;;:::i;35830:194::-;;;;;;;;;;-1:-1:-1;35830:194:0;;;;;:::i;:::-;;:::i;31731:125::-;;;;;;;;;;-1:-1:-1;31731:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;31816:31:0;31791:4;31816:31;;;:22;:31;;;;;;;;;31731:125;20636:27;;;;;;;;;;-1:-1:-1;20636:27:0;;;;-1:-1:-1;;;;;20636:27:0;;;17549:31;;;;;;;;;;;;;;;;17925:28;;;;;;;;;;-1:-1:-1;17925:28:0;;;;-1:-1:-1;;;;;17925:28:0;;;20713:27;;;;;;;;;;-1:-1:-1;20713:27:0;;;;-1:-1:-1;;;20713:27:0;;;;;;31998:125;;;;;;;;;;-1:-1:-1;31998:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;32083:31:0;32058:4;32083:31;;;:22;:31;;;;;;;;;31998:125;30496:184;;;;;;;;;;-1:-1:-1;30496:184:0;;;;;:::i;:::-;;:::i;35323:298::-;;;;;;;;;;-1:-1:-1;35323:298:0;;;;;:::i;:::-;;:::i;31864:125::-;;;;;;;;;;-1:-1:-1;31864:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;31949:31:0;31924:4;31949:31;;;:22;:31;;;;;;;;;31864:125;18973:43;;;;;;;;;;-1:-1:-1;18973:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;37099:129;;;;;;;;;;-1:-1:-1;37099:129:0;;;;;:::i;:::-;;:::i;32319:499::-;;;;;;;;;;-1:-1:-1;32319:499:0;;;;;:::i;:::-;;:::i;32826:270::-;;;;;;;;;;-1:-1:-1;32826:270:0;;;;;:::i;:::-;;:::i;19345:29::-;;;;;;;;;;;;;;;;18505:36;;;;;;;;;;-1:-1:-1;18505:36:0;;;;;;;;;;;18352:35;;;;;;;;;;-1:-1:-1;18352:35:0;;;;;;;;12436:177;;;;;;;;;;-1:-1:-1;12436:177:0;;;;;:::i;:::-;;:::i;11253:103::-;;;;;;;;;;;;;:::i;18394:27::-;;;;;;;;;;-1:-1:-1;18394:27:0;;;;;;;;;;;29857:240;;;;;;;;;;-1:-1:-1;29857:240:0;;;;;:::i;:::-;;:::i;18086:55::-;;;;;;;;;;-1:-1:-1;18086:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;36676:194;;;;;;;;;;-1:-1:-1;36676:194:0;;;;;:::i;:::-;;:::i;36032:213::-;;;;;;;;;;-1:-1:-1;36032:213:0;;;;;:::i;:::-;;:::i;33104:290::-;;;;;;;;;;-1:-1:-1;33104:290:0;;;;;:::i;:::-;;:::i;30881:369::-;;;;;;;;;;-1:-1:-1;30881:369:0;;;;;:::i;:::-;;:::i;19305:33::-;;;;;;;;;;;;;;;;18548:36;;;;;;;;;;-1:-1:-1;18548:36:0;;;;;;;;;;;17587:53;;;;;;;;;;;;;;;;11018:87;;;;;;;;;;-1:-1:-1;11091:6:0;;-1:-1:-1;;;;;11091:6:0;11018:87;;37902:119;;;;;;;;;;-1:-1:-1;37902:119:0;;;;;:::i;:::-;;:::i;17711:72::-;;;;;;;;;;-1:-1:-1;17711:72:0;;;;-1:-1:-1;;;;;17711:72:0;;;12212:106;;;;;;;;;;;;;:::i;19811:58::-;;;;;;;;;;-1:-1:-1;19811:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;33823:289;;;;;;;;;;-1:-1:-1;33823:289:0;;;;;:::i;:::-;;:::i;33402:106::-;;;;;;;;;;-1:-1:-1;33402:106:0;;;;;:::i;:::-;;:::i;13849:507::-;;;;;;;;;;-1:-1:-1;13849:507:0;;;;;:::i;:::-;;:::i;34447:299::-;;;;;;;;;;-1:-1:-1;34447:299:0;;;;;:::i;:::-;;:::i;13048:236::-;;;;;;;;;;-1:-1:-1;13048:236:0;;;;;:::i;:::-;;:::i;17647:57::-;;;;;;;;;;;;;;;;19024:39;;;;;;;;;;-1:-1:-1;19024:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17474:28;;;;;;;;;;;;;;;;36253:194;;;;;;;;;;-1:-1:-1;36253:194:0;;;;;:::i;:::-;;:::i;17962:55::-;;;;;;;;;;-1:-1:-1;17962:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19876:57;;;;;;;;;;-1:-1:-1;19876:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;31356:367;;;;;;;;;;-1:-1:-1;31356:367:0;;;;;:::i;:::-;;:::i;37405:110::-;;;;;;;;;;-1:-1:-1;37405:110:0;;;;;:::i;:::-;;:::i;32132:179::-;;;;;;;;;;-1:-1:-1;32132:179:0;;;;;:::i;:::-;;:::i;18591:33::-;;;;;;;;;;-1:-1:-1;18591:33:0;;;;-1:-1:-1;;;18591:33:0;;;;;;36878:213;;;;;;;;;;-1:-1:-1;36878:213:0;;;;;:::i;:::-;;:::i;29667:182::-;;;;;;;;;;-1:-1:-1;29667:182:0;;;;;:::i;:::-;;:::i;30688:185::-;;;;;;;;;;-1:-1:-1;30688:185:0;;;;;:::i;:::-;;:::i;36455:213::-;;;;;;;;;;-1:-1:-1;36455:213:0;;;;;:::i;:::-;;:::i;30105:225::-;;;;;;;;;;-1:-1:-1;30105:225:0;;;;;:::i;:::-;;:::i;17509:33::-;;;;;;;;;;;;;;;;12839:201;;;;;;;;;;-1:-1:-1;12839:201:0;;;;;:::i;:::-;;:::i;37236:161::-;;;;;;;;;;-1:-1:-1;37236:161:0;;;;;:::i;:::-;;:::i;35629:193::-;;;;;;;;;;;;;:::i;37523:371::-;;;;;;;;;;-1:-1:-1;37523:371:0;;;;;:::i;:::-;;:::i;18631:37::-;;;;;;;;;;;;;;;;11364:238;;;;;;;;;;-1:-1:-1;11364:238:0;;;;;:::i;:::-;;:::i;19071:35::-;;;;;;;;;;-1:-1:-1;19071:35:0;;;;;;;;12326:102;12382:13;12415:5;12408:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12326:102;:::o;13292:244::-;13413:4;10655:10;13474:32;10655:10;13490:7;13499:6;13474:8;:32::i;:::-;13524:4;13517:11;;;13292:244;;;;;:::o;34120:319::-;34198:12;;-1:-1:-1;;;;;34198:12:0;34184:10;:26;34176:35;;;;;;-1:-1:-1;;;;;34230:19:0;;;;;;:10;:19;;;;;;;;34222:28;;;;;;34280:13;;-1:-1:-1;;;;;34280:13:0;;;34269:24;;;;34261:59;;;;-1:-1:-1;;;34261:59:0;;6763:2:1;34261:59:0;;;6745:21:1;6802:2;6782:18;;;6775:30;-1:-1:-1;;;6821:18:1;;;6814:52;6883:18;;34261:59:0;;;;;;;;;34331:14;34348:18;34358:7;34348:9;:18::i;:::-;34396:12;;34331:35;;-1:-1:-1;34377:40:0;;34387:7;;-1:-1:-1;;;;;34396:12:0;34331:35;34377:9;:40::i;:::-;34165:274;34120:319;:::o;35089:226::-;35195:12;;35154:4;;-1:-1:-1;;;;;35195:12:0;10655:10;-1:-1:-1;;;;;35179:28:0;;35171:37;;;;;;35219:8;:16;;-1:-1:-1;;35219:16:0;;;;;;;;;35274:9;;35270:13;;35219:16;35274:9;35270:2;:13;:::i;:::-;35257:26;;:10;:26;:::i;:::-;35246:8;:37;-1:-1:-1;35303:4:0;35089:226;;;;:::o;31258:90::-;10977:13;:11;:13::i;:::-;31324:8:::1;:16:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;31324:16:0;;::::1;::::0;;;::::1;::::0;;31258:90::o;30338:150::-;10977:13;:11;:13::i;:::-;30406::::1;::::0;-1:-1:-1;;;30406:13:0;::::1;;;30405:14;30397:23;;;::::0;::::1;;30431:16;:22:::0;;-1:-1:-1;;30465:15:0;30431:22;;::::1;;::::0;;;::::1;-1:-1:-1::0;;30465:15:0;;;;;;;30338:150::o;13544:297::-;13677:4;10655:10;13735:38;13751:4;10655:10;13766:6;13735:15;:38::i;:::-;13784:27;13794:4;13800:2;13804:6;13784:9;:27::i;:::-;-1:-1:-1;13829:4:0;;13544:297;-1:-1:-1;;;;13544:297:0:o;34754:327::-;34830:12;;-1:-1:-1;;;;;34830:12:0;10655:10;-1:-1:-1;;;;;34814:28:0;;34806:37;;;;;;34873:3;34862:7;:14;;:30;;;;-1:-1:-1;34880:12:0;34862:30;34854:39;;;;;;34904:28;34935:24;34953:4;34935:9;:24::i;:::-;34904:55;-1:-1:-1;34970:20:0;35028:3;34993:32;35017:7;34904:55;34993:32;:::i;:::-;:38;;;;:::i;:::-;34970:61;;35042:31;35060:12;35042:17;:31::i;:::-;34795:286;;34754:327;:::o;14364:272::-;14481:4;10655:10;14542:64;10655:10;14558:7;14595:10;14567:25;10655:10;14558:7;14567:9;:25::i;:::-;:38;;;;:::i;:::-;14542:8;:64::i;35830:194::-;10977:13;:11;:13::i;:::-;35918:9:::1;35913:104;35937:3;:10;35933:1;:14;35913:104;;;36002:4;35969:22;:30;35992:3;35996:1;35992:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;35969:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;35969:30:0;:37;;-1:-1:-1;;35969:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35949:3;::::1;::::0;::::1;:::i;:::-;;;;35913:104;;30496:184:::0;10977:13;:11;:13::i;:::-;30563::::1;::::0;-1:-1:-1;;;30563:13:0;::::1;;;30562:14;30554:23;;;::::0;::::1;;30588:16;:22:::0;;-1:-1:-1;;30657:15:0;30588:22;;::::1;;::::0;;;::::1;-1:-1:-1::0;;30657:15:0;;;;;;;30496:184::o;35323:298::-;35401:12;;-1:-1:-1;;;;;35401:12:0;10655:10;-1:-1:-1;;;;;35385:28:0;;35377:37;;;;;;-1:-1:-1;;;;;35433:19:0;;35425:44;;;;-1:-1:-1;;;35425:44:0;;9426:2:1;35425:44:0;;;9408:21:1;9465:2;9445:18;;;9438:30;-1:-1:-1;;;9484:18:1;;;9477:42;9536:18;;35425:44:0;9224:336:1;35425:44:0;35524:38;;-1:-1:-1;;;35524:38:0;;35556:4;35524:38;;;2461:51:1;35480:6:0;;-1:-1:-1;;;;;35489:22:0;;;;;35512:10;;35489:22;;35524:23;;2434:18:1;;35524:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35489:74;;-1:-1:-1;;;;;;35489:74:0;;;;;;;-1:-1:-1;;;;;9946:32:1;;;35489:74:0;;;9928:51:1;9995:18;;;9988:34;9901:18;;35489:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35480:83;;35582:1;35574:39;;;;-1:-1:-1;;;35574:39:0;;10485:2:1;35574:39:0;;;10467:21:1;10524:2;10504:18;;;10497:30;10563:27;10543:18;;;10536:55;10608:18;;35574:39:0;10283:349:1;37099:129:0;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;37162:14:0;::::1;37179:5;37162:14:::0;;;:6:::1;:14;::::0;;;;;:22;;-1:-1:-1;;37162:22:0::1;::::0;;37202:18;::::1;::::0;37179:5;37202:18:::1;37099:129:::0;:::o;32319:499::-;32531:4;10977:13;:11;:13::i;:::-;32553:11:::1;:26:::0;;;32590:9:::1;:22:::0;;;32623:14:::1;:32:::0;;;32666:12:::1;:28:::0;;;32783:2:::1;32681:13:::0;32640:15;32714:23:::1;32602:10:::0;32567:12;32714:23:::1;:::i;:::-;:49;;;;:::i;:::-;:64;;;;:::i;:::-;32713:72;;32705:81;;;::::0;::::1;32826:270:::0;32928:4;10977:13;:11;:13::i;:::-;32982:3:::1;32968:7;;32978:1;32968:11;;;;:::i;:::-;:17;;;;:::i;:::-;32951:12;:35;;32943:68;;;::::0;-1:-1:-1;;;32943:68:0;;10839:2:1;32943:68:0::1;::::0;::::1;10821:21:1::0;10878:2;10858:18;;;10851:30;-1:-1:-1;;;10897:18:1;;;10890:50;10957:18;;32943:68:0::1;10637:344:1::0;32943:68:0::1;33055:9;::::0;33051:13:::1;::::0;33055:9:::1;;33051:2;:13;:::i;:::-;33036:28;::::0;:12;:28:::1;:::i;:::-;33022:11;:42:::0;-1:-1:-1;33084:4:0::1;11001:1;32826:270:::0;;;:::o;12436:177::-;-1:-1:-1;;;;;12587:18:0;12555:7;12587:18;;;;;;;;;;;;12436:177::o;11253:103::-;10977:13;:11;:13::i;:::-;11318:30:::1;11345:1;11318:18;:30::i;:::-;11253:103::o:0;29857:240::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;29975:40:0;::::1;;::::0;;;:31:::1;:40;::::0;;;;;;;;:51;;-1:-1:-1;;29975:51:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30042:47;;154:41:1;;;30042:47:0::1;::::0;127:18:1;30042:47:0::1;;;;;;;;29857:240:::0;;:::o;36676:194::-;10977:13;:11;:13::i;:::-;36764:9:::1;36759:104;36783:3;:10;36779:1;:14;36759:104;;;36848:4;36815:22;:30;36838:3;36842:1;36838:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;36815:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;36815:30:0;:37;;-1:-1:-1;;36815:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36795:3;::::1;::::0;::::1;:::i;:::-;;;;36759:104;;36032:213:::0;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;36120:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;36112:40;;;::::0;::::1;;-1:-1:-1::0;;;;;36163:31:0;::::1;36197:5;36163:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;36163:39:0::1;::::0;;36218:19;::::1;::::0;36197:5;36218:19:::1;36032:213:::0;:::o;33104:290::-;33214:4;10977:13;:11;:13::i;:::-;33272:3:::1;33258:7;;33268:1;33258:11;;;;:::i;:::-;:17;;;;:::i;:::-;33237:16;:39;;33229:72;;;::::0;-1:-1:-1;;;33229:72:0;;10839:2:1;33229:72:0::1;::::0;::::1;10821:21:1::0;10878:2;10858:18;;;10851:30;-1:-1:-1;;;10897:18:1;;;10890:50;10957:18;;33229:72:0::1;10637:344:1::0;33229:72:0::1;33353:9;::::0;33349:13:::1;::::0;33353:9:::1;;33349:2;:13;:::i;:::-;33330:32;::::0;:16;:32:::1;:::i;:::-;33312:15;:50:::0;-1:-1:-1;33382:4:0::1;33104:290:::0;;;:::o;30881:369::-;10977:13;:11;:13::i;:::-;30953::::1;:20:::0;;31005:12:::1;30984:18;:33:::0;31028:13:::1;:30:::0;;;;31200:8:::1;:16:::0;;-1:-1:-1;;31200:16:0::1;::::0;;-1:-1:-1;;31227:15:0;;;;;;;30881:369::o;37902:119::-;10977:13;:11;:13::i;:::-;37964:7:::1;:15:::0;;-1:-1:-1;;;;37964:15:0::1;-1:-1:-1::0;;;37964:15:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;37995:18:::1;::::0;::::1;::::0;-1:-1:-1;;37995:18:0::1;37902:119:::0;:::o;12212:106::-;12270:13;12303:7;12296:14;;;;;:::i;33823:289::-;33926:12;;-1:-1:-1;;;;;33926:12:0;33912:10;:26;33904:35;;;;;;33966:13;;-1:-1:-1;;;;;33966:13:0;;;33958:21;;;;33950:100;;;;-1:-1:-1;;;33950:100:0;;11188:2:1;33950:100:0;;;11170:21:1;11227:2;11207:18;;;11200:30;11266:34;11246:18;;;11239:62;11337:27;11317:18;;;11310:55;11382:19;;33950:100:0;10986:421:1;33950:100:0;34063:41;34092:4;34098:5;34063:28;:41::i;33402:106::-;10977:13;:11;:13::i;:::-;33474:16:::1;:26:::0;;-1:-1:-1;;33474:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33402:106::o;13849:507::-;13971:4;10655:10;13971:4;14059:25;10655:10;14076:7;14059:9;:25::i;:::-;14032:52;;14137:15;14117:16;:35;;14095:122;;;;-1:-1:-1;;;14095:122:0;;11614:2:1;14095:122:0;;;11596:21:1;11653:2;11633:18;;;11626:30;11692:34;11672:18;;;11665:62;-1:-1:-1;;;11743:18:1;;;11736:35;11788:19;;14095:122:0;11412:401:1;14095:122:0;14253:60;14262:5;14269:7;14297:15;14278:16;:34;14253:8;:60::i;34447:299::-;34521:12;;-1:-1:-1;;;;;34521:12:0;34507:10;:26;34499:35;;;;;;-1:-1:-1;;;;;34553:15:0;;;;;;:6;:15;;;;;;;;34545:24;;;;;13048:236;13165:4;10655:10;13226:28;10655:10;13243:2;13247:6;13226:9;:28::i;36253:194::-;10977:13;:11;:13::i;:::-;36341:9:::1;36336:104;36360:3;:10;36356:1;:14;36336:104;;;36425:4;36392:22;:30;36415:3;36419:1;36415:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;36392:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;36392:30:0;:37;;-1:-1:-1;;36392:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36372:3;::::1;::::0;::::1;:::i;:::-;;;;36336:104;;31356:367:::0;31416:4;31464:1;31455:6;:10;31433:71;;;;-1:-1:-1;;;31433:71:0;;12020:2:1;31433:71:0;;;12002:21:1;12059:2;12039:18;;;12032:30;-1:-1:-1;;;12078:18:1;;;12071:41;12129:18;;31433:71:0;11818:335:1;31433:71:0;31516:22;31541:6;31516:31;;31576:14;31558;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;10655:10:0;;-1:-1:-1;31641:52:0;10655:10;31671:4;31678:14;31641:15;:52::i;:::-;-1:-1:-1;31711:4:0;;31356:367;-1:-1:-1;;;31356:367:0:o;37405:110::-;10977:13;:11;:13::i;:::-;37477:16:::1;:30:::0;;;::::1;;-1:-1:-1::0;;;37477:30:0::1;-1:-1:-1::0;;;;37477:30:0;;::::1;::::0;;;::::1;::::0;;37405:110::o;32132:179::-;32235:4;10977:13;:11;:13::i;:::-;-1:-1:-1;32257:12:0::1;:24:::0;;-1:-1:-1;;;;;32257:24:0;::::1;-1:-1:-1::0;;;;;;32257:24:0;;::::1;;::::0;;;32132:179;;;:::o;36878:213::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;36966:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;36958:40;;;::::0;::::1;;-1:-1:-1::0;;;;;37009:31:0;::::1;37043:5;37009:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;37009:39:0::1;::::0;;37064:19;::::1;::::0;37043:5;37064:19:::1;36878:213:::0;:::o;29667:182::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;29752:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;29752:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;29807:34;;154:41:1;;;29807:34:0::1;::::0;127:18:1;29807:34:0::1;14:187:1::0;30688:185:0;10977:13;:11;:13::i;:::-;30757::::1;::::0;-1:-1:-1;;;30757:13:0;::::1;;;30756:14;30748:23;;;::::0;::::1;;30782:16;:22:::0;;-1:-1:-1;;30850:15:0;30782:22;;::::1;;::::0;;;::::1;-1:-1:-1::0;;30850:15:0;;;;;;;30688:185::o;36455:213::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;36543:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;36535:40;;;::::0;::::1;;-1:-1:-1::0;;;;;36586:31:0;::::1;36620:5;36586:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;36586:39:0::1;::::0;;36641:19;::::1;::::0;36620:5;36641:19:::1;36455:213:::0;:::o;30105:225::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;30218:35:0;::::1;;::::0;;;:26:::1;:35;::::0;;;;;;;;:46;;-1:-1:-1;;30218:46:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30280:42;;154:41:1;;;30280:42:0::1;::::0;127:18:1;30280:42:0::1;14:187:1::0;12839:201:0;-1:-1:-1;;;;;13005:18:0;;;12973:7;13005:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12839:201::o;37236:161::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;37307:22:0;::::1;37332:5;37307:22:::0;;;:10:::1;:22;::::0;;;;;:30;;-1:-1:-1;;37307:30:0::1;::::0;;37363:26;::::1;::::0;37332:5;37363:26:::1;37236:161:::0;:::o;35629:193::-;35697:12;;-1:-1:-1;;;;;35697:12:0;10655:10;-1:-1:-1;;;;;35681:28:0;;35673:37;;;;;;35741:12;;35733:60;;35722:6;;-1:-1:-1;;;;;35741:12:0;;35767:21;;35722:6;35733:60;35722:6;35733:60;35767:21;35741:12;35733:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35721:72;;;35812:1;35804:10;;;;;;35662:160;35629:193::o;37523:371::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;37605:23:0;::::1;37597:48;;;::::0;-1:-1:-1;;;37597:48:0;;9426:2:1;37597:48:0::1;::::0;::::1;9408:21:1::0;9465:2;9445:18;;;9438:30;-1:-1:-1;;;9484:18:1;;;9477:42;9536:18;;37597:48:0::1;9224:336:1::0;37597:48:0::1;37656:12;:24:::0;;-1:-1:-1;;;;;;37656:24:0::1;-1:-1:-1::0;;;;;37656:24:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;37691:30:0;;;:19:::1;:30;::::0;;;;;;;:38;;-1:-1:-1;;37691:38:0;;::::1;-1:-1:-1::0;37691:38:0;;::::1;::::0;;;37740:31:::1;:42:::0;;;;;:49;;;::::1;::::0;::::1;::::0;;37800:26:::1;:37:::0;;;;;;:44;;;;::::1;;::::0;;;37860:26;;2461:51:1;;;37860:26:0::1;::::0;2434:18:1;37860:26:0::1;;;;;;;37523:371:::0;:::o;11364:238::-;10977:13;:11;:13::i;:::-;-1:-1:-1;;;;;11467:22:0;::::1;11445:110;;;::::0;-1:-1:-1;;;11445:110:0;;12570:2:1;11445:110:0::1;::::0;::::1;12552:21:1::0;12609:2;12589:18;;;12582:30;12648:34;12628:18;;;12621:62;-1:-1:-1;;;12699:18:1;;;12692:36;12745:19;;11445:110:0::1;12368:402:1::0;11445:110:0::1;11566:28;11585:8;11566:18;:28::i;15639:380::-:0;-1:-1:-1;;;;;15775:19:0;;15767:68;;;;-1:-1:-1;;;15767:68:0;;12977:2:1;15767:68:0;;;12959:21:1;13016:2;12996:18;;;12989:30;13055:34;13035:18;;;13028:62;-1:-1:-1;;;13106:18:1;;;13099:34;13150:19;;15767:68:0;12775:400:1;15767:68:0;-1:-1:-1;;;;;15854:21:0;;15846:68;;;;-1:-1:-1;;;15846:68:0;;13382:2:1;15846:68:0;;;13364:21:1;13421:2;13401:18;;;13394:30;13460:34;13440:18;;;13433:62;-1:-1:-1;;;13511:18:1;;;13504:32;13553:19;;15846:68:0;13180:398:1;15846:68:0;-1:-1:-1;;;;;15927:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15979:32;;2669:25:1;;;15979:32:0;;2642:18:1;15979:32:0;;;;;;;15639:380;;;:::o;22141:6118::-;-1:-1:-1;;;;;22239:18:0;;22231:68;;;;-1:-1:-1;;;22231:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22318:16:0;;22310:64;;;;-1:-1:-1;;;22310:64:0;;;;;;;:::i;:::-;22412:6;22393:15;22403:4;22393:9;:15::i;:::-;:25;;22385:76;;;;-1:-1:-1;;;22385:76:0;;;;;;;:::i;:::-;22477:7;;;;;;;22474:117;;;-1:-1:-1;;;;;22509:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22538:23:0;;;;;;:19;:23;;;;;;;;22509:52;22501:78;;;;-1:-1:-1;;;22501:78:0;;15002:2:1;22501:78:0;;;14984:21:1;15041:2;15021:18;;;15014:30;-1:-1:-1;;;15060:18:1;;;15053:43;15113:18;;22501:78:0;14800:337:1;22501:78:0;22607:16;;;;;;;22603:454;;;-1:-1:-1;;;;;22648:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;22680:26:0;;;;;;:22;:26;;;;;;;;22648:58;:101;;;-1:-1:-1;;;;;;22724:25:0;;;;;;:19;:25;;;;;;;;22648:101;:128;;;-1:-1:-1;;;;;;22753:23:0;;;;;;:19;:23;;;;;;;;22648:128;22640:156;;;;-1:-1:-1;;;22640:156:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22815:30:0;;;;;;:26;:30;;;;;;;;22811:140;;22896:15;;22886:6;22870:13;22880:2;22870:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;22862:73;;;;-1:-1:-1;;;22862:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22970:28:0;;;;;;:22;:28;;;;;;;;22966:80;;;23002:27;;-1:-1:-1;;;23002:27:0;;;;;;;:::i;22966:80::-;23073:16;;;;;;;23069:460;;;-1:-1:-1;;;;;23114:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;23146:26:0;;;;;;:22;:26;;;;;;;;23114:58;:101;;;-1:-1:-1;;;;;;23190:25:0;;;;;;:19;:25;;;;;;;;23114:101;:128;;;-1:-1:-1;;;;;;23219:23:0;;;;;;:19;:23;;;;;;;;23114:128;23106:156;;;;-1:-1:-1;;;23106:156:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23281:30:0;;;;;;:26;:30;;;;;;;;23277:146;;23381:1;23363:15;;:19;;;;:::i;:::-;23352:6;23336:13;23346:2;23336:9;:13::i;:::-;:22;;;;:::i;:::-;:47;;23328:79;;;;-1:-1:-1;;;23328:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23442:28:0;;;;;;:22;:28;;;;;;;;23438:80;;;23474:27;;-1:-1:-1;;;23474:27:0;;;;;;;:::i;23438:80::-;23545:16;;;;;;;23541:460;;;-1:-1:-1;;;;;23586:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;23618:26:0;;;;;;:22;:26;;;;;;;;23586:58;:101;;;-1:-1:-1;;;;;;23662:25:0;;;;;;:19;:25;;;;;;;;23586:101;:128;;;-1:-1:-1;;;;;;23691:23:0;;;;;;:19;:23;;;;;;;;23586:128;23578:156;;;;-1:-1:-1;;;23578:156:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23753:30:0;;;;;;:26;:30;;;;;;;;23749:146;;23853:1;23835:15;;:19;;;;:::i;:::-;23824:6;23808:13;23818:2;23808:9;:13::i;:::-;:22;;;;:::i;:::-;:47;;23800:79;;;;-1:-1:-1;;;23800:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23914:28:0;;;;;;:22;:28;;;;;;;;23910:80;;;23946:27;;-1:-1:-1;;;23946:27:0;;;;;;;:::i;23910:80::-;24028:8;;;;;;;24025:138;;;-1:-1:-1;;;;;24061:15:0;;;;;;:9;:15;;;;;;24080:12;24061:31;;24053:55;;;;-1:-1:-1;;;24053:55:0;;16382:2:1;24053:55:0;;;16364:21:1;16421:2;16401:18;;;16394:30;-1:-1:-1;;;16440:18:1;;;16433:41;16491:18;;24053:55:0;16180:335:1;24053:55:0;-1:-1:-1;;;;;24123:13:0;;;;;;:9;:13;;;;;24139:12;24123:28;;24025:138;24178:15;;;;;;;24175:1025;;;-1:-1:-1;;;;;24272:16:0;;;;;;:10;:16;;;;;;;;:38;;;;-1:-1:-1;24298:12:0;;-1:-1:-1;;;;;24292:18:0;;;24298:12;;24292:18;;24272:38;24269:105;;;24332:25;;-1:-1:-1;;;24332:25:0;;16722:2:1;24332:25:0;;;16704:21:1;16761:2;16741:18;;;16734:30;-1:-1:-1;;;16780:18:1;;;16773:45;16835:18;;24332:25:0;16520:339:1;24269:105:0;24437:13;;24416:18;;24401:33;;:12;:33;:::i;:::-;:49;24398:187;;;-1:-1:-1;;;;;24471:14:0;;;;;;:10;:14;;;;;:21;;-1:-1:-1;;24471:21:0;24488:4;24471:21;;;24511:14;:17;;;;;;:::i;:::-;;;;-1:-1:-1;;24552:17:0;;-1:-1:-1;;;;;24552:17:0;;;;;;;;24398:187;24604:15;;;;24601:588;;;-1:-1:-1;;;;;24643:31:0;;;;;;:25;:31;;;;;;;;24640:105;;;-1:-1:-1;;;;;24698:12:0;;;;;;:8;:12;;;;;24713;24698:27;;24640:105;-1:-1:-1;;;;;24766:29:0;;;;;;:25;:29;;;;;;;;24763:105;;;-1:-1:-1;;;;;24819:14:0;;;;;;:8;:14;;;;;24836:12;24819:29;;24763:105;-1:-1:-1;;;;;24899:12:0;;;;;;:6;:12;;;;;;;;:34;;;;-1:-1:-1;24921:12:0;;-1:-1:-1;;;;;24915:18:0;;;24921:12;;24915:18;;24899:34;24896:102;;;24955:22;;-1:-1:-1;;;24955:22:0;;17199:2:1;24955:22:0;;;17181:21:1;17238:2;17218:18;;;17211:30;-1:-1:-1;;;17257:18:1;;;17250:42;17309:18;;24955:22:0;16997:336:1;24896:102:0;-1:-1:-1;;;;;25033:14:0;;;;;;;:8;:14;;;;;;;;25017:12;;;;;:8;:12;;;;;;:30;25014:160;;-1:-1:-1;;;;;25068:10:0;;;;;;:6;:10;;;;;:17;;-1:-1:-1;;25068:17:0;25081:4;25068:17;;;25104:10;:13;;;;;;:::i;:::-;;;;-1:-1:-1;;25141:13:0;;-1:-1:-1;;;;;25141:13:0;;;;;;;;25014:160;-1:-1:-1;;;;;25228:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;25263:29:0;;;;;;:25;:29;;;;;;;;25228:64;25227:87;;;;-1:-1:-1;25298:16:0;;;;25297:17;25227:87;25223:702;;;-1:-1:-1;;;;;25336:31:0;;;;;;:25;:31;;;;;;;;25331:583;;25423:18;;25492:14;;25464:42;;25460:122;;25531:31;25547:14;;25531:15;:31::i;:::-;25624:8;;25605:14;;25604:28;;:40;;;;-1:-1:-1;25636:8:0;;;;;;;25604:40;25600:299;;;25669:27;25687:8;;25669:17;:27::i;:::-;25737:8;;25719:14;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;25791:12:0;;25783:60;;25769:9;;-1:-1:-1;;;;;25791:12:0;;25817:21;;25769:9;25783:60;25769:9;25783:60;25817:21;25791:12;25783:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25768:75;;;25874:4;25866:13;;;;;;25646:253;25600:299;25369:545;25331:583;-1:-1:-1;;;;;25940:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;25976:35:0;;;;;;:31;:35;;;;;;;;25975:36;25940:71;25937:515;;;26046:11;;26036:6;:21;;26028:30;;;;;;26077:15;;;;;;;26073:368;;;26125:13;;-1:-1:-1;;;;;26125:13:0;;;26117:21;;;;26113:313;;-1:-1:-1;;;;;26170:13:0;;;;;;:9;:13;;;;;;26187:12;26170:29;;26162:38;;;;;;-1:-1:-1;;;;;26223:13:0;;;;;;:9;:13;;;;;26239:12;26223:28;;26113:313;;;-1:-1:-1;;;;;26313:15:0;;;;;;:9;:15;;;;;;26332:12;26313:31;;26305:40;;;;;;-1:-1:-1;;;;;26372:15:0;;;;;;:9;:15;;;;;26390:12;26372:30;;26113:313;-1:-1:-1;;;;;26469:30:0;;;;;;:26;:30;;;;;;;;26464:137;;26550:15;;26540:6;26524:13;26534:2;26524:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;26516:73;;;;-1:-1:-1;;;26516:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26702:25:0;;26613:12;26702:25;;;:19;:25;;;;;;26628:4;;26613:12;;;26702:25;;;:52;;-1:-1:-1;;;;;;26731:23:0;;;;;;:19;:23;;;;;;;;26702:52;26699:99;;;26781:5;26771:15;;26699:99;26815:7;26811:1387;;;-1:-1:-1;;;;;26842:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;26890:1;26875:12;;:16;26842:49;26839:548;;;26943:3;26928:12;;26919:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;26912:34;;27000:3;26983:14;;26974:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;26965:38;;27040:4;27022:14;;:22;;;;;;;:::i;:::-;;;;;;;;27085:6;27063:18;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;26839:548:0;;-1:-1:-1;26839:548:0;;-1:-1:-1;;;;;27129:31:0;;;;;;:25;:31;;;;;;;;:48;;;;;27176:1;27164:9;;:13;27129:48;27126:261;;;27226:3;27214:9;;27205:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;27198:31;;27280:3;27266:11;;27257:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;27248:35;;27320:4;27302:14;;:22;;;;;;;:::i;:::-;;;;;;;;27365:6;27343:18;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;27126:261:0;27407:16;;;;:49;;;;-1:-1:-1;;;;;;27427:29:0;;;;;;:25;:29;;;;;;;;27407:49;:81;;;;-1:-1:-1;;;;;;27460:28:0;;;;;;:22;:28;;;;;;;;27407:81;27403:347;;;27530:3;27516:11;:6;27525:2;27516:11;:::i;:::-;:17;;;;:::i;:::-;27509:24;;27570:4;27552:14;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;27403:347:0;;-1:-1:-1;27403:347:0;;27600:16;;;;:48;;;;-1:-1:-1;;;;;;27620:28:0;;;;;;:22;:28;;;;;;;;27600:48;27596:154;;;27690:3;27676:11;:6;27685:2;27676:11;:::i;:::-;:17;;;;:::i;:::-;27669:24;;27730:4;27712:14;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;27596:154:0;27776:1;27769:4;:8;:20;;;;-1:-1:-1;27782:7:0;;-1:-1:-1;;;27782:7:0;;;;27781:8;27769:20;27766:109;;;27806:53;27822:4;27836;27844:13;27851:6;27844:4;:13;:::i;:::-;27806:15;:53::i;:::-;27901:1;27894:4;:8;:19;;;;-1:-1:-1;27906:7:0;;-1:-1:-1;;;27906:7:0;;;;27894:19;27891:256;;;27952:12;;27930:52;;27946:4;;-1:-1:-1;;;;;27952:12:0;27967:13;27974:6;27967:4;:13;:::i;27930:52::-;28007:12;;-1:-1:-1;;;;;28007:12:0;28031:4;28007:29;;;;:49;;-1:-1:-1;28040:16:0;;-1:-1:-1;;;28040:16:0;;;;28007:49;28003:129;;;28091:12;;;;;;;;;-1:-1:-1;;;;;28091:12:0;-1:-1:-1;;;;;28081:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28003:129;28172:13;28179:6;28172:4;:13;:::i;:::-;28161:25;;;;:::i;:::-;;;26811:1387;28218:33;28234:4;28240:2;28244:6;28218:15;:33::i;:::-;22220:6039;;;22141:6118;;;:::o;11113:132::-;11091:6;;-1:-1:-1;;;;;11091:6:0;10655:10;11177:23;11169:68;;;;-1:-1:-1;;;11169:68:0;;17540:2:1;11169:68:0;;;17522:21:1;;;17559:18;;;17552:30;17618:34;17598:18;;;17591:62;17670:18;;11169:68:0;17338:356:1;16027:502:0;16162:24;16189:25;16199:5;16206:7;16189:9;:25::i;:::-;16162:52;;-1:-1:-1;;16229:16:0;:37;16225:297;;16329:6;16309:16;:26;;16283:117;;;;-1:-1:-1;;;16283:117:0;;17901:2:1;16283:117:0;;;17883:21:1;17940:2;17920:18;;;17913:30;17979:31;17959:18;;;17952:59;18028:18;;16283:117:0;17699:353:1;16283:117:0;16444:51;16453:5;16460:7;16488:6;16469:16;:25;16444:8;:51::i;:::-;16151:378;16027:502;;;:::o;28757:496::-;19554:16;:23;;-1:-1:-1;;19554:23:0;19573:4;19554:23;;;28860:16:::1;::::0;;28874:1:::1;28860:16:::0;;;;;::::1;::::0;;-1:-1:-1;;28860:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;28860:16:0::1;28836:40;;28905:4;28887;28892:1;28887:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28887:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;28931:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;28931:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;28887:7;;28931:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28921:4;28926:1;28921:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28921:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;28998:15:::1;::::0;28966:62:::1;::::0;28983:4:::1;::::0;28998:15:::1;29016:11:::0;28966:8:::1;:62::i;:::-;29041:15;::::0;-1:-1:-1;;;;;29041:15:0::1;:66;29122:11:::0;29041:15:::1;29164:4:::0;29191::::1;29212:21;:15;29230:3;29212:21;:::i;:::-;29041:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;19600:16:0;:24;;-1:-1:-1;;19600:24:0;;;-1:-1:-1;;;;28757:496:0:o;11610:191::-;11703:6;;;-1:-1:-1;;;;;11720:17:0;;;-1:-1:-1;;;;;;11720:17:0;;;;;;;11753:40;;11703:6;;;11720:17;11703:6;;11753:40;;11684:16;;11753:40;11673:128;11610:191;:::o;33516:299::-;-1:-1:-1;;;;;33599:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;33599:39:0;;;;;;;33649:47;33599:31;:39;33649:25;:47::i;:::-;33707:42;33736:4;33743:5;33707:20;:42::i;:::-;33767:40;;;;;;-1:-1:-1;;;;;33767:40:0;;;;;;;;33516:299;;:::o;16537:611::-;-1:-1:-1;;;;;16668:18:0;;16660:68;;;;-1:-1:-1;;;16660:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16747:16:0;;16739:64;;;;-1:-1:-1;;;16739:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16838:15:0;;16816:19;16838:15;;;;;;;;;;;16886:21;;;;16864:109;;;;-1:-1:-1;;;16864:109:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17009:15:0;;;:9;:15;;;;;;;;;;;17027:20;;;17009:38;;17062:13;;;;;;;;;;:23;;;;;;17114:26;;2669:25:1;;;17062:13:0;;17114:26;;2642:18:1;17114:26:0;;;;;;;16649:499;16537:611;;;:::o;28275:474::-;19554:16;:23;;-1:-1:-1;;19554:23:0;19573:4;19554:23;;;:16;28377:24:::1;28400:1;28377:20:::0;:24:::1;:::i;:::-;28361:41:::0;-1:-1:-1;28413:17:0::1;28434:27;28361:41:::0;28434:20;:27:::1;:::i;:::-;28413:49:::0;-1:-1:-1;28500:21:0::1;28534:23;28552:4:::0;28534:17:::1;:23::i;:::-;28570:18;28592:38;28616:14:::0;28592:21:::1;:38;:::i;:::-;28570:61;;28644:36;28658:9;28669:10;28644:13;:36::i;:::-;28698:43;::::0;;19500:25:1;;;19556:2;19541:18;;19534:34;;;19584:18;;;19577:34;;;28698:43:0::1;::::0;19488:2:1;19473:18;28698:43:0::1;;;;;;;-1:-1:-1::0;;19600:16:0;:24;;-1:-1:-1;;19600:24:0;;;-1:-1:-1;;;28275:474:0:o;29261:398::-;19554:16;:23;;-1:-1:-1;;19554:23:0;19573:4;19554:23;;;29410:15:::1;::::0;29378:62:::1;::::0;29395:4:::1;::::0;-1:-1:-1;;;;;29410:15:0::1;29428:11:::0;29378:8:::1;:62::i;:::-;29453:15;::::0;-1:-1:-1;;;;;29453:15:0::1;:31;29492:9:::0;29525:4:::1;29545:11:::0;29453:15:::1;::::0;29603:7:::1;11091:6:::0;;-1:-1:-1;;;;;11091:6:0;;11018:87;29603:7:::1;29453:198;::::0;::::1;::::0;;;-1:-1:-1;;;;;;29453:198:0;;;-1:-1:-1;;;;;19981:15:1;;;29453:198:0::1;::::0;::::1;19963:34:1::0;20013:18;;;20006:34;;;;20056:18;;;20049:34;;;;20099:18;;;20092:34;20163:15;;;20142:19;;;20135:44;29625:15:0::1;20195:19:1::0;;;20188:35;19897:19;;29453:198:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19600:16:0;:24;;-1:-1:-1;;19600:24:0;;;-1:-1:-1;;;29261:398:0:o;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;895:134;963:20;;992:31;963:20;992:31;:::i;1034:315::-;1102:6;1110;1163:2;1151:9;1142:7;1138:23;1134:32;1131:52;;;1179:1;1176;1169:12;1131:52;1218:9;1205:23;1237:31;1262:5;1237:31;:::i;:::-;1287:5;1339:2;1324:18;;;;1311:32;;-1:-1:-1;;;1034:315:1:o;1354:247::-;1413:6;1466:2;1454:9;1445:7;1441:23;1437:32;1434:52;;;1482:1;1479;1472:12;1434:52;1521:9;1508:23;1540:31;1565:5;1540:31;:::i;:::-;1590:5;1354:247;-1:-1:-1;;;1354:247:1:o;1606:118::-;1692:5;1685:13;1678:21;1671:5;1668:32;1658:60;;1714:1;1711;1704:12;1729:309;1794:6;1802;1855:2;1843:9;1834:7;1830:23;1826:32;1823:52;;;1871:1;1868;1861:12;1823:52;1910:9;1897:23;1929:28;1951:5;1929:28;:::i;2043:241::-;2099:6;2152:2;2140:9;2131:7;2127:23;2123:32;2120:52;;;2168:1;2165;2158:12;2120:52;2207:9;2194:23;2226:28;2248:5;2226:28;:::i;2705:456::-;2782:6;2790;2798;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2906:9;2893:23;2925:31;2950:5;2925:31;:::i;:::-;2975:5;-1:-1:-1;3032:2:1;3017:18;;3004:32;3045:33;3004:32;3045:33;:::i;:::-;2705:456;;3097:7;;-1:-1:-1;;;3151:2:1;3136:18;;;;3123:32;;2705:456::o;3355:180::-;3414:6;3467:2;3455:9;3446:7;3442:23;3438:32;3435:52;;;3483:1;3480;3473:12;3435:52;-1:-1:-1;3506:23:1;;3355:180;-1:-1:-1;3355:180:1:o;3540:127::-;3601:10;3596:3;3592:20;3589:1;3582:31;3632:4;3629:1;3622:15;3656:4;3653:1;3646:15;3672:1121;3756:6;3787:2;3830;3818:9;3809:7;3805:23;3801:32;3798:52;;;3846:1;3843;3836:12;3798:52;3886:9;3873:23;3915:18;3956:2;3948:6;3945:14;3942:34;;;3972:1;3969;3962:12;3942:34;4010:6;3999:9;3995:22;3985:32;;4055:7;4048:4;4044:2;4040:13;4036:27;4026:55;;4077:1;4074;4067:12;4026:55;4113:2;4100:16;4135:2;4131;4128:10;4125:36;;;4141:18;;:::i;:::-;4187:2;4184:1;4180:10;4219:2;4213:9;4282:2;4278:7;4273:2;4269;4265:11;4261:25;4253:6;4249:38;4337:6;4325:10;4322:22;4317:2;4305:10;4302:18;4299:46;4296:72;;;4348:18;;:::i;:::-;4384:2;4377:22;4434:18;;;4468:15;;;;-1:-1:-1;4510:11:1;;;4506:20;;;4538:19;;;4535:39;;;4570:1;4567;4560:12;4535:39;4594:11;;;;4614:148;4630:6;4625:3;4622:15;4614:148;;;4696:23;4715:3;4696:23;:::i;:::-;4684:36;;4647:12;;;;4740;;;;4614:148;;;4781:6;3672:1121;-1:-1:-1;;;;;;;;3672:1121:1:o;5006:385::-;5092:6;5100;5108;5116;5169:3;5157:9;5148:7;5144:23;5140:33;5137:53;;;5186:1;5183;5176:12;5137:53;-1:-1:-1;;5209:23:1;;;5279:2;5264:18;;5251:32;;-1:-1:-1;5330:2:1;5315:18;;5302:32;;5381:2;5366:18;5353:32;;-1:-1:-1;5006:385:1;-1:-1:-1;5006:385:1:o;5396:382::-;5461:6;5469;5522:2;5510:9;5501:7;5497:23;5493:32;5490:52;;;5538:1;5535;5528:12;5490:52;5577:9;5564:23;5596:31;5621:5;5596:31;:::i;:::-;5646:5;-1:-1:-1;5703:2:1;5688:18;;5675:32;5716:30;5675:32;5716:30;:::i;:::-;5765:7;5755:17;;;5396:382;;;;;:::o;5783:388::-;5851:6;5859;5912:2;5900:9;5891:7;5887:23;5883:32;5880:52;;;5928:1;5925;5918:12;5880:52;5967:9;5954:23;5986:31;6011:5;5986:31;:::i;:::-;6036:5;-1:-1:-1;6093:2:1;6078:18;;6065:32;6106:33;6065:32;6106:33;:::i;6176:380::-;6255:1;6251:12;;;;6298;;;6319:61;;6373:4;6365:6;6361:17;6351:27;;6319:61;6426:2;6418:6;6415:14;6395:18;6392:38;6389:161;;6472:10;6467:3;6463:20;6460:1;6453:31;6507:4;6504:1;6497:15;6535:4;6532:1;6525:15;6389:161;;6176:380;;;:::o;6912:127::-;6973:10;6968:3;6964:20;6961:1;6954:31;7004:4;7001:1;6994:15;7028:4;7025:1;7018:15;7044:422;7133:1;7176:5;7133:1;7190:270;7211:7;7201:8;7198:21;7190:270;;;7270:4;7266:1;7262:6;7258:17;7252:4;7249:27;7246:53;;;7279:18;;:::i;:::-;7329:7;7319:8;7315:22;7312:55;;;7349:16;;;;7312:55;7428:22;;;;7388:15;;;;7190:270;;;7194:3;7044:422;;;;;:::o;7471:806::-;7520:5;7550:8;7540:80;;-1:-1:-1;7591:1:1;7605:5;;7540:80;7639:4;7629:76;;-1:-1:-1;7676:1:1;7690:5;;7629:76;7721:4;7739:1;7734:59;;;;7807:1;7802:130;;;;7714:218;;7734:59;7764:1;7755:10;;7778:5;;;7802:130;7839:3;7829:8;7826:17;7823:43;;;7846:18;;:::i;:::-;-1:-1:-1;;7902:1:1;7888:16;;7917:5;;7714:218;;8016:2;8006:8;8003:16;7997:3;7991:4;7988:13;7984:36;7978:2;7968:8;7965:16;7960:2;7954:4;7951:12;7947:35;7944:77;7941:159;;;-1:-1:-1;8053:19:1;;;8085:5;;7941:159;8132:34;8157:8;8151:4;8132:34;:::i;:::-;8202:6;8198:1;8194:6;8190:19;8181:7;8178:32;8175:58;;;8213:18;;:::i;:::-;8251:20;;7471:806;-1:-1:-1;;;7471:806:1:o;8282:140::-;8340:5;8369:47;8410:4;8400:8;8396:19;8390:4;8369:47;:::i;8427:168::-;8467:7;8533:1;8529;8525:6;8521:14;8518:1;8515:21;8510:1;8503:9;8496:17;8492:45;8489:71;;;8540:18;;:::i;:::-;-1:-1:-1;8580:9:1;;8427:168::o;8600:217::-;8640:1;8666;8656:132;;8710:10;8705:3;8701:20;8698:1;8691:31;8745:4;8742:1;8735:15;8773:4;8770:1;8763:15;8656:132;-1:-1:-1;8802:9:1;;8600:217::o;8822:125::-;8887:9;;;8908:10;;;8905:36;;;8921:18;;:::i;8952:127::-;9013:10;9008:3;9004:20;9001:1;8994:31;9044:4;9041:1;9034:15;9068:4;9065:1;9058:15;9084:135;9123:3;9144:17;;;9141:43;;9164:18;;:::i;:::-;-1:-1:-1;9211:1:1;9200:13;;9084:135::o;9565:184::-;9635:6;9688:2;9676:9;9667:7;9663:23;9659:32;9656:52;;;9704:1;9701;9694:12;9656:52;-1:-1:-1;9727:16:1;;9565:184;-1:-1:-1;9565:184:1:o;10033:245::-;10100:6;10153:2;10141:9;10132:7;10128:23;10124:32;10121:52;;;10169:1;10166;10159:12;10121:52;10201:9;10195:16;10220:28;10242:5;10220:28;:::i;13583:401::-;13785:2;13767:21;;;13824:2;13804:18;;;13797:30;13863:34;13858:2;13843:18;;13836:62;-1:-1:-1;;;13929:2:1;13914:18;;13907:35;13974:3;13959:19;;13583:401::o;13989:399::-;14191:2;14173:21;;;14230:2;14210:18;;;14203:30;14269:34;14264:2;14249:18;;14242:62;-1:-1:-1;;;14335:2:1;14320:18;;14313:33;14378:3;14363:19;;13989:399::o;14393:402::-;14595:2;14577:21;;;14634:2;14614:18;;;14607:30;14673:34;14668:2;14653:18;;14646:62;-1:-1:-1;;;14739:2:1;14724:18;;14717:36;14785:3;14770:19;;14393:402::o;15142:340::-;15344:2;15326:21;;;15383:2;15363:18;;;15356:30;-1:-1:-1;;;15417:2:1;15402:18;;15395:46;15473:2;15458:18;;15142:340::o;15487:343::-;15689:2;15671:21;;;15728:2;15708:18;;;15701:30;-1:-1:-1;;;15762:2:1;15747:18;;15740:49;15821:2;15806:18;;15487:343::o;15835:340::-;16037:2;16019:21;;;16076:2;16056:18;;;16049:30;-1:-1:-1;;;16110:2:1;16095:18;;16088:46;16166:2;16151:18;;15835:340::o;16864:128::-;16931:9;;;16952:11;;;16949:37;;;16966:18;;:::i;18057:251::-;18127:6;18180:2;18168:9;18159:7;18155:23;18151:32;18148:52;;;18196:1;18193;18186:12;18148:52;18228:9;18222:16;18247:31;18272:5;18247:31;:::i;18313:980::-;18575:4;18623:3;18612:9;18608:19;18654:6;18643:9;18636:25;18680:2;18718:6;18713:2;18702:9;18698:18;18691:34;18761:3;18756:2;18745:9;18741:18;18734:31;18785:6;18820;18814:13;18851:6;18843;18836:22;18889:3;18878:9;18874:19;18867:26;;18928:2;18920:6;18916:15;18902:29;;18949:1;18959:195;18973:6;18970:1;18967:13;18959:195;;;19038:13;;-1:-1:-1;;;;;19034:39:1;19022:52;;19129:15;;;;19094:12;;;;19070:1;18988:9;18959:195;;;-1:-1:-1;;;;;;;19210:32:1;;;;19205:2;19190:18;;19183:60;-1:-1:-1;;;19274:3:1;19259:19;19252:35;19171:3;18313:980;-1:-1:-1;;;18313:980:1:o;20234:306::-;20322:6;20330;20338;20391:2;20379:9;20370:7;20366:23;20362:32;20359:52;;;20407:1;20404;20397:12;20359:52;20436:9;20430:16;20420:26;;20486:2;20475:9;20471:18;20465:25;20455:35;;20530:2;20519:9;20515:18;20509:25;20499:35;;20234:306;;;;;:::o

Swarm Source

ipfs://627fe1fb212fa47b3d2424b0478abd862b722e7a0db65b4fab75548cd1e55253
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.