ETH Price: $2,520.58 (-0.20%)

Token

Moon Weekend (MW)
 

Overview

Max Total Supply

10,000,000,000,000 MW

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,271,748,779.209492526 MW

Value
$0.00
0x069edfd64def44dfc4511a2c57bc42917fd97b8c
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MoonWeekend

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-12
*/

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

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

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


interface IERC20 {

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

}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }


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

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

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

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

// pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


// pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}



// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract MoonWeekend is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address payable private marketingWallet = payable(0x6fdE0bD20E064171d403A655905eAD59BaDd8F4b); // Marketing Wallet
    address payable private ecosystemWallet = payable(0x4E7FEf1e199D158008cdD0113e883b1D6d018EF8); // Ecosystem Wallet
    address payable private devWallet = payable (0xb25684054b90a85A1a068A8de58cD04cB6721fbe); // dev Wallet
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isSniper;
    
    uint256 public deadBlocks = 2;
    uint256 public launchedAt = 0;
    

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isMaxWalletExempt;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isTrusted;
    address[] private _excluded;
   
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    uint8 private _decimals = 9;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 10000000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Moon Weekend";
    string private _symbol = "MW";
    

    uint256 public _maxWalletToken = _tTotal.div(1000).mul(5); // 0.5% for first few mins

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyDevFee = 50;     //5% 
    uint256 public _buyMarketingFee = 45;   //4.5%
    uint256 public _buyReflectionFee = 0;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 100;  //10%
    uint256 public _sellDevFee = 100;   //10%
    uint256 public _sellReflectionFee = 0;
    
    uint256 private ecosystemFee = 5;   //0.5%
    uint256 private liquidityFee = _buyLiquidityFee;
    uint256 private marketingFee = _buyMarketingFee;
    uint256 private devFee = _buyDevFee;
    uint256 private reflectionFee=_buyReflectionFee;


    uint256 private totalFee =
        liquidityFee.add(marketingFee).add(devFee).add(ecosystemFee);
    uint256 private currenttotalFee = totalFee;
    
    uint256 public swapThreshold = _tTotal.div(1000).mul(1); //0.1%
   
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwap;
    
    bool public tradingOpen = false;
    bool public zeroBuyTaxmode = false;
    bool private antiBotmode = true;
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    

    constructor () {

        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isMaxWalletExempt[owner()] = true;
        _isMaxWalletExempt[address(this)] = true;
        _isMaxWalletExempt[uniswapV2Pair] = true;
        _isMaxWalletExempt[DEAD] = true;
        _isTrusted[owner()] = true;
        _isTrusted[uniswapV2Pair] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function openTrading(bool _status,uint256 _deadBlocks) external onlyOwner() {
        tradingOpen = _status;
        excludeFromReward(address(this));
        excludeFromReward(uniswapV2Pair);
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    
    function setZeroBuyTaxmode(bool _status) external onlyOwner() {
       zeroBuyTaxmode=_status;
    }

    function setAntiBotmode(bool _status) external onlyOwner() {
       antiBotmode=_status;
    }
    
    function setNewRouter(address newRouter) external onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            uniswapV2Pair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            uniswapV2Pair = get_pair;
        }
        uniswapV2Router = _newRouter;
    }

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

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

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

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

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

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

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

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

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

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

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
  

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeFromReward(address account) public onlyOwner() {

        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    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");
        require(!_isSniper[to], "You have no power here!");
        require(!_isSniper[from], "You have no power here!");
        if (from!= owner() && to!= owner()) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading
        
         bool takeFee = false;
        //take fee only on swaps
        if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {
            takeFee = true;
        }

        if(launchedAt>0 && (!_isMaxWalletExempt[to] && from!= owner()) && !((launchedAt + deadBlocks) > block.number)){
                require(amount+ balanceOf(to)<=_maxWalletToken,
                    "Total Holding is currently limited");
        }
        

        currenttotalFee=totalFee;
        reflectionFee=_buyReflectionFee;

        if(tradingOpen && to == uniswapV2Pair) { //sell
            currenttotalFee= _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee);
            reflectionFee=_sellReflectionFee;
        }
        
        //antibot - first 2 blocks
        if(launchedAt>0 && (launchedAt + deadBlocks) > block.number){
                _isSniper[to]=true;
        }
        
        //Punish high slippage bots for next - only bot txns go through here
        if(launchedAt>0 && from!= owner() && block.number >= (launchedAt + deadBlocks)  && antiBotmode){
                currenttotalFee=900;    //90%
        }

        if(zeroBuyTaxmode){
             if(tradingOpen && from == uniswapV2Pair) { //buys
                    currenttotalFee=0;
             }
        }

        //sell
        if (!inSwap && tradingOpen && to == uniswapV2Pair) {
      
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance>=swapThreshold){
                    contractTokenBalance = swapThreshold;
                    swapTokens(contractTokenBalance);
            }
          
        }
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        
        
        uint256 amountToLiquify = contractTokenBalance
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);

        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
        
        swapTokensForEth(amountToSwap);

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
         uint256 amountETHEcosystem = amountETH.mul(ecosystemFee).div(
            totalETHFee
        );
        //Send to marketing wallet and dev wallet
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(amountETHMarketing,marketingWallet);
            sendETHToFee(amountETHEcosystem,ecosystemWallet);
            sendETHToFee(amountETHdev,devWallet);
        }
        if (amountToLiquify > 0) {
                addLiquidity(amountToLiquify,amountETHLiquidity);
        }
    }
    
    function sendETHToFee(uint256 amount, address payable wallet) private {
        wallet.transfer(amount);
    }
    

   
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }
    

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

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

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {

        uint256 _previousReflectionFee=reflectionFee;
        uint256 _previousTotalFee=currenttotalFee;
        if(!takeFee){
            reflectionFee = 0;
            currenttotalFee=0;
        }
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee){
            reflectionFee = _previousReflectionFee;
            currenttotalFee=_previousTotalFee;
        }
    }

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

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

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

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

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

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

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

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

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(reflectionFee).div(
            10**3
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(currenttotalFee).div(
            10**3
        );
    }
    
    function excludeMultiple(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function excludeFromFee(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }
    
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setWallets(address _marketingWallet,address _devWallet) external onlyOwner() {
        marketingWallet = payable(_marketingWallet);
        devWallet = payable(_devWallet);
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }
    
    function manage_Snipers(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            if(!_isTrusted[addresses[i]]){
                _isSniper[addresses[i]] = status;
            }
        }
    }
    
    function manage_trusted(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isTrusted[addresses[i]]=true;
        }
    }
        
    function withDrawLeftoverETH(address payable receipient) public onlyOwner {
        receipient.transfer(address(this).balance);
    }

    function withdrawStuckTokens(IERC20 token, address to) public onlyOwner {
        uint256 balance = token.balanceOf(address(this));
        token.transfer(to, balance);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = _tTotal.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxWalletExempt(address _addr) external onlyOwner {
        _isMaxWalletExempt[_addr] = true;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
    }

    function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + (tokens[i] * 10**_decimals);
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens[i] * 10**_decimals));
        
        }
    }

    function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

        require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

        uint256 SCCC = tokens* 10**_decimals * addresses.length;

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens* 10**_decimals));
            }
    }
    
    function manualswap() external {
        require(_msgSender() == marketingWallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == marketingWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance, marketingWallet);
    }

     function setTaxesBuy(uint256 _reflectionFee, uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner {
       
        _buyLiquidityFee = _liquidityFee;
        _buyMarketingFee = _marketingFee;
        _buyDevFee = _devFee;
        _buyReflectionFee= _reflectionFee;

        reflectionFee= _reflectionFee;
        liquidityFee = _liquidityFee;
        devFee = _devFee;
        marketingFee = _marketingFee;
        totalFee = liquidityFee.add(marketingFee).add(devFee).add(ecosystemFee);

    }

    function setTaxesSell(uint256 _reflectionFee,uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner {
        _sellLiquidityFee = _liquidityFee;
        _sellMarketingFee = _marketingFee;
        _sellDevFee = _devFee;
        _sellReflectionFee= _reflectionFee;
    }
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Snipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_trusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAntiBotmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setZeroBuyTaxmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"receipient","type":"address"}],"name":"withDrawLeftoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroBuyTaxmode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b0319908116736fde0bd20e064171d403a655905ead59badd8f4b17909155600480548216734e7fef1e199d158008cdd0113e883b1d6d018ef81790556005805490911673b25684054b90a85a1a068a8de58cd04cb6721fbe1790556002600a9081556000600b55601180547409000000000000000000000000000000000000dead6001600160a81b03199091161790819055620000b891600160a01b90910460ff169062000918565b620000ca906509184e72a00062000929565b6012819055620000dd9060001962000961565b620000eb9060001962000978565b60135560408051808201909152600c8082526b135bdbdb8815d9595ad95b9960a21b602090920191825262000123916015916200075f565b50604080518082019091526002808252614d5760f01b60209092019182526200014f916016916200075f565b50620001886005620001746103e8601254620005e260201b620021971790919060201c565b6200063560201b620021d91790919060201c565b60175560006018556032601955602d601a556000601b556000601c556064601d556064601e556000601f556005602055601854602155601a54602255601954602355601b5460245562000210602054620001fc602354620001fc602254602154620006c060201b620022581790919060201c565b620006c060201b620022581790919060201c565b6025556025546026556200023d6001620001746103e8601254620005e260201b620021971790919060201c565b6027556029805462ffffff60a81b1916600160b81b1790553480156200026257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506013543360009081526006602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa1580156200030b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000331919062000992565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a5919062000992565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000419919062000992565b602980546001600160a01b03199081166001600160a01b0393841617909155602880549091169183169190911790556001600c6000620004616000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600c909252812080549092166001908117909255600d90620004ba6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d909352818320805485166001908117909155602954821684528284208054861682179055601154909116835290822080549093168117909255600f906200053c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556029549091168152600f9092529020805490911660011790556200058b3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601254604051620005d391815260200190565b60405180910390a35062000a84565b60006200062c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200072360201b60201c565b90505b92915050565b60008262000646575060006200062f565b600062000654838562000929565b905082620006638583620009bd565b146200062c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600080620006cf8385620009d4565b9050838110156200062c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006b7565b60008183620007475760405162461bcd60e51b8152600401620006b79190620009ef565b506000620007568486620009bd565b95945050505050565b8280546200076d9062000a47565b90600052602060002090601f016020900481019282620007915760008555620007dc565b82601f10620007ac57805160ff1916838001178555620007dc565b82800160010185558215620007dc579182015b82811115620007dc578251825591602001919060010190620007bf565b50620007ea929150620007ee565b5090565b5b80821115620007ea5760008155600101620007ef565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200085c57816000190482111562000840576200084062000805565b808516156200084e57918102915b93841c939080029062000820565b509250929050565b60008262000875575060016200062f565b8162000884575060006200062f565b81600181146200089d5760028114620008a857620008c8565b60019150506200062f565b60ff841115620008bc57620008bc62000805565b50506001821b6200062f565b5060208310610133831016604e8410600b8410161715620008ed575081810a6200062f565b620008f983836200081b565b806000190482111562000910576200091062000805565b029392505050565b60006200062c60ff84168362000864565b600081600019048311821515161562000946576200094662000805565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200097357620009736200094b565b500690565b6000828210156200098d576200098d62000805565b500390565b600060208284031215620009a557600080fd5b81516001600160a01b03811681146200062c57600080fd5b600082620009cf57620009cf6200094b565b500490565b60008219821115620009ea57620009ea62000805565b500190565b600060208083528351808285015260005b8181101562000a1e5785810183015185820160400152820162000a00565b8181111562000a31576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168062000a5c57607f821691505b6020821081141562000a7e57634e487b7160e01b600052602260045260246000fd5b50919050565b613cc18062000a946000396000f3fe6080604052600436106103905760003560e01c80636fc3eaec116101dc578063a9059cbb11610102578063dc44b6a0116100a0578063f259c57b1161006f578063f259c57b14610a6e578063f2fde38b14610a8e578063fabb0b4f14610aae578063ffb54a9914610ac457600080fd5b8063dc44b6a0146109d2578063dd62ed3e146109e8578063ea2f0b3714610a2e578063eafb5a3c14610a4e57600080fd5b8063c5d24189116100dc578063c5d2418914610970578063c860795214610986578063c9cf77891461099c578063d3f6a157146109b257600080fd5b8063a9059cbb14610925578063bf56b37114610945578063c3c8cd801461095b57600080fd5b806384530c461161017a5780638f4590d2116101495780638f4590d2146108b057806395d89b41146108d0578063a0c5efc2146108e5578063a457c2d71461090557600080fd5b806384530c461461082357806388790a681461084357806388f82020146108595780638da5cb5b1461089257600080fd5b806371b9189c116101b657806371b9189c146107b7578063743942b6146107d75780637598f8bc146107f757806378109e541461080d57600080fd5b80636fc3eaec1461076d57806370a0823114610782578063715018a6146107a257600080fd5b80632dd5efe7116102c1578063401aa5c01161025f57806352390c021161022e57806352390c02146106f75780635d54c0af1461071757806362015852146107375780636ce37fa01461074d57600080fd5b8063401aa5c0146106815780634549b0391461069757806349bd5a5e146106b75780634b01547f146106d757600080fd5b80633685d4191161029b5780633685d4191461060157806339509351146106215780633bd5d173146106415780633ddf65ab1461066157600080fd5b80632dd5efe714610595578063313ce567146105b5578063335f6a43146105e157600080fd5b806318160ddd1161032e57806325b86edf1161030857806325b86edf146105145780632691bc80146105345780632d4103d6146105555780632d8381191461057557600080fd5b806318160ddd146104bf5780631ca0a28d146104d457806323b872dd146104f457600080fd5b8063095ea7b31161036a578063095ea7b3146104095780630f3a325f1461043957806313114a9d146104725780631694505e1461048757600080fd5b80630445b6671461039c57806306fdde03146103c557806309302dc6146103e757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b260275481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b506103da610ae5565b6040516103bc9190613520565b3480156103f357600080fd5b50610407610402366004613575565b610b77565b005b34801561041557600080fd5b506104296104243660046135a3565b610bd1565b60405190151581526020016103bc565b34801561044557600080fd5b506104296104543660046135cf565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561047e57600080fd5b506014546103b2565b34801561049357600080fd5b506028546104a7906001600160a01b031681565b6040516001600160a01b0390911681526020016103bc565b3480156104cb57600080fd5b506012546103b2565b3480156104e057600080fd5b506104076104ef366004613638565b610be8565b34801561050057600080fd5b5061042961050f3660046136bb565b610e28565b34801561052057600080fd5b5061040761052f3660046136fc565b610e91565b34801561054057600080fd5b5060295461042990600160b01b900460ff1681565b34801561056157600080fd5b50610407610570366004613743565b610fa3565b34801561058157600080fd5b506103b2610590366004613575565b61102e565b3480156105a157600080fd5b506104076105b03660046135cf565b6110b2565b3480156105c157600080fd5b50601154600160a01b900460ff1660405160ff90911681526020016103bc565b3480156105ed57600080fd5b506104076105fc366004613761565b611100565b34801561060d57600080fd5b5061040761061c3660046135cf565b61128f565b34801561062d57600080fd5b5061042961063c3660046135a3565b611442565b34801561064d57600080fd5b5061040761065c366004613575565b611478565b34801561066d57600080fd5b5061040761067c3660046137bd565b611562565b34801561068d57600080fd5b506103b2601b5481565b3480156106a357600080fd5b506103b26106b23660046137da565b6115aa565b3480156106c357600080fd5b506029546104a7906001600160a01b031681565b3480156106e357600080fd5b506104076106f23660046137bd565b611637565b34801561070357600080fd5b506104076107123660046135cf565b61167f565b34801561072357600080fd5b506104076107323660046137ff565b611769565b34801561074357600080fd5b506103b260195481565b34801561075957600080fd5b50610407610768366004613856565b61184f565b34801561077957600080fd5b5061040761188a565b34801561078e57600080fd5b506103b261079d3660046135cf565b6118c6565b3480156107ae57600080fd5b50610407611925565b3480156107c357600080fd5b506104076107d2366004613888565b611999565b3480156107e357600080fd5b506104076107f23660046135cf565b611a38565b34801561080357600080fd5b506103b2601f5481565b34801561081957600080fd5b506103b260175481565b34801561082f57600080fd5b5061040761083e366004613888565b611a97565b34801561084f57600080fd5b506103b2601c5481565b34801561086557600080fd5b506104296108743660046135cf565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561089e57600080fd5b506000546001600160a01b03166104a7565b3480156108bc57600080fd5b506104076108cb3660046138ca565b611b31565b3480156108dc57600080fd5b506103da611b7b565b3480156108f157600080fd5b50610407610900366004613856565b611b8a565b34801561091157600080fd5b506104296109203660046135a3565b611bfe565b34801561093157600080fd5b506104296109403660046135a3565b611c4d565b34801561095157600080fd5b506103b2600b5481565b34801561096757600080fd5b50610407611c5a565b34801561097c57600080fd5b506103b2601a5481565b34801561099257600080fd5b506103b2601d5481565b3480156109a857600080fd5b506103b2601e5481565b3480156109be57600080fd5b506104076109cd3660046136fc565b611c90565b3480156109de57600080fd5b506103b260185481565b3480156109f457600080fd5b506103b2610a033660046136fc565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a3a57600080fd5b50610407610a493660046135cf565b611ce8565b348015610a5a57600080fd5b50610407610a693660046135cf565b611d33565b348015610a7a57600080fd5b50610407610a893660046135cf565b61205f565b348015610a9a57600080fd5b50610407610aa93660046135cf565b6120ad565b348015610aba57600080fd5b506103b2600a5481565b348015610ad057600080fd5b5060295461042990600160a81b900460ff1681565b606060158054610af4906138ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610b20906138ec565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b6000546001600160a01b03163314610baa5760405162461bcd60e51b8152600401610ba190613927565b60405180910390fd5b610bcb81610bc56103e860125461219790919063ffffffff16565b906121d9565b60175550565b6000610bde3384846122b7565b5060015b92915050565b6000546001600160a01b03163314610c125760405162461bcd60e51b8152600401610ba190613927565b6103218310610c795760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610ba1565b828114610cd95760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610ba1565b6000805b84811015610d3e57601154610cfd90600160a01b900460ff16600a613a56565b848483818110610d0f57610d0f613a65565b90506020020135610d209190613a7b565b610d2a9083613a9a565b915080610d3681613ab2565b915050610cdd565b5080610d49876118c6565b1015610d975760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ba1565b60005b84811015610e1f57610e0d87878784818110610db857610db8613a65565b9050602002016020810190610dcd91906135cf565b601154610de590600160a01b900460ff16600a613a56565b878786818110610df757610df7613a65565b90506020020135610e089190613a7b565b6123db565b80610e1781613ab2565b915050610d9a565b50505050505050565b6000610e358484846123db565b610e878433610e8285604051806060016040528060288152602001613c3f602891396001600160a01b038a166000908152600860209081526040808320338452909152902054919061295b565b6122b7565b5060019392505050565b6000546001600160a01b03163314610ebb5760405162461bcd60e51b8152600401610ba190613927565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f269190613acd565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190613ae6565b50505050565b6000546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610ba190613927565b6029805460ff60a81b1916600160a81b84151502179055610fed3061167f565b602954611002906001600160a01b031661167f565b602954600160a81b900460ff16801561101b5750600b54155b1561102a5743600b55600a8190555b5050565b60006013548211156110955760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ba1565b600061109f612995565b90506110ab8382612197565b9392505050565b6000546001600160a01b031633146110dc5760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610ba190613927565b6107d182106111925760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610ba1565b60115460009083906111af90600160a01b900460ff16600a613a56565b6111b99084613a7b565b6111c39190613a7b565b9050806111cf866118c6565b101561121d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ba1565b60005b83811015611287576112758686868481811061123e5761123e613a65565b905060200201602081019061125391906135cf565b60115461126b90600160a01b900460ff16600a613a56565b610e089087613a7b565b8061127f81613ab2565b915050611220565b505050505050565b6000546001600160a01b031633146112b95760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b0381166000908152600e602052604090205460ff166113215760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ba1565b60005b60105481101561102a57816001600160a01b03166010828154811061134b5761134b613a65565b6000918252602090912001546001600160a01b03161415611430576010805461137690600190613b03565b8154811061138657611386613a65565b600091825260209091200154601080546001600160a01b0390921691839081106113b2576113b2613a65565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600e90925220805460ff19169055601080548061140a5761140a613b1a565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061143a81613ab2565b915050611324565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610bde918590610e829086612258565b336000818152600e602052604090205460ff16156114ed5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ba1565b60006114f8836129b8565b505050506001600160a01b03841660009081526006602052604090205491925061152491905082612a07565b6001600160a01b03831660009081526006602052604090205560135461154a9082612a07565b60135560145461155a9084612258565b601455505050565b6000546001600160a01b0316331461158c5760405162461bcd60e51b8152600401610ba190613927565b60298054911515600160b81b0260ff60b81b19909216919091179055565b60006012548311156115fe5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ba1565b8161161d57600061160e846129b8565b50939550610be2945050505050565b6000611628846129b8565b50929550610be2945050505050565b6000546001600160a01b031633146116615760405162461bcd60e51b8152600401610ba190613927565b60298054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03811660009081526006602052604090205415611703576001600160a01b0381166000908152600660205260409020546116e99061102e565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319169091179055565b6000546001600160a01b031633146117935760405162461bcd60e51b8152600401610ba190613927565b60005b82811015610f9d57600f60008585848181106117b4576117b4613a65565b90506020020160208101906117c991906135cf565b6001600160a01b0316815260208101919091526040016000205460ff1661183f57816009600086868581811061180157611801613a65565b905060200201602081019061181691906135cf565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b61184881613ab2565b9050611796565b6000546001600160a01b031633146118795760405162461bcd60e51b8152600401610ba190613927565b601c92909255601d55601e55601f55565b6003546001600160a01b0316336001600160a01b0316146118aa57600080fd5b60035447906118c39082906001600160a01b0316612a49565b50565b6001600160a01b0381166000908152600e602052604081205460ff161561190357506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610be29061102e565b6000546001600160a01b0316331461194f5760405162461bcd60e51b8152600401610ba190613927565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146119c35760405162461bcd60e51b8152600401610ba190613927565b60005b81811015611a33576001600c60008585858181106119e6576119e6613a65565b90506020020160208101906119fb91906135cf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a2c81613ab2565b90506119c6565b505050565b6000546001600160a01b03163314611a625760405162461bcd60e51b8152600401610ba190613927565b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561102a573d6000803e3d6000fd5b6000546001600160a01b03163314611ac15760405162461bcd60e51b8152600401610ba190613927565b60005b81811015611a33576001600f6000858585818110611ae457611ae4613a65565b9050602002016020810190611af991906135cf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b2a81613ab2565b9050611ac4565b6000546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610ba190613927565b8082601254611b6a9190613a7b565b611b749190613b30565b6027555050565b606060168054610af4906138ec565b6000546001600160a01b03163314611bb45760405162461bcd60e51b8152600401610ba190613927565b6018839055601a8290556019819055601b8490556024849055602183905560238190556022829055602054611bf590611bef83818787612258565b90612258565b60255550505050565b6000610bde3384610e8285604051806060016040528060258152602001613c67602591393360009081526008602090815260408083206001600160a01b038d168452909152902054919061295b565b6000610bde3384846123db565b6003546001600160a01b0316336001600160a01b031614611c7a57600080fd5b6000611c85306118c6565b90506118c381612a7f565b6000546001600160a01b03163314611cba5760405162461bcd60e51b8152600401610ba190613927565b600380546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055565b6000546001600160a01b03163314611d125760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b03163314611d5d5760405162461bcd60e51b8152600401610ba190613927565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613b52565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e379190613b52565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea69190613b52565b90506001600160a01b03811661201f57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f189190613b52565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f899190613b52565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffa9190613b52565b602980546001600160a01b0319166001600160a01b039290921691909117905561203b565b602980546001600160a01b0319166001600160a01b0383161790555b50602880546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146120895760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146120d75760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03811661213c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ba1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006110ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c12565b6000826121e857506000610be2565b60006121f48385613a7b565b9050826122018583613b30565b146110ab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ba1565b6000806122658385613a9a565b9050838110156110ab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ba1565b6001600160a01b0383166123195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ba1565b6001600160a01b03821661237a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ba1565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661243f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ba1565b6001600160a01b0382166124a15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ba1565b600081116125035760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ba1565b6001600160a01b03821660009081526009602052604090205460ff16156125665760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610ba1565b6001600160a01b03831660009081526009602052604090205460ff16156125c95760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610ba1565b6000546001600160a01b038481169116148015906125f557506000546001600160a01b03838116911614155b1561265357602954600160a81b900460ff166126535760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610ba1565b6029546000906001600160a01b038581169116148061267f57506029546001600160a01b038481169116145b80156126c757506001600160a01b0384166000908152600c602052604090205460ff16806126c557506001600160a01b0383166000908152600c602052604090205460ff165b155b156126d0575060015b6000600b5411801561271457506001600160a01b0383166000908152600d602052604090205460ff1615801561271457506000546001600160a01b03858116911614155b801561272f575043600a54600b5461272c9190613a9a565b11155b156127a357601754612740846118c6565b61274a9084613a9a565b11156127a35760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610ba1565b602554602655601b54602455602954600160a81b900460ff1680156127d557506029546001600160a01b038481169116145b15612801576127f7601e54611bef601d54601c5461225890919063ffffffff16565b602655601f546024555b6000600b54118015612821575043600a54600b5461281f9190613a9a565b115b1561284a576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6000600b5411801561286a57506000546001600160a01b03858116911614155b80156128855750600a54600b546128819190613a9a565b4310155b801561289a5750602954600160b81b900460ff165b156128a6576103846026555b602954600160b01b900460ff16156128e957602954600160a81b900460ff1680156128de57506029546001600160a01b038581169116145b156128e95760006026555b602954600160a01b900460ff1615801561290c5750602954600160a81b900460ff165b801561292557506029546001600160a01b038481169116145b1561294f576000612935306118c6565b9050602754811061294d575060275461294d81612c40565b505b610f9d84848484612d9f565b6000818484111561297f5760405162461bcd60e51b8152600401610ba19190613520565b50600061298c8486613b03565b95945050505050565b60008060006129a2612ecb565b90925090506129b18282612197565b9250505090565b60008060008060008060008060006129cf8a61304d565b92509250925060008060006129ed8d86866129e8612995565b61308f565b919f909e50909c50959a5093985091965092945050505050565b60006110ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061295b565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611a33573d6000803e3d6000fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ab457612ab4613a65565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b319190613b52565b81600181518110612b4457612b44613a65565b6001600160a01b039283166020918202929092010152602854612b6a91309116846122b7565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ba3908590600090869030904290600401613bb3565b600060405180830381600087803b158015612bbd57600080fd5b505af1158015612bd1573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612c06929190613bef565b60405180910390a15050565b60008183612c335760405162461bcd60e51b8152600401610ba19190613520565b50600061298c8486613b30565b6029805460ff60a01b1916600160a01b179055602554602154600091612c7691600291612c7091829087906121d9565b90612197565b90506000612c848383612a07565b9050612c8f81612a7f565b6021544790600090612caf90612ca6906002612197565b60255490612a07565b90506000612cd16002612c7084612c70602154886121d990919063ffffffff16565b90506000612cee83612c70602354876121d990919063ffffffff16565b90506000612d0b84612c70602254886121d990919063ffffffff16565b90506000612d2885612c70602054896121d990919063ffffffff16565b9050478015612d7657600354612d489084906001600160a01b0316612a49565b600454612d5f9083906001600160a01b0316612a49565b600554612d769085906001600160a01b0316612a49565b8815612d8657612d8689866130df565b50506029805460ff60a01b191690555050505050505050565b60245460265482612db557600060248190556026555b6001600160a01b0386166000908152600e602052604090205460ff168015612df657506001600160a01b0385166000908152600e602052604090205460ff16155b15612e0b57612e068686866131b4565b612eb7565b6001600160a01b0386166000908152600e602052604090205460ff16158015612e4c57506001600160a01b0385166000908152600e602052604090205460ff165b15612e5c57612e068686866132da565b6001600160a01b0386166000908152600e602052604090205460ff168015612e9c57506001600160a01b0385166000908152600e602052604090205460ff165b15612eac57612e06868686613383565b612eb78686866133f6565b826112875760249190915560265550505050565b6013546012546000918291825b60105481101561301d57826006600060108481548110612efa57612efa613a65565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612f655750816007600060108481548110612f3e57612f3e613a65565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f7b57601354601254945094505050509091565b612fc16006600060108481548110612f9557612f95613a65565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612a07565b92506130096007600060108481548110612fdd57612fdd613a65565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612a07565b91508061301581613ab2565b915050612ed8565b5060125460135461302d91612197565b821015613044576013546012549350935050509091565b90939092509050565b60008060008061305c8561343a565b9050600061306986613457565b905060006130818261307b8986612a07565b90612a07565b979296509094509092505050565b600080808061309e88866121d9565b905060006130ac88876121d9565b905060006130ba88886121d9565b905060006130cc8261307b8686612a07565b939b939a50919850919650505050505050565b6028546130f79030906001600160a01b0316846122b7565b6028546001600160a01b031663f305d7198230856000806131206000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613188573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131ad9190613c10565b5050505050565b6000806000806000806131c6876129b8565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506131f89088612a07565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546132279087612a07565b6001600160a01b03808b1660009081526006602052604080822093909355908a16815220546132569086612258565b6001600160a01b03891660009081526006602052604090205561327881613474565b61328284836134fc565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516132c791815260200190565b60405180910390a3505050505050505050565b6000806000806000806132ec876129b8565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915061331e9087612a07565b6001600160a01b03808b16600090815260066020908152604080832094909455918b168152600790915220546133549084612258565b6001600160a01b0389166000908152600760209081526040808320939093556006905220546132569086612258565b600080600080600080613395876129b8565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506133c79088612a07565b6001600160a01b038a1660009081526007602090815260408083209390935560069052205461331e9087612a07565b600080600080600080613408876129b8565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506132279087612a07565b6000610be26103e8612c70602454856121d990919063ffffffff16565b6000610be26103e8612c70602654856121d990919063ffffffff16565b600061347e612995565b9050600061348c83836121d9565b306000908152600660205260409020549091506134a99082612258565b30600090815260066020908152604080832093909355600e9052205460ff1615611a3357306000908152600760205260409020546134e79084612258565b30600090815260076020526040902055505050565b6013546135099083612a07565b6013556014546135199082612258565b6014555050565b600060208083528351808285015260005b8181101561354d57858101830151858201604001528201613531565b8181111561355f576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561358757600080fd5b5035919050565b6001600160a01b03811681146118c357600080fd5b600080604083850312156135b657600080fd5b82356135c18161358e565b946020939093013593505050565b6000602082840312156135e157600080fd5b81356110ab8161358e565b60008083601f8401126135fe57600080fd5b50813567ffffffffffffffff81111561361657600080fd5b6020830191508360208260051b850101111561363157600080fd5b9250929050565b60008060008060006060868803121561365057600080fd5b853561365b8161358e565b9450602086013567ffffffffffffffff8082111561367857600080fd5b61368489838a016135ec565b9096509450604088013591508082111561369d57600080fd5b506136aa888289016135ec565b969995985093965092949392505050565b6000806000606084860312156136d057600080fd5b83356136db8161358e565b925060208401356136eb8161358e565b929592945050506040919091013590565b6000806040838503121561370f57600080fd5b823561371a8161358e565b9150602083013561372a8161358e565b809150509250929050565b80151581146118c357600080fd5b6000806040838503121561375657600080fd5b82356135c181613735565b6000806000806060858703121561377757600080fd5b84356137828161358e565b9350602085013567ffffffffffffffff81111561379e57600080fd5b6137aa878288016135ec565b9598909750949560400135949350505050565b6000602082840312156137cf57600080fd5b81356110ab81613735565b600080604083850312156137ed57600080fd5b82359150602083013561372a81613735565b60008060006040848603121561381457600080fd5b833567ffffffffffffffff81111561382b57600080fd5b613837868287016135ec565b909450925050602084013561384b81613735565b809150509250925092565b6000806000806080858703121561386c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806020838503121561389b57600080fd5b823567ffffffffffffffff8111156138b257600080fd5b6138be858286016135ec565b90969095509350505050565b600080604083850312156138dd57600080fd5b50508035926020909101359150565b600181811c9082168061390057607f821691505b6020821081141561392157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156139ad5781600019048211156139935761399361395c565b808516156139a057918102915b93841c9390800290613977565b509250929050565b6000826139c457506001610be2565b816139d157506000610be2565b81600181146139e757600281146139f157613a0d565b6001915050610be2565b60ff841115613a0257613a0261395c565b50506001821b610be2565b5060208310610133831016604e8410600b8410161715613a30575081810a610be2565b613a3a8383613972565b8060001904821115613a4e57613a4e61395c565b029392505050565b60006110ab60ff8416836139b5565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615613a9557613a9561395c565b500290565b60008219821115613aad57613aad61395c565b500190565b6000600019821415613ac657613ac661395c565b5060010190565b600060208284031215613adf57600080fd5b5051919050565b600060208284031215613af857600080fd5b81516110ab81613735565b600082821015613b1557613b1561395c565b500390565b634e487b7160e01b600052603160045260246000fd5b600082613b4d57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215613b6457600080fd5b81516110ab8161358e565b600081518084526020808501945080840160005b83811015613ba85781516001600160a01b031687529582019590820190600101613b83565b509495945050505050565b85815284602082015260a060408201526000613bd260a0830186613b6f565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000613c086040830184613b6f565b949350505050565b600080600060608486031215613c2557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bc4d6ec8042be3350a964def829fa291c56a3d196749597080450bdcb2317e3564736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103905760003560e01c80636fc3eaec116101dc578063a9059cbb11610102578063dc44b6a0116100a0578063f259c57b1161006f578063f259c57b14610a6e578063f2fde38b14610a8e578063fabb0b4f14610aae578063ffb54a9914610ac457600080fd5b8063dc44b6a0146109d2578063dd62ed3e146109e8578063ea2f0b3714610a2e578063eafb5a3c14610a4e57600080fd5b8063c5d24189116100dc578063c5d2418914610970578063c860795214610986578063c9cf77891461099c578063d3f6a157146109b257600080fd5b8063a9059cbb14610925578063bf56b37114610945578063c3c8cd801461095b57600080fd5b806384530c461161017a5780638f4590d2116101495780638f4590d2146108b057806395d89b41146108d0578063a0c5efc2146108e5578063a457c2d71461090557600080fd5b806384530c461461082357806388790a681461084357806388f82020146108595780638da5cb5b1461089257600080fd5b806371b9189c116101b657806371b9189c146107b7578063743942b6146107d75780637598f8bc146107f757806378109e541461080d57600080fd5b80636fc3eaec1461076d57806370a0823114610782578063715018a6146107a257600080fd5b80632dd5efe7116102c1578063401aa5c01161025f57806352390c021161022e57806352390c02146106f75780635d54c0af1461071757806362015852146107375780636ce37fa01461074d57600080fd5b8063401aa5c0146106815780634549b0391461069757806349bd5a5e146106b75780634b01547f146106d757600080fd5b80633685d4191161029b5780633685d4191461060157806339509351146106215780633bd5d173146106415780633ddf65ab1461066157600080fd5b80632dd5efe714610595578063313ce567146105b5578063335f6a43146105e157600080fd5b806318160ddd1161032e57806325b86edf1161030857806325b86edf146105145780632691bc80146105345780632d4103d6146105555780632d8381191461057557600080fd5b806318160ddd146104bf5780631ca0a28d146104d457806323b872dd146104f457600080fd5b8063095ea7b31161036a578063095ea7b3146104095780630f3a325f1461043957806313114a9d146104725780631694505e1461048757600080fd5b80630445b6671461039c57806306fdde03146103c557806309302dc6146103e757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b260275481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b506103da610ae5565b6040516103bc9190613520565b3480156103f357600080fd5b50610407610402366004613575565b610b77565b005b34801561041557600080fd5b506104296104243660046135a3565b610bd1565b60405190151581526020016103bc565b34801561044557600080fd5b506104296104543660046135cf565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561047e57600080fd5b506014546103b2565b34801561049357600080fd5b506028546104a7906001600160a01b031681565b6040516001600160a01b0390911681526020016103bc565b3480156104cb57600080fd5b506012546103b2565b3480156104e057600080fd5b506104076104ef366004613638565b610be8565b34801561050057600080fd5b5061042961050f3660046136bb565b610e28565b34801561052057600080fd5b5061040761052f3660046136fc565b610e91565b34801561054057600080fd5b5060295461042990600160b01b900460ff1681565b34801561056157600080fd5b50610407610570366004613743565b610fa3565b34801561058157600080fd5b506103b2610590366004613575565b61102e565b3480156105a157600080fd5b506104076105b03660046135cf565b6110b2565b3480156105c157600080fd5b50601154600160a01b900460ff1660405160ff90911681526020016103bc565b3480156105ed57600080fd5b506104076105fc366004613761565b611100565b34801561060d57600080fd5b5061040761061c3660046135cf565b61128f565b34801561062d57600080fd5b5061042961063c3660046135a3565b611442565b34801561064d57600080fd5b5061040761065c366004613575565b611478565b34801561066d57600080fd5b5061040761067c3660046137bd565b611562565b34801561068d57600080fd5b506103b2601b5481565b3480156106a357600080fd5b506103b26106b23660046137da565b6115aa565b3480156106c357600080fd5b506029546104a7906001600160a01b031681565b3480156106e357600080fd5b506104076106f23660046137bd565b611637565b34801561070357600080fd5b506104076107123660046135cf565b61167f565b34801561072357600080fd5b506104076107323660046137ff565b611769565b34801561074357600080fd5b506103b260195481565b34801561075957600080fd5b50610407610768366004613856565b61184f565b34801561077957600080fd5b5061040761188a565b34801561078e57600080fd5b506103b261079d3660046135cf565b6118c6565b3480156107ae57600080fd5b50610407611925565b3480156107c357600080fd5b506104076107d2366004613888565b611999565b3480156107e357600080fd5b506104076107f23660046135cf565b611a38565b34801561080357600080fd5b506103b2601f5481565b34801561081957600080fd5b506103b260175481565b34801561082f57600080fd5b5061040761083e366004613888565b611a97565b34801561084f57600080fd5b506103b2601c5481565b34801561086557600080fd5b506104296108743660046135cf565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561089e57600080fd5b506000546001600160a01b03166104a7565b3480156108bc57600080fd5b506104076108cb3660046138ca565b611b31565b3480156108dc57600080fd5b506103da611b7b565b3480156108f157600080fd5b50610407610900366004613856565b611b8a565b34801561091157600080fd5b506104296109203660046135a3565b611bfe565b34801561093157600080fd5b506104296109403660046135a3565b611c4d565b34801561095157600080fd5b506103b2600b5481565b34801561096757600080fd5b50610407611c5a565b34801561097c57600080fd5b506103b2601a5481565b34801561099257600080fd5b506103b2601d5481565b3480156109a857600080fd5b506103b2601e5481565b3480156109be57600080fd5b506104076109cd3660046136fc565b611c90565b3480156109de57600080fd5b506103b260185481565b3480156109f457600080fd5b506103b2610a033660046136fc565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a3a57600080fd5b50610407610a493660046135cf565b611ce8565b348015610a5a57600080fd5b50610407610a693660046135cf565b611d33565b348015610a7a57600080fd5b50610407610a893660046135cf565b61205f565b348015610a9a57600080fd5b50610407610aa93660046135cf565b6120ad565b348015610aba57600080fd5b506103b2600a5481565b348015610ad057600080fd5b5060295461042990600160a81b900460ff1681565b606060158054610af4906138ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610b20906138ec565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b6000546001600160a01b03163314610baa5760405162461bcd60e51b8152600401610ba190613927565b60405180910390fd5b610bcb81610bc56103e860125461219790919063ffffffff16565b906121d9565b60175550565b6000610bde3384846122b7565b5060015b92915050565b6000546001600160a01b03163314610c125760405162461bcd60e51b8152600401610ba190613927565b6103218310610c795760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610ba1565b828114610cd95760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610ba1565b6000805b84811015610d3e57601154610cfd90600160a01b900460ff16600a613a56565b848483818110610d0f57610d0f613a65565b90506020020135610d209190613a7b565b610d2a9083613a9a565b915080610d3681613ab2565b915050610cdd565b5080610d49876118c6565b1015610d975760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ba1565b60005b84811015610e1f57610e0d87878784818110610db857610db8613a65565b9050602002016020810190610dcd91906135cf565b601154610de590600160a01b900460ff16600a613a56565b878786818110610df757610df7613a65565b90506020020135610e089190613a7b565b6123db565b80610e1781613ab2565b915050610d9a565b50505050505050565b6000610e358484846123db565b610e878433610e8285604051806060016040528060288152602001613c3f602891396001600160a01b038a166000908152600860209081526040808320338452909152902054919061295b565b6122b7565b5060019392505050565b6000546001600160a01b03163314610ebb5760405162461bcd60e51b8152600401610ba190613927565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f269190613acd565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190613ae6565b50505050565b6000546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610ba190613927565b6029805460ff60a81b1916600160a81b84151502179055610fed3061167f565b602954611002906001600160a01b031661167f565b602954600160a81b900460ff16801561101b5750600b54155b1561102a5743600b55600a8190555b5050565b60006013548211156110955760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ba1565b600061109f612995565b90506110ab8382612197565b9392505050565b6000546001600160a01b031633146110dc5760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610ba190613927565b6107d182106111925760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610ba1565b60115460009083906111af90600160a01b900460ff16600a613a56565b6111b99084613a7b565b6111c39190613a7b565b9050806111cf866118c6565b101561121d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ba1565b60005b83811015611287576112758686868481811061123e5761123e613a65565b905060200201602081019061125391906135cf565b60115461126b90600160a01b900460ff16600a613a56565b610e089087613a7b565b8061127f81613ab2565b915050611220565b505050505050565b6000546001600160a01b031633146112b95760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b0381166000908152600e602052604090205460ff166113215760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ba1565b60005b60105481101561102a57816001600160a01b03166010828154811061134b5761134b613a65565b6000918252602090912001546001600160a01b03161415611430576010805461137690600190613b03565b8154811061138657611386613a65565b600091825260209091200154601080546001600160a01b0390921691839081106113b2576113b2613a65565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600e90925220805460ff19169055601080548061140a5761140a613b1a565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061143a81613ab2565b915050611324565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610bde918590610e829086612258565b336000818152600e602052604090205460ff16156114ed5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ba1565b60006114f8836129b8565b505050506001600160a01b03841660009081526006602052604090205491925061152491905082612a07565b6001600160a01b03831660009081526006602052604090205560135461154a9082612a07565b60135560145461155a9084612258565b601455505050565b6000546001600160a01b0316331461158c5760405162461bcd60e51b8152600401610ba190613927565b60298054911515600160b81b0260ff60b81b19909216919091179055565b60006012548311156115fe5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ba1565b8161161d57600061160e846129b8565b50939550610be2945050505050565b6000611628846129b8565b50929550610be2945050505050565b6000546001600160a01b031633146116615760405162461bcd60e51b8152600401610ba190613927565b60298054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03811660009081526006602052604090205415611703576001600160a01b0381166000908152600660205260409020546116e99061102e565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319169091179055565b6000546001600160a01b031633146117935760405162461bcd60e51b8152600401610ba190613927565b60005b82811015610f9d57600f60008585848181106117b4576117b4613a65565b90506020020160208101906117c991906135cf565b6001600160a01b0316815260208101919091526040016000205460ff1661183f57816009600086868581811061180157611801613a65565b905060200201602081019061181691906135cf565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b61184881613ab2565b9050611796565b6000546001600160a01b031633146118795760405162461bcd60e51b8152600401610ba190613927565b601c92909255601d55601e55601f55565b6003546001600160a01b0316336001600160a01b0316146118aa57600080fd5b60035447906118c39082906001600160a01b0316612a49565b50565b6001600160a01b0381166000908152600e602052604081205460ff161561190357506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610be29061102e565b6000546001600160a01b0316331461194f5760405162461bcd60e51b8152600401610ba190613927565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146119c35760405162461bcd60e51b8152600401610ba190613927565b60005b81811015611a33576001600c60008585858181106119e6576119e6613a65565b90506020020160208101906119fb91906135cf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a2c81613ab2565b90506119c6565b505050565b6000546001600160a01b03163314611a625760405162461bcd60e51b8152600401610ba190613927565b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561102a573d6000803e3d6000fd5b6000546001600160a01b03163314611ac15760405162461bcd60e51b8152600401610ba190613927565b60005b81811015611a33576001600f6000858585818110611ae457611ae4613a65565b9050602002016020810190611af991906135cf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b2a81613ab2565b9050611ac4565b6000546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610ba190613927565b8082601254611b6a9190613a7b565b611b749190613b30565b6027555050565b606060168054610af4906138ec565b6000546001600160a01b03163314611bb45760405162461bcd60e51b8152600401610ba190613927565b6018839055601a8290556019819055601b8490556024849055602183905560238190556022829055602054611bf590611bef83818787612258565b90612258565b60255550505050565b6000610bde3384610e8285604051806060016040528060258152602001613c67602591393360009081526008602090815260408083206001600160a01b038d168452909152902054919061295b565b6000610bde3384846123db565b6003546001600160a01b0316336001600160a01b031614611c7a57600080fd5b6000611c85306118c6565b90506118c381612a7f565b6000546001600160a01b03163314611cba5760405162461bcd60e51b8152600401610ba190613927565b600380546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055565b6000546001600160a01b03163314611d125760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b03163314611d5d5760405162461bcd60e51b8152600401610ba190613927565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613b52565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e379190613b52565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea69190613b52565b90506001600160a01b03811661201f57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f189190613b52565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f899190613b52565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffa9190613b52565b602980546001600160a01b0319166001600160a01b039290921691909117905561203b565b602980546001600160a01b0319166001600160a01b0383161790555b50602880546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146120895760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146120d75760405162461bcd60e51b8152600401610ba190613927565b6001600160a01b03811661213c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ba1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006110ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c12565b6000826121e857506000610be2565b60006121f48385613a7b565b9050826122018583613b30565b146110ab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ba1565b6000806122658385613a9a565b9050838110156110ab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ba1565b6001600160a01b0383166123195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ba1565b6001600160a01b03821661237a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ba1565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661243f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ba1565b6001600160a01b0382166124a15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ba1565b600081116125035760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ba1565b6001600160a01b03821660009081526009602052604090205460ff16156125665760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610ba1565b6001600160a01b03831660009081526009602052604090205460ff16156125c95760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610ba1565b6000546001600160a01b038481169116148015906125f557506000546001600160a01b03838116911614155b1561265357602954600160a81b900460ff166126535760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610ba1565b6029546000906001600160a01b038581169116148061267f57506029546001600160a01b038481169116145b80156126c757506001600160a01b0384166000908152600c602052604090205460ff16806126c557506001600160a01b0383166000908152600c602052604090205460ff165b155b156126d0575060015b6000600b5411801561271457506001600160a01b0383166000908152600d602052604090205460ff1615801561271457506000546001600160a01b03858116911614155b801561272f575043600a54600b5461272c9190613a9a565b11155b156127a357601754612740846118c6565b61274a9084613a9a565b11156127a35760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610ba1565b602554602655601b54602455602954600160a81b900460ff1680156127d557506029546001600160a01b038481169116145b15612801576127f7601e54611bef601d54601c5461225890919063ffffffff16565b602655601f546024555b6000600b54118015612821575043600a54600b5461281f9190613a9a565b115b1561284a576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6000600b5411801561286a57506000546001600160a01b03858116911614155b80156128855750600a54600b546128819190613a9a565b4310155b801561289a5750602954600160b81b900460ff165b156128a6576103846026555b602954600160b01b900460ff16156128e957602954600160a81b900460ff1680156128de57506029546001600160a01b038581169116145b156128e95760006026555b602954600160a01b900460ff1615801561290c5750602954600160a81b900460ff165b801561292557506029546001600160a01b038481169116145b1561294f576000612935306118c6565b9050602754811061294d575060275461294d81612c40565b505b610f9d84848484612d9f565b6000818484111561297f5760405162461bcd60e51b8152600401610ba19190613520565b50600061298c8486613b03565b95945050505050565b60008060006129a2612ecb565b90925090506129b18282612197565b9250505090565b60008060008060008060008060006129cf8a61304d565b92509250925060008060006129ed8d86866129e8612995565b61308f565b919f909e50909c50959a5093985091965092945050505050565b60006110ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061295b565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611a33573d6000803e3d6000fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ab457612ab4613a65565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b319190613b52565b81600181518110612b4457612b44613a65565b6001600160a01b039283166020918202929092010152602854612b6a91309116846122b7565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ba3908590600090869030904290600401613bb3565b600060405180830381600087803b158015612bbd57600080fd5b505af1158015612bd1573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612c06929190613bef565b60405180910390a15050565b60008183612c335760405162461bcd60e51b8152600401610ba19190613520565b50600061298c8486613b30565b6029805460ff60a01b1916600160a01b179055602554602154600091612c7691600291612c7091829087906121d9565b90612197565b90506000612c848383612a07565b9050612c8f81612a7f565b6021544790600090612caf90612ca6906002612197565b60255490612a07565b90506000612cd16002612c7084612c70602154886121d990919063ffffffff16565b90506000612cee83612c70602354876121d990919063ffffffff16565b90506000612d0b84612c70602254886121d990919063ffffffff16565b90506000612d2885612c70602054896121d990919063ffffffff16565b9050478015612d7657600354612d489084906001600160a01b0316612a49565b600454612d5f9083906001600160a01b0316612a49565b600554612d769085906001600160a01b0316612a49565b8815612d8657612d8689866130df565b50506029805460ff60a01b191690555050505050505050565b60245460265482612db557600060248190556026555b6001600160a01b0386166000908152600e602052604090205460ff168015612df657506001600160a01b0385166000908152600e602052604090205460ff16155b15612e0b57612e068686866131b4565b612eb7565b6001600160a01b0386166000908152600e602052604090205460ff16158015612e4c57506001600160a01b0385166000908152600e602052604090205460ff165b15612e5c57612e068686866132da565b6001600160a01b0386166000908152600e602052604090205460ff168015612e9c57506001600160a01b0385166000908152600e602052604090205460ff165b15612eac57612e06868686613383565b612eb78686866133f6565b826112875760249190915560265550505050565b6013546012546000918291825b60105481101561301d57826006600060108481548110612efa57612efa613a65565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612f655750816007600060108481548110612f3e57612f3e613a65565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f7b57601354601254945094505050509091565b612fc16006600060108481548110612f9557612f95613a65565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612a07565b92506130096007600060108481548110612fdd57612fdd613a65565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612a07565b91508061301581613ab2565b915050612ed8565b5060125460135461302d91612197565b821015613044576013546012549350935050509091565b90939092509050565b60008060008061305c8561343a565b9050600061306986613457565b905060006130818261307b8986612a07565b90612a07565b979296509094509092505050565b600080808061309e88866121d9565b905060006130ac88876121d9565b905060006130ba88886121d9565b905060006130cc8261307b8686612a07565b939b939a50919850919650505050505050565b6028546130f79030906001600160a01b0316846122b7565b6028546001600160a01b031663f305d7198230856000806131206000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613188573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131ad9190613c10565b5050505050565b6000806000806000806131c6876129b8565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506131f89088612a07565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546132279087612a07565b6001600160a01b03808b1660009081526006602052604080822093909355908a16815220546132569086612258565b6001600160a01b03891660009081526006602052604090205561327881613474565b61328284836134fc565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516132c791815260200190565b60405180910390a3505050505050505050565b6000806000806000806132ec876129b8565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915061331e9087612a07565b6001600160a01b03808b16600090815260066020908152604080832094909455918b168152600790915220546133549084612258565b6001600160a01b0389166000908152600760209081526040808320939093556006905220546132569086612258565b600080600080600080613395876129b8565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506133c79088612a07565b6001600160a01b038a1660009081526007602090815260408083209390935560069052205461331e9087612a07565b600080600080600080613408876129b8565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506132279087612a07565b6000610be26103e8612c70602454856121d990919063ffffffff16565b6000610be26103e8612c70602654856121d990919063ffffffff16565b600061347e612995565b9050600061348c83836121d9565b306000908152600660205260409020549091506134a99082612258565b30600090815260066020908152604080832093909355600e9052205460ff1615611a3357306000908152600760205260409020546134e79084612258565b30600090815260076020526040902055505050565b6013546135099083612a07565b6013556014546135199082612258565b6014555050565b600060208083528351808285015260005b8181101561354d57858101830151858201604001528201613531565b8181111561355f576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561358757600080fd5b5035919050565b6001600160a01b03811681146118c357600080fd5b600080604083850312156135b657600080fd5b82356135c18161358e565b946020939093013593505050565b6000602082840312156135e157600080fd5b81356110ab8161358e565b60008083601f8401126135fe57600080fd5b50813567ffffffffffffffff81111561361657600080fd5b6020830191508360208260051b850101111561363157600080fd5b9250929050565b60008060008060006060868803121561365057600080fd5b853561365b8161358e565b9450602086013567ffffffffffffffff8082111561367857600080fd5b61368489838a016135ec565b9096509450604088013591508082111561369d57600080fd5b506136aa888289016135ec565b969995985093965092949392505050565b6000806000606084860312156136d057600080fd5b83356136db8161358e565b925060208401356136eb8161358e565b929592945050506040919091013590565b6000806040838503121561370f57600080fd5b823561371a8161358e565b9150602083013561372a8161358e565b809150509250929050565b80151581146118c357600080fd5b6000806040838503121561375657600080fd5b82356135c181613735565b6000806000806060858703121561377757600080fd5b84356137828161358e565b9350602085013567ffffffffffffffff81111561379e57600080fd5b6137aa878288016135ec565b9598909750949560400135949350505050565b6000602082840312156137cf57600080fd5b81356110ab81613735565b600080604083850312156137ed57600080fd5b82359150602083013561372a81613735565b60008060006040848603121561381457600080fd5b833567ffffffffffffffff81111561382b57600080fd5b613837868287016135ec565b909450925050602084013561384b81613735565b809150509250925092565b6000806000806080858703121561386c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806020838503121561389b57600080fd5b823567ffffffffffffffff8111156138b257600080fd5b6138be858286016135ec565b90969095509350505050565b600080604083850312156138dd57600080fd5b50508035926020909101359150565b600181811c9082168061390057607f821691505b6020821081141561392157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156139ad5781600019048211156139935761399361395c565b808516156139a057918102915b93841c9390800290613977565b509250929050565b6000826139c457506001610be2565b816139d157506000610be2565b81600181146139e757600281146139f157613a0d565b6001915050610be2565b60ff841115613a0257613a0261395c565b50506001821b610be2565b5060208310610133831016604e8410600b8410161715613a30575081810a610be2565b613a3a8383613972565b8060001904821115613a4e57613a4e61395c565b029392505050565b60006110ab60ff8416836139b5565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615613a9557613a9561395c565b500290565b60008219821115613aad57613aad61395c565b500190565b6000600019821415613ac657613ac661395c565b5060010190565b600060208284031215613adf57600080fd5b5051919050565b600060208284031215613af857600080fd5b81516110ab81613735565b600082821015613b1557613b1561395c565b500390565b634e487b7160e01b600052603160045260246000fd5b600082613b4d57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215613b6457600080fd5b81516110ab8161358e565b600081518084526020808501945080840160005b83811015613ba85781516001600160a01b031687529582019590820190600101613b83565b509495945050505050565b85815284602082015260a060408201526000613bd260a0830186613b6f565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000613c086040830184613b6f565b949350505050565b600080600060608486031215613c2557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bc4d6ec8042be3350a964def829fa291c56a3d196749597080450bdcb2317e3564736f6c634300080a0033

