ETH Price: $3,383.89 (-1.83%)
Gas: 1 Gwei

Token

CURE Chain (CHAIN)
 

Overview

Max Total Supply

100,000,000 CHAIN

Holders

82 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Coinbase 4
Balance
189,750 CHAIN

Value
$0.00
0x3cd751e6b0078be393132286c442345e5dc49699
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A unique proprietary system that allows individuals to opt into having their anonymous healthcare data presented as dynamic NFTs they can earn royalties on.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CureChain

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// File: CURE_Chain_flat.sol


// File: contracts/CURE_Chain.sol

//SPDX-License-Identifier: UNLICENSED 

/**
 * 
 *  CURE Chain V1.0 | A Global Healthcare Revolution.
 *
 *  Modernizing scientific research through the power of blockchain technology.
 * 
 *  Website   - http://curechain.info
 *  Telegram  - https://t.me/CURE_Ecosystem
 *  Twitter   - https://twitter.com/CURE_Ecosystem
 *  Founder   - https://www.linkedin.com/in/jacobbeckley
 *  Email     - [email protected]
 * 
 **/

pragma solidity ^0.8.13;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

}  

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

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

contract CureChain is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isTimelockExempt;
    mapping (address => bool) private _bots;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100 * 10**6 * 10**9; // 100,000,000 Tokens
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    string private constant _name = unicode"CURE Chain";
    string private constant _symbol = unicode"CHAIN";
    
    uint8 private constant _decimals = 9;
    uint256 private minContractTokensToSwap = 25000 * 10**9; // 25K
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 10;
    uint256 private _liquidityFeePercentage = 0;
    uint256 private _maxWalletPercentage = 3;
    uint256 private _launchBlock = 0;
    uint256 private _maxBuyAmount = 5 * 10**6 * 10**9;  // 5%
    uint256 private _maxSellAmount = 1 * 10**6 * 10**9; // 1%

    uint256 private _baseFee = 10;

    uint256 private _moderateBuyImpact = 1;
    uint256 private _highBuyImpact = 3;
    uint256 private _extremeBuyImpact = 5;

    uint256 private _moderateBuyFee = 20;   // 2% fee discount
    uint256 private _highBuyFee = 40;       // 4% fee discount
    uint256 private _extremeBuyFee = 60;    // 6% fee discount

    uint256 private _moderateSellImpact = 1;
    uint256 private _highSellImpact = 3;
    uint256 private _extremeSellImpact = 5;

    uint256 private _moderateSellFee = 50;  // 5% fee increase
    uint256 private _highSellFee = 120;     // 12% fee increase
    uint256 private _extremeSellFee = 200;  // 20% fee increase

    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;

    address payable private _FeeAddress;
    address payable private _marketingWalletAddress;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    
    bool private _tradingOpen = false;
    bool private _swapAll = false;
    bool private _takeFeeFromTransfer = true;
    bool private _inSwap = false;
    bool private _noTaxMode = false;
    bool private _getFeeOnBuy = true;
    bool private _getFeeOnSell = true;

    bool private _cooldownEnabled = false;
    uint private _cooldownTimerInterval = 3600; // 1 hour cooldown    
    mapping (address => uint) private _cooldownTimer;

    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool feeSent, bool marketingSent);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }
        constructor (address payable FeeAddress, address payable marketingWalletAddress) {
        _FeeAddress = FeeAddress;
        _marketingWalletAddress = marketingWalletAddress;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[FeeAddress] = true;
        _isExcludedFromFee[marketingWalletAddress] = true;

        _isTimelockExempt[owner()] = true;
        _isTimelockExempt[address(this)] = true;
        _isTimelockExempt[FeeAddress] = true;
        _isTimelockExempt[marketingWalletAddress] = true;
        _isTimelockExempt[0x000000000000000000000000000000000000dEaD] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        automatedMarketMakerPairs[uniswapV2Pair] = true;

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

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner()) {
            
            require(!_bots[from] && !_bots[to]);

            if (block.number <= _launchBlock + 4) {
                if (from != uniswapV2Pair && from != address(uniswapV2Router)) {
                    _bots[from] = true;
                } else if (to != uniswapV2Pair && to != address(uniswapV2Router)) {
                    _bots[to] = true;
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));

            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(_tradingOpen, "Trading not yet enabled");                
                
                if(_cooldownEnabled && !_isTimelockExempt[to]){
                    require(_cooldownTimer[to] < block.timestamp, "Please wait for cooldown between buys");
                    _cooldownTimer[to] = block.timestamp + _cooldownTimerInterval;
                }

                if (amount >= balanceOf(uniswapV2Pair).mul(_extremeBuyImpact).div(100)) {
                    _teamFee = _baseFee - _baseFee.mul(_extremeBuyFee).div(100);
                } else if (amount >= balanceOf(uniswapV2Pair).mul(_highBuyImpact).div(100)) {
                    _teamFee = _baseFee - _baseFee.mul(_highBuyFee).div(100);
                } else if (amount >= balanceOf(uniswapV2Pair).mul(_moderateBuyImpact).div(100)) {
                    _teamFee = _baseFee - _baseFee.mul(_moderateBuyFee).div(100);
                } else {
                    _teamFee = _baseFee;
                }
                
                uint walletBalance = balanceOf(address(to));
                require(amount.add(walletBalance) <= _tTotal.mul(_maxWalletPercentage).div(100), "Amount exceeds max wallet holdings");
                if (_maxBuyAmount > 0) {
                    require(amount <= _maxBuyAmount, "Amount exceeds max buy");
                }

                if(_getFeeOnBuy && contractTokenBalance > minContractTokensToSwap) {
                    if(!_swapAll) {
                        contractTokenBalance = minContractTokensToSwap;
                    }

                    if (_liquidityFeePercentage > 0) {
                        swapAndLiquify(contractTokenBalance);
                    } else {
                        swapWithoutLiquify(contractTokenBalance);
                    }     
                }
            }

            if(!_inSwap && from != uniswapV2Pair && _tradingOpen) {
                
                if(_cooldownEnabled && !_isTimelockExempt[from]){
                    require(_cooldownTimer[from] < block.timestamp, "Please wait for cooldown between sells");
                    _cooldownTimer[from] = block.timestamp + _cooldownTimerInterval;
                }

                if (amount >= balanceOf(uniswapV2Pair).mul(_extremeSellImpact).div(100)) {
                    _teamFee = _baseFee + _baseFee.mul(_extremeSellFee).div(100);
                } else if (amount >= balanceOf(uniswapV2Pair).mul(_highSellImpact).div(100)) {
                    _teamFee = _baseFee + _baseFee.mul(_highSellFee).div(100);
                } else if (amount >= balanceOf(uniswapV2Pair).mul(_moderateSellImpact).div(100)) {
                    _teamFee = _baseFee + _baseFee.mul(_moderateSellFee).div(100);
                } else {
                    _teamFee = _baseFee;
                }

                if (_maxSellAmount > 0) {
                    require(amount <= _maxSellAmount, "Amount exceeds max sell");
                }

                if(_getFeeOnSell && contractTokenBalance > minContractTokensToSwap) {
                    if(!_swapAll) {
                        contractTokenBalance = minContractTokensToSwap;
                    }

                    if (_liquidityFeePercentage > 0) {
                        swapAndLiquify(contractTokenBalance);
                    } else {
                        swapWithoutLiquify(contractTokenBalance);
                    }
                }
            }
        }
        bool takeFee = true;

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

        if(!_takeFeeFromTransfer && !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

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

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

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 teamFeePercentage = 100 - _liquidityFeePercentage;
        uint256 amtForLiquidity = contractTokenBalance.mul(_liquidityFeePercentage).div(100);
        uint256 halfLiq = amtForLiquidity.div(2);

        uint256 amountToSwapForETH = contractTokenBalance.sub(halfLiq);
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 feeBalance = ethBalance.mul(teamFeePercentage).div(100);
        sendETHToFee(feeBalance);

        uint256 ethForLiquidity = ethBalance - feeBalance;

        if (halfLiq > 0 && ethForLiquidity > 0) {
            // add liquidity
            addLiquidity(halfLiq, ethForLiquidity);

            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, amtForLiquidity);
        }
    }

    function swapWithoutLiquify(uint256 contractTokenBalance) private lockTheSwap {
        
        swapTokensForEth(contractTokenBalance);

        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }

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

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

    function sendETHToFee(uint256 amount) private {
        (bool fee, ) = _FeeAddress.call{value: amount.mul(2).div(10)}("");
        (bool marketing, ) = _marketingWalletAddress.call{value: amount.mul(8).div(10)}("");

        emit Response(fee, marketing);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _transferStandard(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function openTrading() external onlyOwner() {
        require(!_tradingOpen,"trading is already open");        
        _tradingOpen = true;
        _launchBlock = block.number;
    }
    
    function setMarketingWallet (address payable marketingWalletAddress) external onlyOwner() {
        _isExcludedFromFee[_marketingWalletAddress] = false;
        _marketingWalletAddress = marketingWalletAddress;
        _isExcludedFromFee[marketingWalletAddress] = true;
    }

    function setFeeAddress (address payable feeAddress) external onlyOwner() {
        _isExcludedFromFee[_FeeAddress] = false;
        _FeeAddress = feeAddress;
        _isExcludedFromFee[feeAddress] = true;
    }

    function excludeFromFee (address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = true;
    }
    
    function includeToFee (address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = false;
    }

    function setTakeFeeFromTransfer(bool onoff) external onlyOwner() {
        _takeFeeFromTransfer = onoff;
    }
    
    function setBaseFee(uint256 fee) external onlyOwner() {
        require(fee <= 10, "Base fee must be less than 10");
        _baseFee = fee;
    }
        
    function setTaxFee(uint256 tax) external onlyOwner() {
        require(tax <= 5, "tax must be less than 5");
        _taxFee = tax;
    }

    function updateDynamicFees(uint256 moderateBuyImpact, uint256 highBuyImpact, uint256 extremeBuyImpact) public onlyOwner {
        _moderateBuyImpact = moderateBuyImpact;
        _highBuyImpact = highBuyImpact;
        _extremeBuyImpact = extremeBuyImpact;
    }

    function updateBuyFees(uint256 moderateBuyFee, uint256 highBuyFee, uint256 extremeBuyFee) public onlyOwner {
        _moderateBuyFee = moderateBuyFee;
        _highBuyFee = highBuyFee;
        _extremeBuyFee = extremeBuyFee;
    }

    function updateDynamicDump(uint256 moderateSellImpact, uint256 highSellImpact, uint256 extremeSellImpact) public onlyOwner {
        _moderateSellImpact = moderateSellImpact;
        _highSellImpact = highSellImpact;
        _extremeSellImpact = extremeSellImpact;
    }

    function updateSellFees(uint256 moderateSellFee, uint256 highSellFee, uint256 extremeSellFee) public onlyOwner {
        _moderateSellFee = moderateSellFee;
        _highSellFee = highSellFee;
        _extremeSellFee = extremeSellFee;
    }

    function setNoTaxMode(bool onoff) external onlyOwner() {
        _noTaxMode = onoff;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
		require(_liquidityFeePercentage >= 0 && _liquidityFeePercentage <= 100, "liquidity fee percentage must be between 0 to 100");
        _liquidityFeePercentage = liquidityFee;
    }

    function setMinContractTokensToSwap(uint256 numToken) external onlyOwner() {
        minContractTokensToSwap = numToken;
    }

    function setMaxWalletPercentage(uint256 percentage) external onlyOwner() {
        require(percentage >= 0 && percentage <= 100, "max wallet percentage must be between 0 to 100");
        _maxWalletPercentage = percentage;
    }

    function setMaxBuy(uint256 amt) external onlyOwner() {
        _maxBuyAmount = amt;
    }

    function setMaxSell(uint256 amt) external onlyOwner() {
        _maxSellAmount = amt;
    }

    function setSwapAll(bool onoff) external onlyOwner() {
        _swapAll = onoff;
    }
    
    function setBots(address[] calldata bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            if (bots_[i] != uniswapV2Pair && bots_[i] != address(uniswapV2Router)) {
                _bots[bots_[i]] = true;
            }
        }
    }
    
    function delBot(address notbot) external onlyOwner {
        _bots[notbot] = false;
    }
    
    function isBot(address ad) public view returns (bool) {
        return _bots[ad];
    }
   
    function manualswap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        manualSwapTokensForEth(contractBalance);
    }
    
    function manualsend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }

    // enable cooldown between trades
    function changeCooldownSettings(bool newStatus, uint newInterval) external onlyOwner {
        require(newInterval <= 10 minutes, "Cooldown exceeds the limit");
        _cooldownEnabled = newStatus;
        _cooldownTimerInterval = newInterval;
    }

    function changeGetFeeOnBuy(bool status) external onlyOwner {
        _getFeeOnBuy = status;
    }

     function changeGetFeeOnSell(bool status) external onlyOwner {
        _getFeeOnSell = status;
    }

    function setIsTimelockExempt(address holder, bool exempt) external onlyOwner {
        _isTimelockExempt[holder] = exempt;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner() {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"feeSent","type":"bool"},{"indexed":false,"internalType":"bool","name":"marketingSent","type":"bool"}],"name":"Response","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"},{"internalType":"uint256","name":"newInterval","type":"uint256"}],"name":"changeCooldownSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeGetFeeOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeGetFeeOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBaseFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setMaxWalletPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setNoTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTakeFeeFromTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","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":"uint256","name":"moderateBuyFee","type":"uint256"},{"internalType":"uint256","name":"highBuyFee","type":"uint256"},{"internalType":"uint256","name":"extremeBuyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"moderateSellImpact","type":"uint256"},{"internalType":"uint256","name":"highSellImpact","type":"uint256"},{"internalType":"uint256","name":"extremeSellImpact","type":"uint256"}],"name":"updateDynamicDump","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"moderateBuyImpact","type":"uint256"},{"internalType":"uint256","name":"highBuyImpact","type":"uint256"},{"internalType":"uint256","name":"extremeBuyImpact","type":"uint256"}],"name":"updateDynamicFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"moderateSellFee","type":"uint256"},{"internalType":"uint256","name":"highSellFee","type":"uint256"},{"internalType":"uint256","name":"extremeSellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a67016345785d8a000060001962000504565b620000289060001962000527565b6008556516bcc41e9000600a9081556000600b819055600c829055600d8190556003600e819055600f8290556611c37937e0800060105566038d7ea4c680006011556012839055600160138190556014828155600560158190556016919091556028601755603c601855601991909155601a91909155601b556032601c556078601d5560c8601e55601f5560205560248054600160a01b600160e01b03191664010100000160b01b179055610e10602555348015620000e657600080fd5b50604051620034c3380380620034c3833981016040819052620001099162000566565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602180546001600160a01b038085166001600160a01b031992831617909255602280549284169290911691909117905560085460026000620001893390565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160056000620001c3620004f560201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600590935281832080548516600190811790915586821684528284208054861682179055908516835290822080549093168117909255600690620002406000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260068452828120805486166001908117909155878316825283822080548716821790559186168152828120805486168317905561dead90527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490941617909255602380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155825163c45a015560e01b81529251909263c45a01559260048083019391928290030181865afa15801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a9190620005a5565b6001600160a01b031663c9c6539630602360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000431573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004579190620005a5565b602480546001600160a01b0319166001600160a01b039290921691821790556000908152602760205260409020805460ff19166001179055620004973390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620004e591815260200190565b60405180910390a35050620005cc565b6000546001600160a01b031690565b6000826200052257634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200054857634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146200056357600080fd5b50565b600080604083850312156200057a57600080fd5b825162000587816200054d565b60208401519092506200059a816200054d565b809150509250929050565b600060208284031215620005b857600080fd5b8151620005c5816200054d565b9392505050565b612ee780620005dc6000396000f3fe6080604052600436106102555760003560e01c80638705fcd411610139578063c3c8cd80116100b6578063dd62ed3e1161007a578063dd62ed3e14610706578063de30aad11461074c578063ef242f591461076c578063ef998cf01461078c578063f53bc835146107ac578063f84f3d1f146107cc57600080fd5b8063c3c8cd8014610687578063c4081a4c1461069c578063c9567bf9146106bc578063cf0848f7146106d1578063db92dbb6146106f157600080fd5b8063a727b86d116100fd578063a727b86d146105e7578063a9059cbb14610607578063b515566a14610627578063c118756914610647578063c17b5b8c1461066757600080fd5b80638705fcd4146105315780638da5cb5b146105515780638ee88c531461057957806395d89b41146105995780639a7a23d6146105c757600080fd5b8063437823ec116101d25780636fc3eaec116101965780636fc3eaec1461048757806370a082311461049c578063715018a6146104bc5780637a845ece146104d15780637d855252146104f15780638095d5641461051157600080fd5b8063437823ec146103e757806346860698146104075780634b740b161461042757806350db71fb146104475780635d098b381461046757600080fd5b806323b872dd1161021957806323b872dd1461033d578063273123b71461035d57806327f3a72a1461037d578063313ce567146103925780633bbac579146103ae57600080fd5b806306fdde0314610261578063095ea7b3146102a65780630d45c0e3146102d657806312dfbd33146102f857806318160ddd1461031857600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201909152600a81526921aaa9229021b430b4b760b11b60208201525b60405161029d9190612a7b565b60405180910390f35b3480156102b257600080fd5b506102c66102c1366004612ae5565b6107ec565b604051901515815260200161029d565b3480156102e257600080fd5b506102f66102f1366004612b26565b610803565b005b34801561030457600080fd5b506102f6610313366004612b42565b6108aa565b34801561032457600080fd5b5067016345785d8a00005b60405190815260200161029d565b34801561034957600080fd5b506102c6610358366004612b5b565b6108d9565b34801561036957600080fd5b506102f6610378366004612b9c565b610942565b34801561038957600080fd5b5061032f61098d565b34801561039e57600080fd5b506040516009815260200161029d565b3480156103ba57600080fd5b506102c66103c9366004612b9c565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156103f357600080fd5b506102f6610402366004612b9c565b61099d565b34801561041357600080fd5b506102f6610422366004612b42565b6109eb565b34801561043357600080fd5b506102f6610442366004612bb9565b610a6b565b34801561045357600080fd5b506102f6610462366004612bd4565b610ab3565b34801561047357600080fd5b506102f6610482366004612b9c565b610b08565b34801561049357600080fd5b506102f6610b82565b3480156104a857600080fd5b5061032f6104b7366004612b9c565b610bb9565b3480156104c857600080fd5b506102f6610bdb565b3480156104dd57600080fd5b506102f66104ec366004612b42565b610c4f565b3480156104fd57600080fd5b506102f661050c366004612bb9565b610ce6565b34801561051d57600080fd5b506102f661052c366004612c09565b610d2e565b34801561053d57600080fd5b506102f661054c366004612b9c565b610d66565b34801561055d57600080fd5b506000546040516001600160a01b03909116815260200161029d565b34801561058557600080fd5b506102f6610594366004612b42565b610de0565b3480156105a557600080fd5b5060408051808201909152600581526421a420a4a760d91b6020820152610290565b3480156105d357600080fd5b506102f66105e2366004612bd4565b610e7c565b3480156105f357600080fd5b506102f6610602366004612bb9565b610f52565b34801561061357600080fd5b506102c6610622366004612ae5565b610f9a565b34801561063357600080fd5b506102f6610642366004612c35565b610fa7565b34801561065357600080fd5b506102f6610662366004612bb9565b6110d2565b34801561067357600080fd5b506102f6610682366004612c09565b61111a565b34801561069357600080fd5b506102f6611152565b3480156106a857600080fd5b506102f66106b7366004612b42565b611192565b3480156106c857600080fd5b506102f6611212565b3480156106dd57600080fd5b506102f66106ec366004612b9c565b6112af565b3480156106fd57600080fd5b5061032f6112fa565b34801561071257600080fd5b5061032f610721366004612caa565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561075857600080fd5b506102f6610767366004612bb9565b611312565b34801561077857600080fd5b506102f6610787366004612c09565b61135a565b34801561079857600080fd5b506102f66107a7366004612b42565b611392565b3480156107b857600080fd5b506102f66107c7366004612b42565b6113c1565b3480156107d857600080fd5b506102f66107e7366004612c09565b6113f0565b60006107f9338484611428565b5060015b92915050565b6000546001600160a01b031633146108365760405162461bcd60e51b815260040161082d90612ce3565b60405180910390fd5b6102588111156108885760405162461bcd60e51b815260206004820152601a60248201527f436f6f6c646f776e206578636565647320746865206c696d6974000000000000604482015260640161082d565b60248054921515600160d81b0260ff60d81b1990931692909217909155602555565b6000546001600160a01b031633146108d45760405162461bcd60e51b815260040161082d90612ce3565b600a55565b60006108e684848461154c565b610938843361093385604051806060016040528060288152602001612e8a602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611efd565b611428565b5060019392505050565b6000546001600160a01b0316331461096c5760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03166000908152600760205260409020805460ff19169055565b600061099830610bb9565b905090565b6000546001600160a01b031633146109c75760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b03163314610a155760405162461bcd60e51b815260040161082d90612ce3565b600a811115610a665760405162461bcd60e51b815260206004820152601d60248201527f4261736520666565206d757374206265206c657373207468616e203130000000604482015260640161082d565b601255565b6000546001600160a01b03163314610a955760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314610add5760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b325760405162461bcd60e51b815260040161082d90612ce3565b602280546001600160a01b03908116600090815260056020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610bac5760405162461bcd60e51b815260040161082d90612ce3565b47610bb681611f37565b50565b6001600160a01b0381166000908152600260205260408120546107fd90612042565b6000546001600160a01b03163314610c055760405162461bcd60e51b815260040161082d90612ce3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c795760405162461bcd60e51b815260040161082d90612ce3565b6064811115610ce15760405162461bcd60e51b815260206004820152602e60248201527f6d61782077616c6c65742070657263656e74616765206d75737420626520626560448201526d0747765656e203020746f203130360941b606482015260840161082d565b600e55565b6000546001600160a01b03163314610d105760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160c81b0260ff60c81b19909216919091179055565b6000546001600160a01b03163314610d585760405162461bcd60e51b815260040161082d90612ce3565b601692909255601755601855565b6000546001600160a01b03163314610d905760405162461bcd60e51b815260040161082d90612ce3565b602180546001600160a01b03908116600090815260056020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b815260040161082d90612ce3565b6064600d541115610e775760405162461bcd60e51b815260206004820152603160248201527f6c6971756964697479206665652070657263656e74616765206d7573742062656044820152700206265747765656e203020746f2031303607c1b606482015260840161082d565b600d55565b6000546001600160a01b03163314610ea65760405162461bcd60e51b815260040161082d90612ce3565b6024546001600160a01b0390811690831603610f2a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161082d565b6001600160a01b0382166000908152602760205260409020805460ff19168215151790555050565b6000546001600160a01b03163314610f7c5760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160d01b0260ff60d01b19909216919091179055565b60006107f933848461154c565b6000546001600160a01b03163314610fd15760405162461bcd60e51b815260040161082d90612ce3565b60005b818110156110cd576024546001600160a01b0316838383818110610ffa57610ffa612d18565b905060200201602081019061100f9190612b9c565b6001600160a01b03161415801561106057506023546001600160a01b031683838381811061103f5761103f612d18565b90506020020160208101906110549190612b9c565b6001600160a01b031614155b156110bb5760016007600085858581811061107d5761107d612d18565b90506020020160208101906110929190612b9c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806110c581612d44565b915050610fd4565b505050565b6000546001600160a01b031633146110fc5760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146111445760405162461bcd60e51b815260040161082d90612ce3565b601c92909255601d55601e55565b6000546001600160a01b0316331461117c5760405162461bcd60e51b815260040161082d90612ce3565b600061118730610bb9565b9050610bb6816120c6565b6000546001600160a01b031633146111bc5760405162461bcd60e51b815260040161082d90612ce3565b600581111561120d5760405162461bcd60e51b815260206004820152601760248201527f746178206d757374206265206c657373207468616e2035000000000000000000604482015260640161082d565b600b55565b6000546001600160a01b0316331461123c5760405162461bcd60e51b815260040161082d90612ce3565b602454600160a01b900460ff16156112965760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161082d565b6024805460ff60a01b1916600160a01b17905543600f55565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03166000908152600560205260409020805460ff19169055565b602454600090610998906001600160a01b0316610bb9565b6000546001600160a01b0316331461133c5760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b031633146113845760405162461bcd60e51b815260040161082d90612ce3565b601392909255601455601555565b6000546001600160a01b031633146113bc5760405162461bcd60e51b815260040161082d90612ce3565b601155565b6000546001600160a01b031633146113eb5760405162461bcd60e51b815260040161082d90612ce3565b601055565b6000546001600160a01b0316331461141a5760405162461bcd60e51b815260040161082d90612ce3565b601992909255601a55601b55565b6001600160a01b03831661148a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082d565b6001600160a01b0382166114eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082d565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115b05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082d565b6001600160a01b0382166116125760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082d565b600081116116745760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082d565b6000546001600160a01b038481169116148015906116a057506000546001600160a01b03838116911614155b15611e2b576001600160a01b03831660009081526007602052604090205460ff161580156116e757506001600160a01b03821660009081526007602052604090205460ff16155b6116f057600080fd5b600f546116fe906004612d5d565b43116117b2576024546001600160a01b0384811691161480159061173057506023546001600160a01b03848116911614155b1561175d576001600160a01b0383166000908152600760205260409020805460ff191660011790556117b2565b6024546001600160a01b0383811691161480159061178957506023546001600160a01b03838116911614155b156117b2576001600160a01b0382166000908152600760205260409020805460ff191660011790555b60006117bd30610bb9565b6024549091506001600160a01b0385811691161480156117eb57506023546001600160a01b03848116911614155b801561181057506001600160a01b03831660009081526005602052604090205460ff16155b15611b7757602454600160a01b900460ff1661186e5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161082d565b602454600160d81b900460ff1680156118a057506001600160a01b03831660009081526006602052604090205460ff16155b15611941576001600160a01b038316600090815260266020526040902054421161191a5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e604482015264206275797360d81b606482015260840161082d565b6025546119279042612d5d565b6001600160a01b0384166000908152602660205260409020555b6015546024546119719160649161196b9190611965906001600160a01b0316610bb9565b90612240565b906122c2565b82106119a857611993606461196b60185460125461224090919063ffffffff16565b6012546119a09190612d75565b600c55611a3b565b6014546024546119cc9160649161196b9190611965906001600160a01b0316610bb9565b82106119ee57611993606461196b60175460125461224090919063ffffffff16565b601354602454611a129160649161196b9190611965906001600160a01b0316610bb9565b8210611a3457611993606461196b60165460125461224090919063ffffffff16565b601254600c555b6000611a4684610bb9565b9050611a6a606461196b600e5467016345785d8a000061224090919063ffffffff16565b611a748483612304565b1115611acd5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742065786365656473206d61782077616c6c657420686f6c64696e604482015261677360f01b606482015260840161082d565b60105415611b2057601054831115611b205760405162461bcd60e51b8152602060048201526016602482015275416d6f756e742065786365656473206d61782062757960501b604482015260640161082d565b602454600160c81b900460ff168015611b3a5750600a5482115b15611b7557602454600160a81b900460ff16611b5657600a5491505b600d5415611b6c57611b6782612363565b611b75565b611b758261247f565b505b602454600160b81b900460ff16158015611b9f57506024546001600160a01b03858116911614155b8015611bb45750602454600160a01b900460ff165b15611e2957602454600160d81b900460ff168015611beb57506001600160a01b03841660009081526006602052604090205460ff16155b15611c8d576001600160a01b0384166000908152602660205260409020544211611c665760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b606482015260840161082d565b602554611c739042612d5d565b6001600160a01b0385166000908152602660205260409020555b601b54602454611cb19160649161196b9190611965906001600160a01b0316610bb9565b8210611ce857611cd3606461196b601e5460125461224090919063ffffffff16565b601254611ce09190612d5d565b600c55611d7b565b601a54602454611d0c9160649161196b9190611965906001600160a01b0316610bb9565b8210611d2e57611cd3606461196b601d5460125461224090919063ffffffff16565b601954602454611d529160649161196b9190611965906001600160a01b0316610bb9565b8210611d7457611cd3606461196b601c5460125461224090919063ffffffff16565b601254600c555b60115415611dd557601154821115611dd55760405162461bcd60e51b815260206004820152601760248201527f416d6f756e742065786365656473206d61782073656c6c000000000000000000604482015260640161082d565b602454600160d01b900460ff168015611def5750600a5481115b15611e2957602454600160a81b900460ff16611e0a5750600a545b600d5415611e2057611e1b81612363565b611e29565b611e298161247f565b505b6001600160a01b03831660009081526005602052604090205460019060ff1680611e6d57506001600160a01b03831660009081526005602052604090205460ff165b80611e815750602454600160c01b900460ff165b15611e8a575060005b602454600160b01b900460ff16158015611ebd57506001600160a01b03841660009081526027602052604090205460ff16155b8015611ee257506001600160a01b03831660009081526027602052604090205460ff16155b15611eeb575060005b611ef7848484846124bc565b50505050565b60008184841115611f215760405162461bcd60e51b815260040161082d9190612a7b565b506000611f2e8486612d75565b95945050505050565b6021546000906001600160a01b0316611f56600a61196b856002612240565b604051600081818185875af1925050503d8060008114611f92576040519150601f19603f3d011682016040523d82523d6000602084013e611f97565b606091505b50506022549091506000906001600160a01b0316611fbb600a61196b866008612240565b604051600081818185875af1925050503d8060008114611ff7576040519150601f19603f3d011682016040523d82523d6000602084013e611ffc565b606091505b505060408051841515815282151560208201529192507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b9910160405180910390a1505050565b60006008548211156120a95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161082d565b60006120b36124ea565b90506120bf83826122c2565b9392505050565b6024805460ff60b81b1916600160b81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061210e5761210e612d18565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190612d8c565b8160018151811061219e5761219e612d18565b6001600160a01b0392831660209182029290920101526023546121c49130911684611428565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac947906121fd908590600090869030904290600401612da9565b600060405180830381600087803b15801561221757600080fd5b505af115801561222b573d6000803e3d6000fd5b50506024805460ff60b81b1916905550505050565b600082600003612252575060006107fd565b600061225e8385612e1a565b90508261226b8583612e39565b146120bf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161082d565b60006120bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061250d565b6000806123118385612d5d565b9050838110156120bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161082d565b6024805460ff60b81b1916600160b81b179055600d54600090612387906064612d75565b905060006123a5606461196b600d548661224090919063ffffffff16565b905060006123b48260026122c2565b905060006123c2858361253b565b9050476123ce8261257d565b60006123da478361253b565b905060006123ed606461196b848a612240565b90506123f881611f37565b60006124048284612d75565b90506000861180156124165750600081115b156124675761242586826126d7565b60408051868152602081018390529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50506024805460ff60b81b1916905550505050505050565b6024805460ff60b81b1916600160b81b17905561249b8161257d565b4780156124ab576124ab47611f37565b50506024805460ff60b81b19169055565b806124c9576124c96127ac565b6124d48484846127da565b80611ef757611ef7601f54600b55602054600c55565b60008060006124f76128d1565b909250905061250682826122c2565b9250505090565b6000818361252e5760405162461bcd60e51b815260040161082d9190612a7b565b506000611f2e8486612e39565b60006120bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efd565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125b2576125b2612d18565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190612d8c565b8160018151811061264257612642612d18565b6001600160a01b0392831660209182029290920101526023546126689130911684611428565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac947906126a1908590600090869030904290600401612da9565b600060405180830381600087803b1580156126bb57600080fd5b505af11580156126cf573d6000803e3d6000fd5b505050505050565b6023546126ef9030906001600160a01b031684611428565b6023546001600160a01b031663f305d7198230856000806127186000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612780573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127a59190612e5b565b5050505050565b600b541580156127bc5750600c54155b156127c357565b600b8054601f55600c805460205560009182905555565b6000806000806000806127ec87612911565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061281e908761253b565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461284d9086612304565b6001600160a01b03891660009081526002602052604090205561286f8161296e565b61287984836129b8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128be91815260200190565b60405180910390a3505050505050505050565b600854600090819067016345785d8a00006128ec82826122c2565b8210156129085750506008549267016345785d8a000092509050565b90939092509050565b600080600080600080600080600061292e8a600b54600c546129dc565b925092509250600061293e6124ea565b905060008060006129518e878787612a2b565b919e509c509a509598509396509194505050505091939550919395565b60006129786124ea565b905060006129868383612240565b306000908152600260205260409020549091506129a39082612304565b30600090815260026020526040902055505050565b6008546129c5908361253b565b6008556009546129d59082612304565b6009555050565b60008080806129f0606461196b8989612240565b90506000612a03606461196b8a89612240565b90506000612a1b82612a158b8661253b565b9061253b565b9992985090965090945050505050565b6000808080612a3a8886612240565b90506000612a488887612240565b90506000612a568888612240565b90506000612a6882612a15868661253b565b939b939a50919850919650505050505050565b600060208083528351808285015260005b81811015612aa857858101830151858201604001528201612a8c565b81811115612aba576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610bb657600080fd5b60008060408385031215612af857600080fd5b8235612b0381612ad0565b946020939093013593505050565b80358015158114612b2157600080fd5b919050565b60008060408385031215612b3957600080fd5b612b0383612b11565b600060208284031215612b5457600080fd5b5035919050565b600080600060608486031215612b7057600080fd5b8335612b7b81612ad0565b92506020840135612b8b81612ad0565b929592945050506040919091013590565b600060208284031215612bae57600080fd5b81356120bf81612ad0565b600060208284031215612bcb57600080fd5b6120bf82612b11565b60008060408385031215612be757600080fd5b8235612bf281612ad0565b9150612c0060208401612b11565b90509250929050565b600080600060608486031215612c1e57600080fd5b505081359360208301359350604090920135919050565b60008060208385031215612c4857600080fd5b823567ffffffffffffffff80821115612c6057600080fd5b818501915085601f830112612c7457600080fd5b813581811115612c8357600080fd5b8660208260051b8501011115612c9857600080fd5b60209290920196919550909350505050565b60008060408385031215612cbd57600080fd5b8235612cc881612ad0565b91506020830135612cd881612ad0565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d5657612d56612d2e565b5060010190565b60008219821115612d7057612d70612d2e565b500190565b600082821015612d8757612d87612d2e565b500390565b600060208284031215612d9e57600080fd5b81516120bf81612ad0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612df95784516001600160a01b031683529383019391830191600101612dd4565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816000190483118215151615612e3457612e34612d2e565b500290565b600082612e5657634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215612e7057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220656be95af6718470402cba7596d0591c5c3f8dca8e578f150d76af430087201264736f6c634300080e0033000000000000000000000000f0d43b6f411ce93d3ede2d86b537f2bc965915e3000000000000000000000000f0d43b6f411ce93d3ede2d86b537f2bc965915e3

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638705fcd411610139578063c3c8cd80116100b6578063dd62ed3e1161007a578063dd62ed3e14610706578063de30aad11461074c578063ef242f591461076c578063ef998cf01461078c578063f53bc835146107ac578063f84f3d1f146107cc57600080fd5b8063c3c8cd8014610687578063c4081a4c1461069c578063c9567bf9146106bc578063cf0848f7146106d1578063db92dbb6146106f157600080fd5b8063a727b86d116100fd578063a727b86d146105e7578063a9059cbb14610607578063b515566a14610627578063c118756914610647578063c17b5b8c1461066757600080fd5b80638705fcd4146105315780638da5cb5b146105515780638ee88c531461057957806395d89b41146105995780639a7a23d6146105c757600080fd5b8063437823ec116101d25780636fc3eaec116101965780636fc3eaec1461048757806370a082311461049c578063715018a6146104bc5780637a845ece146104d15780637d855252146104f15780638095d5641461051157600080fd5b8063437823ec146103e757806346860698146104075780634b740b161461042757806350db71fb146104475780635d098b381461046757600080fd5b806323b872dd1161021957806323b872dd1461033d578063273123b71461035d57806327f3a72a1461037d578063313ce567146103925780633bbac579146103ae57600080fd5b806306fdde0314610261578063095ea7b3146102a65780630d45c0e3146102d657806312dfbd33146102f857806318160ddd1461031857600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201909152600a81526921aaa9229021b430b4b760b11b60208201525b60405161029d9190612a7b565b60405180910390f35b3480156102b257600080fd5b506102c66102c1366004612ae5565b6107ec565b604051901515815260200161029d565b3480156102e257600080fd5b506102f66102f1366004612b26565b610803565b005b34801561030457600080fd5b506102f6610313366004612b42565b6108aa565b34801561032457600080fd5b5067016345785d8a00005b60405190815260200161029d565b34801561034957600080fd5b506102c6610358366004612b5b565b6108d9565b34801561036957600080fd5b506102f6610378366004612b9c565b610942565b34801561038957600080fd5b5061032f61098d565b34801561039e57600080fd5b506040516009815260200161029d565b3480156103ba57600080fd5b506102c66103c9366004612b9c565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156103f357600080fd5b506102f6610402366004612b9c565b61099d565b34801561041357600080fd5b506102f6610422366004612b42565b6109eb565b34801561043357600080fd5b506102f6610442366004612bb9565b610a6b565b34801561045357600080fd5b506102f6610462366004612bd4565b610ab3565b34801561047357600080fd5b506102f6610482366004612b9c565b610b08565b34801561049357600080fd5b506102f6610b82565b3480156104a857600080fd5b5061032f6104b7366004612b9c565b610bb9565b3480156104c857600080fd5b506102f6610bdb565b3480156104dd57600080fd5b506102f66104ec366004612b42565b610c4f565b3480156104fd57600080fd5b506102f661050c366004612bb9565b610ce6565b34801561051d57600080fd5b506102f661052c366004612c09565b610d2e565b34801561053d57600080fd5b506102f661054c366004612b9c565b610d66565b34801561055d57600080fd5b506000546040516001600160a01b03909116815260200161029d565b34801561058557600080fd5b506102f6610594366004612b42565b610de0565b3480156105a557600080fd5b5060408051808201909152600581526421a420a4a760d91b6020820152610290565b3480156105d357600080fd5b506102f66105e2366004612bd4565b610e7c565b3480156105f357600080fd5b506102f6610602366004612bb9565b610f52565b34801561061357600080fd5b506102c6610622366004612ae5565b610f9a565b34801561063357600080fd5b506102f6610642366004612c35565b610fa7565b34801561065357600080fd5b506102f6610662366004612bb9565b6110d2565b34801561067357600080fd5b506102f6610682366004612c09565b61111a565b34801561069357600080fd5b506102f6611152565b3480156106a857600080fd5b506102f66106b7366004612b42565b611192565b3480156106c857600080fd5b506102f6611212565b3480156106dd57600080fd5b506102f66106ec366004612b9c565b6112af565b3480156106fd57600080fd5b5061032f6112fa565b34801561071257600080fd5b5061032f610721366004612caa565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561075857600080fd5b506102f6610767366004612bb9565b611312565b34801561077857600080fd5b506102f6610787366004612c09565b61135a565b34801561079857600080fd5b506102f66107a7366004612b42565b611392565b3480156107b857600080fd5b506102f66107c7366004612b42565b6113c1565b3480156107d857600080fd5b506102f66107e7366004612c09565b6113f0565b60006107f9338484611428565b5060015b92915050565b6000546001600160a01b031633146108365760405162461bcd60e51b815260040161082d90612ce3565b60405180910390fd5b6102588111156108885760405162461bcd60e51b815260206004820152601a60248201527f436f6f6c646f776e206578636565647320746865206c696d6974000000000000604482015260640161082d565b60248054921515600160d81b0260ff60d81b1990931692909217909155602555565b6000546001600160a01b031633146108d45760405162461bcd60e51b815260040161082d90612ce3565b600a55565b60006108e684848461154c565b610938843361093385604051806060016040528060288152602001612e8a602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611efd565b611428565b5060019392505050565b6000546001600160a01b0316331461096c5760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03166000908152600760205260409020805460ff19169055565b600061099830610bb9565b905090565b6000546001600160a01b031633146109c75760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b03163314610a155760405162461bcd60e51b815260040161082d90612ce3565b600a811115610a665760405162461bcd60e51b815260206004820152601d60248201527f4261736520666565206d757374206265206c657373207468616e203130000000604482015260640161082d565b601255565b6000546001600160a01b03163314610a955760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314610add5760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b325760405162461bcd60e51b815260040161082d90612ce3565b602280546001600160a01b03908116600090815260056020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610bac5760405162461bcd60e51b815260040161082d90612ce3565b47610bb681611f37565b50565b6001600160a01b0381166000908152600260205260408120546107fd90612042565b6000546001600160a01b03163314610c055760405162461bcd60e51b815260040161082d90612ce3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c795760405162461bcd60e51b815260040161082d90612ce3565b6064811115610ce15760405162461bcd60e51b815260206004820152602e60248201527f6d61782077616c6c65742070657263656e74616765206d75737420626520626560448201526d0747765656e203020746f203130360941b606482015260840161082d565b600e55565b6000546001600160a01b03163314610d105760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160c81b0260ff60c81b19909216919091179055565b6000546001600160a01b03163314610d585760405162461bcd60e51b815260040161082d90612ce3565b601692909255601755601855565b6000546001600160a01b03163314610d905760405162461bcd60e51b815260040161082d90612ce3565b602180546001600160a01b03908116600090815260056020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b815260040161082d90612ce3565b6064600d541115610e775760405162461bcd60e51b815260206004820152603160248201527f6c6971756964697479206665652070657263656e74616765206d7573742062656044820152700206265747765656e203020746f2031303607c1b606482015260840161082d565b600d55565b6000546001600160a01b03163314610ea65760405162461bcd60e51b815260040161082d90612ce3565b6024546001600160a01b0390811690831603610f2a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161082d565b6001600160a01b0382166000908152602760205260409020805460ff19168215151790555050565b6000546001600160a01b03163314610f7c5760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160d01b0260ff60d01b19909216919091179055565b60006107f933848461154c565b6000546001600160a01b03163314610fd15760405162461bcd60e51b815260040161082d90612ce3565b60005b818110156110cd576024546001600160a01b0316838383818110610ffa57610ffa612d18565b905060200201602081019061100f9190612b9c565b6001600160a01b03161415801561106057506023546001600160a01b031683838381811061103f5761103f612d18565b90506020020160208101906110549190612b9c565b6001600160a01b031614155b156110bb5760016007600085858581811061107d5761107d612d18565b90506020020160208101906110929190612b9c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806110c581612d44565b915050610fd4565b505050565b6000546001600160a01b031633146110fc5760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146111445760405162461bcd60e51b815260040161082d90612ce3565b601c92909255601d55601e55565b6000546001600160a01b0316331461117c5760405162461bcd60e51b815260040161082d90612ce3565b600061118730610bb9565b9050610bb6816120c6565b6000546001600160a01b031633146111bc5760405162461bcd60e51b815260040161082d90612ce3565b600581111561120d5760405162461bcd60e51b815260206004820152601760248201527f746178206d757374206265206c657373207468616e2035000000000000000000604482015260640161082d565b600b55565b6000546001600160a01b0316331461123c5760405162461bcd60e51b815260040161082d90612ce3565b602454600160a01b900460ff16156112965760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161082d565b6024805460ff60a01b1916600160a01b17905543600f55565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260040161082d90612ce3565b6001600160a01b03166000908152600560205260409020805460ff19169055565b602454600090610998906001600160a01b0316610bb9565b6000546001600160a01b0316331461133c5760405162461bcd60e51b815260040161082d90612ce3565b60248054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b031633146113845760405162461bcd60e51b815260040161082d90612ce3565b601392909255601455601555565b6000546001600160a01b031633146113bc5760405162461bcd60e51b815260040161082d90612ce3565b601155565b6000546001600160a01b031633146113eb5760405162461bcd60e51b815260040161082d90612ce3565b601055565b6000546001600160a01b0316331461141a5760405162461bcd60e51b815260040161082d90612ce3565b601992909255601a55601b55565b6001600160a01b03831661148a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082d565b6001600160a01b0382166114eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082d565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115b05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082d565b6001600160a01b0382166116125760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082d565b600081116116745760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082d565b6000546001600160a01b038481169116148015906116a057506000546001600160a01b03838116911614155b15611e2b576001600160a01b03831660009081526007602052604090205460ff161580156116e757506001600160a01b03821660009081526007602052604090205460ff16155b6116f057600080fd5b600f546116fe906004612d5d565b43116117b2576024546001600160a01b0384811691161480159061173057506023546001600160a01b03848116911614155b1561175d576001600160a01b0383166000908152600760205260409020805460ff191660011790556117b2565b6024546001600160a01b0383811691161480159061178957506023546001600160a01b03838116911614155b156117b2576001600160a01b0382166000908152600760205260409020805460ff191660011790555b60006117bd30610bb9565b6024549091506001600160a01b0385811691161480156117eb57506023546001600160a01b03848116911614155b801561181057506001600160a01b03831660009081526005602052604090205460ff16155b15611b7757602454600160a01b900460ff1661186e5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161082d565b602454600160d81b900460ff1680156118a057506001600160a01b03831660009081526006602052604090205460ff16155b15611941576001600160a01b038316600090815260266020526040902054421161191a5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e604482015264206275797360d81b606482015260840161082d565b6025546119279042612d5d565b6001600160a01b0384166000908152602660205260409020555b6015546024546119719160649161196b9190611965906001600160a01b0316610bb9565b90612240565b906122c2565b82106119a857611993606461196b60185460125461224090919063ffffffff16565b6012546119a09190612d75565b600c55611a3b565b6014546024546119cc9160649161196b9190611965906001600160a01b0316610bb9565b82106119ee57611993606461196b60175460125461224090919063ffffffff16565b601354602454611a129160649161196b9190611965906001600160a01b0316610bb9565b8210611a3457611993606461196b60165460125461224090919063ffffffff16565b601254600c555b6000611a4684610bb9565b9050611a6a606461196b600e5467016345785d8a000061224090919063ffffffff16565b611a748483612304565b1115611acd5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742065786365656473206d61782077616c6c657420686f6c64696e604482015261677360f01b606482015260840161082d565b60105415611b2057601054831115611b205760405162461bcd60e51b8152602060048201526016602482015275416d6f756e742065786365656473206d61782062757960501b604482015260640161082d565b602454600160c81b900460ff168015611b3a5750600a5482115b15611b7557602454600160a81b900460ff16611b5657600a5491505b600d5415611b6c57611b6782612363565b611b75565b611b758261247f565b505b602454600160b81b900460ff16158015611b9f57506024546001600160a01b03858116911614155b8015611bb45750602454600160a01b900460ff165b15611e2957602454600160d81b900460ff168015611beb57506001600160a01b03841660009081526006602052604090205460ff16155b15611c8d576001600160a01b0384166000908152602660205260409020544211611c665760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b606482015260840161082d565b602554611c739042612d5d565b6001600160a01b0385166000908152602660205260409020555b601b54602454611cb19160649161196b9190611965906001600160a01b0316610bb9565b8210611ce857611cd3606461196b601e5460125461224090919063ffffffff16565b601254611ce09190612d5d565b600c55611d7b565b601a54602454611d0c9160649161196b9190611965906001600160a01b0316610bb9565b8210611d2e57611cd3606461196b601d5460125461224090919063ffffffff16565b601954602454611d529160649161196b9190611965906001600160a01b0316610bb9565b8210611d7457611cd3606461196b601c5460125461224090919063ffffffff16565b601254600c555b60115415611dd557601154821115611dd55760405162461bcd60e51b815260206004820152601760248201527f416d6f756e742065786365656473206d61782073656c6c000000000000000000604482015260640161082d565b602454600160d01b900460ff168015611def5750600a5481115b15611e2957602454600160a81b900460ff16611e0a5750600a545b600d5415611e2057611e1b81612363565b611e29565b611e298161247f565b505b6001600160a01b03831660009081526005602052604090205460019060ff1680611e6d57506001600160a01b03831660009081526005602052604090205460ff165b80611e815750602454600160c01b900460ff165b15611e8a575060005b602454600160b01b900460ff16158015611ebd57506001600160a01b03841660009081526027602052604090205460ff16155b8015611ee257506001600160a01b03831660009081526027602052604090205460ff16155b15611eeb575060005b611ef7848484846124bc565b50505050565b60008184841115611f215760405162461bcd60e51b815260040161082d9190612a7b565b506000611f2e8486612d75565b95945050505050565b6021546000906001600160a01b0316611f56600a61196b856002612240565b604051600081818185875af1925050503d8060008114611f92576040519150601f19603f3d011682016040523d82523d6000602084013e611f97565b606091505b50506022549091506000906001600160a01b0316611fbb600a61196b866008612240565b604051600081818185875af1925050503d8060008114611ff7576040519150601f19603f3d011682016040523d82523d6000602084013e611ffc565b606091505b505060408051841515815282151560208201529192507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b9910160405180910390a1505050565b60006008548211156120a95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161082d565b60006120b36124ea565b90506120bf83826122c2565b9392505050565b6024805460ff60b81b1916600160b81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061210e5761210e612d18565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190612d8c565b8160018151811061219e5761219e612d18565b6001600160a01b0392831660209182029290920101526023546121c49130911684611428565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac947906121fd908590600090869030904290600401612da9565b600060405180830381600087803b15801561221757600080fd5b505af115801561222b573d6000803e3d6000fd5b50506024805460ff60b81b1916905550505050565b600082600003612252575060006107fd565b600061225e8385612e1a565b90508261226b8583612e39565b146120bf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161082d565b60006120bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061250d565b6000806123118385612d5d565b9050838110156120bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161082d565b6024805460ff60b81b1916600160b81b179055600d54600090612387906064612d75565b905060006123a5606461196b600d548661224090919063ffffffff16565b905060006123b48260026122c2565b905060006123c2858361253b565b9050476123ce8261257d565b60006123da478361253b565b905060006123ed606461196b848a612240565b90506123f881611f37565b60006124048284612d75565b90506000861180156124165750600081115b156124675761242586826126d7565b60408051868152602081018390529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50506024805460ff60b81b1916905550505050505050565b6024805460ff60b81b1916600160b81b17905561249b8161257d565b4780156124ab576124ab47611f37565b50506024805460ff60b81b19169055565b806124c9576124c96127ac565b6124d48484846127da565b80611ef757611ef7601f54600b55602054600c55565b60008060006124f76128d1565b909250905061250682826122c2565b9250505090565b6000818361252e5760405162461bcd60e51b815260040161082d9190612a7b565b506000611f2e8486612e39565b60006120bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efd565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125b2576125b2612d18565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190612d8c565b8160018151811061264257612642612d18565b6001600160a01b0392831660209182029290920101526023546126689130911684611428565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac947906126a1908590600090869030904290600401612da9565b600060405180830381600087803b1580156126bb57600080fd5b505af11580156126cf573d6000803e3d6000fd5b505050505050565b6023546126ef9030906001600160a01b031684611428565b6023546001600160a01b031663f305d7198230856000806127186000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612780573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127a59190612e5b565b5050505050565b600b541580156127bc5750600c54155b156127c357565b600b8054601f55600c805460205560009182905555565b6000806000806000806127ec87612911565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061281e908761253b565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461284d9086612304565b6001600160a01b03891660009081526002602052604090205561286f8161296e565b61287984836129b8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128be91815260200190565b60405180910390a3505050505050505050565b600854600090819067016345785d8a00006128ec82826122c2565b8210156129085750506008549267016345785d8a000092509050565b90939092509050565b600080600080600080600080600061292e8a600b54600c546129dc565b925092509250600061293e6124ea565b905060008060006129518e878787612a2b565b919e509c509a509598509396509194505050505091939550919395565b60006129786124ea565b905060006129868383612240565b306000908152600260205260409020549091506129a39082612304565b30600090815260026020526040902055505050565b6008546129c5908361253b565b6008556009546129d59082612304565b6009555050565b60008080806129f0606461196b8989612240565b90506000612a03606461196b8a89612240565b90506000612a1b82612a158b8661253b565b9061253b565b9992985090965090945050505050565b6000808080612a3a8886612240565b90506000612a488887612240565b90506000612a568888612240565b90506000612a6882612a15868661253b565b939b939a50919850919650505050505050565b600060208083528351808285015260005b81811015612aa857858101830151858201604001528201612a8c565b81811115612aba576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610bb657600080fd5b60008060408385031215612af857600080fd5b8235612b0381612ad0565b946020939093013593505050565b80358015158114612b2157600080fd5b919050565b60008060408385031215612b3957600080fd5b612b0383612b11565b600060208284031215612b5457600080fd5b5035919050565b600080600060608486031215612b7057600080fd5b8335612b7b81612ad0565b92506020840135612b8b81612ad0565b929592945050506040919091013590565b600060208284031215612bae57600080fd5b81356120bf81612ad0565b600060208284031215612bcb57600080fd5b6120bf82612b11565b60008060408385031215612be757600080fd5b8235612bf281612ad0565b9150612c0060208401612b11565b90509250929050565b600080600060608486031215612c1e57600080fd5b505081359360208301359350604090920135919050565b60008060208385031215612c4857600080fd5b823567ffffffffffffffff80821115612c6057600080fd5b818501915085601f830112612c7457600080fd5b813581811115612c8357600080fd5b8660208260051b8501011115612c9857600080fd5b60209290920196919550909350505050565b60008060408385031215612cbd57600080fd5b8235612cc881612ad0565b91506020830135612cd881612ad0565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d5657612d56612d2e565b5060010190565b60008219821115612d7057612d70612d2e565b500190565b600082821015612d8757612d87612d2e565b500390565b600060208284031215612d9e57600080fd5b81516120bf81612ad0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612df95784516001600160a01b031683529383019391830191600101612dd4565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816000190483118215151615612e3457612e34612d2e565b500290565b600082612e5657634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215612e7057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220656be95af6718470402cba7596d0591c5c3f8dca8e578f150d76af430087201264736f6c634300080e0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000f0d43b6f411ce93d3ede2d86b537f2bc965915e3000000000000000000000000f0d43b6f411ce93d3ede2d86b537f2bc965915e3

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0xF0d43B6f411cE93D3EdE2d86B537F2bc965915e3
Arg [1] : marketingWalletAddress (address): 0xF0d43B6f411cE93D3EdE2d86B537F2bc965915e3

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f0d43b6f411ce93d3ede2d86b537f2bc965915e3
Arg [1] : 000000000000000000000000f0d43b6f411ce93d3ede2d86b537f2bc965915e3


