ETH Price: $3,476.14 (+6.00%)
Gas: 11 Gwei

Token

The Hive Mind (HIVE)
 

Overview

Max Total Supply

100,000,000,000 HIVE

Holders

216

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
37,630,834.881073698124610247 HIVE

Value
$0.00
0x4d4c5f9748ee306ac8a447024b1d55e674c6818f
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:
HiveMind

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-27
*/

//Telegram  https://t.me/Hive_Mind_Official
//Website   https://hivemind.hub
//Twitter/X https://twitter.com/Hive_Mind_Token

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++++#@@@@#++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++++*@@@@@*%@@@@@+++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++++@@@@@%++++++++@@@@@%+++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++#@@@@@*++++#@@@@*++++#@@@@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++%@@++++*@@@@@@@@@@@@+++++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++%@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++%@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@#++++*@@@@@@@@@@+++++%@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++++#@@@@@*+++*%@@#++++*@@@@@*++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++++#%+++++@@@@@@++++++@@@@@%+++++@*++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@#++++*@@@@@@@@#++++*@@@@@@@@@@+++++%@@@@@@@@+++++@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@+++++%@@@@@++++%@@@@@*+++*%@@#++++*@@@@@#+++*@@@@@%++++*@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++++#@@@@@*++*+#%+++++@@@@@%+++++*@@@@@%+++++@*++++#@@@@@*+++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++*@@@%+++++@@@@@@@@*++**#@@@@++@@@@*++++%@@@@@@@@+++++@@@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++*@@+*+%@@@@@@@@@@@@@@@*++@@@++@@%+**@@@@@@@@@@@@@@@#+++@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*+*@@++#@@@@@@@@@@@@@@@@@++@@@++@@%++@@@@@@@@@@@@@@@@@*++@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*+*@@++#@@@@@@@@@@@@@@@@@++#+**+++%++@@@@@@@@@@@@@@@@@*++@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++*@@+*#@@@@@@@@@@@@@@@@@++++%@@%++++@@@@@@@@@@@@@@@@@*+*@@*+#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*+*@@+*#@@@@@@@@@@@@@@@@*+*@@@@@@@@***@@@@@@@@@@@@@@@@*+*@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@***@@++#@@@@@@@@@@@@@@@@**@@@@@@@@@@+*@@@@@@@@@@@@@@@@***@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@***@@++*+@@@@@@@@@@@@@@@**@@@@@@@@@@**@@@@@@@@@@@@@@%+*+*@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@***@@@@#+++**###########*+*@@@@@@@@++*###########****+%@@@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*****#@@@@@**********+***+**+@@@@+***+*+********+**@@@@@***+*%@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@*****@**%@@@@@@@@@@@@@@#*++**+%@@@@@@@@@@@@@@***%+****@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@#*****+#@@@@@@@@@@@@@@****+%@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@***@@@@@@@@@@*****@@@@+****@@@@@@@@@@**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+*@@@@%****#@@@@@@@@@@#****@@@@@+**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#********%@#*****+****#@*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@******%@@@@@@#*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**@@@@@@@@@@@@@@**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**#@@@@@@@@@@@@***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#@@@@@@#***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@***@@@@@@***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***@@***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


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

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() external virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

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

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

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