Deployed Bytecode Sourcemap

14399:25190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16731:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;16731:55:0;;;;;;;;19231:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;36501:175::-;;;;;;;;;;-1:-1:-1;36501:175:0;;;;;:::i;:::-;;:::i;:::-;;20143:161;;;;;;;;;;-1:-1:-1;20143:161:0;;;;;:::i;:::-;;:::i;:::-;;;1604:14:1;;1597:22;1579:41;;1567:2;1552:18;20143:161:0;1439:187:1;35572:106:0;;;;;;;;;;-1:-1:-1;35572:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;35652:18:0;35628:4;35652:18;;;:9;:18;;;;;;;;;35572:106;21264:87;;;;;;;;;;-1:-1:-1;21333:10:0;;21264:87;;16805:41;;;;;;;;;;-1:-1:-1;16805:41:0;;;;-1:-1:-1;;;;;16805:41:0;;;;;;-1:-1:-1;;;;;2074:32:1;;;2056:51;;2044:2;2029:18;16805:41:0;1883:230:1;19508:95:0;;;;;;;;;;-1:-1:-1;19588:7:0;;19508:95;;36991:702;;;;;;;;;;-1:-1:-1;36991:702:0;;;;;:::i;:::-;;:::i;20312:313::-;;;;;;;;;;-1:-1:-1;20312:313:0;;;;;:::i;:::-;;:::i;36316:177::-;;;;;;;;;;-1:-1:-1;36316:177:0;;;;;:::i;:::-;;:::i;16956:34::-;;;;;;;;;;-1:-1:-1;16956:34:0;;;;-1:-1:-1;;;16956:34:0;;;;;;18131:337;;;;;;;;;;-1:-1:-1;18131:337:0;;;;;:::i;:::-;;:::i;22196:253::-;;;;;;;;;;-1:-1:-1;22196:253:0;;;;;:::i;:::-;;:::i;36684:113::-;;;;;;;;;;-1:-1:-1;36684:113:0;;;;;:::i;:::-;;:::i;19417:83::-;;;;;;;;;;-1:-1:-1;19483:9:0;;-1:-1:-1;;;19483:9:0;;;;19417:83;;4879:4:1;4867:17;;;4849:36;;4837:2;4822:18;19417:83:0;4707:184:1;37701:512:0;;;;;;;;;;-1:-1:-1;37701:512:0;;;;;:::i;:::-;;:::i;22728:479::-;;;;;;;;;;-1:-1:-1;22728:479:0;;;;;:::i;:::-;;:::i;20633:218::-;;;;;;;;;;-1:-1:-1;20633:218:0;;;;;:::i;:::-;;:::i;21363:377::-;;;;;;;;;;-1:-1:-1;21363:377:0;;;;;:::i;:::-;;:::i;18592:96::-;;;;;;;;;;-1:-1:-1;18592:96:0;;;;;:::i;:::-;;:::i;16080:36::-;;;;;;;;;;;;;;;;21752:436;;;;;;;;;;-1:-1:-1;21752:436:0;;;;;:::i;:::-;;:::i;16853:28::-;;;;;;;;;;-1:-1:-1;16853:28:0;;;;-1:-1:-1;;;;;16853:28:0;;;18482:102;;;;;;;;;;-1:-1:-1;18482:102:0;;;;;:::i;:::-;;:::i;22457:263::-;;;;;;;;;;-1:-1:-1;22457:263:0;;;;;:::i;:::-;;:::i;35690:267::-;;;;;;;;;;-1:-1:-1;35690:267:0;;;;;:::i;:::-;;:::i;15981:30::-;;;;;;;;;;;;;;;;39195:299;;;;;;;;;;-1:-1:-1;39195:299:0;;;;;:::i;:::-;;:::i;38432:211::-;;;;;;;;;;;;;:::i;19611:198::-;;;;;;;;;;-1:-1:-1;19611:198:0;;;;;:::i;:::-;;:::i;6030:148::-;;;;;;;;;;;;;:::i;34896:198::-;;;;;;;;;;-1:-1:-1;34896:198:0;;;;;:::i;:::-;;:::i;36173:135::-;;;;;;;;;;-1:-1:-1;36173:135:0;;;;;:::i;:::-;;:::i;16267:37::-;;;;;;;;;;;;;;;;15846:57;;;;;;;;;;;;;;;;35969:188;;;;;;;;;;-1:-1:-1;35969:188:0;;;;;:::i;:::-;;:::i;16125:36::-;;;;;;;;;;;;;;;;21136:120;;;;;;;;;;-1:-1:-1;21136:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21228:20:0;21204:4;21228:20;;;:11;:20;;;;;;;;;21136:120;5805:79;;;;;;;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;5870:6:0;5805:79;;36805:178;;;;;;;;;;-1:-1:-1;36805:178:0;;;;;:::i;:::-;;:::i;19322:87::-;;;;;;;;;;;;;:::i;38652:535::-;;;;;;;;;;-1:-1:-1;38652:535:0;;;;;:::i;:::-;;:::i;20859:269::-;;;;;;;;;;-1:-1:-1;20859:269:0;;;;;:::i;:::-;;:::i;19817:167::-;;;;;;;;;;-1:-1:-1;19817:167:0;;;;;:::i;:::-;;:::i;15145:29::-;;;;;;;;;;;;;;;;38225:195;;;;;;;;;;;;;:::i;16028:36::-;;;;;;;;;;;;;;;;16168:38;;;;;;;;;;;;;;;;16220:32;;;;;;;;;;;;;;;;35234:190;;;;;;;;;;-1:-1:-1;35234:190:0;;;;;:::i;:::-;;:::i;15939:35::-;;;;;;;;;;;;;;;;19992:143;;;;;;;;;;-1:-1:-1;19992:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20100:18:0;;;20073:7;20100:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19992:143;35112:110;;;;;;;;;;-1:-1:-1;35112:110:0;;;;;:::i;:::-;;:::i;18700:523::-;;;;;;;;;;-1:-1:-1;18700:523:0;;;;;:::i;:::-;;:::i;34776:112::-;;;;;;;;;;-1:-1:-1;34776:112:0;;;;;:::i;:::-;;:::i;6186:244::-;;;;;;;;;;-1:-1:-1;6186:244:0;;;;;:::i;:::-;;:::i;15109:29::-;;;;;;;;;;;;;;;;16918:31;;;;;;;;;;-1:-1:-1;16918:31:0;;;;-1:-1:-1;;;16918:31:0;;;;;;19231:83;19268:13;19301:5;19294:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19231:83;:::o;36501:175::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;;;;;;;;;36622:46:::1;36644:23;36622:17;36634:4;36622:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:46::i;:::-;36604:15;:64:::0;-1:-1:-1;36501:175:0:o;20143:161::-;20218:4;20235:39;189:10;20258:7;20267:6;20235:8;:39::i;:::-;-1:-1:-1;20292:4:0;20143:161;;;;;:::o;36991:702::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;37144:3:::1;37125:22:::0;::::1;37117:79;;;::::0;-1:-1:-1;;;37117:79:0;;9566:2:1;37117:79:0::1;::::0;::::1;9548:21:1::0;9605:2;9585:18;;;9578:30;9644:34;9624:18;;;9617:62;-1:-1:-1;;;9695:18:1;;;9688:43;9748:19;;37117:79:0::1;9364:409:1::0;37117:79:0::1;37238:33:::0;;::::1;37230:85;;;::::0;-1:-1:-1;;;37230:85:0;;9980:2:1;37230:85:0::1;::::0;::::1;9962:21:1::0;10019:2;9999:18;;;9992:30;10058:34;10038:18;;;10031:62;-1:-1:-1;;;10109:18:1;;;10102:38;10157:19;;37230:85:0::1;9778:404:1::0;37230:85:0::1;37328:12;37361:6:::0;37357:108:::1;37371:20:::0;;::::1;37357:108;;;37443:9;::::0;37439:13:::1;::::0;-1:-1:-1;;;37443:9:0;::::1;;;37439:2;:13;:::i;:::-;37427:6;;37434:1;37427:9;;;;;;;:::i;:::-;;;;;;;:25;;;;:::i;:::-;37419:34;::::0;:4;:34:::1;:::i;:::-;37412:41:::0;-1:-1:-1;37393:3:0;::::1;::::0;::::1;:::i;:::-;;;;37357:108;;;;37504:4;37485:15;37495:4;37485:9;:15::i;:::-;:23;;37477:63;;;::::0;-1:-1:-1;;;37477:63:0;;12482:2:1;37477:63:0::1;::::0;::::1;12464:21:1::0;12521:2;12501:18;;;12494:30;12560:29;12540:18;;;12533:57;12607:18;;37477:63:0::1;12280:351:1::0;37477:63:0::1;37557:6;37553:133;37567:20:::0;;::::1;37553:133;;;37608:56;37618:4;37623:9;;37633:1;37623:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;37653:9;::::0;37649:13:::1;::::0;-1:-1:-1;;;37653:9:0;::::1;;;37649:2;:13;:::i;:::-;37637:6;;37644:1;37637:9;;;;;;;:::i;:::-;;;;;;;:25;;;;:::i;:::-;37608:9;:56::i;:::-;37589:3:::0;::::1;::::0;::::1;:::i;:::-;;;;37553:133;;;;37104:589;36991:702:::0;;;;;:::o;20312:313::-;20410:4;20427:36;20437:6;20445:9;20456:6;20427:9;:36::i;:::-;20474:121;20483:6;189:10;20505:89;20543:6;20505:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20505:19:0;;;;;;:11;:19;;;;;;;;189:10;20505:33;;;;;;;;;;:37;:89::i;:::-;20474:8;:121::i;:::-;-1:-1:-1;20613:4:0;20312:313;;;;;:::o;36316:177::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36417:30:::1;::::0;-1:-1:-1;;;36417:30:0;;36441:4:::1;36417:30;::::0;::::1;2056:51:1::0;36399:15:0::1;::::0;-1:-1:-1;;;;;36417:15:0;::::1;::::0;::::1;::::0;2029:18:1;;36417:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36458:27;::::0;-1:-1:-1;;;36458:27:0;;-1:-1:-1;;;;;13017:32:1;;;36458:27:0::1;::::0;::::1;12999:51:1::0;13066:18;;;13059:34;;;36399:48:0;;-1:-1:-1;36458:14:0;;::::1;::::0;::::1;::::0;12972:18:1;;36458:27:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36388:105;36316:177:::0;;:::o;18131:337::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;18218:11:::1;:21:::0;;-1:-1:-1;;;;18218:21:0::1;-1:-1:-1::0;;;18218:21:0;::::1;;;;::::0;;18250:32:::1;18276:4;18250:17;:32::i;:::-;18311:13;::::0;18293:32:::1;::::0;-1:-1:-1;;;;;18311:13:0::1;18293:17;:32::i;:::-;18339:11;::::0;-1:-1:-1;;;18339:11:0;::::1;;;:30:::0;::::1;;;-1:-1:-1::0;18354:10:0::1;::::0;:15;18339:30:::1;18336:125;;;18398:12;18385:10;:25:::0;18425:10:::1;:24:::0;;;18336:125:::1;18131:337:::0;;:::o;22196:253::-;22262:7;22301;;22290;:18;;22282:73;;;;-1:-1:-1;;;22282:73:0;;13556:2:1;22282:73:0;;;13538:21:1;13595:2;13575:18;;;13568:30;13634:34;13614:18;;;13607:62;-1:-1:-1;;;13685:18:1;;;13678:40;13735:19;;22282:73:0;13354:406:1;22282:73:0;22366:19;22389:10;:8;:10::i;:::-;22366:33;-1:-1:-1;22417:24:0;:7;22366:33;22417:11;:24::i;:::-;22410:31;22196:253;-1:-1:-1;;;22196:253:0:o;36684:113::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36757:25:0::1;;::::0;;;:18:::1;:25;::::0;;;;:32;;-1:-1:-1;;36757:32:0::1;36785:4;36757:32;::::0;;36684:113::o;37701:512::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;37849:4:::1;37830:23:::0;::::1;37822:81;;;::::0;-1:-1:-1;;;37822:81:0;;13967:2:1;37822:81:0::1;::::0;::::1;13949:21:1::0;14006:2;13986:18;;;13979:30;14045:34;14025:18;;;14018:62;-1:-1:-1;;;14096:18:1;;;14089:44;14150:19;;37822:81:0::1;13765:410:1::0;37822:81:0::1;37966:9;::::0;37939:12:::1;::::0;37978:9;;37962:13:::1;::::0;-1:-1:-1;;;37966:9:0;::::1;;;37962:2;:13;:::i;:::-;37954:21;::::0;:6;:21:::1;:::i;:::-;:40;;;;:::i;:::-;37939:55;;38034:4;38015:15;38025:4;38015:9;:15::i;:::-;:23;;38007:63;;;::::0;-1:-1:-1;;;38007:63:0;;12482:2:1;38007:63:0::1;::::0;::::1;12464:21:1::0;12521:2;12501:18;;;12494:30;12560:29;12540:18;;;12533:57;12607:18;;38007:63:0::1;12280:351:1::0;38007:63:0::1;38087:6;38083:123;38097:20:::0;;::::1;38083:123;;;38138:52;38148:4;38153:9;;38163:1;38153:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;38179:9;::::0;38175:13:::1;::::0;-1:-1:-1;;;38179:9:0;::::1;;;38175:2;:13;:::i;:::-;38167:21;::::0;:6;:21:::1;:::i;38138:52::-;38119:3:::0;::::1;::::0;::::1;:::i;:::-;;;;38083:123;;;;37809:404;37701:512:::0;;;;:::o;22728:479::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22810:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22802:60;;;::::0;-1:-1:-1;;;22802:60:0;;14382:2:1;22802:60:0::1;::::0;::::1;14364:21:1::0;14421:2;14401:18;;;14394:30;14460:29;14440:18;;;14433:57;14507:18;;22802:60:0::1;14180:351:1::0;22802:60:0::1;22878:9;22873:327;22897:9;:16:::0;22893:20;::::1;22873:327;;;22955:7;-1:-1:-1::0;;;;;22939:23:0::1;:9;22949:1;22939:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22939:12:0::1;:23;22935:254;;;22998:9;23008:16:::0;;:20:::1;::::0;23027:1:::1;::::0;23008:20:::1;:::i;:::-;22998:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22983:9:::1;:12:::0;;-1:-1:-1;;;;;22998:31:0;;::::1;::::0;22993:1;;22983:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22983:46:0::1;-1:-1:-1::0;;;;;22983:46:0;;::::1;;::::0;;23048:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23087:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23087:28:0::1;::::0;;23134:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23134:15:0;;;;;-1:-1:-1;;;;;;23134:15:0::1;::::0;;;;;18131:337;;:::o;22935:254::-:1;22915:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22873:327;;20633:218:::0;189:10;20721:4;20770:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20770:34:0;;;;;;;;;;20721:4;;20738:83;;20761:7;;20770:50;;20809:10;20770:38;:50::i;21363:377::-;189:10;21415:14;21464:19;;;:11;:19;;;;;;;;21463:20;21455:77;;;;-1:-1:-1;;;21455:77:0;;15000:2:1;21455:77:0;;;14982:21:1;15039:2;15019:18;;;15012:30;15078:34;15058:18;;;15051:62;-1:-1:-1;;;15129:18:1;;;15122:42;15181:19;;21455:77:0;14798:408:1;21455:77:0;21544:15;21568:19;21579:7;21568:10;:19::i;:::-;-1:-1:-1;;;;;;;;;21616:15:0;;;;;;:7;:15;;;;;;21543:44;;-1:-1:-1;21616:28:0;;:15;-1:-1:-1;21543:44:0;21616:19;:28::i;:::-;-1:-1:-1;;;;;21598:15:0;;;;;;:7;:15;;;;;:46;21665:7;;:20;;21677:7;21665:11;:20::i;:::-;21655:7;:30;21709:10;;:23;;21724:7;21709:14;:23::i;:::-;21696:10;:36;-1:-1:-1;;;21363:377:0:o;18592:96::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;18661:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;18661:19:0::1;-1:-1:-1::0;;;;18661:19:0;;::::1;::::0;;;::::1;::::0;;18592:96::o;21752:436::-;21842:7;21881;;21870;:18;;21862:62;;;;-1:-1:-1;;;21862:62:0;;15413:2:1;21862:62:0;;;15395:21:1;15452:2;15432:18;;;15425:30;15491:33;15471:18;;;15464:61;15542:18;;21862:62:0;15211:355:1;21862:62:0;21940:17;21935:246;;21975:15;21999:19;22010:7;21999:10;:19::i;:::-;-1:-1:-1;21974:44:0;;-1:-1:-1;22033:14:0;;-1:-1:-1;;;;;22033:14:0;21935:246;22082:23;22113:19;22124:7;22113:10;:19::i;:::-;-1:-1:-1;22080:52:0;;-1:-1:-1;22147:22:0;;-1:-1:-1;;;;;22147:22:0;18482:102;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;18554:14:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18554:22:0::1;-1:-1:-1::0;;;;18554:22:0;;::::1;::::0;;;::::1;::::0;;18482:102::o;22457:263::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22536:16:0;::::1;22555:1;22536:16:::0;;;:7:::1;:16;::::0;;;;;:20;22533:108:::1;;-1:-1:-1::0;;;;;22612:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22592:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22573:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22533:108:::1;-1:-1:-1::0;;;;;22651:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22651:27:0::1;22674:4;22651:27:::0;;::::1;::::0;;;22689:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22689:23:0::1;::::0;;::::1;::::0;;22457:263::o;35690:267::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;35790:9:::1;35785:165;35801:20:::0;;::::1;35785:165;;;35847:10;:24;35858:9;;35868:1;35858:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35847:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;35847:24:0;;::::1;;35843:96;;35917:6;35891:9;:23;35901:9;;35911:1;35901:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35891:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;35891:23:0;:32;;-1:-1:-1;;35891:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35843:96:::1;35823:3;::::0;::::1;:::i;:::-;;;35785:165;;39195:299:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39332:17:::1;:33:::0;;;;39376:17:::1;:33:::0;39420:11:::1;:21:::0;39452:18:::1;:34:::0;39195:299::o;38432:211::-;38498:15;;-1:-1:-1;;;;;38498:15:0;189:10;-1:-1:-1;;;;;38482:31:0;;38474:40;;;;;;38619:15;;38554:21;;38586:49;;38554:21;;-1:-1:-1;;;;;38619:15:0;38586:12;:49::i;:::-;38463:180;38432:211::o;19611:198::-;-1:-1:-1;;;;;19701:20:0;;19677:7;19701:20;;;:11;:20;;;;;;;;19697:49;;;-1:-1:-1;;;;;;19730:16:0;;;;;:7;:16;;;;;;;19611:198::o;19697:49::-;-1:-1:-1;;;;;19784:16:0;;;;;;:7;:16;;;;;;19764:37;;:19;:37::i;6030:148::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;6137:1:::1;6121:6:::0;;6100:40:::1;::::0;-1:-1:-1;;;;;6121:6:0;;::::1;::::0;6100:40:::1;::::0;6137:1;;6100:40:::1;6168:1;6151:19:::0;;-1:-1:-1;;;;;;6151:19:0::1;::::0;;6030:148::o;34896:198::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;34983:9:::1;34978:109;34994:20:::0;;::::1;34978:109;;;35071:4;35036:18;:32;35055:9;;35065:1;35055:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35036:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;35036:32:0;:39;;-1:-1:-1;;35036:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35016:3:::1;::::0;::::1;:::i;:::-;;;34978:109;;;;34896:198:::0;;:::o;36173:135::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36258:42:::1;::::0;-1:-1:-1;;;;;36258:19:0;::::1;::::0;36278:21:::1;36258:42:::0;::::1;;;::::0;::::1;::::0;;;36278:21;36258:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;35969:188:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36056:9:::1;36051:99;36067:20:::0;;::::1;36051:99;;;36134:4;36109:10;:24;36120:9;;36130:1;36120:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36109:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;36109:24:0;:29;;-1:-1:-1;;36109:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36089:3:::1;::::0;::::1;:::i;:::-;;;36051:99;;36805:178:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36959:16:::1;36939;36929:7;;:26;;;;:::i;:::-;36928:47;;;;:::i;:::-;36912:13;:63:::0;-1:-1:-1;;36805:178:0:o;19322:87::-;19361:13;19394:7;19387:14;;;;;:::i;38652:535::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;38798:16:::1;:32:::0;;;38841:16:::1;:32:::0;;;38884:10:::1;:20:::0;;;38915:17:::1;:33:::0;;;38961:13:::1;:29:::0;;;39001:12:::1;:28:::0;;;39040:6:::1;:16:::0;;;39067:12:::1;:28:::0;;;39164:12:::1;::::0;39117:60:::1;::::0;:42:::1;38897:7:::0;39117:42;38817:13;38860;39117:16:::1;:30::i;:::-;:34:::0;::::1;:42::i;:60::-;39106:8;:71:::0;-1:-1:-1;;;;38652:535:0:o;20859:269::-;20952:4;20969:129;189:10;20992:7;21001:96;21040:15;21001:96;;;;;;;;;;;;;;;;;189:10;21001:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21001:34:0;;;;;;;;;;;;:38;:96::i;19817:167::-;19895:4;19912:42;189:10;19936:9;19947:6;19912:9;:42::i;38225:195::-;38291:15;;-1:-1:-1;;;;;38291:15:0;189:10;-1:-1:-1;;;;;38275:31:0;;38267:40;;;;;;38318:23;38344:24;38362:4;38344:9;:24::i;:::-;38318:50;;38379:33;38396:15;38379:16;:33::i;35234:190::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;35331:15:::1;:43:::0;;-1:-1:-1;;;;;35331:43:0;;::::1;-1:-1:-1::0;;;;;;35331:43:0;;::::1;;::::0;;;35385:9:::1;:31:::0;;;;;::::1;::::0;::::1;;::::0;;35234:190::o;35112:110::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35179:27:0::1;35209:5;35179:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;35179:35:0::1;::::0;;35112:110::o;18700:523::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;18773:29:::1;18824:9;18773:61;;18845:16;18882:10;-1:-1:-1::0;;;;;18882:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18864:47:0::1;;18920:4;18927:10;-1:-1:-1::0;;;;;18927:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18864:81;::::0;-1:-1:-1;;;;;;18864:81:0::1;::::0;;;;;;-1:-1:-1;;;;;16279:15:1;;;18864:81:0::1;::::0;::::1;16261:34:1::0;16331:15;;16311:18;;;16304:43;16196:18;;18864:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18845:100:::0;-1:-1:-1;;;;;;18960:22:0;::::1;18956:221;;19033:10;-1:-1:-1::0;;;;;19033:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19015:50:0::1;;19074:4;19081:10;-1:-1:-1::0;;;;;19081:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19015:84;::::0;-1:-1:-1;;;;;;19015:84:0::1;::::0;;;;;;-1:-1:-1;;;;;16279:15:1;;;19015:84:0::1;::::0;::::1;16261:34:1::0;16331:15;;16311:18;;;16304:43;16196:18;;19015:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18999:13;:100:::0;;-1:-1:-1;;;;;;18999:100:0::1;-1:-1:-1::0;;;;;18999:100:0;;;::::1;::::0;;;::::1;::::0;;18956:221:::1;;;19141:13;:24:::0;;-1:-1:-1;;;;;;19141:24:0::1;-1:-1:-1::0;;;;;19141:24:0;::::1;;::::0;;18956:221:::1;-1:-1:-1::0;19187:15:0::1;:28:::0;;-1:-1:-1;;;;;;19187:28:0::1;-1:-1:-1::0;;;;;19187:28:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;18700:523:0:o;34776:112::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34846:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34846:34:0::1;34876:4;34846:34;::::0;;34776:112::o;6186:244::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6275:22:0;::::1;6267:73;;;::::0;-1:-1:-1;;;6267:73:0;;16560:2:1;6267:73:0::1;::::0;::::1;16542:21:1::0;16599:2;16579:18;;;16572:30;16638:34;16618:18;;;16611:62;-1:-1:-1;;;16689:18:1;;;16682:36;16735:19;;6267:73:0::1;16358:402:1::0;6267:73:0::1;6377:6;::::0;;6356:38:::1;::::0;-1:-1:-1;;;;;6356:38:0;;::::1;::::0;6377:6;::::1;::::0;6356:38:::1;::::0;::::1;6405:6;:17:::0;;-1:-1:-1;;;;;;6405:17:0::1;-1:-1:-1::0;;;;;6405:17:0;;;::::1;::::0;;;::::1;::::0;;6186:244::o;1964:132::-;2022:7;2049:39;2053:1;2056;2049:39;;;;;;;;;;;;;;;;;:3;:39::i;1704:250::-;1762:7;1786:6;1782:47;;-1:-1:-1;1816:1:0;1809:8;;1782:47;1841:9;1853:5;1857:1;1853;:5;:::i;:::-;1841:17;-1:-1:-1;1886:1:0;1877:5;1881:1;1841:17;1877:5;:::i;:::-;:10;1869:56;;;;-1:-1:-1;;;1869:56:0;;16967:2:1;1869:56:0;;;16949:21:1;17006:2;16986:18;;;16979:30;17045:34;17025:18;;;17018:62;-1:-1:-1;;;17096:18:1;;;17089:31;17137:19;;1869:56:0;16765:397:1;1171:181:0;1229:7;;1261:5;1265:1;1261;:5;:::i;:::-;1249:17;;1290:1;1285;:6;;1277:46;;;;-1:-1:-1;;;1277:46:0;;17369:2:1;1277:46:0;;;17351:21:1;17408:2;17388:18;;;17381:30;17447:29;17427:18;;;17420:57;17494:18;;1277:46:0;17167:351:1;23215:337:0;-1:-1:-1;;;;;23308:19:0;;23300:68;;;;-1:-1:-1;;;23300:68:0;;17725:2:1;23300:68:0;;;17707:21:1;17764:2;17744:18;;;17737:30;17803:34;17783:18;;;17776:62;-1:-1:-1;;;17854:18:1;;;17847:34;17898:19;;23300:68:0;17523:400:1;23300:68:0;-1:-1:-1;;;;;23387:21:0;;23379:68;;;;-1:-1:-1;;;23379:68:0;;18130:2:1;23379:68:0;;;18112:21:1;18169:2;18149:18;;;18142:30;18208:34;18188:18;;;18181:62;-1:-1:-1;;;18259:18:1;;;18252:32;18301:19;;23379:68:0;17928:398:1;23379:68:0;-1:-1:-1;;;;;23460:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23512:32;;160:25:1;;;23512:32:0;;133:18:1;23512:32:0;;;;;;;23215:337;;;:::o;23560:2393::-;-1:-1:-1;;;;;23682:18:0;;23674:68;;;;-1:-1:-1;;;23674:68:0;;18533:2:1;23674:68:0;;;18515:21:1;18572:2;18552:18;;;18545:30;18611:34;18591:18;;;18584:62;-1:-1:-1;;;18662:18:1;;;18655:35;18707:19;;23674:68:0;18331:401:1;23674:68:0;-1:-1:-1;;;;;23761:16:0;;23753:64;;;;-1:-1:-1;;;23753:64:0;;18939:2:1;23753:64:0;;;18921:21:1;18978:2;18958:18;;;18951:30;19017:34;18997:18;;;18990:62;-1:-1:-1;;;19068:18:1;;;19061:33;19111:19;;23753:64:0;18737:399:1;23753:64:0;23845:1;23836:6;:10;23828:64;;;;-1:-1:-1;;;23828:64:0;;19343:2:1;23828:64:0;;;19325:21:1;19382:2;19362:18;;;19355:30;19421:34;19401:18;;;19394:62;-1:-1:-1;;;19472:18:1;;;19465:39;19521:19;;23828:64:0;19141:405:1;23828:64:0;-1:-1:-1;;;;;23912:13:0;;;;;;:9;:13;;;;;;;;23911:14;23903:50;;;;-1:-1:-1;;;23903:50:0;;19753:2:1;23903:50:0;;;19735:21:1;19792:2;19772:18;;;19765:30;-1:-1:-1;;;19811:18:1;;;19804:53;19874:18;;23903:50:0;19551:347:1;23903:50:0;-1:-1:-1;;;;;23973:15:0;;;;;;:9;:15;;;;;;;;23972:16;23964:52;;;;-1:-1:-1;;;23964:52:0;;19753:2:1;23964:52:0;;;19735:21:1;19792:2;19772:18;;;19765:30;-1:-1:-1;;;19811:18:1;;;19804:53;19874:18;;23964:52:0;19551:347:1;23964:52:0;5843:7;5870:6;-1:-1:-1;;;;;24031:14:0;;;5870:6;;24031:14;;;;:30;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24049:12:0;;;5870:6;;24049:12;;24031:30;24027:84;;;24071:11;;-1:-1:-1;;;24071:11:0;;;;24063:48;;;;-1:-1:-1;;;24063:48:0;;20105:2:1;24063:48:0;;;20087:21:1;20144:2;20124:18;;;20117:30;20183:26;20163:18;;;20156:54;20227:18;;24063:48:0;19903:348:1;24063:48:0;24250:13;;24173:12;;-1:-1:-1;;;;;24244:19:0;;;24250:13;;24244:19;;:40;;-1:-1:-1;24271:13:0;;-1:-1:-1;;;;;24267:17:0;;;24271:13;;24267:17;24244:40;24243:99;;;;-1:-1:-1;;;;;;24291:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;24319:22:0;;;;;;:18;:22;;;;;;;;24291:50;24289:53;24243:99;24238:148;;;-1:-1:-1;24370:4:0;24238:148;24412:1;24401:10;;:12;:59;;;;-1:-1:-1;;;;;;24419:22:0;;;;;;:18;:22;;;;;;;;24418:23;:41;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24445:14:0;;;5870:6;;24445:14;;24418:41;24401:106;;;;;24494:12;24480:10;;24467;;:23;;;;:::i;:::-;24466:40;24464:43;24401:106;24398:247;;;24558:15;;24543:13;24553:2;24543:9;:13::i;:::-;24535:21;;:6;:21;:::i;:::-;:38;;24527:106;;;;-1:-1:-1;;;24527:106:0;;20458:2:1;24527:106:0;;;20440:21:1;20497:2;20477:18;;;20470:30;20536:34;20516:18;;;20509:62;-1:-1:-1;;;20587:18:1;;;20580:32;20629:19;;24527:106:0;20256:398:1;24527:106:0;24683:8;;24667:15;:24;24716:17;;24702:13;:31;24749:11;;-1:-1:-1;;;24749:11:0;;;;:34;;;;-1:-1:-1;24770:13:0;;-1:-1:-1;;;;;24764:19:0;;;24770:13;;24764:19;24749:34;24746:194;;;24824:57;24869:11;;24824:40;24846:17;;24824;;:21;;:40;;;;:::i;:57::-;24807:15;:74;24910:18;;24896:13;:32;24746:194;25010:1;24999:10;;:12;:56;;;;;25043:12;25029:10;;25016;;:23;;;;:::i;:::-;25015:40;24999:56;24996:109;;;-1:-1:-1;;;;;25075:13:0;;;;;;:9;:13;;;;;:18;;-1:-1:-1;;25075:18:0;25089:4;25075:18;;;24996:109;25217:1;25206:10;;:12;:30;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;25222:14:0;;;5870:6;;25222:14;;25206:30;:75;;;;;25270:10;;25257;;:23;;;;:::i;:::-;25240:12;:41;;25206:75;:91;;;;-1:-1:-1;25286:11:0;;-1:-1:-1;;;25286:11:0;;;;25206:91;25203:154;;;25333:3;25317:15;:19;25203:154;25372:14;;-1:-1:-1;;;25372:14:0;;;;25369:150;;;25406:11;;-1:-1:-1;;;25406:11:0;;;;:36;;;;-1:-1:-1;25429:13:0;;-1:-1:-1;;;;;25421:21:0;;;25429:13;;25421:21;25406:36;25403:105;;;25490:1;25474:15;:17;25403:105;25552:6;;-1:-1:-1;;;25552:6:0;;;;25551:7;:22;;;;-1:-1:-1;25562:11:0;;-1:-1:-1;;;25562:11:0;;;;25551:22;:45;;;;-1:-1:-1;25583:13:0;;-1:-1:-1;;;;;25577:19:0;;;25583:13;;25577:19;25551:45;25547:350;;;25621:28;25652:24;25670:4;25652:9;:24::i;:::-;25621:55;;25730:13;;25708:20;:35;25705:169;;-1:-1:-1;25790:13:0;;25826:32;25790:13;25826:10;:32::i;:::-;25598:299;25547:350;25907:38;25922:4;25927:2;25930:6;25937:7;25907:14;:38::i;1504:192::-;1590:7;1626:12;1618:6;;;;1610:29;;;;-1:-1:-1;;;1610:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1650:9:0;1662:5;1666:1;1662;:5;:::i;:::-;1650:17;1504:192;-1:-1:-1;;;;;1504:192:0:o;33313:163::-;33354:7;33375:15;33392;33411:19;:17;:19::i;:::-;33374:56;;-1:-1:-1;33374:56:0;-1:-1:-1;33448:20:0;33374:56;;33448:11;:20::i;:::-;33441:27;;;;33313:163;:::o;32111:419::-;32170:7;32179;32188;32197;32206;32215;32236:23;32261:12;32275:18;32297:20;32309:7;32297:11;:20::i;:::-;32235:82;;;;;;32329:15;32346:23;32371:12;32387:50;32399:7;32408:4;32414:10;32426;:8;:10::i;:::-;32387:11;:50::i;:::-;32328:109;;;;-1:-1:-1;32328:109:0;;-1:-1:-1;32488:15:0;;-1:-1:-1;32505:4:0;;-1:-1:-1;32511:10:0;;-1:-1:-1;32111:419:0;;-1:-1:-1;;;;;32111:419:0:o;1360:136::-;1418:7;1445:43;1449:1;1452;1445:43;;;;;;;;;;;;;;;;;:3;:43::i;27345:112::-;27426:23;;-1:-1:-1;;;;;27426:15:0;;;:23;;;;;27442:6;;27426:23;;;;27442:6;27426:15;:23;;;;;;;;;;;;;;;;;;;27476:666;27626:16;;;27640:1;27626:16;;;;;;;;27602:21;;27626:16;;;;;;;;;;-1:-1:-1;27626:16:0;27602:40;;27671:4;27653;27658:1;27653:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27653:23:0;;;:7;;;;;;;;;;:23;;;;27697:15;;:22;;;-1:-1:-1;;;27697:22:0;;;;:15;;;;;:20;;:22;;;;;27653:7;;27697:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27687:4;27692:1;27687:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27687:32:0;;;:7;;;;;;;;;:32;27764:15;;27732:62;;27749:4;;27764:15;27782:11;27732:8;:62::i;:::-;27833:15;;:240;;-1:-1:-1;;;27833:240:0;;-1:-1:-1;;;;;27833:15:0;;;;:66;;:240;;27914:11;;27833:15;;27984:4;;28011;;28047:15;;27833:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28099:35;28116:11;28129:4;28099:35;;;;;;;:::i;:::-;;;;;;;;27531:611;27476:666;:::o;2104:278::-;2190:7;2225:12;2218:5;2210:28;;;;-1:-1:-1;;;2210:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2249:9:0;2261:5;2265:1;2261;:5;:::i;25961:1372::-;17261:6;:13;;-1:-1:-1;;;;17261:13:0;-1:-1:-1;;;17261:13:0;;;26159:8:::1;::::0;26127:12:::1;::::0;17261:13;;26088:101:::1;::::0;26187:1:::1;::::0;26088:80:::1;::::0;;;:20;;:38:::1;:52::i;:::-;:70:::0;::::1;:80::i;:101::-;26062:127:::0;-1:-1:-1;26202:20:0::1;26225:41;:20:::0;26062:127;26225:24:::1;:41::i;:::-;26202:64;;26287:30;26304:12;26287:16;:30::i;:::-;26419:12;::::0;26350:21:::1;::::0;26330:17:::1;::::0;26406:33:::1;::::0;26419:19:::1;::::0;26436:1:::1;26419:16;:19::i;:::-;26406:8;::::0;;:12:::1;:33::i;:::-;26384:55;;26452:26;26481:93;26572:1;26481:72;26541:11;26481:41;26509:12;;26481:9;:27;;:41;;;;:::i;:93::-;26452:122;;26595:20;26618:38;26644:11;26618:21;26632:6;;26618:9;:13;;:21;;;;:::i;:38::-;26595:61;;26667:26;26696:68;26742:11;26696:27;26710:12;;26696:9;:13;;:27;;;;:::i;:68::-;26667:97;;26776:26;26805:68;26851:11;26805:27;26819:12;;26805:9;:13;;:27;;;;:::i;:68::-;26776:97:::0;-1:-1:-1;26964:21:0::1;26999:22:::0;;26996:216:::1;;27070:15;::::0;27038:48:::1;::::0;27051:18;;-1:-1:-1;;;;;27070:15:0::1;27038:12;:48::i;:::-;27133:15;::::0;27101:48:::1;::::0;27114:18;;-1:-1:-1;;;;;27133:15:0::1;27101:12;:48::i;:::-;27190:9;::::0;27164:36:::1;::::0;27177:12;;-1:-1:-1;;;;;27190:9:0::1;27164:12;:36::i;:::-;27226:19:::0;;27222:104:::1;;27266:48;27279:15;27295:18;27266:12;:48::i;:::-;-1:-1:-1::0;;17297:6:0;:14;;-1:-1:-1;;;;17297:14:0;;;-1:-1:-1;;;;;;;;25961:1372:0:o;28677:943::-;28817:13;;28867:15;;28897:7;28893:88;;28936:1;28920:13;:17;;;28952:15;:17;28893:88;-1:-1:-1;;;;;29005:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;29029:22:0;;;;;;:11;:22;;;;;;;;29028:23;29005:46;29001:467;;;29068:48;29090:6;29098:9;29109:6;29068:21;:48::i;:::-;29001:467;;;-1:-1:-1;;;;;29139:19:0;;;;;;:11;:19;;;;;;;;29138:20;:46;;;;-1:-1:-1;;;;;;29162:22:0;;;;;;:11;:22;;;;;;;;29138:46;29134:334;;;29201:46;29221:6;29229:9;29240:6;29201:19;:46::i;29134:334::-;-1:-1:-1;;;;;29269:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;29292:22:0;;;;;;:11;:22;;;;;;;;29269:45;29265:203;;;29331:48;29353:6;29361:9;29372:6;29331:21;:48::i;29265:203::-;29412:44;29430:6;29438:9;29449:6;29412:17;:44::i;:::-;29492:7;29488:125;;29515:13;:38;;;;29568:15;:33;-1:-1:-1;;;;28677:943:0:o;33484:561::-;33581:7;;33617;;33534;;;;;33641:289;33665:9;:16;33661:20;;33641:289;;;33731:7;33707;:21;33715:9;33725:1;33715:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33715:12:0;33707:21;;;;;;;;;;;;;:31;;:66;;;33766:7;33742;:21;33750:9;33760:1;33750:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33750:12:0;33742:21;;;;;;;;;;;;;:31;33707:66;33703:97;;;33783:7;;33792;;33775:25;;;;;;;33484:561;;:::o;33703:97::-;33825:34;33837:7;:21;33845:9;33855:1;33845:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33845:12:0;33837:21;;;;;;;;;;;;;33825:7;;:11;:34::i;:::-;33815:44;;33884:34;33896:7;:21;33904:9;33914:1;33904:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33904:12:0;33896:21;;;;;;;;;;;;;33884:7;;:11;:34::i;:::-;33874:44;-1:-1:-1;33683:3:0;;;;:::i;:::-;;;;33641:289;;;-1:-1:-1;33966:7:0;;33954;;:20;;:11;:20::i;:::-;33944:7;:30;33940:61;;;33984:7;;33993;;33976:25;;;;;;33484:561;;:::o;33940:61::-;34020:7;;34029;;-1:-1:-1;33484:561:0;-1:-1:-1;33484:561:0:o;32538:330::-;32598:7;32607;32616;32636:12;32651:24;32667:7;32651:15;:24::i;:::-;32636:39;;32686:18;32707:30;32729:7;32707:21;:30::i;:::-;32686:51;-1:-1:-1;32748:23:0;32774:33;32686:51;32774:17;:7;32786:4;32774:11;:17::i;:::-;:21;;:33::i;:::-;32748:59;32843:4;;-1:-1:-1;32849:10:0;;-1:-1:-1;32538:330:0;;-1:-1:-1;;;32538:330:0:o;32876:429::-;32991:7;;;;33047:24;:7;33059:11;33047;:24::i;:::-;33029:42;-1:-1:-1;33082:12:0;33097:21;:4;33106:11;33097:8;:21::i;:::-;33082:36;-1:-1:-1;33129:18:0;33150:27;:10;33165:11;33150:14;:27::i;:::-;33129:48;-1:-1:-1;33188:23:0;33214:33;33129:48;33214:17;:7;33226:4;33214:11;:17::i;:33::-;33266:7;;;;-1:-1:-1;33292:4:0;;-1:-1:-1;32876:429:0;;-1:-1:-1;;;;;;;32876:429:0:o;28156:513::-;28336:15;;28304:62;;28321:4;;-1:-1:-1;;;;;28336:15:0;28354:11;28304:8;:62::i;:::-;28409:15;;-1:-1:-1;;;;;28409:15:0;:31;28448:9;28481:4;28501:11;28409:15;;28613:7;5843;5870:6;-1:-1:-1;;;;;5870:6:0;;5805:79;28613:7;28409:252;;;;;;-1:-1:-1;;;;;;28409:252:0;;;-1:-1:-1;;;;;22540:15:1;;;28409:252:0;;;22522:34:1;22572:18;;;22565:34;;;;22615:18;;;22608:34;;;;22658:18;;;22651:34;22722:15;;;22701:19;;;22694:44;28635:15:0;22754:19:1;;;22747:35;22456:19;;28409:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28156:513;;:::o;30732:566::-;30835:15;30852:23;30877:12;30891:23;30916:12;30930:18;30952:19;30963:7;30952:10;:19::i;:::-;-1:-1:-1;;;;;31000:15:0;;;;;;:7;:15;;;;;;30834:137;;-1:-1:-1;30834:137:0;;-1:-1:-1;30834:137:0;;-1:-1:-1;30834:137:0;-1:-1:-1;30834:137:0;-1:-1:-1;30834:137:0;-1:-1:-1;31000:28:0;;31020:7;31000:19;:28::i;:::-;-1:-1:-1;;;;;30982:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31057:7;:15;;;;:28;;31077:7;31057:19;:28::i;:::-;-1:-1:-1;;;;;31039:15:0;;;;;;;:7;:15;;;;;;:46;;;;31117:18;;;;;;;:39;;31140:15;31117:22;:39::i;:::-;-1:-1:-1;;;;;31096:18:0;;;;;;:7;:18;;;;;:60;31170:26;31185:10;31170:14;:26::i;:::-;31207:23;31219:4;31225;31207:11;:23::i;:::-;31263:9;-1:-1:-1;;;;;31246:44:0;31255:6;-1:-1:-1;;;;;31246:44:0;;31274:15;31246:44;;;;160:25:1;;148:2;133:18;;14:177;31246:44:0;;;;;;;;30823:475;;;;;;30732:566;;;:::o;30138:586::-;30239:15;30256:23;30281:12;30295:23;30320:12;30334:18;30356:19;30367:7;30356:10;:19::i;:::-;-1:-1:-1;;;;;30404:15:0;;;;;;:7;:15;;;;;;30238:137;;-1:-1:-1;30238:137:0;;-1:-1:-1;30238:137:0;;-1:-1:-1;30238:137:0;-1:-1:-1;30238:137:0;-1:-1:-1;30238:137:0;-1:-1:-1;30404:28:0;;30238:137;30404:19;:28::i;:::-;-1:-1:-1;;;;;30386:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;30464:18;;;;;:7;:18;;;;;:39;;30487:15;30464:22;:39::i;:::-;-1:-1:-1;;;;;30443:18:0;;;;;;:7;:18;;;;;;;;:60;;;;30535:7;:18;;;;:39;;30558:15;30535:22;:39::i;31306:642::-;31409:15;31426:23;31451:12;31465:23;31490:12;31504:18;31526:19;31537:7;31526:10;:19::i;:::-;-1:-1:-1;;;;;31574:15:0;;;;;;:7;:15;;;;;;31408:137;;-1:-1:-1;31408:137:0;;-1:-1:-1;31408:137:0;;-1:-1:-1;31408:137:0;-1:-1:-1;31408:137:0;-1:-1:-1;31408:137:0;-1:-1:-1;31574:28:0;;31594:7;31574:19;:28::i;:::-;-1:-1:-1;;;;;31556:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31631:7;:15;;;;:28;;31651:7;31631:19;:28::i;29628:502::-;29727:15;29744:23;29769:12;29783:23;29808:12;29822:18;29844:19;29855:7;29844:10;:19::i;:::-;-1:-1:-1;;;;;29892:15:0;;;;;;:7;:15;;;;;;29726:137;;-1:-1:-1;29726:137:0;;-1:-1:-1;29726:137:0;;-1:-1:-1;29726:137:0;-1:-1:-1;29726:137:0;-1:-1:-1;29726:137:0;-1:-1:-1;29892:28:0;;29726:137;29892:19;:28::i;34424:160::-;34488:7;34515:61;34560:5;34515:26;34527:13;;34515:7;:11;;:26;;;;:::i;34596:168::-;34666:7;34693:63;34740:5;34693:28;34705:15;;34693:7;:11;;:28;;;;:::i;34057:355::-;34120:19;34143:10;:8;:10::i;:::-;34120:33;-1:-1:-1;34164:18:0;34185:27;:10;34120:33;34185:14;:27::i;:::-;34264:4;34248:22;;;;:7;:22;;;;;;34164:48;;-1:-1:-1;34248:38:0;;34164:48;34248:26;:38::i;:::-;34239:4;34223:22;;;;:7;:22;;;;;;;;:63;;;;34300:11;:26;;;;;;34297:107;;;34382:4;34366:22;;;;:7;:22;;;;;;:38;;34393:10;34366:26;:38::i;:::-;34357:4;34341:22;;;;:7;:22;;;;;:63;34109:303;;34057:355;:::o;31956:147::-;32034:7;;:17;;32046:4;32034:11;:17::i;:::-;32024:7;:27;32075:10;;:20;;32090:4;32075:14;:20::i;:::-;32062:10;:33;-1:-1:-1;;31956:147:0:o;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:180::-;857:6;910:2;898:9;889:7;885:23;881:32;878:52;;;926:1;923;916:12;878:52;-1:-1:-1;949:23:1;;798:180;-1:-1:-1;798:180:1:o;983:131::-;-1:-1:-1;;;;;1058:31:1;;1048:42;;1038:70;;1104:1;1101;1094:12;1119:315;1187:6;1195;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1303:9;1290:23;1322:31;1347:5;1322:31;:::i;:::-;1372:5;1424:2;1409:18;;;;1396:32;;-1:-1:-1;;;1119:315:1:o;1631:247::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1798:9;1785:23;1817:31;1842:5;1817:31;:::i;2118:367::-;2181:8;2191:6;2245:3;2238:4;2230:6;2226:17;2222:27;2212:55;;2263:1;2260;2253:12;2212:55;-1:-1:-1;2286:20:1;;2329:18;2318:30;;2315:50;;;2361:1;2358;2351:12;2315:50;2398:4;2390:6;2386:17;2374:29;;2458:3;2451:4;2441:6;2438:1;2434:14;2426:6;2422:27;2418:38;2415:47;2412:67;;;2475:1;2472;2465:12;2412:67;2118:367;;;;;:::o;2490:908::-;2621:6;2629;2637;2645;2653;2706:2;2694:9;2685:7;2681:23;2677:32;2674:52;;;2722:1;2719;2712:12;2674:52;2761:9;2748:23;2780:31;2805:5;2780:31;:::i;:::-;2830:5;-1:-1:-1;2886:2:1;2871:18;;2858:32;2909:18;2939:14;;;2936:34;;;2966:1;2963;2956:12;2936:34;3005:70;3067:7;3058:6;3047:9;3043:22;3005:70;:::i;:::-;3094:8;;-1:-1:-1;2979:96:1;-1:-1:-1;3182:2:1;3167:18;;3154:32;;-1:-1:-1;3198:16:1;;;3195:36;;;3227:1;3224;3217:12;3195:36;;3266:72;3330:7;3319:8;3308:9;3304:24;3266:72;:::i;:::-;2490:908;;;;-1:-1:-1;2490:908:1;;-1:-1:-1;3357:8:1;;3240:98;2490:908;-1:-1:-1;;;2490:908:1:o;3403:456::-;3480:6;3488;3496;3549:2;3537:9;3528:7;3524:23;3520:32;3517:52;;;3565:1;3562;3555:12;3517:52;3604:9;3591:23;3623:31;3648:5;3623:31;:::i;:::-;3673:5;-1:-1:-1;3730:2:1;3715:18;;3702:32;3743:33;3702:32;3743:33;:::i;:::-;3403:456;;3795:7;;-1:-1:-1;;;3849:2:1;3834:18;;;;3821:32;;3403:456::o;3864:401::-;3945:6;3953;4006:2;3994:9;3985:7;3981:23;3977:32;3974:52;;;4022:1;4019;4012:12;3974:52;4061:9;4048:23;4080:31;4105:5;4080:31;:::i;:::-;4130:5;-1:-1:-1;4187:2:1;4172:18;;4159:32;4200:33;4159:32;4200:33;:::i;:::-;4252:7;4242:17;;;3864:401;;;;;:::o;4270:118::-;4356:5;4349:13;4342:21;4335:5;4332:32;4322:60;;4378:1;4375;4368:12;4393:309;4458:6;4466;4519:2;4507:9;4498:7;4494:23;4490:32;4487:52;;;4535:1;4532;4525:12;4487:52;4574:9;4561:23;4593:28;4615:5;4593:28;:::i;4896:640::-;5000:6;5008;5016;5024;5077:2;5065:9;5056:7;5052:23;5048:32;5045:52;;;5093:1;5090;5083:12;5045:52;5132:9;5119:23;5151:31;5176:5;5151:31;:::i;:::-;5201:5;-1:-1:-1;5257:2:1;5242:18;;5229:32;5284:18;5273:30;;5270:50;;;5316:1;5313;5306:12;5270:50;5355:70;5417:7;5408:6;5397:9;5393:22;5355:70;:::i;:::-;4896:640;;5444:8;;-1:-1:-1;5329:96:1;;5526:2;5511:18;5498:32;;4896:640;-1:-1:-1;;;;4896:640:1:o;5541:241::-;5597:6;5650:2;5638:9;5629:7;5625:23;5621:32;5618:52;;;5666:1;5663;5656:12;5618:52;5705:9;5692:23;5724:28;5746:5;5724:28;:::i;5787:309::-;5852:6;5860;5913:2;5901:9;5892:7;5888:23;5884:32;5881:52;;;5929:1;5926;5919:12;5881:52;5965:9;5952:23;5942:33;;6025:2;6014:9;6010:18;5997:32;6038:28;6060:5;6038:28;:::i;6309:566::-;6401:6;6409;6417;6470:2;6458:9;6449:7;6445:23;6441:32;6438:52;;;6486:1;6483;6476:12;6438:52;6526:9;6513:23;6559:18;6551:6;6548:30;6545:50;;;6591:1;6588;6581:12;6545:50;6630:70;6692:7;6683:6;6672:9;6668:22;6630:70;:::i;:::-;6719:8;;-1:-1:-1;6604:96:1;-1:-1:-1;;6804:2:1;6789:18;;6776:32;6817:28;6776:32;6817:28;:::i;:::-;6864:5;6854:15;;;6309:566;;;;;:::o;6880:385::-;6966:6;6974;6982;6990;7043:3;7031:9;7022:7;7018:23;7014:33;7011:53;;;7060:1;7057;7050:12;7011:53;-1:-1:-1;;7083:23:1;;;7153:2;7138:18;;7125:32;;-1:-1:-1;7204:2:1;7189:18;;7176:32;;7255:2;7240:18;7227:32;;-1:-1:-1;6880:385:1;-1:-1:-1;6880:385:1:o;7270:437::-;7356:6;7364;7417:2;7405:9;7396:7;7392:23;7388:32;7385:52;;;7433:1;7430;7423:12;7385:52;7473:9;7460:23;7506:18;7498:6;7495:30;7492:50;;;7538:1;7535;7528:12;7492:50;7577:70;7639:7;7630:6;7619:9;7615:22;7577:70;:::i;:::-;7666:8;;7551:96;;-1:-1:-1;7270:437:1;-1:-1:-1;;;;7270:437:1:o;7972:248::-;8040:6;8048;8101:2;8089:9;8080:7;8076:23;8072:32;8069:52;;;8117:1;8114;8107:12;8069:52;-1:-1:-1;;8140:23:1;;;8210:2;8195:18;;;8182:32;;-1:-1:-1;7972:248:1:o;8618:380::-;8697:1;8693:12;;;;8740;;;8761:61;;8815:4;8807:6;8803:17;8793:27;;8761:61;8868:2;8860:6;8857:14;8837:18;8834:38;8831:161;;;8914:10;8909:3;8905:20;8902:1;8895:31;8949:4;8946:1;8939:15;8977:4;8974:1;8967:15;8831:161;;8618:380;;;:::o;9003:356::-;9205:2;9187:21;;;9224:18;;;9217:30;9283:34;9278:2;9263:18;;9256:62;9350:2;9335:18;;9003:356::o;10187:127::-;10248:10;10243:3;10239:20;10236:1;10229:31;10279:4;10276:1;10269:15;10303:4;10300:1;10293:15;10319:422;10408:1;10451:5;10408:1;10465:270;10486:7;10476:8;10473:21;10465:270;;;10545:4;10541:1;10537:6;10533:17;10527:4;10524:27;10521:53;;;10554:18;;:::i;:::-;10604:7;10594:8;10590:22;10587:55;;;10624:16;;;;10587:55;10703:22;;;;10663:15;;;;10465:270;;;10469:3;10319:422;;;;;:::o;10746:806::-;10795:5;10825:8;10815:80;;-1:-1:-1;10866:1:1;10880:5;;10815:80;10914:4;10904:76;;-1:-1:-1;10951:1:1;10965:5;;10904:76;10996:4;11014:1;11009:59;;;;11082:1;11077:130;;;;10989:218;;11009:59;11039:1;11030:10;;11053:5;;;11077:130;11114:3;11104:8;11101:17;11098:43;;;11121:18;;:::i;:::-;-1:-1:-1;;11177:1:1;11163:16;;11192:5;;10989:218;;11291:2;11281:8;11278:16;11272:3;11266:4;11263:13;11259:36;11253:2;11243:8;11240:16;11235:2;11229:4;11226:12;11222:35;11219:77;11216:159;;;-1:-1:-1;11328:19:1;;;11360:5;;11216:159;11407:34;11432:8;11426:4;11407:34;:::i;:::-;11477:6;11473:1;11469:6;11465:19;11456:7;11453:32;11450:58;;;11488:18;;:::i;:::-;11526:20;;10746:806;-1:-1:-1;;;10746:806:1:o;11557:140::-;11615:5;11644:47;11685:4;11675:8;11671:19;11665:4;11644:47;:::i;11702:127::-;11763:10;11758:3;11754:20;11751:1;11744:31;11794:4;11791:1;11784:15;11818:4;11815:1;11808:15;11834:168;11874:7;11940:1;11936;11932:6;11928:14;11925:1;11922:21;11917:1;11910:9;11903:17;11899:45;11896:71;;;11947:18;;:::i;:::-;-1:-1:-1;11987:9:1;;11834:168::o;12007:128::-;12047:3;12078:1;12074:6;12071:1;12068:13;12065:39;;;12084:18;;:::i;:::-;-1:-1:-1;12120:9:1;;12007:128::o;12140:135::-;12179:3;-1:-1:-1;;12200:17:1;;12197:43;;;12220:18;;:::i;:::-;-1:-1:-1;12267:1:1;12256:13;;12140:135::o;12636:184::-;12706:6;12759:2;12747:9;12738:7;12734:23;12730:32;12727:52;;;12775:1;12772;12765:12;12727:52;-1:-1:-1;12798:16:1;;12636:184;-1:-1:-1;12636:184:1:o;13104:245::-;13171:6;13224:2;13212:9;13203:7;13199:23;13195:32;13192:52;;;13240:1;13237;13230:12;13192:52;13272:9;13266:16;13291:28;13313:5;13291:28;:::i;14536:125::-;14576:4;14604:1;14601;14598:8;14595:34;;;14609:18;;:::i;:::-;-1:-1:-1;14646:9:1;;14536:125::o;14666:127::-;14727:10;14722:3;14718:20;14715:1;14708:31;14758:4;14755:1;14748:15;14782:4;14779:1;14772:15;15571:217;15611:1;15637;15627:132;;15681:10;15676:3;15672:20;15669:1;15662:31;15716:4;15713:1;15706:15;15744:4;15741:1;15734:15;15627:132;-1:-1:-1;15773:9:1;;15571:217::o;15793:251::-;15863:6;15916:2;15904:9;15895:7;15891:23;15887:32;15884:52;;;15932:1;15929;15922:12;15884:52;15964:9;15958:16;15983:31;16008:5;15983:31;:::i;20791:461::-;20844:3;20882:5;20876:12;20909:6;20904:3;20897:19;20935:4;20964:2;20959:3;20955:12;20948:19;;21001:2;20994:5;20990:14;21022:1;21032:195;21046:6;21043:1;21040:13;21032:195;;;21111:13;;-1:-1:-1;;;;;21107:39:1;21095:52;;21167:12;;;;21202:15;;;;21143:1;21061:9;21032:195;;;-1:-1:-1;21243:3:1;;20791:461;-1:-1:-1;;;;;20791:461:1:o;21257:582::-;21556:6;21545:9;21538:25;21599:6;21594:2;21583:9;21579:18;21572:34;21642:3;21637:2;21626:9;21622:18;21615:31;21519:4;21663:57;21715:3;21704:9;21700:19;21692:6;21663:57;:::i;:::-;-1:-1:-1;;;;;21756:32:1;;;;21751:2;21736:18;;21729:60;-1:-1:-1;21820:3:1;21805:19;21798:35;21655:65;21257:582;-1:-1:-1;;;21257:582:1:o;21844:332::-;22051:6;22040:9;22033:25;22094:2;22089;22078:9;22074:18;22067:30;22014:4;22114:56;22166:2;22155:9;22151:18;22143:6;22114:56;:::i;:::-;22106:64;21844:332;-1:-1:-1;;;;21844:332:1:o;22793:306::-;22881:6;22889;22897;22950:2;22938:9;22929:7;22925:23;22921:32;22918:52;;;22966:1;22963;22956:12;22918:52;22995:9;22989:16;22979:26;;23045:2;23034:9;23030:18;23024:25;23014:35;;23089:2;23078:9;23074:18;23068:25;23058:35;;22793:306;;;;;:::o

Swarm Source

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