Deployed Bytecode Sourcemap

4299:22696:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:83;;;;;;;;;;-1:-1:-1;8449:5:0;;;;;;;;;;;;-1:-1:-1;;;8449:5:0;;;;8379:83;;;;;;;:::i;:::-;;;;;;;;9231:161;;;;;;;;;;-1:-1:-1;9231:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;9231:161:0;1072:187:1;25991:254:0;;;;;;;;;;-1:-1:-1;25991:254:0;;;;;:::i;:::-;;:::i;:::-;;24234:128;;;;;;;;;;-1:-1:-1;24234:128:0;;;;;:::i;:::-;;:::i;8656:95::-;;;;;;;;;;-1:-1:-1;4823:19:0;8656:95;;;2013:25:1;;;2001:2;1986:18;8656:95:0;1867:177:1;9400:313:0;;;;;;;;;;-1:-1:-1;9400:313:0;;;;;:::i;:::-;;:::i;25195:91::-;;;;;;;;;;-1:-1:-1;25195:91:0;;;;;:::i;:::-;;:::i;25735:100::-;;;;;;;;;;;;;:::i;8565:83::-;;;;;;;;;;-1:-1:-1;8565:83:0;;5120:1;2904:36:1;;2892:2;2877:18;8565:83:0;2762:184:1;25298:89:0;;;;;;;;;;-1:-1:-1;25298:89:0;;;;;:::i;:::-;-1:-1:-1;;;;;25370:9:0;25346:4;25370:9;;;:5;:9;;;;;;;;;25298:89;22132:114;;;;;;;;;;-1:-1:-1;22132:114:0;;;;;:::i;:::-;;:::i;22503:149::-;;;;;;;;;;-1:-1:-1;22503:149:0;;;;;:::i;:::-;;:::i;23865:92::-;;;;;;;;;;-1:-1:-1;23865:92:0;;;;;:::i;:::-;;:::i;26470:130::-;;;;;;;;;;-1:-1:-1;26470:130:0;;;;;:::i;:::-;;:::i;21623:279::-;;;;;;;;;;-1:-1:-1;21623:279:0;;;;;:::i;:::-;;:::i;25572:155::-;;;;;;;;;;;;;:::i;8759:138::-;;;;;;;;;;-1:-1:-1;8759:138:0;;;;;:::i;:::-;;:::i;3378:148::-;;;;;;;;;;;;;:::i;24370:231::-;;;;;;;;;;-1:-1:-1;24370:231:0;;;;;:::i;:::-;;:::i;26253:99::-;;;;;;;;;;-1:-1:-1;26253:99:0;;;;;:::i;:::-;;:::i;23089:234::-;;;;;;;;;;-1:-1:-1;23089:234:0;;;;;:::i;:::-;;:::i;21910:214::-;;;;;;;;;;-1:-1:-1;21910:214:0;;;;;:::i;:::-;;:::i;3164:79::-;;;;;;;;;;-1:-1:-1;3202:7:0;3229:6;3164:79;;-1:-1:-1;;;;;3229:6:0;;;4183:51:1;;4171:2;4156:18;3164:79:0;4037:203:1;23965:261:0;;;;;;;;;;-1:-1:-1;23965:261:0;;;;;:::i;:::-;;:::i;8470:87::-;;;;;;;;;;-1:-1:-1;8542:7:0;;;;;;;;;;;;-1:-1:-1;;;8542:7:0;;;;8470:87;;26608:246;;;;;;;;;;-1:-1:-1;26608:246:0;;;;;:::i;:::-;;:::i;26361:101::-;;;;;;;;;;-1:-1:-1;26361:101:0;;;;;:::i;:::-;;:::i;8905:167::-;;;;;;;;;;-1:-1:-1;8905:167:0;;;;;:::i;:::-;;:::i;24909:274::-;;;;;;;;;;-1:-1:-1;24909:274:0;;;;;:::i;:::-;;:::i;22379:112::-;;;;;;;;;;-1:-1:-1;22379:112:0;;;;;:::i;:::-;;:::i;23613:244::-;;;;;;;;;;-1:-1:-1;23613:244:0;;;;;:::i;:::-;;:::i;25398:162::-;;;;;;;;;;;;;:::i;22668:140::-;;;;;;;;;;-1:-1:-1;22668:140:0;;;;;:::i;:::-;;:::i;21424:187::-;;;;;;;;;;;;;:::i;22258:113::-;;;;;;;;;;-1:-1:-1;22258:113:0;;;;;:::i;:::-;;:::i;25843:101::-;;;;;;;;;;;;;:::i;9080:143::-;;;;;;;;;;-1:-1:-1;9080:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9188:18:0;;;9161:7;9188:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9080:143;24809:88;;;;;;;;;;-1:-1:-1;24809:88:0;;;;;:::i;:::-;;:::i;22816:265::-;;;;;;;;;;-1:-1:-1;22816:265:0;;;;;:::i;:::-;;:::i;24708:93::-;;;;;;;;;;-1:-1:-1;24708:93:0;;;;;:::i;:::-;;:::i;24609:91::-;;;;;;;;;;-1:-1:-1;24609:91:0;;;;;:::i;:::-;;:::i;23331:274::-;;;;;;;;;;-1:-1:-1;23331:274:0;;;;;:::i;:::-;;:::i;9231:161::-;9306:4;9323:39;653:10;9346:7;9355:6;9323:8;:39::i;:::-;-1:-1:-1;9380:4:0;9231:161;;;;;:::o;25991:254::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;;;;;;;;;26110:10:::1;26095:11;:25;;26087:64;;;::::0;-1:-1:-1;;;26087:64:0;;5821:2:1;26087:64:0::1;::::0;::::1;5803:21:1::0;5860:2;5840:18;;;5833:30;5899:28;5879:18;;;5872:56;5945:18;;26087:64:0::1;5619:350:1::0;26087:64:0::1;26162:16;:28:::0;;;::::1;;-1:-1:-1::0;;;26162:28:0::1;-1:-1:-1::0;;;;26162:28:0;;::::1;::::0;;;::::1;::::0;;;26201:22:::1;:36:::0;25991:254::o;24234:128::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;24320:23:::1;:34:::0;24234:128::o;9400:313::-;9498:4;9515:36;9525:6;9533:9;9544:6;9515:9;:36::i;:::-;9562:121;9571:6;653:10;9593:89;9631:6;9593:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9593:19:0;;;;;;:11;:19;;;;;;;;653:10;9593:33;;;;;;;;;;:37;:89::i;:::-;9562:8;:121::i;:::-;-1:-1:-1;9701:4:0;9400:313;;;;;:::o;25195:91::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25257:13:0::1;25273:5;25257:13:::0;;;:5:::1;:13;::::0;;;;:21;;-1:-1:-1;;25257:21:0::1;::::0;;25195:91::o;25735:100::-;25779:4;25803:24;25821:4;25803:9;:24::i;:::-;25796:31;;25735:100;:::o;22132:114::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22209:22:0::1;;::::0;;;:18:::1;:22;::::0;;;;:29;;-1:-1:-1;;22209:29:0::1;22234:4;22209:29;::::0;;22132:114::o;22503:149::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;22583:2:::1;22576:3;:9;;22568:51;;;::::0;-1:-1:-1;;;22568:51:0;;6176:2:1;22568:51:0::1;::::0;::::1;6158:21:1::0;6215:2;6195:18;;;6188:30;6254:31;6234:18;;;6227:59;6303:18;;22568:51:0::1;5974:353:1::0;22568:51:0::1;22630:8;:14:::0;22503:149::o;23865:92::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;23931:10:::1;:18:::0;;;::::1;;-1:-1:-1::0;;;23931:18:0::1;-1:-1:-1::0;;;;23931:18:0;;::::1;::::0;;;::::1;::::0;;23865:92::o;26470:130::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26558:25:0;;;::::1;;::::0;;;:17:::1;:25;::::0;;;;:34;;-1:-1:-1;;26558:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26470:130::o;21623:279::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;21743:23:::1;::::0;;-1:-1:-1;;;;;21743:23:0;;::::1;21770:5;21724:43:::0;;;:18:::1;:43;::::0;;;;;:51;;-1:-1:-1;;21724:51:0;;::::1;::::0;;;21786:48;;-1:-1:-1;;;;;;21786:48:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;21845:42;;;;;:49;;;;::::1;-1:-1:-1::0;21845:49:0::1;::::0;;21623:279::o;25572:155::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;25655:21:::1;25687:32;25655:21:::0;25687:12:::1;:32::i;:::-;25615:112;25572:155::o:0;8759:138::-;-1:-1:-1;;;;;8872:16:0;;8825:7;8872:16;;;:7;:16;;;;;;8852:37;;:19;:37::i;3378:148::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;3485:1:::1;3469:6:::0;;3448:40:::1;::::0;-1:-1:-1;;;;;3469:6:0;;::::1;::::0;3448:40:::1;::::0;3485:1;;3448:40:::1;3516:1;3499:19:::0;;-1:-1:-1;;;;;;3499:19:0::1;::::0;;3378:148::o;24370:231::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;24495:3:::1;24481:10;:17;;24454:95;;;::::0;-1:-1:-1;;;24454:95:0;;6534:2:1;24454:95:0::1;::::0;::::1;6516:21:1::0;6573:2;6553:18;;;6546:30;6612:34;6592:18;;;6585:62;-1:-1:-1;;;6663:18:1;;;6656:44;6717:19;;24454:95:0::1;6332:410:1::0;24454:95:0::1;24560:20;:33:::0;24370:231::o;26253:99::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;26323:12:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;26323:21:0::1;-1:-1:-1::0;;;;26323:21:0;;::::1;::::0;;;::::1;::::0;;26253:99::o;23089:234::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;23207:15:::1;:32:::0;;;;23250:11:::1;:24:::0;23285:14:::1;:30:::0;23089:234::o;21910:214::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;22013:11:::1;::::0;;-1:-1:-1;;;;;22013:11:0;;::::1;22028:5;21994:31:::0;;;:18:::1;:31;::::0;;;;;:39;;-1:-1:-1;;21994:39:0;;::::1;::::0;;;22044:24;;-1:-1:-1;;;;;;22044:24:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;22079:30;;;;;:37;;;;::::1;-1:-1:-1::0;22079:37:0::1;::::0;;21910:214::o;23965:261::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;24112:3:::1;24085:23;;:30;;24045:124;;;::::0;-1:-1:-1;;;24045:124:0;;6949:2:1;24045:124:0::1;::::0;::::1;6931:21:1::0;6988:2;6968:18;;;6961:30;7027:34;7007:18;;;7000:62;-1:-1:-1;;;7078:18:1;;;7071:47;7135:19;;24045:124:0::1;6747:413:1::0;24045:124:0::1;24180:23;:38:::0;23965:261::o;26608:246::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;26719:13:::1;::::0;-1:-1:-1;;;;;26719:13:0;;::::1;26711:21:::0;;::::1;::::0;26703:91:::1;;;::::0;-1:-1:-1;;;26703:91:0;;7367:2:1;26703:91:0::1;::::0;::::1;7349:21:1::0;7406:2;7386:18;;;7379:30;7445:34;7425:18;;;7418:62;7516:27;7496:18;;;7489:55;7561:19;;26703:91:0::1;7165:421:1::0;26703:91:0::1;-1:-1:-1::0;;;;;26945:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;26945:39:0;;;;;;;26608:246;;:::o;26361:101::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;26432:13:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;26432:22:0::1;-1:-1:-1::0;;;;26432:22:0;;::::1;::::0;;;::::1;::::0;;26361:101::o;8905:167::-;8983:4;9000:42;653:10;9024:9;9035:6;9000:9;:42::i;24909:274::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;24987:6:::1;24982:194;24999:16:::0;;::::1;24982:194;;;25053:13;::::0;-1:-1:-1;;;;;25053:13:0::1;25041:5:::0;;25047:1;25041:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25041:25:0::1;;;:65;;;;-1:-1:-1::0;25090:15:0::1;::::0;-1:-1:-1;;;;;25090:15:0::1;25070:5:::0;;25076:1;25070:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25070:36:0::1;;;25041:65;25037:128;;;25145:4;25127:5;:15;25133:5;;25139:1;25133:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25127:15:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25127:15:0;:22;;-1:-1:-1;;25127:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25037:128:::1;25017:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24982:194;;;;24909:274:::0;;:::o;22379:112::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;22455:20:::1;:28:::0;;;::::1;;-1:-1:-1::0;;;22455:28:0::1;-1:-1:-1::0;;;;22455:28:0;;::::1;::::0;;;::::1;::::0;;22379:112::o;23613:244::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;23735:16:::1;:34:::0;;;;23780:12:::1;:26:::0;23817:15:::1;:32:::0;23613:244::o;25398:162::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;25452:23:::1;25478:24;25496:4;25478:9;:24::i;:::-;25452:50;;25513:39;25536:15;25513:22;:39::i;22668:140::-:0;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;22747:1:::1;22740:3;:8;;22732:44;;;::::0;-1:-1:-1;;;22732:44:0;;8197:2:1;22732:44:0::1;::::0;::::1;8179:21:1::0;8236:2;8216:18;;;8209:30;8275:25;8255:18;;;8248:53;8318:18;;22732:44:0::1;7995:347:1::0;22732:44:0::1;22787:7;:13:::0;22668:140::o;21424:187::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;21488:12:::1;::::0;-1:-1:-1;;;21488:12:0;::::1;;;21487:13;21479:48;;;::::0;-1:-1:-1;;;21479:48:0;;8549:2:1;21479:48:0::1;::::0;::::1;8531:21:1::0;8588:2;8568:18;;;8561:30;8627:25;8607:18;;;8600:53;8670:18;;21479:48:0::1;8347:347:1::0;21479:48:0::1;21546:12;:19:::0;;-1:-1:-1;;;;21546:19:0::1;-1:-1:-1::0;;;21546:19:0::1;::::0;;21591:12:::1;21576;:27:::0;21424:187::o;22258:113::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22333:22:0::1;22358:5;22333:22:::0;;;:18:::1;:22;::::0;;;;:30;;-1:-1:-1;;22333:30:0::1;::::0;;22258:113::o;25843:101::-;25922:13;;25888:4;;25912:24;;-1:-1:-1;;;;;25922:13:0;25912:9;:24::i;24809:88::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;24873:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;24873:16:0::1;-1:-1:-1::0;;;;24873:16:0;;::::1;::::0;;;::::1;::::0;;24809:88::o;22816:265::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;22947:18:::1;:38:::0;;;;22996:14:::1;:30:::0;23037:17:::1;:36:::0;22816:265::o;24708:93::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;24773:14:::1;:20:::0;24708:93::o;24609:91::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;24673:13:::1;:19:::0;24609:91::o;23331:274::-;3291:6;;-1:-1:-1;;;;;3291:6:0;653:10;3291:22;3283:67;;;;-1:-1:-1;;;3283:67:0;;;;;;;:::i;:::-;23465:19:::1;:40:::0;;;;23516:15:::1;:32:::0;23559:18:::1;:38:::0;23331:274::o;10328:335::-;-1:-1:-1;;;;;10421:19:0;;10413:68;;;;-1:-1:-1;;;10413:68:0;;8901:2:1;10413:68:0;;;8883:21:1;8940:2;8920:18;;;8913:30;8979:34;8959:18;;;8952:62;-1:-1:-1;;;9030:18:1;;;9023:34;9074:19;;10413:68:0;8699:400:1;10413:68:0;-1:-1:-1;;;;;10500:21:0;;10492:68;;;;-1:-1:-1;;;10492:68:0;;9306:2:1;10492:68:0;;;9288:21:1;9345:2;9325:18;;;9318:30;9384:34;9364:18;;;9357:62;-1:-1:-1;;;9435:18:1;;;9428:32;9477:19;;10492:68:0;9104:398:1;10492:68:0;-1:-1:-1;;;;;10571:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10623:32;;2013:25:1;;;10623:32:0;;1986:18:1;10623:32:0;;;;;;;10328:335;;;:::o;10675:4802::-;-1:-1:-1;;;;;10763:18:0;;10755:68;;;;-1:-1:-1;;;10755:68:0;;9709:2:1;10755:68:0;;;9691:21:1;9748:2;9728:18;;;9721:30;9787:34;9767:18;;;9760:62;-1:-1:-1;;;9838:18:1;;;9831:35;9883:19;;10755:68:0;9507:401:1;10755:68:0;-1:-1:-1;;;;;10842:16:0;;10834:64;;;;-1:-1:-1;;;10834:64:0;;10115:2:1;10834:64:0;;;10097:21:1;10154:2;10134:18;;;10127:30;10193:34;10173:18;;;10166:62;-1:-1:-1;;;10244:18:1;;;10237:33;10287:19;;10834:64:0;9913:399:1;10834:64:0;10926:1;10917:6;:10;10909:64;;;;-1:-1:-1;;;10909:64:0;;10519:2:1;10909:64:0;;;10501:21:1;10558:2;10538:18;;;10531:30;10597:34;10577:18;;;10570:62;-1:-1:-1;;;10648:18:1;;;10641:39;10697:19;;10909:64:0;10317:405:1;10909:64:0;3202:7;3229:6;-1:-1:-1;;;;;10989:15:0;;;3229:6;;10989:15;;;;:32;;-1:-1:-1;3202:7:0;3229:6;-1:-1:-1;;;;;11008:13:0;;;3229:6;;11008:13;;10989:32;10986:4122;;;-1:-1:-1;;;;;11061:11:0;;;;;;:5;:11;;;;;;;;11060:12;:26;;;;-1:-1:-1;;;;;;11077:9:0;;;;;;:5;:9;;;;;;;;11076:10;11060:26;11052:35;;;;;;11124:12;;:16;;11139:1;11124:16;:::i;:::-;11108:12;:32;11104:320;;11173:13;;-1:-1:-1;;;;;11165:21:0;;;11173:13;;11165:21;;;;:57;;-1:-1:-1;11206:15:0;;-1:-1:-1;;;;;11190:32:0;;;11206:15;;11190:32;;11165:57;11161:248;;;-1:-1:-1;;;;;11247:11:0;;;;;;:5;:11;;;;;:18;;-1:-1:-1;;11247:18:0;11261:4;11247:18;;;11161:248;;;11301:13;;-1:-1:-1;;;;;11295:19:0;;;11301:13;;11295:19;;;;:53;;-1:-1:-1;11332:15:0;;-1:-1:-1;;;;;11318:30:0;;;11332:15;;11318:30;;11295:53;11291:118;;;-1:-1:-1;;;;;11373:9:0;;;;;;:5;:9;;;;;:16;;-1:-1:-1;;11373:16:0;11385:4;11373:16;;;11291:118;11440:28;11471:24;11489:4;11471:9;:24::i;:::-;11523:13;;11440:55;;-1:-1:-1;;;;;;11515:21:0;;;11523:13;;11515:21;:55;;;;-1:-1:-1;11554:15:0;;-1:-1:-1;;;;;11540:30:0;;;11554:15;;11540:30;;11515:55;:82;;;;-1:-1:-1;;;;;;11575:22:0;;;;;;:18;:22;;;;;;;;11574:23;11515:82;11512:1944;;;11626:12;;-1:-1:-1;;;11626:12:0;;;;11618:48;;;;-1:-1:-1;;;11618:48:0;;11062:2:1;11618:48:0;;;11044:21:1;11101:2;11081:18;;;11074:30;11140:25;11120:18;;;11113:53;11183:18;;11618:48:0;10860:347:1;11618:48:0;11722:16;;-1:-1:-1;;;11722:16:0;;;;:42;;;;-1:-1:-1;;;;;;11743:21:0;;;;;;:17;:21;;;;;;;;11742:22;11722:42;11719:259;;;-1:-1:-1;;;;;11796:18:0;;;;;;:14;:18;;;;;;11817:15;-1:-1:-1;11788:86:0;;;;-1:-1:-1;;;11788:86:0;;11414:2:1;11788:86:0;;;11396:21:1;11453:2;11433:18;;;11426:30;11492:34;11472:18;;;11465:62;-1:-1:-1;;;11543:18:1;;;11536:35;11588:19;;11788:86:0;11212:401:1;11788:86:0;11936:22;;11918:40;;:15;:40;:::i;:::-;-1:-1:-1;;;;;11897:18:0;;;;;;:14;:18;;;;;:61;11719:259;12041:17;;12022:13;;12012:56;;12064:3;;12012:47;;12041:17;12012:24;;-1:-1:-1;;;;;12022:13:0;12012:9;:24::i;:::-;:28;;:47::i;:::-;:51;;:56::i;:::-;12002:6;:66;11998:598;;12115:37;12148:3;12115:28;12128:14;;12115:8;;:12;;:28;;;;:::i;:37::-;12104:8;;:48;;;;:::i;:::-;12093:8;:59;11998:598;;;12221:14;;12202:13;;12192:53;;12241:3;;12192:44;;12221:14;12192:24;;-1:-1:-1;;;;;12202:13:0;12192:9;:24::i;:53::-;12182:6;:63;12178:418;;12292:34;12322:3;12292:25;12305:11;;12292:8;;:12;;:25;;;;:::i;12178:418::-;12395:18;;12376:13;;12366:57;;12419:3;;12366:48;;12395:18;12366:24;;-1:-1:-1;;;;;12376:13:0;12366:9;:24::i;:57::-;12356:6;:67;12352:244;;12470:38;12504:3;12470:29;12483:15;;12470:8;;:12;;:29;;;;:::i;12352:244::-;12568:8;;12557;:19;12352:244;12632:18;12653:22;12671:2;12653:9;:22::i;:::-;12632:43;;12731:42;12769:3;12731:33;12743:20;;4823:19;12731:11;;:33;;;;:::i;:42::-;12702:25;:6;12713:13;12702:10;:25::i;:::-;:71;;12694:118;;;;-1:-1:-1;;;12694:118:0;;11950:2:1;12694:118:0;;;11932:21:1;11989:2;11969:18;;;11962:30;12028:34;12008:18;;;12001:62;-1:-1:-1;;;12079:18:1;;;12072:32;12121:19;;12694:118:0;11748:398:1;12694:118:0;12835:13;;:17;12831:124;;12895:13;;12885:6;:23;;12877:58;;;;-1:-1:-1;;;12877:58:0;;12353:2:1;12877:58:0;;;12335:21:1;12392:2;12372:18;;;12365:30;-1:-1:-1;;;12411:18:1;;;12404:52;12473:18;;12877:58:0;12151:346:1;12877:58:0;12978:12;;-1:-1:-1;;;12978:12:0;;;;:62;;;;;13017:23;;12994:20;:46;12978:62;12975:466;;;13069:8;;-1:-1:-1;;;13069:8:0;;;;13065:111;;13129:23;;13106:46;;13065:111;13204:23;;:27;13200:217;;13260:36;13275:20;13260:14;:36::i;:::-;13200:217;;;13353:40;13372:20;13353:18;:40::i;:::-;11599:1857;11512:1944;13476:7;;-1:-1:-1;;;13476:7:0;;;;13475:8;:33;;;;-1:-1:-1;13495:13:0;;-1:-1:-1;;;;;13487:21:0;;;13495:13;;13487:21;;13475:33;:49;;;;-1:-1:-1;13512:12:0;;-1:-1:-1;;;13512:12:0;;;;13475:49;13472:1625;;;13566:16;;-1:-1:-1;;;13566:16:0;;;;:44;;;;-1:-1:-1;;;;;;13587:23:0;;;;;;:17;:23;;;;;;;;13586:24;13566:44;13563:266;;;-1:-1:-1;;;;;13642:20:0;;;;;;:14;:20;;;;;;13665:15;-1:-1:-1;13634:89:0;;;;-1:-1:-1;;;13634:89:0;;12704:2:1;13634:89:0;;;12686:21:1;12743:2;12723:18;;;12716:30;12782:34;12762:18;;;12755:62;-1:-1:-1;;;12833:18:1;;;12826:36;12879:19;;13634:89:0;12502:402:1;13634:89:0;13787:22;;13769:40;;:15;:40;:::i;:::-;-1:-1:-1;;;;;13746:20:0;;;;;;:14;:20;;;;;:63;13563:266;13892:18;;13873:13;;13863:57;;13916:3;;13863:48;;13892:18;13863:24;;-1:-1:-1;;;;;13873:13:0;13863:9;:24::i;:57::-;13853:6;:67;13849:604;;13967:38;14001:3;13967:29;13980:15;;13967:8;;:12;;:29;;;;:::i;:38::-;13956:8;;:49;;;;:::i;:::-;13945:8;:60;13849:604;;;14074:15;;14055:13;;14045:54;;14095:3;;14045:45;;14074:15;14045:24;;-1:-1:-1;;;;;14055:13:0;14045:9;:24::i;:54::-;14035:6;:64;14031:422;;14146:35;14177:3;14146:26;14159:12;;14146:8;;:12;;:26;;;;:::i;14031:422::-;14250:19;;14231:13;;14221:58;;14275:3;;14221:49;;14250:19;14221:24;;-1:-1:-1;;;;;14231:13:0;14221:9;:24::i;:58::-;14211:6;:68;14207:246;;14326:39;14361:3;14326:30;14339:16;;14326:8;;:12;;:30;;;;:::i;14207:246::-;14425:8;;14414;:19;14207:246;14477:14;;:18;14473:127;;14538:14;;14528:6;:24;;14520:60;;;;-1:-1:-1;;;14520:60:0;;13111:2:1;14520:60:0;;;13093:21:1;13150:2;13130:18;;;13123:30;13189:25;13169:18;;;13162:53;13232:18;;14520:60:0;12909:347:1;14520:60:0;14623:13;;-1:-1:-1;;;14623:13:0;;;;:63;;;;;14663:23;;14640:20;:46;14623:63;14620:462;;;14715:8;;-1:-1:-1;;;14715:8:0;;;;14711:111;;-1:-1:-1;14775:23:0;;14711:111;14850:23;;:27;14846:217;;14906:36;14921:20;14906:14;:36::i;:::-;14846:217;;;14999:40;15018:20;14999:18;:40::i;:::-;11023:4085;10986:4122;-1:-1:-1;;;;;15153:24:0;;15118:12;15153:24;;;:18;:24;;;;;;15133:4;;15153:24;;;:50;;-1:-1:-1;;;;;;15181:22:0;;;;;;:18;:22;;;;;;;;15153:50;:64;;;-1:-1:-1;15207:10:0;;-1:-1:-1;;;15207:10:0;;;;15153:64;15150:111;;;-1:-1:-1;15244:5:0;15150:111;15277:20;;-1:-1:-1;;;15277:20:0;;;;15276:21;:57;;;;-1:-1:-1;;;;;;15302:31:0;;;;;;:25;:31;;;;;;;;15301:32;15276:57;:91;;;;-1:-1:-1;;;;;;15338:29:0;;;;;;:25;:29;;;;;;;;15337:30;15276:91;15273:138;;;-1:-1:-1;15394:5:0;15273:138;15431:38;15446:4;15451:2;15454:6;15461:7;15431:14;:38::i;:::-;10744:4733;10675:4802;;;:::o;1710:190::-;1796:7;1832:12;1824:6;;;;1816:29;;;;-1:-1:-1;;;1816:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1856:9:0;1868:5;1872:1;1868;:5;:::i;:::-;1856:17;1710:190;-1:-1:-1;;;;;1710:190:0:o;18273:266::-;18345:11;;18331:8;;-1:-1:-1;;;;;18345:11:0;18369:21;18387:2;18369:13;:6;18380:1;18369:10;:13::i;:21::-;18345:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18427:23:0;;18330:65;;-1:-1:-1;18407:14:0;;-1:-1:-1;;;;;18427:23:0;18463:21;18481:2;18463:13;:6;18474:1;18463:10;:13::i;:21::-;18427:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18507:24:0;;;13658:14:1;;13651:22;13633:41;;13717:14;;13710:22;13705:2;13690:18;;13683:50;18406:83:0;;-1:-1:-1;18507:24:0;;13606:18:1;18507:24:0;;;;;;;18319:220;;18273:266;:::o;9721:254::-;9788:7;9827;;9816;:18;;9808:73;;;;-1:-1:-1;;;9808:73:0;;13946:2:1;9808:73:0;;;13928:21:1;13985:2;13965:18;;;13958:30;14024:34;14004:18;;;13997:62;-1:-1:-1;;;14075:18:1;;;14068:40;14125:19;;9808:73:0;13744:406:1;9808:73:0;9892:19;9915:10;:8;:10::i;:::-;9892:33;-1:-1:-1;9943:24:0;:7;9892:33;9943:11;:24::i;:::-;9936:31;9721:254;-1:-1:-1;;;9721:254:0:o;17776:489::-;7258:7;:14;;-1:-1:-1;;;;7258:14:0;-1:-1:-1;;;7258:14:0;;;17884:16:::1;::::0;;17898:1:::1;17884:16:::0;;;;;::::1;::::0;;-1:-1:-1;;17884:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17884:16:0::1;17860:40;;17929:4;17911;17916:1;17911:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17911:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17955:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;17955:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;17911:7;;17955:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17945:4;17950:1;17945:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17945:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;18020:15:::1;::::0;17988:62:::1;::::0;18005:4:::1;::::0;18020:15:::1;18038:11:::0;17988:8:::1;:62::i;:::-;18061:15;::::0;:196:::1;::::0;-1:-1:-1;;;18061:196:0;;-1:-1:-1;;;;;18061:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;18142:11;;18061:15:::1;::::0;18184:4;;18211::::1;::::0;18231:15:::1;::::0;18061:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7295:7:0;:15;;-1:-1:-1;;;;7295:15:0;;;-1:-1:-1;;;;17776:489:0:o;1908:245::-;1966:7;1989:1;1994;1989:6;1986:46;;-1:-1:-1;2019:1:0;2012:8;;1986:46;2042:9;2054:5;2058:1;2054;:5;:::i;:::-;2042:17;-1:-1:-1;2087:1:0;2078:5;2082:1;2042:17;2078:5;:::i;:::-;:10;2070:56;;;;-1:-1:-1;;;2070:56:0;;16125:2:1;2070:56:0;;;16107:21:1;16164:2;16144:18;;;16137:30;16203:34;16183:18;;;16176:62;-1:-1:-1;;;16254:18:1;;;16247:31;16295:19;;2070:56:0;15923:397:1;2161:132:0;2219:7;2246:39;2250:1;2253;2246:39;;;;;;;;;;;;;;;;;:3;:39::i;1379:179::-;1437:7;;1469:5;1473:1;1469;:5;:::i;:::-;1457:17;;1498:1;1493;:6;;1485:46;;;;-1:-1:-1;;;1485:46:0;;16527:2:1;1485:46:0;;;16509:21:1;16566:2;16546:18;;;16539:30;16605:29;16585:18;;;16578:57;16652:18;;1485:46:0;16325:351:1;16006:968:0;7258:7;:14;;-1:-1:-1;;;;7258:14:0;-1:-1:-1;;;7258:14:0;;;16125:23:::1;::::0;7258:14;;16119:29:::1;::::0;:3:::1;:29;:::i;:::-;16091:57;;16159:23;16185:58;16239:3;16185:49;16210:23;;16185:20;:24;;:49;;;;:::i;:58::-;16159:84:::0;-1:-1:-1;16254:15:0::1;16272:22;16159:84:::0;16292:1:::1;16272:19;:22::i;:::-;16254:40:::0;-1:-1:-1;16307:26:0::1;16336:33;:20:::0;16254:40;16336:24:::1;:33::i;:::-;16307:62:::0;-1:-1:-1;16408:21:0::1;16442:36;16307:62:::0;16442:16:::1;:36::i;:::-;16491:18;16512:44;:21;16538:17:::0;16512:25:::1;:44::i;:::-;16491:65:::0;-1:-1:-1;16569:18:0::1;16590:42;16628:3;16590:33;16491:65:::0;16605:17;16590:14:::1;:33::i;:42::-;16569:63;;16643:24;16656:10;16643:12;:24::i;:::-;16680:23;16706;16719:10:::0;16706;:23:::1;:::i;:::-;16680:49;;16756:1;16746:7;:11;:34;;;;;16779:1;16761:15;:19;16746:34;16742:225;;;16827:38;16840:7;16849:15;16827:12;:38::i;:::-;16887:68;::::0;;16883:25:1;;;16939:2;16924:18;;16917:34;;;16967:18;;;16960:34;;;16887:68:0::1;::::0;16871:2:1;16856:18;16887:68:0::1;;;;;;;16742:225;-1:-1:-1::0;;7295:7:0;:15;;-1:-1:-1;;;;7295:15:0;;;-1:-1:-1;;;;;;;16006:968:0:o;16982:307::-;7258:7;:14;;-1:-1:-1;;;;7258:14:0;-1:-1:-1;;;7258:14:0;;;17081:38:::1;17098:20:::0;17081:16:::1;:38::i;:::-;17161:21;17196:22:::0;;17193:89:::1;;17235:35;17248:21;17235:12;:35::i;:::-;-1:-1:-1::0;;7295:7:0;:15;;-1:-1:-1;;;;7295:15:0;;;16982:307::o;18551:263::-;18663:7;18659:40;;18685:14;:12;:14::i;:::-;18710:44;18728:6;18736:9;18747:6;18710:17;:44::i;:::-;18769:7;18765:41;;18791:15;10259;;10249:7;:25;10296:16;;10285:8;:27;10205:115;20155:163;20196:7;20217:15;20234;20253:19;:17;:19::i;:::-;20216:56;;-1:-1:-1;20216:56:0;-1:-1:-1;20290:20:0;20216:56;;20290:11;:20::i;:::-;20283:27;;;;20155:163;:::o;2301:189::-;2387:7;2422:12;2415:5;2407:28;;;;-1:-1:-1;;;2407:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2446:9:0;2458:5;2462:1;2458;:5;:::i;1566:136::-;1624:7;1651:43;1655:1;1658;1651:43;;;;;;;;;;;;;;;;;:3;:43::i;17297:471::-;17387:16;;;17401:1;17387:16;;;;;;;;17363:21;;17387:16;;;;;;;;;;-1:-1:-1;17387:16:0;17363:40;;17432:4;17414;17419:1;17414:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17414:23:0;;;:7;;;;;;;;;;:23;;;;17458:15;;:22;;;-1:-1:-1;;;17458:22:0;;;;:15;;;;;:20;;:22;;;;;17414:7;;17458:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17448:4;17453:1;17448:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17448:32:0;;;:7;;;;;;;;;:32;17523:15;;17491:62;;17508:4;;17523:15;17541:11;17491:8;:62::i;:::-;17564:15;;:196;;-1:-1:-1;;;17564:196:0;;-1:-1:-1;;;;;17564:15:0;;;;:66;;:196;;17645:11;;17564:15;;17687:4;;17714;;17734:15;;17564:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17352:416;17297:471;:::o;15485:513::-;15665:15;;15633:62;;15650:4;;-1:-1:-1;;;;;15665:15:0;15683:11;15633:8;:62::i;:::-;15738:15;;-1:-1:-1;;;;;15738:15:0;:31;15777:9;15810:4;15830:11;15738:15;;15942:7;3202;3229:6;-1:-1:-1;;;;;3229:6:0;;3164:79;15942:7;15738:252;;;;;;-1:-1:-1;;;;;;15738:252:0;;;-1:-1:-1;;;;;17364:15:1;;;15738:252:0;;;17346:34:1;17396:18;;;17389:34;;;;17439:18;;;17432:34;;;;17482:18;;;17475:34;17546:15;;;17525:19;;;17518:44;15964:15:0;17578:19:1;;;17571:35;17280:19;;15738:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15485:513;;:::o;9983:210::-;10029:7;;:12;:29;;;;-1:-1:-1;10045:8:0;;:13;10029:29;10026:41;;;9983:210::o;10026:41::-;10095:7;;;10077:15;:25;10132:8;;;10113:16;:27;-1:-1:-1;10151:11:0;;;;10173:12;9983:210::o;18822:490::-;18921:15;18938:23;18963:12;18977:23;19002:12;19016:13;19033:19;19044:7;19033:10;:19::i;:::-;-1:-1:-1;;;;;19081:15:0;;;;;;:7;:15;;;;;;18920:132;;-1:-1:-1;18920:132:0;;-1:-1:-1;18920:132:0;;-1:-1:-1;18920:132:0;-1:-1:-1;18920:132:0;-1:-1:-1;18920:132:0;-1:-1:-1;19081:28:0;;18920:132;19081:19;:28::i;:::-;-1:-1:-1;;;;;19063:15:0;;;;;;;:7;:15;;;;;;:46;;;;19141:18;;;;;;;:39;;19164:15;19141:22;:39::i;:::-;-1:-1:-1;;;;;19120:18:0;;;;;;:7;:18;;;;;:60;19194:16;19204:5;19194:9;:16::i;:::-;19221:23;19233:4;19239;19221:11;:23::i;:::-;19277:9;-1:-1:-1;;;;;19260:44:0;19269:6;-1:-1:-1;;;;;19260:44:0;;19288:15;19260:44;;;;2013:25:1;;2001:2;1986:18;;1867:177;19260:44:0;;;;;;;;18909:403;;;;;;18822:490;;;:::o;20326:255::-;20423:7;;20376;;;;4823:19;20490:20;20423:7;4823:19;20490:11;:20::i;:::-;20480:7;:30;20477:60;;;-1:-1:-1;;20520:7:0;;;4823:19;;-1:-1:-1;20326:255:0;-1:-1:-1;20326:255:0:o;20477:60::-;20556:7;;20565;;-1:-1:-1;20326:255:0;-1:-1:-1;20326:255:0:o;19320:468::-;19379:7;19388;19397;19406;19415;19424;19445:23;19470:12;19484:13;19501:39;19513:7;19522;;19531:8;;19501:11;:39::i;:::-;19444:96;;;;;;19551:19;19574:10;:8;:10::i;:::-;19551:33;;19596:15;19613:23;19638:12;19654:46;19666:7;19675:4;19681:5;19688:11;19654;:46::i;:::-;19595:105;;-1:-1:-1;19595:105:0;-1:-1:-1;19595:105:0;-1:-1:-1;19751:15:0;;-1:-1:-1;19768:4:0;;-1:-1:-1;19774:5:0;;-1:-1:-1;;;;;19320:468:0;;;;;;;:::o;21006:214::-;21059:19;21082:10;:8;:10::i;:::-;21059:33;-1:-1:-1;21103:13:0;21119:22;:5;21059:33;21119:9;:22::i;:::-;21195:4;21179:22;;;;:7;:22;;;;;;21103:38;;-1:-1:-1;21179:33:0;;21103:38;21179:26;:33::i;:::-;21170:4;21154:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;21006:214:0:o;21228:147::-;21306:7;;:17;;21318:4;21306:11;:17::i;:::-;21296:7;:27;21347:10;;:20;;21362:4;21347:14;:20::i;:::-;21334:10;:33;-1:-1:-1;;21228:147:0:o;19796:351::-;19889:7;;;;19942:28;19966:3;19942:19;:7;19954:6;19942:11;:19::i;:28::-;19927:43;-1:-1:-1;19981:13:0;19997:29;20022:3;19997:20;:7;20009;19997:11;:20::i;:29::-;19981:45;-1:-1:-1;20037:23:0;20063:28;19981:45;20063:17;:7;20075:4;20063:11;:17::i;:::-;:21;;:28::i;:::-;20037:54;20127:4;;-1:-1:-1;20133:5:0;;-1:-1:-1;19796:351:0;;-1:-1:-1;;;;;19796:351:0:o;20589:409::-;20699:7;;;;20755:24;:7;20767:11;20755;:24::i;:::-;20737:42;-1:-1:-1;20790:12:0;20805:21;:4;20814:11;20805:8;:21::i;:::-;20790:36;-1:-1:-1;20837:13:0;20853:22;:5;20863:11;20853:9;:22::i;:::-;20837:38;-1:-1:-1;20886:23:0;20912:28;20837:38;20912:17;:7;20924:4;20912:11;:17::i;:28::-;20959:7;;;;-1:-1:-1;20985:4:0;;-1:-1:-1;20589:409:0;;-1:-1:-1;;;;;;;20589:409:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:160::-;1329:20;;1385:13;;1378:21;1368:32;;1358:60;;1414:1;1411;1404:12;1358:60;1264:160;;;:::o;1429:248::-;1494:6;1502;1555:2;1543:9;1534:7;1530:23;1526:32;1523:52;;;1571:1;1568;1561:12;1523:52;1594:26;1610:9;1594:26;:::i;1682:180::-;1741:6;1794:2;1782:9;1773:7;1769:23;1765:32;1762:52;;;1810:1;1807;1800:12;1762:52;-1:-1:-1;1833:23:1;;1682:180;-1:-1:-1;1682:180:1:o;2049:456::-;2126:6;2134;2142;2195:2;2183:9;2174:7;2170:23;2166:32;2163:52;;;2211:1;2208;2201:12;2163:52;2250:9;2237:23;2269:31;2294:5;2269:31;:::i;:::-;2319:5;-1:-1:-1;2376:2:1;2361:18;;2348:32;2389:33;2348:32;2389:33;:::i;:::-;2049:456;;2441:7;;-1:-1:-1;;;2495:2:1;2480:18;;;;2467:32;;2049:456::o;2510:247::-;2569:6;2622:2;2610:9;2601:7;2597:23;2593:32;2590:52;;;2638:1;2635;2628:12;2590:52;2677:9;2664:23;2696:31;2721:5;2696:31;:::i;3211:180::-;3267:6;3320:2;3308:9;3299:7;3295:23;3291:32;3288:52;;;3336:1;3333;3326:12;3288:52;3359:26;3375:9;3359:26;:::i;3396:315::-;3461:6;3469;3522:2;3510:9;3501:7;3497:23;3493:32;3490:52;;;3538:1;3535;3528:12;3490:52;3577:9;3564:23;3596:31;3621:5;3596:31;:::i;:::-;3646:5;-1:-1:-1;3670:35:1;3701:2;3686:18;;3670:35;:::i;:::-;3660:45;;3396:315;;;;;:::o;3716:316::-;3793:6;3801;3809;3862:2;3850:9;3841:7;3837:23;3833:32;3830:52;;;3878:1;3875;3868:12;3830:52;-1:-1:-1;;3901:23:1;;;3971:2;3956:18;;3943:32;;-1:-1:-1;4022:2:1;4007:18;;;3994:32;;3716:316;-1:-1:-1;3716:316:1:o;4245:615::-;4331:6;4339;4392:2;4380:9;4371:7;4367:23;4363:32;4360:52;;;4408:1;4405;4398:12;4360:52;4448:9;4435:23;4477:18;4518:2;4510:6;4507:14;4504:34;;;4534:1;4531;4524:12;4504:34;4572:6;4561:9;4557:22;4547:32;;4617:7;4610:4;4606:2;4602:13;4598:27;4588:55;;4639:1;4636;4629:12;4588:55;4679:2;4666:16;4705:2;4697:6;4694:14;4691:34;;;4721:1;4718;4711:12;4691:34;4774:7;4769:2;4759:6;4756:1;4752:14;4748:2;4744:23;4740:32;4737:45;4734:65;;;4795:1;4792;4785:12;4734:65;4826:2;4818:11;;;;;4848:6;;-1:-1:-1;4245:615:1;;-1:-1:-1;;;;4245:615:1:o;4865:388::-;4933:6;4941;4994:2;4982:9;4973:7;4969:23;4965:32;4962:52;;;5010:1;5007;5000:12;4962:52;5049:9;5036:23;5068:31;5093:5;5068:31;:::i;:::-;5118:5;-1:-1:-1;5175:2:1;5160:18;;5147:32;5188:33;5147:32;5188:33;:::i;:::-;5240:7;5230:17;;;4865:388;;;;;:::o;5258:356::-;5460:2;5442:21;;;5479:18;;;5472:30;5538:34;5533:2;5518:18;;5511:62;5605:2;5590:18;;5258:356::o;7591:127::-;7652:10;7647:3;7643:20;7640:1;7633:31;7683:4;7680:1;7673:15;7707:4;7704:1;7697:15;7723:127;7784:10;7779:3;7775:20;7772:1;7765:31;7815:4;7812:1;7805:15;7839:4;7836:1;7829:15;7855:135;7894:3;7915:17;;;7912:43;;7935:18;;:::i;:::-;-1:-1:-1;7982:1:1;7971:13;;7855:135::o;10727:128::-;10767:3;10798:1;10794:6;10791:1;10788:13;10785:39;;;10804:18;;:::i;:::-;-1:-1:-1;10840:9:1;;10727:128::o;11618:125::-;11658:4;11686:1;11683;11680:8;11677:34;;;11691:18;;:::i;:::-;-1:-1:-1;11728:9:1;;11618:125::o;14287:251::-;14357:6;14410:2;14398:9;14389:7;14385:23;14381:32;14378:52;;;14426:1;14423;14416:12;14378:52;14458:9;14452:16;14477:31;14502:5;14477:31;:::i;14543:980::-;14805:4;14853:3;14842:9;14838:19;14884:6;14873:9;14866:25;14910:2;14948:6;14943:2;14932:9;14928:18;14921:34;14991:3;14986:2;14975:9;14971:18;14964:31;15015:6;15050;15044:13;15081:6;15073;15066:22;15119:3;15108:9;15104:19;15097:26;;15158:2;15150:6;15146:15;15132:29;;15179:1;15189:195;15203:6;15200:1;15197:13;15189:195;;;15268:13;;-1:-1:-1;;;;;15264:39:1;15252:52;;15359:15;;;;15324:12;;;;15300:1;15218:9;15189:195;;;-1:-1:-1;;;;;;;15440:32:1;;;;15435:2;15420:18;;15413:60;-1:-1:-1;;;15504:3:1;15489:19;15482:35;15401:3;14543:980;-1:-1:-1;;;14543:980:1:o;15528:168::-;15568:7;15634:1;15630;15626:6;15622:14;15619:1;15616:21;15611:1;15604:9;15597:17;15593:45;15590:71;;;15641:18;;:::i;:::-;-1:-1:-1;15681:9:1;;15528:168::o;15701:217::-;15741:1;15767;15757:132;;15811:10;15806:3;15802:20;15799:1;15792:31;15846:4;15843:1;15836:15;15874:4;15871:1;15864:15;15757:132;-1:-1:-1;15903:9:1;;15701:217::o;17617:306::-;17705:6;17713;17721;17774:2;17762:9;17753:7;17749:23;17745:32;17742:52;;;17790:1;17787;17780:12;17742:52;17819:9;17813:16;17803:26;;17869:2;17858:9;17854:18;17848:25;17838:35;;17913:2;17902:9;17898:18;17892:25;17882:35;;17617:306;;;;;:::o

Swarm Source

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