contract HiveMind is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "The Hive Mind";
    string constant _symbol = "HIVE";
    uint8 constant _decimals = 18;

    uint256 constant _totalSupply = 100000000000 * 10**18; // 100 Billion
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isRestricted;

    uint256 burnFee = 0;
    uint256 daoFee = 0;
    uint256 liquidityFee = 0;
    uint256 marketingFee = 0;

    uint256 constant feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public daoFeeReceiver;
    address public marketingFeeReceiver;

    IDEXRouter public router;
    address uniswapV2ETHPair;
    address[] public pairs;

    bool public autoLiquifyEnabled = true;
    bool public feesOnNormalTransfers = false;

    bool inSwap;
    modifier swapping { inSwap = true; _; inSwap = false; }
    uint256 public autoLiquifyThreshold = 100 * 10 ** _decimals;

    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event FeesUpdated(uint256 indexed newBurnFee, uint256 indexed newDaoFee, uint256 newLiquidityFee, uint256 newMarketingFee);
    event RecoveredExcess(uint256 amount);
    event UpdateDaoAddress(address indexed newAddr, address indexed oldAddr);
    event UpdateLiquidityAddress(address indexed newAddr, address indexed oldAddr);
    event UpdateAutoLiquifyEnabled(bool enabled);
    event UpdateFeesOnNormalTransfer(bool enabled);
    event UpdateMarketingAddress(address indexed newAddr, address indexed oldAddr);

    constructor() {
        address ownerAddr = msg.sender;

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2ETHPair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = ~uint256(0);

        pairs.push(uniswapV2ETHPair);

        isFeeExempt[ownerAddr] = true;
        isFeeExempt[address(this)] = true;

        daoFeeReceiver = ownerAddr;
        marketingFeeReceiver = ownerAddr;
        autoLiquidityReceiver = ownerAddr;

        _balances[ownerAddr] = _totalSupply;
        emit Transfer(address(0), ownerAddr, _totalSupply);
    }

    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }

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

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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, ~uint256(0));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != ~uint256(0)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!isRestricted[recipient], "Address is restricted");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(shouldAutoLiquify()) { autoLiquify(); }

        require(_balances[sender].sub(amount) >= 0, "Insufficient Balance");
        _balances[sender] = _balances[sender].sub(amount);

        if (shouldTakeFee(sender, recipient)) {
            uint256 burnAmount = amount.mul(burnFee).div(feeDenominator);
            uint256 daoAmount = amount.mul(daoFee).div(feeDenominator);
            uint256 liquidityAmount = amount.mul(liquidityFee).div(feeDenominator);
            uint256 marketingAmount = amount.mul(marketingFee).div(feeDenominator);

            uint256 totalStoreAmount = daoAmount + liquidityAmount + marketingAmount; // Total token fee
            uint256 totalTaxAmount = burnAmount + totalStoreAmount; // Total amount of tax

            _balances[address(this)] = _balances[address(this)] + totalStoreAmount; // Store tax fees within itself
            emit Transfer(sender, address(this), totalStoreAmount);

            _balances[DEAD] = _balances[DEAD].add(burnAmount); // Send the Burn fee to the DEAD wallet
            emit Transfer(sender, DEAD, burnAmount);


            uint256 amountReceived = amount - totalTaxAmount;
            _balances[recipient] = _balances[recipient].add(amountReceived);
            emit Transfer(sender, recipient, amountReceived);
        } else {
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }

        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(balanceOf(sender).sub(amount) >= 0, "Insufficient Balance");
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if (isFeeExempt[sender] || isFeeExempt[recipient]) return false;

        address[] memory liqPairs = pairs;

        for (uint256 i = 0; i < liqPairs.length; i++) {
            if (sender == liqPairs[i] || recipient == liqPairs[i]) return true;
        }

        return feesOnNormalTransfers;
    }

    function shouldAutoLiquify() internal view returns (bool) {
        return msg.sender != uniswapV2ETHPair
        && !inSwap
        && autoLiquifyEnabled
        && _balances[address(this)] >= autoLiquifyThreshold;
    }

    function liquify() external onlyOwner {
        autoLiquify();
    }

    function autoLiquify() internal swapping {
        uint256 balanceBefore = address(this).balance;

        uint256 totalAmount = _balances[address(this)];
        uint256 denom = daoFee + liquidityFee + marketingFee;

        uint256 daoSwap = totalAmount.mul(daoFee).div(denom);
        uint256 liquiditySwap = totalAmount.mul(liquidityFee).div(denom);
        uint256 marketingSwap = totalAmount.mul(marketingFee).div(denom);

        uint256 amountToLiquify = liquiditySwap.div(2);

        uint256 amountToSwap = daoSwap + amountToLiquify + marketingSwap;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), amountToSwap);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 swapedETHAmount = address(this).balance.sub(balanceBefore);

        if (swapedETHAmount > 0) {
            uint256 ethDenom =  daoFee + marketingFee + liquidityFee.div(2);

            uint256 ethSwapMarketingAmount = swapedETHAmount.mul(marketingFee).div(ethDenom); // ETH for Marketing
            uint256 ethSwapDaoAmount = swapedETHAmount.mul(daoFee).div(ethDenom); // ETH for DAO
            uint256 ethLiquidify = swapedETHAmount.mul(liquidityFee.div(2)).div(ethDenom); // ETH for Liqudity

            if (ethSwapMarketingAmount > 0) {
                // Send ETH for Marketing
                payable(marketingFeeReceiver).transfer(ethSwapMarketingAmount);
            }

            if (ethSwapDaoAmount > 0) {
                // Send ETH for DAO
                payable(daoFeeReceiver).transfer(ethSwapDaoAmount);
            }

            if (ethLiquidify > 0){
                _approve(address(this), address(router), amountToLiquify);
                router.addLiquidityETH{ value: ethLiquidify }(
                    address(this),
                    amountToLiquify,
                    0,
                    0,
                    autoLiquidityReceiver,
                    block.timestamp
                );
            }
        }
    }

    function ETHbalance() external view returns (uint256) {
        return address(this).balance;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;

        emit ExcludeFromFees(holder, exempt);
    }

    function setFees(
        uint256 _burnFee,
        uint256 _daoFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        burnFee = _burnFee;
        daoFee = _daoFee;
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;

        emit FeesUpdated(burnFee, daoFee, liquidityFee, marketingFee);
    }

    function setAutoLiquifyThreshold(uint256 threshold) external onlyOwner {
        autoLiquifyThreshold = threshold;
    }

    function setAutoLiquifyEnabled(bool _enabled) external onlyOwner {
        autoLiquifyEnabled = _enabled;
        emit UpdateAutoLiquifyEnabled(_enabled);
    }

    function setDaoFeeReceiver(address _receiver) external onlyOwner {
        address oldAddr = daoFeeReceiver;
        daoFeeReceiver = _receiver;
        
        isFeeExempt[_receiver] = true;

        emit UpdateDaoAddress(oldAddr, _receiver);
    }

    function setLiquidityFeeReceiver(address _receiver) external onlyOwner {
        address oldAddr = autoLiquidityReceiver;
        autoLiquidityReceiver = _receiver;

        isFeeExempt[_receiver] = true;

        emit UpdateLiquidityAddress(oldAddr, _receiver);
    }

    function setMarketingFeeReceiver(address _receiver) external onlyOwner {
        address oldAddr = marketingFeeReceiver;
        marketingFeeReceiver = _receiver;

        isFeeExempt[_receiver] = true;

        emit UpdateMarketingAddress(oldAddr, _receiver);
    }

    function getCirculatingSupply() external view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function addPair(address pair) external onlyOwner {
        pairs.push(pair);
    }

    function removeLastPair() external onlyOwner {
        pairs.pop();
    }

    function setFeesOnNormalTransfers(bool _enabled) external onlyOwner {
        feesOnNormalTransfers = _enabled;

        emit UpdateFeesOnNormalTransfer(_enabled);
    }

    function setisRestricted(address adr, bool restricted) external onlyOwner {
        isRestricted[adr] = restricted;
    }

    function totalFees() external view returns (uint256) {
        return burnFee.add(daoFee).add(liquidityFee).add(marketingFee).div(100);
    }

    function walletisRestricted(address adr) external view returns (bool) {
        return isRestricted[adr];
    }

    function walletIsTaxExempt(address adr) external view returns (bool) {
        return isFeeExempt[adr];
    }

    // only for recovering excess ETH in the contract, in times of miscalculation. Can only be sent to marketing wallet - ALWAYS CONFIRM BEFORE USE
    function recoverExcess(uint256 amount) external onlyOwner {
        require(amount < address(this).balance, "HIVE: Can not send more than contract balance");
        payable(marketingFeeReceiver).transfer(amount);
        emit RecoveredExcess(amount);
    }

    // only for recovering tokens that are NOT HIVE tokens sent in error by wallets
    function withdrawTokens(address tokenaddr) external onlyOwner {
        require(tokenaddr != address(this), 'This is for tokens sent to the contract by mistake');
        uint256 tokenBal = IERC20(tokenaddr).balanceOf(address(this));
        if (tokenBal > 0) {
            IERC20(tokenaddr).transfer(marketingFeeReceiver, tokenBal);
        }
    }

    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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","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":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newDaoFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoveredExcess","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"UpdateAutoLiquifyEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddr","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddr","type":"address"}],"name":"UpdateDaoAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"UpdateFeesOnNormalTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddr","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddr","type":"address"}],"name":"UpdateLiquidityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddr","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddr","type":"address"}],"name":"UpdateMarketingAddress","type":"event"},{"inputs":[],"name":"ETHbalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquifyThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"daoFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feesOnNormalTransfers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverExcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLastPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setAutoLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setAutoLiquifyThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"setDaoFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_daoFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeesOnNormalTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"setLiquidityFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"setMarketingFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"bool","name":"restricted","type":"bool"}],"name":"setisRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"walletIsTaxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"walletisRestricted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenaddr","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600581905560068190556007819055600855600f805461ffff19166001179055620000346012600a620003fb565b62000041906064620004bc565b6010553480156200005157600080fd5b506200005d3362000332565b600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905133929163c45a0155916004808301926020929190829003018186803b158015620000bf57600080fd5b505afa158015620000d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fa919062000382565b6001600160a01b031663c9c65396600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200015757600080fd5b505afa1580156200016c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000192919062000382565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620001da57600080fd5b505af1158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000215919062000382565b600d80546001600160a01b039283166001600160a01b0319918216178255306000818152600260209081526040808320600c5488168452825280832060001990559454600e805460018181019092557fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01805487169289169290921790915595871680835260038252858320805460ff19908116891790915593835285832080549094168717909355600a8054851684179055600b80548516841790556009805490941683179093558181529382528284206c01431e0fae6d7217caa000000090819055925192835292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620004f4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121562000394578081fd5b81516001600160a01b0381168114620003ab578182fd5b9392505050565b600181815b80851115620003f3578160001904821115620003d757620003d7620004de565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000620003ab60ff8416836000826200041757506001620004b6565b816200042657506000620004b6565b81600181146200043f57600281146200044a576200046a565b6001915050620004b6565b60ff8411156200045e576200045e620004de565b50506001821b620004b6565b5060208310610133831016604e8410600b84101617156200048f575081810a620004b6565b6200049b8383620003b2565b8060001904821115620004b257620004b2620004de565b0290505b92915050565b6000816000190483118215151615620004d957620004d9620004de565b500290565b634e487b7160e01b600052601160045260246000fd5b61244380620005046000396000f3fe60806040526004361061023e5760003560e01c80637df8d8431161012e578063c2b7bbb6116100ab578063e96fada21161006f578063e96fada21461072a578063edafd4ad1461074a578063f2fde38b1461076a578063f3a54f2c1461078a578063f887ea40146107aa57600080fd5b8063c2b7bbb614610679578063ca33e64c14610699578063cb9598c3146106b9578063dd62ed3e146106ce578063e66f9c661461071457600080fd5b806395d89b41116100f257806395d89b41146105d9578063a9059cbb14610606578063ab12bf8014610626578063ab643c5a14610646578063b91ac7881461065957600080fd5b80637df8d84314610528578063890a8127146105485780638997a942146105625780638da5cb5b146105825780639373c0a4146105a057600080fd5b80633a814487116101bc57806361ed96f51161018057806361ed96f514610465578063658d4b7f1461049d5780636fcba377146104bd57806370a08231146104dd578063715018a61461051357600080fd5b80633a814487146103c657806349df728c146103e657806354200d6f14610406578063571ac8b0146104265780635abe67111461044657600080fd5b806318160ddd1161020357806318160ddd1461033557806323b872dd146103555780632b112e4914610375578063313ce5671461038a5780633190bb8a146103a657600080fd5b806293dc141461024a57806306fdde031461026157806307c0e790146102a9578063095ea7b3146102f257806313114a9d1461031257600080fd5b3661024557005b600080fd5b34801561025657600080fd5b5061025f6107ca565b005b34801561026d57600080fd5b5060408051808201909152600d81526c151a1948121a5d9948135a5b99609a1b60208201525b6040516102a09190612233565b60405180910390f35b3480156102b557600080fd5b506102e26102c4366004612065565b6001600160a01b031660009081526003602052604090205460ff1690565b60405190151581526020016102a0565b3480156102fe57600080fd5b506102e261030d366004612142565b610840565b34801561031e57600080fd5b50610327610857565b6040519081526020016102a0565b34801561034157600080fd5b506c01431e0fae6d7217caa0000000610327565b34801561036157600080fd5b506102e26103703660046120d5565b610892565b34801561038157600080fd5b50610327610954565b34801561039657600080fd5b50604051601281526020016102a0565b3480156103b257600080fd5b5061025f6103c1366004612065565b6109c9565b3480156103d257600080fd5b5061025f6103e13660046121a5565b610a5d565b3480156103f257600080fd5b5061025f610401366004612065565b610b5e565b34801561041257600080fd5b5061025f61042136600461216d565b610d0a565b34801561043257600080fd5b506102e2610441366004612065565b610d75565b34801561045257600080fd5b50600f546102e290610100900460ff1681565b34801561047157600080fd5b50600a54610485906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b3480156104a957600080fd5b5061025f6104b8366004612115565b610d83565b3480156104c957600080fd5b5061025f6104d8366004612202565b610e0c565b3480156104e957600080fd5b506103276104f8366004612065565b6001600160a01b031660009081526001602052604090205490565b34801561051f57600080fd5b5061025f610e8d565b34801561053457600080fd5b5061025f610543366004612115565b610ec3565b34801561055457600080fd5b50600f546102e29060ff1681565b34801561056e57600080fd5b5061025f61057d3660046121a5565b610f18565b34801561058e57600080fd5b506000546001600160a01b0316610485565b3480156105ac57600080fd5b506102e26105bb366004612065565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105e557600080fd5b506040805180820190915260048152634849564560e01b6020820152610293565b34801561061257600080fd5b506102e2610621366004612142565b610f47565b34801561063257600080fd5b5061025f610641366004612065565b610f54565b34801561065257600080fd5b5047610327565b34801561066557600080fd5b506104856106743660046121a5565b610fe8565b34801561068557600080fd5b5061025f610694366004612065565b611012565b3480156106a557600080fd5b50600954610485906001600160a01b031681565b3480156106c557600080fd5b5061025f61108e565b3480156106da57600080fd5b506103276106e936600461209d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561072057600080fd5b5061032760105481565b34801561073657600080fd5b50600b54610485906001600160a01b031681565b34801561075657600080fd5b5061025f610765366004612065565b6110c0565b34801561077657600080fd5b5061025f610785366004612065565b611154565b34801561079657600080fd5b5061025f6107a536600461216d565b6111ef565b3480156107b657600080fd5b50600c54610485906001600160a01b031681565b6000546001600160a01b031633146107fd5760405162461bcd60e51b81526004016107f490612286565b60405180910390fd5b600e80548061081c57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055565b600061084d338484611262565b5060015b92915050565b600061088d606461088760085461088160075461088160065460055461138690919063ffffffff16565b90611386565b906113e5565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000191461093f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260028252838120338252909152919091205461091a918490611427565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61094a848484611461565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54909161088d916109c3906c01431e0fae6d7217caa00000009061184f565b9061184f565b6000546001600160a01b031633146109f35760405162461bcd60e51b81526004016107f490612286565b600980546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917fbe2b5c29e9a490c1772c736f2420e15cb41fdb25e6518f23433f03b125c747d19190a35050565b6000546001600160a01b03163314610a875760405162461bcd60e51b81526004016107f490612286565b478110610aec5760405162461bcd60e51b815260206004820152602d60248201527f484956453a2043616e206e6f742073656e64206d6f7265207468616e20636f6e60448201526c74726163742062616c616e636560981b60648201526084016107f4565b600b546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b26573d6000803e3d6000fd5b506040518181527f37e7145c08854d83de3c610e4a804c2cd5a0280e411042991ba02908917e02f8906020015b60405180910390a150565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038116301415610bfc5760405162461bcd60e51b815260206004820152603260248201527f5468697320697320666f7220746f6b656e732073656e7420746f2074686520636044820152716f6e7472616374206279206d697374616b6560701b60648201526084016107f4565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610c3e57600080fd5b505afa158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7691906121bd565b90508015610d0657600b5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190612189565b505b5050565b6000546001600160a01b03163314610d345760405162461bcd60e51b81526004016107f490612286565b600f805460ff19168215159081179091556040519081527f1a41147a9f7da81de762374b357f65cb0091cde612f12c5efb2f45cffc94b8b390602001610b53565b600061085182600019610840565b6000546001600160a01b03163314610dad5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b03163314610e365760405162461bcd60e51b81526004016107f490612286565b60058490556006839055600782905560088190556040805183815260208101839052849186917f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe910160405180910390a350505050565b6000546001600160a01b03163314610eb75760405162461bcd60e51b81526004016107f490612286565b610ec16000611891565b565b6000546001600160a01b03163314610eed5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f425760405162461bcd60e51b81526004016107f490612286565b601055565b600061094d338484611461565b6000546001600160a01b03163314610f7e5760405162461bcd60e51b81526004016107f490612286565b600a80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917f165f20ca26f0dc785b62df8c285bff5d2b653e0050cc84418aed0585ec25d9d39190a35050565b600e8181548110610ff857600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461103c5760405162461bcd60e51b81526004016107f490612286565b600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110b85760405162461bcd60e51b81526004016107f490612286565b610ec16118e1565b6000546001600160a01b031633146110ea5760405162461bcd60e51b81526004016107f490612286565b600b80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917ff814e542e14c332b4a2776be84ba8f1764a228047e65dcd7a9ef759ddc9e89c29190a35050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b0381166111e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b6111ec81611891565b50565b6000546001600160a01b031633146112195760405162461bcd60e51b81526004016107f490612286565b600f80548215156101000261ff00199091161790556040517f6614b840e348fc9387fe5e75126c9f2d8ae6b7e2de9b667576b26394c57dd89e90610b5390831515815260200190565b6001600160a01b0383166112c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b6001600160a01b0382166113255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f4565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080611393838561232b565b90508381101561094d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f4565b600061094d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d3a565b6000818484111561144b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612382565b95945050505050565b6001600160a01b03821660009081526004602052604081205460ff16156114c25760405162461bcd60e51b81526020600482015260156024820152741059191c995cdcc81a5cc81c995cdd1c9a58dd1959605a1b60448201526064016107f4565b600f5462010000900460ff16156114e5576114de848484611d68565b905061094d565b6114ed611e25565b156114fa576114fa6118e1565b6001600160a01b03841660009081526001602052604081205461151d908461184f565b10156115625760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611585908361184f565b6001600160a01b0385166000908152600160205260409020556115a88484611e7a565b156117d75760006115ca61271061088760055486611fe690919063ffffffff16565b905060006115e961271061088760065487611fe690919063ffffffff16565b9050600061160861271061088760075488611fe690919063ffffffff16565b9050600061162761271061088760085489611fe690919063ffffffff16565b9050600081611636848661232b565b611640919061232b565b9050600061164e828761232b565b3060009081526001602052604090205490915061166c90839061232b565b30600081815260016020526040908190209290925590516001600160a01b038c16906000805160206123ee833981519152906116ab9086815260200190565b60405180910390a361dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546116ea9087611386565b61dead600081905260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d919091556040516001600160a01b038c16906000805160206123ee83398151915290611747908a815260200190565b60405180910390a3600061175b828a612382565b6001600160a01b038b166000908152600160205260409020549091506117819082611386565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16906000805160206123ee833981519152906117c39085815260200190565b60405180910390a350505050505050611845565b6001600160a01b0383166000908152600160205260409020546117fa9083611386565b6001600160a01b0380851660008181526001602052604090819020939093559151908616906000805160206123ee8339815191529061183c9086815260200190565b60405180910390a35b5060019392505050565b600061094d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611427565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600f805462ff000019166201000017905530600090815260016020526040812054600854600754600654479492916119189161232b565b611922919061232b565b9050600061193f8261088760065486611fe690919063ffffffff16565b9050600061195c8361088760075487611fe690919063ffffffff16565b905060006119798461088760085488611fe690919063ffffffff16565b905060006119888360026113e5565b9050600082611997838761232b565b6119a1919061232b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119e957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a3d57600080fd5b505afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190612081565b81600181518110611a9657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c54611abc9130911684611262565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611af59085906000908690309042906004016122bb565b600060405180830381600087803b158015611b0f57600080fd5b505af1158015611b23573d6000803e3d6000fd5b505050506000611b3c8a4761184f90919063ffffffff16565b90508015611d2257600754600090611b559060026113e5565b600854600654611b65919061232b565b611b6f919061232b565b90506000611b8c8261088760085486611fe690919063ffffffff16565b90506000611ba98361088760065487611fe690919063ffffffff16565b90506000611bd184610887611bca60026007546113e590919063ffffffff16565b8890611fe6565b90508215611c1557600b546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611c13573d6000803e3d6000fd5b505b8115611c5757600a546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611c55573d6000803e3d6000fd5b505b8015611d1d57600c54611c759030906001600160a01b03168a611262565b600c5460095460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ce057600080fd5b505af1158015611cf4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d1991906121d5565b5050505b505050505b5050600f805462ff0000191690555050505050505050565b60008183611d5b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612343565b600080611d8e836109c3876001600160a01b031660009081526001602052604090205490565b1015611dd35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611df6908361184f565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546117fa9083611386565b600d546000906001600160a01b03163314801590611e4c5750600f5462010000900460ff16155b8015611e5a5750600f5460ff165b801561088d57505060105430600090815260016020526040902054101590565b6001600160a01b03821660009081526003602052604081205460ff1680611eb957506001600160a01b03821660009081526003602052604090205460ff165b15611ec657506000610851565b6000600e805480602002602001604051908101604052809291908181526020018280548015611f1e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f00575b5050505050905060005b8151811015611fd257818181518110611f5157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b03161480611fb05750818181518110611f9357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b0316145b15611fc057600192505050610851565b80611fca81612399565b915050611f28565b5050600f54610100900460ff169392505050565b600082611ff557506000610851565b60006120018385612363565b90508261200e8583612343565b1461094d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f4565b600060208284031215612076578081fd5b813561094d816123ca565b600060208284031215612092578081fd5b815161094d816123ca565b600080604083850312156120af578081fd5b82356120ba816123ca565b915060208301356120ca816123ca565b809150509250929050565b6000806000606084860312156120e9578081fd5b83356120f4816123ca565b92506020840135612104816123ca565b929592945050506040919091013590565b60008060408385031215612127578182fd5b8235612132816123ca565b915060208301356120ca816123df565b60008060408385031215612154578182fd5b823561215f816123ca565b946020939093013593505050565b60006020828403121561217e578081fd5b813561094d816123df565b60006020828403121561219a578081fd5b815161094d816123df565b6000602082840312156121b6578081fd5b5035919050565b6000602082840312156121ce578081fd5b5051919050565b6000806000606084860312156121e9578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612217578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561225f57858101830151858201604001528201612243565b818111156122705783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561230a5784516001600160a01b0316835293830193918301916001016122e5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561233e5761233e6123b4565b500190565b60008261235e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561237d5761237d6123b4565b500290565b600082821015612394576123946123b4565b500390565b60006000198214156123ad576123ad6123b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146111ec57600080fd5b80151581146111ec57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bee68ea7fb7ec9417814abb7a0db5e63722a70fb5d7d7392801a9c07d4aaf0ac64736f6c63430008040033

Deployed Bytecode

0x60806040526004361061023e5760003560e01c80637df8d8431161012e578063c2b7bbb6116100ab578063e96fada21161006f578063e96fada21461072a578063edafd4ad1461074a578063f2fde38b1461076a578063f3a54f2c1461078a578063f887ea40146107aa57600080fd5b8063c2b7bbb614610679578063ca33e64c14610699578063cb9598c3146106b9578063dd62ed3e146106ce578063e66f9c661461071457600080fd5b806395d89b41116100f257806395d89b41146105d9578063a9059cbb14610606578063ab12bf8014610626578063ab643c5a14610646578063b91ac7881461065957600080fd5b80637df8d84314610528578063890a8127146105485780638997a942146105625780638da5cb5b146105825780639373c0a4146105a057600080fd5b80633a814487116101bc57806361ed96f51161018057806361ed96f514610465578063658d4b7f1461049d5780636fcba377146104bd57806370a08231146104dd578063715018a61461051357600080fd5b80633a814487146103c657806349df728c146103e657806354200d6f14610406578063571ac8b0146104265780635abe67111461044657600080fd5b806318160ddd1161020357806318160ddd1461033557806323b872dd146103555780632b112e4914610375578063313ce5671461038a5780633190bb8a146103a657600080fd5b806293dc141461024a57806306fdde031461026157806307c0e790146102a9578063095ea7b3146102f257806313114a9d1461031257600080fd5b3661024557005b600080fd5b34801561025657600080fd5b5061025f6107ca565b005b34801561026d57600080fd5b5060408051808201909152600d81526c151a1948121a5d9948135a5b99609a1b60208201525b6040516102a09190612233565b60405180910390f35b3480156102b557600080fd5b506102e26102c4366004612065565b6001600160a01b031660009081526003602052604090205460ff1690565b60405190151581526020016102a0565b3480156102fe57600080fd5b506102e261030d366004612142565b610840565b34801561031e57600080fd5b50610327610857565b6040519081526020016102a0565b34801561034157600080fd5b506c01431e0fae6d7217caa0000000610327565b34801561036157600080fd5b506102e26103703660046120d5565b610892565b34801561038157600080fd5b50610327610954565b34801561039657600080fd5b50604051601281526020016102a0565b3480156103b257600080fd5b5061025f6103c1366004612065565b6109c9565b3480156103d257600080fd5b5061025f6103e13660046121a5565b610a5d565b3480156103f257600080fd5b5061025f610401366004612065565b610b5e565b34801561041257600080fd5b5061025f61042136600461216d565b610d0a565b34801561043257600080fd5b506102e2610441366004612065565b610d75565b34801561045257600080fd5b50600f546102e290610100900460ff1681565b34801561047157600080fd5b50600a54610485906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b3480156104a957600080fd5b5061025f6104b8366004612115565b610d83565b3480156104c957600080fd5b5061025f6104d8366004612202565b610e0c565b3480156104e957600080fd5b506103276104f8366004612065565b6001600160a01b031660009081526001602052604090205490565b34801561051f57600080fd5b5061025f610e8d565b34801561053457600080fd5b5061025f610543366004612115565b610ec3565b34801561055457600080fd5b50600f546102e29060ff1681565b34801561056e57600080fd5b5061025f61057d3660046121a5565b610f18565b34801561058e57600080fd5b506000546001600160a01b0316610485565b3480156105ac57600080fd5b506102e26105bb366004612065565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105e557600080fd5b506040805180820190915260048152634849564560e01b6020820152610293565b34801561061257600080fd5b506102e2610621366004612142565b610f47565b34801561063257600080fd5b5061025f610641366004612065565b610f54565b34801561065257600080fd5b5047610327565b34801561066557600080fd5b506104856106743660046121a5565b610fe8565b34801561068557600080fd5b5061025f610694366004612065565b611012565b3480156106a557600080fd5b50600954610485906001600160a01b031681565b3480156106c557600080fd5b5061025f61108e565b3480156106da57600080fd5b506103276106e936600461209d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561072057600080fd5b5061032760105481565b34801561073657600080fd5b50600b54610485906001600160a01b031681565b34801561075657600080fd5b5061025f610765366004612065565b6110c0565b34801561077657600080fd5b5061025f610785366004612065565b611154565b34801561079657600080fd5b5061025f6107a536600461216d565b6111ef565b3480156107b657600080fd5b50600c54610485906001600160a01b031681565b6000546001600160a01b031633146107fd5760405162461bcd60e51b81526004016107f490612286565b60405180910390fd5b600e80548061081c57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055565b600061084d338484611262565b5060015b92915050565b600061088d606461088760085461088160075461088160065460055461138690919063ffffffff16565b90611386565b906113e5565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000191461093f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260028252838120338252909152919091205461091a918490611427565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61094a848484611461565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54909161088d916109c3906c01431e0fae6d7217caa00000009061184f565b9061184f565b6000546001600160a01b031633146109f35760405162461bcd60e51b81526004016107f490612286565b600980546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917fbe2b5c29e9a490c1772c736f2420e15cb41fdb25e6518f23433f03b125c747d19190a35050565b6000546001600160a01b03163314610a875760405162461bcd60e51b81526004016107f490612286565b478110610aec5760405162461bcd60e51b815260206004820152602d60248201527f484956453a2043616e206e6f742073656e64206d6f7265207468616e20636f6e60448201526c74726163742062616c616e636560981b60648201526084016107f4565b600b546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b26573d6000803e3d6000fd5b506040518181527f37e7145c08854d83de3c610e4a804c2cd5a0280e411042991ba02908917e02f8906020015b60405180910390a150565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038116301415610bfc5760405162461bcd60e51b815260206004820152603260248201527f5468697320697320666f7220746f6b656e732073656e7420746f2074686520636044820152716f6e7472616374206279206d697374616b6560701b60648201526084016107f4565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610c3e57600080fd5b505afa158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7691906121bd565b90508015610d0657600b5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190612189565b505b5050565b6000546001600160a01b03163314610d345760405162461bcd60e51b81526004016107f490612286565b600f805460ff19168215159081179091556040519081527f1a41147a9f7da81de762374b357f65cb0091cde612f12c5efb2f45cffc94b8b390602001610b53565b600061085182600019610840565b6000546001600160a01b03163314610dad5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b03163314610e365760405162461bcd60e51b81526004016107f490612286565b60058490556006839055600782905560088190556040805183815260208101839052849186917f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe910160405180910390a350505050565b6000546001600160a01b03163314610eb75760405162461bcd60e51b81526004016107f490612286565b610ec16000611891565b565b6000546001600160a01b03163314610eed5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f425760405162461bcd60e51b81526004016107f490612286565b601055565b600061094d338484611461565b6000546001600160a01b03163314610f7e5760405162461bcd60e51b81526004016107f490612286565b600a80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917f165f20ca26f0dc785b62df8c285bff5d2b653e0050cc84418aed0585ec25d9d39190a35050565b600e8181548110610ff857600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461103c5760405162461bcd60e51b81526004016107f490612286565b600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110b85760405162461bcd60e51b81526004016107f490612286565b610ec16118e1565b6000546001600160a01b031633146110ea5760405162461bcd60e51b81526004016107f490612286565b600b80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917ff814e542e14c332b4a2776be84ba8f1764a228047e65dcd7a9ef759ddc9e89c29190a35050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b0381166111e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b6111ec81611891565b50565b6000546001600160a01b031633146112195760405162461bcd60e51b81526004016107f490612286565b600f80548215156101000261ff00199091161790556040517f6614b840e348fc9387fe5e75126c9f2d8ae6b7e2de9b667576b26394c57dd89e90610b5390831515815260200190565b6001600160a01b0383166112c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b6001600160a01b0382166113255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f4565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080611393838561232b565b90508381101561094d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f4565b600061094d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d3a565b6000818484111561144b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612382565b95945050505050565b6001600160a01b03821660009081526004602052604081205460ff16156114c25760405162461bcd60e51b81526020600482015260156024820152741059191c995cdcc81a5cc81c995cdd1c9a58dd1959605a1b60448201526064016107f4565b600f5462010000900460ff16156114e5576114de848484611d68565b905061094d565b6114ed611e25565b156114fa576114fa6118e1565b6001600160a01b03841660009081526001602052604081205461151d908461184f565b10156115625760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611585908361184f565b6001600160a01b0385166000908152600160205260409020556115a88484611e7a565b156117d75760006115ca61271061088760055486611fe690919063ffffffff16565b905060006115e961271061088760065487611fe690919063ffffffff16565b9050600061160861271061088760075488611fe690919063ffffffff16565b9050600061162761271061088760085489611fe690919063ffffffff16565b9050600081611636848661232b565b611640919061232b565b9050600061164e828761232b565b3060009081526001602052604090205490915061166c90839061232b565b30600081815260016020526040908190209290925590516001600160a01b038c16906000805160206123ee833981519152906116ab9086815260200190565b60405180910390a361dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546116ea9087611386565b61dead600081905260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d919091556040516001600160a01b038c16906000805160206123ee83398151915290611747908a815260200190565b60405180910390a3600061175b828a612382565b6001600160a01b038b166000908152600160205260409020549091506117819082611386565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16906000805160206123ee833981519152906117c39085815260200190565b60405180910390a350505050505050611845565b6001600160a01b0383166000908152600160205260409020546117fa9083611386565b6001600160a01b0380851660008181526001602052604090819020939093559151908616906000805160206123ee8339815191529061183c9086815260200190565b60405180910390a35b5060019392505050565b600061094d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611427565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600f805462ff000019166201000017905530600090815260016020526040812054600854600754600654479492916119189161232b565b611922919061232b565b9050600061193f8261088760065486611fe690919063ffffffff16565b9050600061195c8361088760075487611fe690919063ffffffff16565b905060006119798461088760085488611fe690919063ffffffff16565b905060006119888360026113e5565b9050600082611997838761232b565b6119a1919061232b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119e957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a3d57600080fd5b505afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190612081565b81600181518110611a9657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c54611abc9130911684611262565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611af59085906000908690309042906004016122bb565b600060405180830381600087803b158015611b0f57600080fd5b505af1158015611b23573d6000803e3d6000fd5b505050506000611b3c8a4761184f90919063ffffffff16565b90508015611d2257600754600090611b559060026113e5565b600854600654611b65919061232b565b611b6f919061232b565b90506000611b8c8261088760085486611fe690919063ffffffff16565b90506000611ba98361088760065487611fe690919063ffffffff16565b90506000611bd184610887611bca60026007546113e590919063ffffffff16565b8890611fe6565b90508215611c1557600b546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611c13573d6000803e3d6000fd5b505b8115611c5757600a546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611c55573d6000803e3d6000fd5b505b8015611d1d57600c54611c759030906001600160a01b03168a611262565b600c5460095460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ce057600080fd5b505af1158015611cf4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d1991906121d5565b5050505b505050505b5050600f805462ff0000191690555050505050505050565b60008183611d5b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612343565b600080611d8e836109c3876001600160a01b031660009081526001602052604090205490565b1015611dd35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611df6908361184f565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546117fa9083611386565b600d546000906001600160a01b03163314801590611e4c5750600f5462010000900460ff16155b8015611e5a5750600f5460ff165b801561088d57505060105430600090815260016020526040902054101590565b6001600160a01b03821660009081526003602052604081205460ff1680611eb957506001600160a01b03821660009081526003602052604090205460ff165b15611ec657506000610851565b6000600e805480602002602001604051908101604052809291908181526020018280548015611f1e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f00575b5050505050905060005b8151811015611fd257818181518110611f5157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b03161480611fb05750818181518110611f9357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b0316145b15611fc057600192505050610851565b80611fca81612399565b915050611f28565b5050600f54610100900460ff169392505050565b600082611ff557506000610851565b60006120018385612363565b90508261200e8583612343565b1461094d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f4565b600060208284031215612076578081fd5b813561094d816123ca565b600060208284031215612092578081fd5b815161094d816123ca565b600080604083850312156120af578081fd5b82356120ba816123ca565b915060208301356120ca816123ca565b809150509250929050565b6000806000606084860312156120e9578081fd5b83356120f4816123ca565b92506020840135612104816123ca565b929592945050506040919091013590565b60008060408385031215612127578182fd5b8235612132816123ca565b915060208301356120ca816123df565b60008060408385031215612154578182fd5b823561215f816123ca565b946020939093013593505050565b60006020828403121561217e578081fd5b813561094d816123df565b60006020828403121561219a578081fd5b815161094d816123df565b6000602082840312156121b6578081fd5b5035919050565b6000602082840312156121ce578081fd5b5051919050565b6000806000606084860312156121e9578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612217578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561225f57858101830151858201604001528201612243565b818111156122705783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561230a5784516001600160a01b0316835293830193918301916001016122e5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561233e5761233e6123b4565b500190565b60008261235e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561237d5761237d6123b4565b500290565b600082821015612394576123946123b4565b500390565b60006000198214156123ad576123ad6123b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146111ec57600080fd5b80151581146111ec57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bee68ea7fb7ec9417814abb7a0db5e63722a70fb5d7d7392801a9c07d4aaf0ac64736f6c63430008040033

Deployed Bytecode Sourcemap

11061:13259:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22635:75;;;;;;;;;;;;;:::i;:::-;;13996:80;;;;;;;;;;-1:-1:-1;14068:5:0;;;;;;;;;;;;-1:-1:-1;;;14068:5:0;;;;13996:80;;;;;;;:::i;:::-;;;;;;;;23302:111;;;;;;;;;;-1:-1:-1;23302:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;23389:16:0;23365:4;23389:16;;;:11;:16;;;;;;;;;23302:111;;;;5038:14:1;;5031:22;5013:41;;5001:2;4986:18;23302:111:0;4968:92:1;14613:159:0;;;;;;;;;;-1:-1:-1;14613:159:0;;;;;:::i;:::-;;:::i;23030:143::-;;;;;;;;;;;;;:::i;:::-;;;9911:25:1;;;9899:2;9884:18;23030:143:0;9866:76:1;14172:88:0;;;;;;;;;;-1:-1:-1;11452:21:0;14172:88;;15068:364;;;;;;;;;;-1:-1:-1;15068:364:0;;;;;:::i;:::-;;:::i;22390:144::-;;;;;;;;;;;;;:::i;13910:80::-;;;;;;;;;;-1:-1:-1;13910:80:0;;11409:2;11330:36:1;;11318:2;11303:18;13910:80:0;11285:87:1;21826:275:0;;;;;;;;;;-1:-1:-1;21826:275:0;;;;;:::i;:::-;;:::i;23570:261::-;;;;;;;;;;-1:-1:-1;23570:261:0;;;;;:::i;:::-;;:::i;23924:355::-;;;;;;;;;;-1:-1:-1;23924:355:0;;;;;:::i;:::-;;:::i;21390:163::-;;;;;;;;;;-1:-1:-1;21390:163:0;;;;;:::i;:::-;;:::i;14780:116::-;;;;;;;;;;-1:-1:-1;14780:116:0;;;;;:::i;:::-;;:::i;12124:41::-;;;;;;;;;;-1:-1:-1;12124:41:0;;;;;;;;;;;11907:29;;;;;;;;;;-1:-1:-1;11907:29:0;;;;-1:-1:-1;;;;;11907:29:0;;;;;;-1:-1:-1;;;;;3938:32:1;;;3920:51;;3908:2;3893:18;11907:29:0;3875:102:1;20700:168:0;;;;;;;;;;-1:-1:-1;20700:168:0;;;;;:::i;:::-;;:::i;20876:376::-;;;;;;;;;;-1:-1:-1;20876:376:0;;;;;:::i;:::-;;:::i;13799:105::-;;;;;;;;;;-1:-1:-1;13799:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;13883:18:0;13865:7;13883:18;;;:9;:18;;;;;;;13799:105;8057:96;;;;;;;;;;;;;:::i;22899:123::-;;;;;;;;;;-1:-1:-1;22899:123:0;;;;;:::i;:::-;;:::i;12080:37::-;;;;;;;;;;-1:-1:-1;12080:37:0;;;;;;;;21260:122;;;;;;;;;;-1:-1:-1;21260:122:0;;;;;:::i;:::-;;:::i;7406:87::-;;;;;;;;;;-1:-1:-1;7452:7:0;7479:6;-1:-1:-1;;;;;7479:6:0;7406:87;;23181:113;;;;;;;;;;-1:-1:-1;23181:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;23269:17:0;23245:4;23269:17;;;:12;:17;;;;;;;;;23181:113;14082:84;;;;;;;;;;-1:-1:-1;14156:7:0;;;;;;;;;;;;-1:-1:-1;;;14156:7:0;;;;14082:84;;14904:156;;;;;;;;;;-1:-1:-1;14904:156:0;;;;;:::i;:::-;;:::i;21561:257::-;;;;;;;;;;-1:-1:-1;21561:257:0;;;;;:::i;:::-;;:::i;20591:101::-;;;;;;;;;;-1:-1:-1;20663:21:0;20591:101;;12049:22;;;;;;;;;;-1:-1:-1;12049:22:0;;;;;:::i;:::-;;:::i;22542:85::-;;;;;;;;;;-1:-1:-1;22542:85:0;;;;;:::i;:::-;;:::i;11864:36::-;;;;;;;;;;-1:-1:-1;11864:36:0;;;;-1:-1:-1;;;;;11864:36:0;;;18236:70;;;;;;;;;;;;;:::i;13660:133::-;;;;;;;;;;-1:-1:-1;13660:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13762:19:0;;;13744:7;13762:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13660:133;12253:59;;;;;;;;;;;;;;;;11943:35;;;;;;;;;;-1:-1:-1;11943:35:0;;;;-1:-1:-1;;;;;11943:35:0;;;22109:273;;;;;;;;;;-1:-1:-1;22109:273:0;;;;;:::i;:::-;;:::i;8308:194::-;;;;;;;;;;-1:-1:-1;8308:194:0;;;;;:::i;:::-;;:::i;22718:173::-;;;;;;;;;;-1:-1:-1;22718:173:0;;;;;:::i;:::-;;:::i;11987:24::-;;;;;;;;;;-1:-1:-1;11987:24:0;;;;-1:-1:-1;;;;;11987:24:0;;;22635:75;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;;;;;;;;;22691:5:::1;:11;;;;;-1:-1:-1::0;;;22691:11:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22691:11:0;;;;;-1:-1:-1;;;;;;22691:11:0::1;::::0;;;;;22635:75::o;14613:159::-;14688:4;14705:37;14714:10;14726:7;14735:6;14705:8;:37::i;:::-;-1:-1:-1;14760:4:0;14613:159;;;;;:::o;23030:143::-;23074:7;23101:64;23161:3;23101:55;23143:12;;23101:37;23125:12;;23101:19;23113:6;;23101:7;;:11;;:19;;;;:::i;:::-;:23;;:37::i;:55::-;:59;;:64::i;:::-;23094:71;;23030:143;:::o;15068:364::-;-1:-1:-1;;;;;15188:19:0;;15168:4;15188:19;;;:11;:19;;;;;;;;15208:10;15188:31;;;;;;;;-1:-1:-1;;15188:46:0;15185:180;;15284:69;;;;;;;;;;;-1:-1:-1;;;15284:69:0;;;;;;;;-1:-1:-1;;;;;15284:19:0;;-1:-1:-1;15284:19:0;;;:11;:19;;;;;15304:10;15284:31;;;;;;;;;;:69;;15320:6;;15284:35;:69::i;:::-;-1:-1:-1;;;;;15250:19:0;;;;;;:11;:19;;;;;;;;15270:10;15250:31;;;;;;;:103;15185:180;15384:40;15398:6;15406:9;15417:6;15384:13;:40::i;:::-;15377:47;;15068:364;;;;;;:::o;22390:144::-;13883:9;:18;;;;11173:42;22445:7;13883:18;;;;;22445:7;;22472:54;;:33;;11452:21;;22472:16;:33::i;:::-;:37;;:54::i;21826:275::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21926:21:::1;::::0;;-1:-1:-1;;;;;21958:33:0;;::::1;-1:-1:-1::0;;;;;;21958:33:0;::::1;::::0;::::1;::::0;;;21908:15:::1;22004:22:::0;;;:11:::1;:22;::::0;;;;;:29;;-1:-1:-1;;22004:29:0::1;21926:21:::0;22004:29:::1;::::0;;22051:42;21926:21;;;::::1;::::0;21958:33;21926:21;;22051:42:::1;::::0;21908:15;22051:42:::1;7697:1;21826:275:::0;:::o;23570:261::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;23656:21:::1;23647:6;:30;23639:88;;;::::0;-1:-1:-1;;;23639:88:0;;7686:2:1;23639:88:0::1;::::0;::::1;7668:21:1::0;7725:2;7705:18;;;7698:30;7764:34;7744:18;;;7737:62;-1:-1:-1;;;7815:18:1;;;7808:43;7868:19;;23639:88:0::1;7658:235:1::0;23639:88:0::1;23746:20;::::0;23738:46:::1;::::0;-1:-1:-1;;;;;23746:20:0;;::::1;::::0;23738:46;::::1;;;::::0;23777:6;;23746:20:::1;23738:46:::0;23746:20;23738:46;23777:6;23746:20;23738:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23800:23:0::1;::::0;9911:25:1;;;23800:23:0::1;::::0;9899:2:1;9884:18;23800:23:0::1;;;;;;;;23570:261:::0;:::o;23924:355::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24005:26:0;::::1;24026:4;24005:26;;23997:89;;;::::0;-1:-1:-1;;;23997:89:0;;7267:2:1;23997:89:0::1;::::0;::::1;7249:21:1::0;7306:2;7286:18;;;7279:30;7345:34;7325:18;;;7318:62;-1:-1:-1;;;7396:18:1;;;7389:48;7454:19;;23997:89:0::1;7239:240:1::0;23997:89:0::1;24116:42;::::0;-1:-1:-1;;;24116:42:0;;24152:4:::1;24116:42;::::0;::::1;3920:51:1::0;24097:16:0::1;::::0;-1:-1:-1;;;;;24116:27:0;::::1;::::0;::::1;::::0;3893:18:1;;24116:42:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24097:61:::0;-1:-1:-1;24173:12:0;;24169:103:::1;;24229:20;::::0;24202:58:::1;::::0;-1:-1:-1;;;24202:58:0;;-1:-1:-1;;;;;24229:20:0;;::::1;24202:58;::::0;::::1;4156:51:1::0;4223:18;;;4216:34;;;24202:26:0;;::::1;::::0;::::1;::::0;4129:18:1;;24202:58:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24169:103;7697:1;23924:355:::0;:::o;21390:163::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21466:18:::1;:29:::0;;-1:-1:-1;;21466:29:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21511:34:::1;::::0;5013:41:1;;;21511:34:0::1;::::0;5001:2:1;4986:18;21511:34:0::1;4968:92:1::0;14780:116:0;14835:4;14859:29;14867:7;-1:-1:-1;;14859:7:0;:29::i;20700:168::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20783:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;20783:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20829:31;;5013:41:1;;;20829:31:0::1;::::0;4986:18:1;20829:31:0::1;;;;;;;20700:168:::0;;:::o;20876:376::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21047:7:::1;:18:::0;;;21076:6:::1;:16:::0;;;21103:12:::1;:28:::0;;;21142:12:::1;:28:::0;;;21188:56:::1;::::0;;11109:25:1;;;11165:2;11150:18;;11143:34;;;21076:16:0;;21047:18;;21188:56:::1;::::0;11082:18:1;21188:56:0::1;;;;;;;20876:376:::0;;;;:::o;8057:96::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;8124:21:::1;8142:1;8124:9;:21::i;:::-;8057:96::o:0;22899:123::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22984:17:0;;;::::1;;::::0;;;:12:::1;:17;::::0;;;;:30;;-1:-1:-1;;22984:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22899:123::o;21260:122::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21342:20:::1;:32:::0;21260:122::o;14904:156::-;14984:4;15008:44;15022:10;15034:9;15045:6;15008:13;:44::i;21561:257::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21655:14:::1;::::0;;-1:-1:-1;;;;;21680:26:0;;::::1;-1:-1:-1::0;;;;;;21680:26:0;::::1;::::0;::::1;::::0;;;21637:15:::1;21727:22:::0;;;:11:::1;:22;::::0;;;;;:29;;-1:-1:-1;;21727:29:0::1;21655:14:::0;21727:29:::1;::::0;;21774:36;21655:14;;;::::1;::::0;21680:26;21655:14;;21774:36:::1;::::0;21637:15;21774:36:::1;7697:1;21561:257:::0;:::o;12049:22::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12049:22:0;;-1:-1:-1;12049:22:0;:::o;22542:85::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;22603:5:::1;:16:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;22603:16:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22603:16:0::1;-1:-1:-1::0;;;;;22603:16:0;;;::::1;::::0;;;::::1;::::0;;22542:85::o;18236:70::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;18285:13:::1;:11;:13::i;22109:273::-:0;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;22209:20:::1;::::0;;-1:-1:-1;;;;;22240:32:0;;::::1;-1:-1:-1::0;;;;;;22240:32:0;::::1;::::0;::::1;::::0;;;22191:15:::1;22285:22:::0;;;:11:::1;:22;::::0;;;;;:29;;-1:-1:-1;;22285:29:0::1;22209:20:::0;22285:29:::1;::::0;;22332:42;22209:20;;;::::1;::::0;22240:32;22209:20;;22332:42:::1;::::0;22191:15;22332:42:::1;7697:1;22109:273:::0;:::o;8308:194::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8399:22:0;::::1;8391:73;;;::::0;-1:-1:-1;;;8391:73:0;;6101:2:1;8391:73:0::1;::::0;::::1;6083:21:1::0;6140:2;6120:18;;;6113:30;6179:34;6159:18;;;6152:62;-1:-1:-1;;;6230:18:1;;;6223:36;6276:19;;8391:73:0::1;6073:228:1::0;8391:73:0::1;8475:19;8485:8;8475:9;:19::i;:::-;8308:194:::0;:::o;22718:173::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;22797:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;22797:32:0;;::::1;;::::0;;22847:36:::1;::::0;::::1;::::0;::::1;::::0;22821:8;5038:14:1;5031:22;5013:41;;5001:2;4986:18;;4968:92;14268:337:0;-1:-1:-1;;;;;14361:19:0;;14353:68;;;;-1:-1:-1;;;14353:68:0;;9212:2:1;14353:68:0;;;9194:21:1;9251:2;9231:18;;;9224:30;9290:34;9270:18;;;9263:62;-1:-1:-1;;;9341:18:1;;;9334:34;9385:19;;14353:68:0;9184:226:1;14353:68:0;-1:-1:-1;;;;;14440:21:0;;14432:68;;;;-1:-1:-1;;;14432:68:0;;6508:2:1;14432:68:0;;;6490:21:1;6547:2;6527:18;;;6520:30;6586:34;6566:18;;;6559:62;-1:-1:-1;;;6637:18:1;;;6630:32;6679:19;;14432:68:0;6480:224:1;14432:68:0;-1:-1:-1;;;;;14513:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14565:32;;9911:25:1;;;14565:32:0;;9884:18:1;14565:32:0;;;;;;;14268:337;;;:::o;5592:181::-;5650:7;;5682:5;5686:1;5682;:5;:::i;:::-;5670:17;;5711:1;5706;:6;;5698:46;;;;-1:-1:-1;;;5698:46:0;;6911:2:1;5698:46:0;;;6893:21:1;6950:2;6930:18;;;6923:30;6989:29;6969:18;;;6962:57;7036:18;;5698:46:0;6883:177:1;6375:132:0;6433:7;6460:39;6464:1;6467;6460:39;;;;;;;;;;;;;;;;;:3;:39::i;5921:192::-;6007:7;6043:12;6035:6;;;;6027:29;;;;-1:-1:-1;;;6027:29:0;;;;;;;;:::i;:::-;-1:-1:-1;6067:9:0;6079:5;6083:1;6079;:5;:::i;:::-;6067:17;5921:192;-1:-1:-1;;;;;5921:192:0:o;15440:1747::-;-1:-1:-1;;;;;15558:23:0;;15532:4;15558:23;;;:12;:23;;;;;;;;15557:24;15549:58;;;;-1:-1:-1;;;15549:58:0;;9617:2:1;15549:58:0;;;9599:21:1;9656:2;9636:18;;;9629:30;-1:-1:-1;;;9675:18:1;;;9668:51;9736:18;;15549:58:0;9589:171:1;15549:58:0;15623:6;;;;;;;15620:63;;;15639:41;15654:6;15662:9;15673:6;15639:14;:41::i;:::-;15632:48;;;;15620:63;15698:19;:17;:19::i;:::-;15695:42;;;15721:13;:11;:13::i;:::-;-1:-1:-1;;;;;15757:17:0;;15790:1;15757:17;;;:9;:17;;;;;;:29;;15779:6;15757:21;:29::i;:::-;:34;;15749:67;;;;-1:-1:-1;;;15749:67:0;;8863:2:1;15749:67:0;;;8845:21:1;8902:2;8882:18;;;8875:30;-1:-1:-1;;;8921:18:1;;;8914:50;8981:18;;15749:67:0;8835:170:1;15749:67:0;-1:-1:-1;;;;;15847:17:0;;;;;;:9;:17;;;;;;:29;;15869:6;15847:21;:29::i;:::-;-1:-1:-1;;;;;15827:17:0;;;;;;:9;:17;;;;;:49;15893:32;15837:6;15915:9;15893:13;:32::i;:::-;15889:1267;;;15942:18;15963:39;11850:5;15963:19;15974:7;;15963:6;:10;;:19;;;;:::i;:39::-;15942:60;;16017:17;16037:38;11850:5;16037:18;16048:6;;16037;:10;;:18;;;;:::i;:38::-;16017:58;;16090:23;16116:44;11850:5;16116:24;16127:12;;16116:6;:10;;:24;;;;:::i;:44::-;16090:70;;16175:23;16201:44;11850:5;16201:24;16212:12;;16201:6;:10;;:24;;;;:::i;:44::-;16175:70;-1:-1:-1;16262:24:0;16175:70;16289:27;16301:15;16289:9;:27;:::i;:::-;:45;;;;:::i;:::-;16262:72;-1:-1:-1;16368:22:0;16393:29;16262:72;16393:10;:29;:::i;:::-;16507:4;16489:24;;;;:9;:24;;;;;;16368:54;;-1:-1:-1;16489:43:0;;16516:16;;16489:43;:::i;:::-;16480:4;16462:24;;;;:9;:24;;;;;;;:70;;;;16584:49;;-1:-1:-1;;;;;16584:49:0;;;-1:-1:-1;;;;;;;;;;;16584:49:0;;;16616:16;9911:25:1;;9899:2;9884:18;;9866:76;16584:49:0;;;;;;;;11173:42;16668:15;;:9;:15;;;;:31;;16688:10;16668:19;:31::i;:::-;11173:42;16650:15;;;;:9;:15;;;:49;;;;:15;16759:34;-1:-1:-1;;;;;16759:34:0;;;-1:-1:-1;;;;;;;;;;;16759:34:0;;;16782:10;9911:25:1;;9899:2;9884:18;;9866:76;16759:34:0;;;;;;;;16812:22;16837:23;16846:14;16837:6;:23;:::i;:::-;-1:-1:-1;;;;;16898:20:0;;;;;;:9;:20;;;;;;16812:48;;-1:-1:-1;16898:40:0;;16812:48;16898:24;:40::i;:::-;-1:-1:-1;;;;;16875:20:0;;;;;;;:9;:20;;;;;;;:63;;;;16958:43;;;;;;-1:-1:-1;;;;;;;;;;;16958:43:0;;;16986:14;9911:25:1;;9899:2;9884:18;;9866:76;16958:43:0;;;;;;;;15889:1267;;;;;;;;;;-1:-1:-1;;;;;17057:20:0;;;;;;:9;:20;;;;;;:32;;17082:6;17057:24;:32::i;:::-;-1:-1:-1;;;;;17034:20:0;;;;;;;:9;:20;;;;;;;:55;;;;17109:35;;;;;;-1:-1:-1;;;;;;;;;;;17109:35:0;;;17137:6;9911:25:1;;9899:2;9884:18;;9866:76;17109:35:0;;;;;;;;15889:1267;-1:-1:-1;17175:4:0;15440:1747;;;;;:::o;5779:136::-;5837:7;5864:43;5868:1;5871;5864:43;;;;;;;;;;;;;;;;;:3;:43::i;8510:173::-;8566:16;8585:6;;-1:-1:-1;;;;;8602:17:0;;;-1:-1:-1;;;;;;8602:17:0;;;;;;8635:40;;8585:6;;;;;;;8635:40;;8566:16;8635:40;8510:173;;:::o;18314:2269::-;12212:6;:13;;-1:-1:-1;;12212:13:0;;;;;18464:4:::1;12212:13:::0;18446:24;;;12221:4;18446:24:::1;::::0;;;;;18521:12:::1;::::0;18506::::1;::::0;18497:6:::1;::::0;18390:21:::1;::::0;12212:13;18521:12;18497:21:::1;::::0;::::1;:::i;:::-;:36;;;;:::i;:::-;18481:52;;18546:15;18564:34;18592:5;18564:23;18580:6;;18564:11;:15;;:23;;;;:::i;:34::-;18546:52;;18609:21;18633:40;18667:5;18633:29;18649:12;;18633:11;:15;;:29;;;;:::i;:40::-;18609:64;;18684:21;18708:40;18742:5;18708:29;18724:12;;18708:11;:15;;:29;;;;:::i;:40::-;18684:64:::0;-1:-1:-1;18761:23:0::1;18787:20;:13:::0;18805:1:::1;18787:17;:20::i;:::-;18761:46:::0;-1:-1:-1;18820:20:0::1;18871:13:::0;18843:25:::1;18761:46:::0;18843:7;:25:::1;:::i;:::-;:41;;;;:::i;:::-;18921:16;::::0;;18935:1:::1;18921:16:::0;;;;;::::1;::::0;;18820:64;;-1:-1:-1;18897:21:0::1;::::0;18921:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18921:16:0::1;18897:40;;18966:4;18948;18953:1;18948:7;;;;;;-1:-1:-1::0;;;18948:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18948:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18992:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18992:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;18948:7;;18992:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18982:4;18987:1;18982:7;;;;;;-1:-1:-1::0;;;18982:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18982:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;19050:6:::1;::::0;19018:54:::1;::::0;19035:4:::1;::::0;19050:6:::1;19059:12:::0;19018:8:::1;:54::i;:::-;19085:6;::::0;:188:::1;::::0;-1:-1:-1;;;19085:188:0;;-1:-1:-1;;;;;19085:6:0;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;19157:12;;19085:6:::1;::::0;19200:4;;19227::::1;::::0;19247:15:::1;::::0;19085:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19286:23;19312:40;19338:13;19312:21;:25;;:40;;;;:::i;:::-;19286:66:::0;-1:-1:-1;19369:19:0;;19365:1211:::1;;19449:12;::::0;19405:16:::1;::::0;19449:19:::1;::::0;19466:1:::1;19449:16;:19::i;:::-;19434:12;;19425:6;;:21;;;;:::i;:::-;:43;;;;:::i;:::-;19405:63;;19485:30;19518:47;19556:8;19518:33;19538:12;;19518:15;:19;;:33;;;;:::i;:47::-;19485:80;;19601:24;19628:41;19660:8;19628:27;19648:6;;19628:15;:19;;:27;;;;:::i;:41::-;19601:68;;19699:20;19722:54;19767:8;19722:40;19742:19;19759:1;19742:12;;:16;;:19;;;;:::i;:::-;19722:15:::0;;:19:::1;:40::i;:54::-;19699:77:::0;-1:-1:-1;19817:26:0;;19813:172:::1;;19915:20;::::0;19907:62:::1;::::0;-1:-1:-1;;;;;19915:20:0;;::::1;::::0;19907:62;::::1;;;::::0;19946:22;;19915:20:::1;19907:62:::0;19915:20;19907:62;19946:22;19915:20;19907:62;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19813:172;20005:20:::0;;20001:148:::1;;20091:14;::::0;20083:50:::1;::::0;-1:-1:-1;;;;;20091:14:0;;::::1;::::0;20083:50;::::1;;;::::0;20116:16;;20091:14:::1;20083:50:::0;20091:14;20083:50;20116:16;20091:14;20083:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20001:148;20169:16:::0;;20165:400:::1;;20237:6;::::0;20205:57:::1;::::0;20222:4:::1;::::0;-1:-1:-1;;;;;20237:6:0::1;20246:15:::0;20205:8:::1;:57::i;:::-;20281:6;::::0;20471:21:::1;::::0;20281:268:::1;::::0;-1:-1:-1;;;20281:268:0;;20357:4:::1;20281:268;::::0;::::1;4602:34:1::0;4652:18;;;4645:34;;;20281:6:0::1;4695:18:1::0;;;4688:34;;;4738:18;;;4731:34;-1:-1:-1;;;;;20471:21:0;;::::1;4781:19:1::0;;;4774:44;20515:15:0::1;4834:19:1::0;;;4827:35;20281:6:0;::::1;::::0;:22:::1;::::0;20312:12;;4536:19:1;;20281:268:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20165:400;19365:1211;;;;;-1:-1:-1::0;;12230:6:0;:14;;-1:-1:-1;;12230:14:0;;;-1:-1:-1;;;;;;;;18314:2269:0:o;6513:345::-;6599:7;6701:12;6694:5;6686:28;;;;-1:-1:-1;;;6686:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6725:9:0;6737:5;6741:1;6737;:5;:::i;17195:384::-;17288:4;17346:1;17313:29;17335:6;17313:17;17323:6;-1:-1:-1;;;;;13883:18:0;13865:7;13883:18;;;:9;:18;;;;;;;13799:105;17313:29;:34;;17305:67;;;;-1:-1:-1;;;17305:67:0;;8863:2:1;17305:67:0;;;8845:21:1;8902:2;8882:18;;;8875:30;-1:-1:-1;;;8921:18:1;;;8914:50;8981:18;;17305:67:0;8835:170:1;17305:67:0;-1:-1:-1;;;;;17403:17:0;;;;;;:9;:17;;;;;;:29;;17425:6;17403:21;:29::i;:::-;-1:-1:-1;;;;;17383:17:0;;;;;;;:9;:17;;;;;;:49;;;;17466:20;;;;;;;:32;;17491:6;17466:24;:32::i;18002:226::-;18092:16;;18054:4;;-1:-1:-1;;;;;18092:16:0;18078:10;:30;;;;:50;;-1:-1:-1;18122:6:0;;;;;;;18121:7;18078:50;:81;;;;-1:-1:-1;18141:18:0;;;;18078:81;:142;;;;-1:-1:-1;;18200:20:0;;18190:4;18172:24;;;;:9;:24;;;;;;:48;;;18002:226::o;17587:407::-;-1:-1:-1;;;;;17689:19:0;;17668:4;17689:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;17712:22:0;;;;;;:11;:22;;;;;;;;17689:45;17685:63;;;-1:-1:-1;17743:5:0;17736:12;;17685:63;17761:25;17789:5;17761:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17761:33:0;;;;;;;;;;;;;;;;;;;;;;;17812:9;17807:139;17831:8;:15;17827:1;:19;17807:139;;;17882:8;17891:1;17882:11;;;;;;-1:-1:-1;;;17882:11:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17872:21:0;:6;-1:-1:-1;;;;;17872:21:0;;:49;;;;17910:8;17919:1;17910:11;;;;;;-1:-1:-1;;;17910:11:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17897:24:0;:9;-1:-1:-1;;;;;17897:24:0;;17872:49;17868:66;;;17930:4;17923:11;;;;;;17868:66;17848:3;;;;:::i;:::-;;;;17807:139;;;-1:-1:-1;;17965:21:0;;;;;;;;17587:407;-1:-1:-1;;;17587:407:0:o;6119:250::-;6177:7;6201:6;6197:47;;-1:-1:-1;6231:1:0;6224:8;;6197:47;6256:9;6268:5;6272:1;6268;:5;:::i;:::-;6256:17;-1:-1:-1;6301:1:0;6292:5;6296:1;6256:17;6292:5;:::i;:::-;:10;6284:56;;;;-1:-1:-1;;;6284:56:0;;8100:2:1;6284:56:0;;;8082:21:1;8139:2;8119:18;;;8112:30;8178:34;8158:18;;;8151:62;-1:-1:-1;;;8229:18:1;;;8222:31;8270:19;;6284:56:0;8072:223:1;14:257;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:1;1386:18;;;;1373:32;;1049:362::o;1416:392::-;1481:6;1489;1542:2;1530:9;1521:7;1517:23;1513:32;1510:2;;;1563:6;1555;1548:22;1510:2;1607:9;1594:23;1626:31;1651:5;1626:31;:::i;:::-;1676:5;-1:-1:-1;1733:2:1;1718:18;;1705:32;1746:30;1705:32;1746:30;:::i;1813:325::-;1881:6;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:2;;;1963:6;1955;1948:22;1910:2;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;2128:2;2113:18;;;;2100:32;;-1:-1:-1;;;1900:238:1:o;2143:251::-;2199:6;2252:2;2240:9;2231:7;2227:23;2223:32;2220:2;;;2273:6;2265;2258:22;2220:2;2317:9;2304:23;2336:28;2358:5;2336:28;:::i;2399:255::-;2466:6;2519:2;2507:9;2498:7;2494:23;2490:32;2487:2;;;2540:6;2532;2525:22;2487:2;2577:9;2571:16;2596:28;2618:5;2596:28;:::i;2659:190::-;2718:6;2771:2;2759:9;2750:7;2746:23;2742:32;2739:2;;;2792:6;2784;2777:22;2739:2;-1:-1:-1;2820:23:1;;2729:120;-1:-1:-1;2729:120:1:o;2854:194::-;2924:6;2977:2;2965:9;2956:7;2952:23;2948:32;2945:2;;;2998:6;2990;2983:22;2945:2;-1:-1:-1;3026:16:1;;2935:113;-1:-1:-1;2935:113:1:o;3053:316::-;3141:6;3149;3157;3210:2;3198:9;3189:7;3185:23;3181:32;3178:2;;;3231:6;3223;3216:22;3178:2;3265:9;3259:16;3249:26;;3315:2;3304:9;3300:18;3294:25;3284:35;;3359:2;3348:9;3344:18;3338:25;3328:35;;3168:201;;;;;:::o;3374:395::-;3460:6;3468;3476;3484;3537:3;3525:9;3516:7;3512:23;3508:33;3505:2;;;3559:6;3551;3544:22;3505:2;-1:-1:-1;;3587:23:1;;;3657:2;3642:18;;3629:32;;-1:-1:-1;3708:2:1;3693:18;;3680:32;;3759:2;3744:18;3731:32;;-1:-1:-1;3495:274:1;-1:-1:-1;3495:274:1:o;5291:603::-;5403:4;5432:2;5461;5450:9;5443:21;5493:6;5487:13;5536:6;5531:2;5520:9;5516:18;5509:34;5561:4;5574:140;5588:6;5585:1;5582:13;5574:140;;;5683:14;;;5679:23;;5673:30;5649:17;;;5668:2;5645:26;5638:66;5603:10;;5574:140;;;5732:6;5729:1;5726:13;5723:2;;;5802:4;5797:2;5788:6;5777:9;5773:22;5769:31;5762:45;5723:2;-1:-1:-1;5878:2:1;5857:15;-1:-1:-1;;5853:29:1;5838:45;;;;5885:2;5834:54;;5412:482;-1:-1:-1;;;5412:482:1:o;8300:356::-;8502:2;8484:21;;;8521:18;;;8514:30;8580:34;8575:2;8560:18;;8553:62;8647:2;8632:18;;8474:182::o;9947:983::-;10209:4;10257:3;10246:9;10242:19;10288:6;10277:9;10270:25;10314:2;10352:6;10347:2;10336:9;10332:18;10325:34;10395:3;10390:2;10379:9;10375:18;10368:31;10419:6;10454;10448:13;10485:6;10477;10470:22;10523:3;10512:9;10508:19;10501:26;;10562:2;10554:6;10550:15;10536:29;;10583:4;10596:195;10610:6;10607:1;10604:13;10596:195;;;10675:13;;-1:-1:-1;;;;;10671:39:1;10659:52;;10766:15;;;;10731:12;;;;10707:1;10625:9;10596:195;;;-1:-1:-1;;;;;;;10847:32:1;;;;10842:2;10827:18;;10820:60;-1:-1:-1;;;10911:3:1;10896:19;10889:35;10808:3;10218:712;-1:-1:-1;;;10218:712:1:o;11377:128::-;11417:3;11448:1;11444:6;11441:1;11438:13;11435:2;;;11454:18;;:::i;:::-;-1:-1:-1;11490:9:1;;11425:80::o;11510:217::-;11550:1;11576;11566:2;;-1:-1:-1;;;11601:31:1;;11655:4;11652:1;11645:15;11683:4;11608:1;11673:15;11566:2;-1:-1:-1;11712:9:1;;11556:171::o;11732:168::-;11772:7;11838:1;11834;11830:6;11826:14;11823:1;11820:21;11815:1;11808:9;11801:17;11797:45;11794:2;;;11845:18;;:::i;:::-;-1:-1:-1;11885:9:1;;11784:116::o;11905:125::-;11945:4;11973:1;11970;11967:8;11964:2;;;11978:18;;:::i;:::-;-1:-1:-1;12015:9:1;;11954:76::o;12035:135::-;12074:3;-1:-1:-1;;12095:17:1;;12092:2;;;12115:18;;:::i;:::-;-1:-1:-1;12162:1:1;12151:13;;12082:88::o;12175:127::-;12236:10;12231:3;12227:20;12224:1;12217:31;12267:4;12264:1;12257:15;12291:4;12288:1;12281:15;12307:131;-1:-1:-1;;;;;12382:31:1;;12372:42;;12362:2;;12428:1;12425;12418:12;12443:118;12529:5;12522:13;12515:21;12508:5;12505:32;12495:2;;12551:1;12548;12541:12

Swarm Source

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