ETH Price: $3,167.69 (-7.83%)
Gas: 9 Gwei

Token

SHIBAYC (SBAYC)
 

Overview

Max Total Supply

1,000,000,000 SBAYC

Holders

760 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: SBAYC 2
Balance
0.000000000008548002 SBAYC

Value
$0.00
0x4ffb8762390228566159b0df4c2ce3fe8c268054
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The SHIBAYC Ecosystem is a layer 2 solution in the ethereum domain and aims to integrate PFP NFT culture with blockchain P2E Gaming.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SBAYC

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.13;

interface IBEP20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

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

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

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}

contract Context {
    constructor () { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address) {
        return msg.sender;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
       
        _owner = msg.sender ;
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

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




contract BEP20Detailed {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory tname, string memory tsymbol, uint8 tdecimals) {
        _name = tname;
        _symbol = tsymbol;
        _decimals = tdecimals;
        
    }
    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;
    }
}



library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeBEP20 {
    using SafeMath for uint;
    using Address for address;

    function safeTransfer(IBEP20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IBEP20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IBEP20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeBEP20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IBEP20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeBEP20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeBEP20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeBEP20: BEP20 operation did not succeed");
        }
    }
}

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


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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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;
}



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

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 SBAYC is Context, Ownable, IBEP20, BEP20Detailed {
  using SafeBEP20 for IBEP20;
  using Address for address;
  using SafeMath for uint256;
  
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    mapping (address => uint) internal _balances;
    mapping (address => mapping (address => uint)) internal _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private AMMs;
    mapping (address => bool) private isTimelockExempt;
    mapping (address => bool) private isExcludedFromMaxTx;
    mapping (address => bool) private isExcludedFromMaxWallet;
    mapping (address => bool) private _isBlacklisted;
  
   
    uint256 internal _totalSupply;

    uint256 public marketingFee = 5;
    uint256 public utilityFee = 5;
    uint256 public teamFee = 2;

    address payable public marketingaddress = payable(0x5Aa12CE89d24c52BaC4560a27153b41e24b01526);
    address payable public utilityAddress = payable(0x14334B527FEBC947B1a496BF9C69d7F11786b018);
    address payable public teamAddress = payable(0x13A49AabB766180C42bc4FfFbbeDCb27dBC37B1b);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public isTradingEnabled;

     // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 30;
    mapping (address => uint) private cooldownTimer;

    uint256 public _maxTxAmount = 10000000 * (10**18);
    uint256 public _maxWalletAmount = 20000000 * (10**18);
    uint256 public numTokensSellToAddToLiquidity = 500000 * 10**18;
  
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived
    );

    
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
  
    address public _owner;
  
    constructor () BEP20Detailed("SHIBAYC", "SBAYC", 18) {
      _owner = msg.sender ;
    _totalSupply = 1000000000 * (10**18);
    
	_balances[_owner] = _totalSupply;
	//uniswapv3 router = 0xE592427A0AEce92De3Edee1F18E0157C05861564
	 IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

          //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingaddress] = true;
        _isExcludedFromFee[utilityAddress] = true;
        _isExcludedFromFee[teamAddress] = true;

         // No timelock for these people
        isTimelockExempt[owner()] = true;
        isTimelockExempt[marketingaddress] = true;
        isTimelockExempt[utilityAddress] = true;
        isTimelockExempt[teamAddress] = true;
        isTimelockExempt[address(this)] = true;

        isExcludedFromMaxTx[owner()] = true;

        isExcludedFromMaxWallet[owner()] = true;
        isExcludedFromMaxWallet[uniswapV2Pair] = true;
        

        AMMs[uniswapV2Pair] = true;


     emit Transfer(address(0), _msgSender(), _totalSupply);
  }
  
    function totalSupply() public view override returns (uint) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) public override  returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address towner, address spender) public view override returns (uint) {
        return _allowances[towner][spender];
    }
    function approve(address spender, uint amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
        return true;
    }

    function setMarketingFeePercent(uint256 updatedMarketingFee) external onlyOwner {
        marketingFee = updatedMarketingFee;
        require(marketingFee.add(utilityFee).add(teamFee) <= 15, "Fee is crossing the boundaries");
    }

    
    function setUtilityFeePercent(uint256 updatedUtilityFee) external onlyOwner {
        utilityFee = updatedUtilityFee;
        require(marketingFee.add(utilityFee).add(teamFee) <= 15, "Fee is crossing the boundaries");
    }

    function setTeamFeePercent(uint256 updatedTeamFee) external onlyOwner
    {
        teamFee = updatedTeamFee;
        require(marketingFee.add(utilityFee).add(teamFee) <= 15, "Fee is crossing the boundaries");

    }

    function setMarketingAddress(address payable wallet) external onlyOwner
    {
        marketingaddress = wallet;
    }

    function setUtilityAddress(address payable wallet) external onlyOwner
    {
        utilityAddress = wallet;
    }

    function setTeamAddress(address payable wallet) external onlyOwner
    {
        teamAddress = wallet;
    }

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

    function changeNumTokensSellToAddToLiquidity(uint256 _numTokensSellToAddToLiquidity) external onlyOwner
    {
        numTokensSellToAddToLiquidity = _numTokensSellToAddToLiquidity;
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function includeInBlacklist(address account) external onlyOwner
    {
        _isBlacklisted[account] = true;
    }

    function excludeFromBlacklist(address account) external onlyOwner
    {
        _isBlacklisted[account] = false;
    }

    function isBlacklisted(address account) external view returns(bool)
    {
        return _isBlacklisted[account];
    }

    function excludeFromAMMs(address account) public onlyOwner
    {
        AMMs[account] = false;
    }

    function includeInAMMs(address account) public onlyOwner
    {
        AMMs[account] = true;
        isExcludedFromMaxWallet[account] = true;
    }

    function enableTrading() external onlyOwner
    {
        isTradingEnabled = true;
    }
    
    function setIsTimelockExempt(address holder, bool exempt) external onlyOwner {
        isTimelockExempt[holder] = exempt;
    }

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

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

    function setMaxTxLimit(uint256 maxTx) external onlyOwner
    {
        require(maxTx >= 100000 * (10**18), "Not Allowed");
        _maxTxAmount = maxTx;
    }

    function setMaxWalletLimit(uint256 maxWallet) external onlyOwner
    {
        require(maxWallet >= 200000 * (10**18), "Not Allowed");
        _maxWalletAmount = maxWallet;
    }
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
    function _transfer(address sender, address recipient, uint amount) internal{

        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(!_isBlacklisted[sender], "Sender is blacklisted");
        require(!_isBlacklisted[recipient], "Recipient is blacklisted");

        if(sender != owner())
        {require(isTradingEnabled, " Trading is not enabled yet");}

        if(!isExcludedFromMaxTx[sender])
        {
            require(amount <= _maxTxAmount, "Maximum transaction limit reached!!");
        }
        if(!isExcludedFromMaxWallet[recipient])
        {
            require(balanceOf(recipient) + amount <= _maxWalletAmount, "Maximum wallet limit reached!!");
        }

         // cooldown timer, so a bot doesnt do quick trades! 30 seconds gap between 2 trades.
        if (sender == uniswapV2Pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 30 seconds between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


         uint256 taxAmount = (amount.mul(marketingFee + utilityFee + teamFee )).div(100);

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        
        
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            !AMMs[sender] &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }

         //indicates if fee should be deducted from transfer
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }
       
        if(!AMMs[recipient] && !AMMs[sender])
        {takeFee = false;}
       
        if(takeFee)
        {
            uint256 TotalSent = amount.sub(taxAmount);
            _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(TotalSent);
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(sender, recipient, TotalSent);
            emit Transfer(sender, address(this), taxAmount);
        }
        else
        {
            _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
       
    }

    function totalFee() internal view returns(uint256)
    {
        return marketingFee.add(utilityFee).add(teamFee);
    }

     function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
       
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(contractTokenBalance); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        uint256 marketingShare = newBalance.mul(marketingFee).div(totalFee());
        uint256 utilityShare = newBalance.mul(utilityFee).div(totalFee());
        uint256 teamShare = newBalance.sub(marketingShare.add(utilityShare));

        payable(marketingaddress).transfer(marketingShare);
        payable(utilityAddress).transfer(utilityShare);
        payable(teamAddress).transfer(teamShare);
        
        emit SwapAndLiquify(contractTokenBalance, newBalance);
    }

    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),
            block.timestamp
        );
    }

      // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        require(_interval <= 3600, "Limit reached");
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function _approve(address towner, address spender, uint amount) internal {
        require(towner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

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

    function withdrawStuckBNB() external onlyOwner{
        require (address(this).balance > 0, "Can't withdraw negative or zero");
        payable(owner()).transfer(address(this).balance);
    }

    function removeStuckToken(address _address) external onlyOwner {
        require(_address != address(this), "Can't withdraw tokens destined for liquidity");
        require(IBEP20(_address).balanceOf(address(this)) > 0, "Can't withdraw 0");

        IBEP20(_address).transfer(owner(), IBEP20(_address).balanceOf(address(this)));
    }
  
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"towner","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":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokensSellToAddToLiquidity","type":"uint256"}],"name":"changeNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromAMMs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInAMMs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingaddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsExcludedFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"updatedMarketingFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"updatedTeamFee","type":"uint256"}],"name":"setTeamFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setUtilityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"updatedUtilityFee","type":"uint256"}],"name":"setUtilityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"utilityAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526005600d819055600e556002600f55601080546001600160a01b0319908116735aa12ce89d24c52bac4560a27153b41e24b0152617909155601180549091167314334b527febc947b1a496bf9c69d7f11786b01817905560128054781e0100010013a49aabb766180c42bc4fffbbedcb27dbc37b1b600164ffff00ff0160a01b03199091161790556a084595161401484a0000006014556a108b2a2c280290940000006015556969e10de76676d0800000601655348015620000c557600080fd5b5060408051808201825260078152665348494241594360c81b602080830191909152825180840184526005815264534241594360d81b91810191909152600080546001600160a01b03191633908117825593519293919260129291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a382516200015b9060019060208601906200056e565b508151620001719060029060208501906200056e565b506003805460ff90921660ff199092169190911790555050601780546001600160a01b031916339081179091556b033b2e3c9fd0803ce8000000600c81905560009182526004602081815260409384902092909255825163c45a015560e01b81529251737a250d5630b4cf539739df2c5dacb4c659f2488d93849363c45a0155938281019391928290030181865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000238919062000614565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000614565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000320919062000614565b6001600160a01b0390811660a05281166080526001600660006200034c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526006909352818320805485166001908117909155601054821684528284208054861682179055601154821684528284208054861682179055601254909116835290822080549093168117909255600890620003e06000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556010548216815260089093528183208054851660019081179091556011548216845282842080548616821790556012549091168352818320805485168217905530835290822080549093168117909255600990620004746000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600190600a90620004b86000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560a0519091168152600a83528181208054851660019081179091556007909352208054909216179055620005173390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200055f91815260200190565b60405180910390a35062000682565b8280546200057c9062000646565b90600052602060002090601f016020900481019282620005a05760008555620005eb565b82601f10620005bb57805160ff1916838001178555620005eb565b82800160010185558215620005eb579182015b82811115620005eb578251825591602001919060010190620005ce565b50620005f9929150620005fd565b5090565b5b80821115620005f95760008155600101620005fe565b6000602082840312156200062757600080fd5b81516001600160a01b03811681146200063f57600080fd5b9392505050565b600181811c908216806200065b57607f821691505b6020821081036200067c57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051612a0a620006c4600039600081816105570152611c0b0152600081816103f101528181612432015281816124eb01526125270152612a0a6000f3fe6080604052600436106103395760003560e01c80637d1db4a5116101ab578063c49b9a80116100f7578063e083e92211610095578063f29b22391161006f578063f29b2239146109b9578063f2fde38b146109d9578063fe575a87146109f9578063fee98cc614610a3257600080fd5b8063e083e92214610959578063e0f07e3a14610979578063ea2f0b371461099957600080fd5b8063d2138a6d116100d1578063d2138a6d146108c7578063d7c94efd146108e7578063dccd8bd2146108fd578063dd62ed3e1461091357600080fd5b8063c49b9a8014610871578063c57a6c4414610891578063d12a7688146108b157600080fd5b806395d89b4111610164578063a9059cbb1161013e578063a9059cbb146107f1578063aaa867a014610811578063b2bdfa7b14610831578063c3366ac31461085157600080fd5b806395d89b411461079c57806397c44288146107b1578063a457c2d7146107d157600080fd5b80637d1db4a5146106f357806388bb012a1461070957806389bad0a6146107295780638a8c523c146107495780638da5cb5b1461075e578063906e9dd01461077c57600080fd5b8063484ed334116102855780636690864e1161022357806370a08231116101fd57806370a0823114610667578063715018a61461069d578063722b62ad146106b2578063728d41c9146106d357600080fd5b80636690864e1461061b5780636b67c4df1461063b5780636c0a24eb1461065157600080fd5b806350db71fb1161025f57806350db71fb1461059a5780635ec270c8146105ba578063617fe0ed146105da57806364f5a5bb146105fb57600080fd5b8063484ed3341461053057806349bd5a5e146105455780634a74bb021461057957600080fd5b80631c75f085116102f2578063313ce567116102cc578063313ce567146104aa57806339509351146104d0578063437823ec146104f0578063457c194c1461051057600080fd5b80631c75f0851461044a57806323b872dd1461046a5780632d5945671461048a57600080fd5b806301b95e1d14610345578063064a59d01461036757806306fdde031461039d578063095ea7b3146103bf5780631694505e146103df57806318160ddd1461042b57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b506103656103603660046125d4565b610a52565b005b34801561037357600080fd5b5060125461038890600160b01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103a957600080fd5b506103b2610ac1565b60405161039491906125f1565b3480156103cb57600080fd5b506103886103da366004612646565b610b53565b3480156103eb57600080fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610394565b34801561043757600080fd5b50600c545b604051908152602001610394565b34801561045657600080fd5b50601254610413906001600160a01b031681565b34801561047657600080fd5b50610388610485366004612672565b610b6a565b34801561049657600080fd5b506103656104a53660046126c1565b610bd3565b3480156104b657600080fd5b5060035460ff165b60405160ff9091168152602001610394565b3480156104dc57600080fd5b506103886104eb366004612646565b610c79565b3480156104fc57600080fd5b5061036561050b3660046125d4565b610caf565b34801561051c57600080fd5b5061036561052b366004612700565b610cfd565b34801561053c57600080fd5b50610365610d9a565b34801561055157600080fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b34801561058557600080fd5b5060125461038890600160a81b900460ff1681565b3480156105a657600080fd5b506103656105b5366004612719565b610e4e565b3480156105c657600080fd5b506103656105d53660046125d4565b610ea3565b3480156105e657600080fd5b5060125461038890600160b81b900460ff1681565b34801561060757600080fd5b50610365610616366004612700565b610eee565b34801561062757600080fd5b506103656106363660046125d4565b610f65565b34801561064757600080fd5b5061043c600d5481565b34801561065d57600080fd5b5061043c60155481565b34801561067357600080fd5b5061043c6106823660046125d4565b6001600160a01b031660009081526004602052604090205490565b3480156106a957600080fd5b50610365610fb1565b3480156106be57600080fd5b506012546104be90600160c01b900460ff1681565b3480156106df57600080fd5b506103656106ee366004612700565b611025565b3480156106ff57600080fd5b5061043c60145481565b34801561071557600080fd5b506103656107243660046125d4565b61109c565b34801561073557600080fd5b506103656107443660046125d4565b6110ea565b34801561075557600080fd5b50610365611136565b34801561076a57600080fd5b506000546001600160a01b0316610413565b34801561078857600080fd5b506103656107973660046125d4565b611175565b3480156107a857600080fd5b506103b26111c1565b3480156107bd57600080fd5b506103656107cc366004612700565b6111d0565b3480156107dd57600080fd5b506103886107ec366004612646565b611214565b3480156107fd57600080fd5b5061038861080c366004612646565b611263565b34801561081d57600080fd5b5061036561082c366004612719565b611270565b34801561083d57600080fd5b50601754610413906001600160a01b031681565b34801561085d57600080fd5b5061036561086c366004612700565b6112c5565b34801561087d57600080fd5b5061036561088c366004612747565b61130a565b34801561089d57600080fd5b506103656108ac366004612700565b61138c565b3480156108bd57600080fd5b5061043c60165481565b3480156108d357600080fd5b506103656108e2366004612719565b6113bb565b3480156108f357600080fd5b5061043c600f5481565b34801561090957600080fd5b5061043c600e5481565b34801561091f57600080fd5b5061043c61092e366004612764565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561096557600080fd5b506103656109743660046125d4565b611410565b34801561098557600080fd5b50601054610413906001600160a01b031681565b3480156109a557600080fd5b506103656109b43660046125d4565b61164e565b3480156109c557600080fd5b50601154610413906001600160a01b031681565b3480156109e557600080fd5b506103656109f43660046125d4565b611699565b348015610a0557600080fd5b50610388610a143660046125d4565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610a3e57600080fd5b50610365610a4d3660046125d4565b611783565b6000546001600160a01b03163314610a855760405162461bcd60e51b8152600401610a7c90612792565b60405180910390fd5b6001600160a01b031660009081526007602090815260408083208054600160ff199182168117909255600a909352922080549091169091179055565b606060018054610ad0906127c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610afc906127c7565b8015610b495780601f10610b1e57610100808354040283529160200191610b49565b820191906000526020600020905b815481529060010190602001808311610b2c57829003601f168201915b5050505050905090565b6000610b603384846117ce565b5060015b92915050565b6000610b778484846118f2565b610bc98433610bc485604051806060016040528060288152602001612962602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061208c565b6117ce565b5060019392505050565b6000546001600160a01b03163314610bfd5760405162461bcd60e51b8152600401610a7c90612792565b610e108160ff161115610c425760405162461bcd60e51b815260206004820152600d60248201526c131a5b5a5d081c995858da1959609a1b6044820152606401610a7c565b6012805461ffff60b81b1916600160b81b9315159390930260ff60c01b191692909217600160c01b60ff9290921691909102179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610b60918590610bc490866120c6565b6000546001600160a01b03163314610cd95760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610d275760405162461bcd60e51b8152600401610a7c90612792565b600d819055600f8054600e54610d499190610d439085906120c6565b906120c6565b1115610d975760405162461bcd60e51b815260206004820152601e60248201527f4665652069732063726f7373696e672074686520626f756e64617269657300006044820152606401610a7c565b50565b6000546001600160a01b03163314610dc45760405162461bcd60e51b8152600401610a7c90612792565b60004711610e145760405162461bcd60e51b815260206004820152601f60248201527f43616e2774207769746864726177206e65676174697665206f72207a65726f006044820152606401610a7c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610d97573d6000803e3d6000fd5b6000546001600160a01b03163314610e785760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ecd5760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610f185760405162461bcd60e51b8152600401610a7c90612792565b69152d02c7e14af6800000811015610f605760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b6044820152606401610a7c565b601455565b6000546001600160a01b03163314610f8f5760405162461bcd60e51b8152600401610a7c90612792565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b8152600401610a7c90612792565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461104f5760405162461bcd60e51b8152600401610a7c90612792565b692a5a058fc295ed0000008110156110975760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b6044820152606401610a7c565b601555565b6000546001600160a01b031633146110c65760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146111145760405162461bcd60e51b8152600401610a7c90612792565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111605760405162461bcd60e51b8152600401610a7c90612792565b6012805460ff60b01b1916600160b01b179055565b6000546001600160a01b0316331461119f5760405162461bcd60e51b8152600401610a7c90612792565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b606060028054610ad0906127c7565b6000546001600160a01b031633146111fa5760405162461bcd60e51b8152600401610a7c90612792565b600f818155600e54600d54610d49918491610d43916120c6565b6000610b603384610bc4856040518060600160405280602581526020016129b0602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061208c565b6000610b603384846118f2565b6000546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ef5760405162461bcd60e51b8152600401610a7c90612792565b600e819055600f8054600d54610d499190610d4390856120c6565b6000546001600160a01b031633146113345760405162461bcd60e51b8152600401610a7c90612792565b60128054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061138190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113b65760405162461bcd60e51b8152600401610a7c90612792565b601655565b6000546001600160a01b031633146113e55760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461143a5760405162461bcd60e51b8152600401610a7c90612792565b306001600160a01b038216036114a75760405162461bcd60e51b815260206004820152602c60248201527f43616e277420776974686472617720746f6b656e732064657374696e6564206660448201526b6f72206c697175696469747960a01b6064820152608401610a7c565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190612801565b116115525760405162461bcd60e51b815260206004820152601060248201526f043616e277420776974686472617720360841b6044820152606401610a7c565b806001600160a01b031663a9059cbb6115736000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156115b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db9190612801565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a919061281a565b5050565b6000546001600160a01b031633146116785760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146116c35760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b0381166117285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117ad5760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6001600160a01b0383166118305760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7c565b6001600160a01b0382166118915760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a7c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119565760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7c565b6001600160a01b0382166119b85760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7c565b6001600160a01b0383166000908152600b602052604090205460ff1615611a195760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881a5cc8189b1858dadb1a5cdd1959605a1b6044820152606401610a7c565b6001600160a01b0382166000908152600b602052604090205460ff1615611a825760405162461bcd60e51b815260206004820152601860248201527f526563697069656e7420697320626c61636b6c697374656400000000000000006044820152606401610a7c565b6000546001600160a01b03848116911614611af057601254600160b01b900460ff16611af05760405162461bcd60e51b815260206004820152601b60248201527f2054726164696e67206973206e6f7420656e61626c65642079657400000000006044820152606401610a7c565b6001600160a01b03831660009081526009602052604090205460ff16611b6e57601454811115611b6e5760405162461bcd60e51b815260206004820152602360248201527f4d6178696d756d207472616e73616374696f6e206c696d69742072656163686560448201526264212160e81b6064820152608401610a7c565b6001600160a01b0382166000908152600a602052604090205460ff16611c095760155481611bb1846001600160a01b031660009081526004602052604090205490565b611bbb919061284d565b1115611c095760405162461bcd60e51b815260206004820152601e60248201527f4d6178696d756d2077616c6c6574206c696d69742072656163686564212100006044820152606401610a7c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015611c535750601254600160b81b900460ff165b8015611c7857506001600160a01b03821660009081526008602052604090205460ff16155b15611d29576001600160a01b0382166000908152601360205260409020544211611cf85760405162461bcd60e51b815260206004820152602b60248201527f506c65617365207761697420666f72203330207365636f6e647320626574776560448201526a656e2074776f206275797360a81b6064820152608401610a7c565b601254611d0f90600160c01b900460ff164261284d565b6001600160a01b0383166000908152601360205260409020555b6000611d5d6064611d57600f54600e54600d54611d46919061284d565b611d50919061284d565b859061212c565b906121ae565b306000908152600460205260409020546016549192509081108015908190611d8f5750601254600160a01b900460ff16155b8015611db457506001600160a01b03861660009081526007602052604090205460ff16155b8015611dc95750601254600160a81b900460ff165b15611ddc576016549150611ddc826121f0565b6001600160a01b03861660009081526006602052604090205460019060ff1680611e1e57506001600160a01b03861660009081526006602052604090205460ff165b15611e27575060005b6001600160a01b03861660009081526007602052604090205460ff16158015611e6957506001600160a01b03871660009081526007602052604090205460ff16155b15611e72575060005b8015611fba576000611e84868661236b565b9050611ec38660405180606001604052806026815260200161298a602691396001600160a01b038b16600090815260046020526040902054919061208c565b6001600160a01b03808a166000908152600460205260408082209390935590891681522054611ef290826120c6565b6001600160a01b038816600090815260046020526040808220929092553081522054611f1e90866120c6565b3060009081526004602090815260409182902092909255518281526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360405185815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350612083565b611ff78560405180606001604052806026815260200161298a602691396001600160a01b038a16600090815260046020526040902054919061208c565b6001600160a01b03808916600090815260046020526040808220939093559088168152205461202690866120c6565b6001600160a01b0380881660008181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061207a9089815260200190565b60405180910390a35b50505050505050565b600081848411156120b05760405162461bcd60e51b8152600401610a7c91906125f1565b5060006120bd8486612865565b95945050505050565b6000806120d3838561284d565b9050838110156121255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a7c565b9392505050565b60008260000361213e57506000610b64565b600061214a838561287c565b905082612157858361289b565b146121255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a7c565b600061212583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ad565b6012805460ff60a01b1916600160a01b1790554761220d826123db565b6000612219478361236b565b9050600061223661222861259b565b600d54611d5790859061212c565b9050600061225361224561259b565b600e54611d5790869061212c565b9050600061226b61226484846120c6565b859061236b565b6010546040519192506001600160a01b03169084156108fc029085906000818181858888f193505050501580156122a6573d6000803e3d6000fd5b506011546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156122e1573d6000803e3d6000fd5b506012546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561231c573d6000803e3d6000fd5b5060408051878152602081018690527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506012805460ff60a01b1916905550505050565b600061212583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208c565b600081836123ce5760405162461bcd60e51b8152600401610a7c91906125f1565b5060006120bd848661289b565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612410576124106128bd565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b291906128d3565b816001815181106124c5576124c56128bd565b60200260200101906001600160a01b031690816001600160a01b031681525050612510307f0000000000000000000000000000000000000000000000000000000000000000846117ce565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906125659085906000908690309042906004016128f0565b600060405180830381600087803b15801561257f57600080fd5b505af1158015612593573d6000803e3d6000fd5b505050505050565b60006125ba600f54610d43600e54600d546120c690919063ffffffff16565b905090565b6001600160a01b0381168114610d9757600080fd5b6000602082840312156125e657600080fd5b8135612125816125bf565b600060208083528351808285015260005b8181101561261e57858101830151858201604001528201612602565b81811115612630576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561265957600080fd5b8235612664816125bf565b946020939093013593505050565b60008060006060848603121561268757600080fd5b8335612692816125bf565b925060208401356126a2816125bf565b929592945050506040919091013590565b8015158114610d9757600080fd5b600080604083850312156126d457600080fd5b82356126df816126b3565b9150602083013560ff811681146126f557600080fd5b809150509250929050565b60006020828403121561271257600080fd5b5035919050565b6000806040838503121561272c57600080fd5b8235612737816125bf565b915060208301356126f5816126b3565b60006020828403121561275957600080fd5b8135612125816126b3565b6000806040838503121561277757600080fd5b8235612782816125bf565b915060208301356126f5816125bf565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806127db57607f821691505b6020821081036127fb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561281357600080fd5b5051919050565b60006020828403121561282c57600080fd5b8151612125816126b3565b634e487b7160e01b600052601160045260246000fd5b6000821982111561286057612860612837565b500190565b60008282101561287757612877612837565b500390565b600081600019048311821515161561289657612896612837565b500290565b6000826128b857634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156128e557600080fd5b8151612125816125bf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129405784516001600160a01b03168352938301939183019160010161291b565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d248627e5e20028f8f1e0ca93c7746a5ca992ac453836e44c3487aac302f2c8964736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80637d1db4a5116101ab578063c49b9a80116100f7578063e083e92211610095578063f29b22391161006f578063f29b2239146109b9578063f2fde38b146109d9578063fe575a87146109f9578063fee98cc614610a3257600080fd5b8063e083e92214610959578063e0f07e3a14610979578063ea2f0b371461099957600080fd5b8063d2138a6d116100d1578063d2138a6d146108c7578063d7c94efd146108e7578063dccd8bd2146108fd578063dd62ed3e1461091357600080fd5b8063c49b9a8014610871578063c57a6c4414610891578063d12a7688146108b157600080fd5b806395d89b4111610164578063a9059cbb1161013e578063a9059cbb146107f1578063aaa867a014610811578063b2bdfa7b14610831578063c3366ac31461085157600080fd5b806395d89b411461079c57806397c44288146107b1578063a457c2d7146107d157600080fd5b80637d1db4a5146106f357806388bb012a1461070957806389bad0a6146107295780638a8c523c146107495780638da5cb5b1461075e578063906e9dd01461077c57600080fd5b8063484ed334116102855780636690864e1161022357806370a08231116101fd57806370a0823114610667578063715018a61461069d578063722b62ad146106b2578063728d41c9146106d357600080fd5b80636690864e1461061b5780636b67c4df1461063b5780636c0a24eb1461065157600080fd5b806350db71fb1161025f57806350db71fb1461059a5780635ec270c8146105ba578063617fe0ed146105da57806364f5a5bb146105fb57600080fd5b8063484ed3341461053057806349bd5a5e146105455780634a74bb021461057957600080fd5b80631c75f085116102f2578063313ce567116102cc578063313ce567146104aa57806339509351146104d0578063437823ec146104f0578063457c194c1461051057600080fd5b80631c75f0851461044a57806323b872dd1461046a5780632d5945671461048a57600080fd5b806301b95e1d14610345578063064a59d01461036757806306fdde031461039d578063095ea7b3146103bf5780631694505e146103df57806318160ddd1461042b57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b506103656103603660046125d4565b610a52565b005b34801561037357600080fd5b5060125461038890600160b01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103a957600080fd5b506103b2610ac1565b60405161039491906125f1565b3480156103cb57600080fd5b506103886103da366004612646565b610b53565b3480156103eb57600080fd5b506104137f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610394565b34801561043757600080fd5b50600c545b604051908152602001610394565b34801561045657600080fd5b50601254610413906001600160a01b031681565b34801561047657600080fd5b50610388610485366004612672565b610b6a565b34801561049657600080fd5b506103656104a53660046126c1565b610bd3565b3480156104b657600080fd5b5060035460ff165b60405160ff9091168152602001610394565b3480156104dc57600080fd5b506103886104eb366004612646565b610c79565b3480156104fc57600080fd5b5061036561050b3660046125d4565b610caf565b34801561051c57600080fd5b5061036561052b366004612700565b610cfd565b34801561053c57600080fd5b50610365610d9a565b34801561055157600080fd5b506104137f0000000000000000000000004ffb8762390228566159b0df4c2ce3fe8c26805481565b34801561058557600080fd5b5060125461038890600160a81b900460ff1681565b3480156105a657600080fd5b506103656105b5366004612719565b610e4e565b3480156105c657600080fd5b506103656105d53660046125d4565b610ea3565b3480156105e657600080fd5b5060125461038890600160b81b900460ff1681565b34801561060757600080fd5b50610365610616366004612700565b610eee565b34801561062757600080fd5b506103656106363660046125d4565b610f65565b34801561064757600080fd5b5061043c600d5481565b34801561065d57600080fd5b5061043c60155481565b34801561067357600080fd5b5061043c6106823660046125d4565b6001600160a01b031660009081526004602052604090205490565b3480156106a957600080fd5b50610365610fb1565b3480156106be57600080fd5b506012546104be90600160c01b900460ff1681565b3480156106df57600080fd5b506103656106ee366004612700565b611025565b3480156106ff57600080fd5b5061043c60145481565b34801561071557600080fd5b506103656107243660046125d4565b61109c565b34801561073557600080fd5b506103656107443660046125d4565b6110ea565b34801561075557600080fd5b50610365611136565b34801561076a57600080fd5b506000546001600160a01b0316610413565b34801561078857600080fd5b506103656107973660046125d4565b611175565b3480156107a857600080fd5b506103b26111c1565b3480156107bd57600080fd5b506103656107cc366004612700565b6111d0565b3480156107dd57600080fd5b506103886107ec366004612646565b611214565b3480156107fd57600080fd5b5061038861080c366004612646565b611263565b34801561081d57600080fd5b5061036561082c366004612719565b611270565b34801561083d57600080fd5b50601754610413906001600160a01b031681565b34801561085d57600080fd5b5061036561086c366004612700565b6112c5565b34801561087d57600080fd5b5061036561088c366004612747565b61130a565b34801561089d57600080fd5b506103656108ac366004612700565b61138c565b3480156108bd57600080fd5b5061043c60165481565b3480156108d357600080fd5b506103656108e2366004612719565b6113bb565b3480156108f357600080fd5b5061043c600f5481565b34801561090957600080fd5b5061043c600e5481565b34801561091f57600080fd5b5061043c61092e366004612764565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561096557600080fd5b506103656109743660046125d4565b611410565b34801561098557600080fd5b50601054610413906001600160a01b031681565b3480156109a557600080fd5b506103656109b43660046125d4565b61164e565b3480156109c557600080fd5b50601154610413906001600160a01b031681565b3480156109e557600080fd5b506103656109f43660046125d4565b611699565b348015610a0557600080fd5b50610388610a143660046125d4565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610a3e57600080fd5b50610365610a4d3660046125d4565b611783565b6000546001600160a01b03163314610a855760405162461bcd60e51b8152600401610a7c90612792565b60405180910390fd5b6001600160a01b031660009081526007602090815260408083208054600160ff199182168117909255600a909352922080549091169091179055565b606060018054610ad0906127c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610afc906127c7565b8015610b495780601f10610b1e57610100808354040283529160200191610b49565b820191906000526020600020905b815481529060010190602001808311610b2c57829003601f168201915b5050505050905090565b6000610b603384846117ce565b5060015b92915050565b6000610b778484846118f2565b610bc98433610bc485604051806060016040528060288152602001612962602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061208c565b6117ce565b5060019392505050565b6000546001600160a01b03163314610bfd5760405162461bcd60e51b8152600401610a7c90612792565b610e108160ff161115610c425760405162461bcd60e51b815260206004820152600d60248201526c131a5b5a5d081c995858da1959609a1b6044820152606401610a7c565b6012805461ffff60b81b1916600160b81b9315159390930260ff60c01b191692909217600160c01b60ff9290921691909102179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610b60918590610bc490866120c6565b6000546001600160a01b03163314610cd95760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610d275760405162461bcd60e51b8152600401610a7c90612792565b600d819055600f8054600e54610d499190610d439085906120c6565b906120c6565b1115610d975760405162461bcd60e51b815260206004820152601e60248201527f4665652069732063726f7373696e672074686520626f756e64617269657300006044820152606401610a7c565b50565b6000546001600160a01b03163314610dc45760405162461bcd60e51b8152600401610a7c90612792565b60004711610e145760405162461bcd60e51b815260206004820152601f60248201527f43616e2774207769746864726177206e65676174697665206f72207a65726f006044820152606401610a7c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610d97573d6000803e3d6000fd5b6000546001600160a01b03163314610e785760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ecd5760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610f185760405162461bcd60e51b8152600401610a7c90612792565b69152d02c7e14af6800000811015610f605760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b6044820152606401610a7c565b601455565b6000546001600160a01b03163314610f8f5760405162461bcd60e51b8152600401610a7c90612792565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b8152600401610a7c90612792565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461104f5760405162461bcd60e51b8152600401610a7c90612792565b692a5a058fc295ed0000008110156110975760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b6044820152606401610a7c565b601555565b6000546001600160a01b031633146110c65760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146111145760405162461bcd60e51b8152600401610a7c90612792565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111605760405162461bcd60e51b8152600401610a7c90612792565b6012805460ff60b01b1916600160b01b179055565b6000546001600160a01b0316331461119f5760405162461bcd60e51b8152600401610a7c90612792565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b606060028054610ad0906127c7565b6000546001600160a01b031633146111fa5760405162461bcd60e51b8152600401610a7c90612792565b600f818155600e54600d54610d49918491610d43916120c6565b6000610b603384610bc4856040518060600160405280602581526020016129b0602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061208c565b6000610b603384846118f2565b6000546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ef5760405162461bcd60e51b8152600401610a7c90612792565b600e819055600f8054600d54610d499190610d4390856120c6565b6000546001600160a01b031633146113345760405162461bcd60e51b8152600401610a7c90612792565b60128054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061138190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113b65760405162461bcd60e51b8152600401610a7c90612792565b601655565b6000546001600160a01b031633146113e55760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461143a5760405162461bcd60e51b8152600401610a7c90612792565b306001600160a01b038216036114a75760405162461bcd60e51b815260206004820152602c60248201527f43616e277420776974686472617720746f6b656e732064657374696e6564206660448201526b6f72206c697175696469747960a01b6064820152608401610a7c565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190612801565b116115525760405162461bcd60e51b815260206004820152601060248201526f043616e277420776974686472617720360841b6044820152606401610a7c565b806001600160a01b031663a9059cbb6115736000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156115b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db9190612801565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a919061281a565b5050565b6000546001600160a01b031633146116785760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146116c35760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b0381166117285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117ad5760405162461bcd60e51b8152600401610a7c90612792565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6001600160a01b0383166118305760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7c565b6001600160a01b0382166118915760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a7c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119565760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7c565b6001600160a01b0382166119b85760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7c565b6001600160a01b0383166000908152600b602052604090205460ff1615611a195760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881a5cc8189b1858dadb1a5cdd1959605a1b6044820152606401610a7c565b6001600160a01b0382166000908152600b602052604090205460ff1615611a825760405162461bcd60e51b815260206004820152601860248201527f526563697069656e7420697320626c61636b6c697374656400000000000000006044820152606401610a7c565b6000546001600160a01b03848116911614611af057601254600160b01b900460ff16611af05760405162461bcd60e51b815260206004820152601b60248201527f2054726164696e67206973206e6f7420656e61626c65642079657400000000006044820152606401610a7c565b6001600160a01b03831660009081526009602052604090205460ff16611b6e57601454811115611b6e5760405162461bcd60e51b815260206004820152602360248201527f4d6178696d756d207472616e73616374696f6e206c696d69742072656163686560448201526264212160e81b6064820152608401610a7c565b6001600160a01b0382166000908152600a602052604090205460ff16611c095760155481611bb1846001600160a01b031660009081526004602052604090205490565b611bbb919061284d565b1115611c095760405162461bcd60e51b815260206004820152601e60248201527f4d6178696d756d2077616c6c6574206c696d69742072656163686564212100006044820152606401610a7c565b7f0000000000000000000000004ffb8762390228566159b0df4c2ce3fe8c2680546001600160a01b0316836001600160a01b0316148015611c535750601254600160b81b900460ff165b8015611c7857506001600160a01b03821660009081526008602052604090205460ff16155b15611d29576001600160a01b0382166000908152601360205260409020544211611cf85760405162461bcd60e51b815260206004820152602b60248201527f506c65617365207761697420666f72203330207365636f6e647320626574776560448201526a656e2074776f206275797360a81b6064820152608401610a7c565b601254611d0f90600160c01b900460ff164261284d565b6001600160a01b0383166000908152601360205260409020555b6000611d5d6064611d57600f54600e54600d54611d46919061284d565b611d50919061284d565b859061212c565b906121ae565b306000908152600460205260409020546016549192509081108015908190611d8f5750601254600160a01b900460ff16155b8015611db457506001600160a01b03861660009081526007602052604090205460ff16155b8015611dc95750601254600160a81b900460ff165b15611ddc576016549150611ddc826121f0565b6001600160a01b03861660009081526006602052604090205460019060ff1680611e1e57506001600160a01b03861660009081526006602052604090205460ff165b15611e27575060005b6001600160a01b03861660009081526007602052604090205460ff16158015611e6957506001600160a01b03871660009081526007602052604090205460ff16155b15611e72575060005b8015611fba576000611e84868661236b565b9050611ec38660405180606001604052806026815260200161298a602691396001600160a01b038b16600090815260046020526040902054919061208c565b6001600160a01b03808a166000908152600460205260408082209390935590891681522054611ef290826120c6565b6001600160a01b038816600090815260046020526040808220929092553081522054611f1e90866120c6565b3060009081526004602090815260409182902092909255518281526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360405185815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350612083565b611ff78560405180606001604052806026815260200161298a602691396001600160a01b038a16600090815260046020526040902054919061208c565b6001600160a01b03808916600090815260046020526040808220939093559088168152205461202690866120c6565b6001600160a01b0380881660008181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061207a9089815260200190565b60405180910390a35b50505050505050565b600081848411156120b05760405162461bcd60e51b8152600401610a7c91906125f1565b5060006120bd8486612865565b95945050505050565b6000806120d3838561284d565b9050838110156121255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a7c565b9392505050565b60008260000361213e57506000610b64565b600061214a838561287c565b905082612157858361289b565b146121255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a7c565b600061212583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ad565b6012805460ff60a01b1916600160a01b1790554761220d826123db565b6000612219478361236b565b9050600061223661222861259b565b600d54611d5790859061212c565b9050600061225361224561259b565b600e54611d5790869061212c565b9050600061226b61226484846120c6565b859061236b565b6010546040519192506001600160a01b03169084156108fc029085906000818181858888f193505050501580156122a6573d6000803e3d6000fd5b506011546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156122e1573d6000803e3d6000fd5b506012546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561231c573d6000803e3d6000fd5b5060408051878152602081018690527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506012805460ff60a01b1916905550505050565b600061212583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208c565b600081836123ce5760405162461bcd60e51b8152600401610a7c91906125f1565b5060006120bd848661289b565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612410576124106128bd565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b291906128d3565b816001815181106124c5576124c56128bd565b60200260200101906001600160a01b031690816001600160a01b031681525050612510307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117ce565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906125659085906000908690309042906004016128f0565b600060405180830381600087803b15801561257f57600080fd5b505af1158015612593573d6000803e3d6000fd5b505050505050565b60006125ba600f54610d43600e54600d546120c690919063ffffffff16565b905090565b6001600160a01b0381168114610d9757600080fd5b6000602082840312156125e657600080fd5b8135612125816125bf565b600060208083528351808285015260005b8181101561261e57858101830151858201604001528201612602565b81811115612630576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561265957600080fd5b8235612664816125bf565b946020939093013593505050565b60008060006060848603121561268757600080fd5b8335612692816125bf565b925060208401356126a2816125bf565b929592945050506040919091013590565b8015158114610d9757600080fd5b600080604083850312156126d457600080fd5b82356126df816126b3565b9150602083013560ff811681146126f557600080fd5b809150509250929050565b60006020828403121561271257600080fd5b5035919050565b6000806040838503121561272c57600080fd5b8235612737816125bf565b915060208301356126f5816126b3565b60006020828403121561275957600080fd5b8135612125816126b3565b6000806040838503121561277757600080fd5b8235612782816125bf565b915060208301356126f5816125bf565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806127db57607f821691505b6020821081036127fb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561281357600080fd5b5051919050565b60006020828403121561282c57600080fd5b8151612125816126b3565b634e487b7160e01b600052601160045260246000fd5b6000821982111561286057612860612837565b500190565b60008282101561287757612877612837565b500390565b600081600019048311821515161561289657612896612837565b500290565b6000826128b857634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156128e557600080fd5b8151612125816125bf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129405784516001600160a01b03168352938301939183019160010161291b565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d248627e5e20028f8f1e0ca93c7746a5ca992ac453836e44c3487aac302f2c8964736f6c634300080d0033

Deployed Bytecode Sourcemap

14114:14502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21381:151;;;;;;;;;;-1:-1:-1;21381:151:0;;;;;:::i;:::-;;:::i;:::-;;15379:28;;;;;;;;;;-1:-1:-1;15379:28:0;;;;-1:-1:-1;;;15379:28:0;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;15379:28:0;;;;;;;;4027:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18225:158::-;;;;;;;;;;-1:-1:-1;18225:158:0;;;;;:::i;:::-;;:::i;14275:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1707:32:1;;;1689:51;;1677:2;1662:18;14275:51:0;1516:230:1;17681:97:0;;;;;;;;;;-1:-1:-1;17758:12:0;;17681:97;;;1897:25:1;;;1885:2;1870:18;17681:97:0;1751:177:1;15203:88:0;;;;;;;;;;-1:-1:-1;15203:88:0;;;;-1:-1:-1;;;;;15203:88:0;;;18389:310;;;;;;;;;;-1:-1:-1;18389:310:0;;;;;:::i;:::-;;:::i;27495:218::-;;;;;;;;;;-1:-1:-1;27495:218:0;;;;;:::i;:::-;;:::i;4209:83::-;;;;;;;;;;-1:-1:-1;4275:9:0;;;;4209:83;;;3324:4:1;3312:17;;;3294:36;;3282:2;3267:18;4209:83:0;3152:184:1;18705:207:0;;;;;;;;;;-1:-1:-1;18705:207:0;;;;;:::i;:::-;;:::i;20643:111::-;;;;;;;;;;-1:-1:-1;20643:111:0;;;;;:::i;:::-;;:::i;19184:234::-;;;;;;;;;;-1:-1:-1;19184:234:0;;;;;:::i;:::-;;:::i;28068:194::-;;;;;;;;;;;;;:::i;14333:38::-;;;;;;;;;;;;;;;15332:40;;;;;;;;;;-1:-1:-1;15332:40:0;;;;-1:-1:-1;;;15332:40:0;;;;;;21643:129;;;;;;;;;;-1:-1:-1;21643:129:0;;;;;:::i;:::-;;:::i;21269:104::-;;;;;;;;;;-1:-1:-1;21269:104:0;;;;;:::i;:::-;;:::i;15456:37::-;;;;;;;;;;-1:-1:-1;15456:37:0;;;;-1:-1:-1;;;15456:37:0;;;;;;22084:162;;;;;;;;;;-1:-1:-1;22084:162:0;;;;;:::i;:::-;;:::i;20149:111::-;;;;;;;;;;-1:-1:-1;20149:111:0;;;;;:::i;:::-;;:::i;14896:31::-;;;;;;;;;;;;;;;;15658:53;;;;;;;;;;;;;;;;17784:116;;;;;;;;;;-1:-1:-1;17784:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;17874:18:0;17850:4;17874:18;;;:9;:18;;;;;;;17784:116;3167:148;;;;;;;;;;;;;:::i;15500:39::-;;;;;;;;;;-1:-1:-1;15500:39:0;;;;-1:-1:-1;;;15500:39:0;;;;;;22254:182;;;;;;;;;;-1:-1:-1;22254:182:0;;;;;:::i;:::-;;:::i;15602:49::-;;;;;;;;;;;;;;;;20884:118;;;;;;;;;;-1:-1:-1;20884:118:0;;;;;:::i;:::-;;:::i;20024:117::-;;;;;;;;;;-1:-1:-1;20024:117:0;;;;;:::i;:::-;;:::i;21540:91::-;;;;;;;;;;;;;:::i;2524:79::-;;;;;;;;;;-1:-1:-1;2562:7:0;2589:6;-1:-1:-1;;;;;2589:6:0;2524:79;;19895:121;;;;;;;;;;-1:-1:-1;19895:121:0;;;;;:::i;:::-;;:::i;4116:87::-;;;;;;;;;;;;;:::i;19666:221::-;;;;;;;;;;-1:-1:-1;19666:221:0;;;;;:::i;:::-;;:::i;18918:258::-;;;;;;;;;;-1:-1:-1;18918:258:0;;;;;:::i;:::-;;:::i;17906:165::-;;;;;;;;;;-1:-1:-1;17906:165:0;;;;;:::i;:::-;;:::i;21928:148::-;;;;;;;;;;-1:-1:-1;21928:148:0;;;;;:::i;:::-;;:::i;16144:21::-;;;;;;;;;;-1:-1:-1;16144:21:0;;;;-1:-1:-1;;;;;16144:21:0;;;19432:226;;;;;;;;;;-1:-1:-1;19432:226:0;;;;;:::i;:::-;;:::i;20268:171::-;;;;;;;;;;-1:-1:-1;20268:171:0;;;;;:::i;:::-;;:::i;20447:190::-;;;;;;;;;;-1:-1:-1;20447:190:0;;;;;:::i;:::-;;:::i;15718:62::-;;;;;;;;;;;;;;;;21780:140;;;;;;;;;;-1:-1:-1;21780:140:0;;;;;:::i;:::-;;:::i;14970:26::-;;;;;;;;;;;;;;;;14934:29;;;;;;;;;;;;;;;;18077:142;;;;;;;;;;-1:-1:-1;18077:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;18183:19:0;;;18159:4;18183:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18077:142;28270:339;;;;;;;;;;-1:-1:-1;28270:339:0;;;;;:::i;:::-;;:::i;15005:93::-;;;;;;;;;;-1:-1:-1;15005:93:0;;;;-1:-1:-1;;;;;15005:93:0;;;20766:110;;;;;;;;;;-1:-1:-1;20766:110:0;;;;;:::i;:::-;;:::i;15105:91::-;;;;;;;;;;-1:-1:-1;15105:91:0;;;;-1:-1:-1;;;;;15105:91:0;;;3470:244;;;;;;;;;;-1:-1:-1;3470:244:0;;;;;:::i;:::-;;:::i;21139:122::-;;;;;;;;;;-1:-1:-1;21139:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;21230:23:0;21201:4;21230:23;;;:14;:23;;;;;;;;;21139:122;21010:121;;;;;;;;;;-1:-1:-1;21010:121:0;;;;;:::i;:::-;;:::i;21381:151::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;21454:13:0::1;;::::0;;;:4:::1;:13;::::0;;;;;;;:20;;21470:4:::1;-1:-1:-1::0;;21454:20:0;;::::1;::::0;::::1;::::0;;;21485:23:::1;:32:::0;;;;;:39;;;;::::1;::::0;;::::1;::::0;;21381:151::o;4027:83::-;4064:13;4097:5;4090:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4027:83;:::o;18225:158::-;18297:4;18314:39;2033:10;18337:7;18346:6;18314:8;:39::i;:::-;-1:-1:-1;18371:4:0;18225:158;;;;;:::o;18389:310::-;18484:4;18501:36;18511:6;18519:9;18530:6;18501:9;:36::i;:::-;18548:121;18557:6;2033:10;18579:89;18617:6;18579:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18579:19:0;;;;;;:11;:19;;;;;;;;2033:10;18579:33;;;;;;;;;;:37;:89::i;:::-;18548:8;:121::i;:::-;-1:-1:-1;18687:4:0;18389:310;;;;;:::o;27495:218::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;27600:4:::1;27587:9;:17;;;;27579:43;;;::::0;-1:-1:-1;;;27579:43:0;;5968:2:1;27579:43:0::1;::::0;::::1;5950:21:1::0;6007:2;5987:18;;;5980:30;-1:-1:-1;;;6026:18:1;;;6019:43;6079:18;;27579:43:0::1;5766:337:1::0;27579:43:0::1;27633:18;:28:::0;;-1:-1:-1;;;;27672:33:0;-1:-1:-1;;;27633:28:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;;;27672:33:0;;;;;-1:-1:-1;;;27633:28:0::1;27672:33:::0;;;::::1;::::0;;;::::1;;::::0;;27495:218::o;18705:207::-;2033:10;18782:4;18831:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18831:34:0;;;;;;;;;;18782:4;;18799:83;;18822:7;;18831:50;;18870:10;18831:38;:50::i;20643:111::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20712:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;20712:34:0::1;20742:4;20712:34;::::0;;20643:111::o;19184:234::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;19275:12:::1;:34:::0;;;19373:2:::1;19361:7:::0;;19345:10:::1;::::0;19328:41:::1;::::0;19361:7;19328:28:::1;::::0;19290:19;;19328:16:::1;:28::i;:::-;:32:::0;::::1;:41::i;:::-;:47;;19320:90;;;::::0;-1:-1:-1;;;19320:90:0;;6310:2:1;19320:90:0::1;::::0;::::1;6292:21:1::0;6349:2;6329:18;;;6322:30;6388:32;6368:18;;;6361:60;6438:18;;19320:90:0::1;6108:354:1::0;19320:90:0::1;19184:234:::0;:::o;28068:194::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;28158:1:::1;28134:21;:25;28125:70;;;::::0;-1:-1:-1;;;28125:70:0;;6669:2:1;28125:70:0::1;::::0;::::1;6651:21:1::0;6708:2;6688:18;;;6681:30;6747:33;6727:18;;;6720:61;6798:18;;28125:70:0::1;6467:355:1::0;28125:70:0::1;2562:7:::0;2589:6;;28206:48:::1;::::0;-1:-1:-1;;;;;2589:6:0;;;;28232:21:::1;28206:48:::0;::::1;;;::::0;28232:21;;28206:48;2562:7;28206:48;28232:21;2589:6;28206:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;21643:129:::0;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21731:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;21731:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21643:129::o;21269:104::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21344:13:0::1;21360:5;21344:13:::0;;;:4:::1;:13;::::0;;;;:21;;-1:-1:-1;;21344:21:0::1;::::0;;21269:104::o;22084:162::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;22174:17:::1;22165:5;:26;;22157:50;;;::::0;-1:-1:-1;;;22157:50:0;;7029:2:1;22157:50:0::1;::::0;::::1;7011:21:1::0;7068:2;7048:18;;;7041:30;-1:-1:-1;;;7087:18:1;;;7080:41;7138:18;;22157:50:0::1;6827:335:1::0;22157:50:0::1;22218:12;:20:::0;22084:162::o;20149:111::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;20232:11:::1;:20:::0;;-1:-1:-1;;;;;;20232:20:0::1;-1:-1:-1::0;;;;;20232:20:0;;;::::1;::::0;;;::::1;::::0;;20149:111::o;3167:148::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;3274:1:::1;3258:6:::0;;3237:40:::1;::::0;-1:-1:-1;;;;;3258:6:0;;::::1;::::0;3237:40:::1;::::0;3274:1;;3237:40:::1;3305:1;3288:19:::0;;-1:-1:-1;;;;;;3288:19:0::1;::::0;;3167:148::o;22254:182::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;22356:17:::1;22343:9;:30;;22335:54;;;::::0;-1:-1:-1;;;22335:54:0;;7029:2:1;22335:54:0::1;::::0;::::1;7011:21:1::0;7068:2;7048:18;;;7041:30;-1:-1:-1;;;7087:18:1;;;7080:41;7138:18;;22335:54:0::1;6827:335:1::0;22335:54:0::1;22400:16;:28:::0;22254:182::o;20884:118::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20964:23:0::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;20964:30:0::1;20990:4;20964:30;::::0;;20884:118::o;20024:117::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;20110:14:::1;:23:::0;;-1:-1:-1;;;;;;20110:23:0::1;-1:-1:-1::0;;;;;20110:23:0;;;::::1;::::0;;;::::1;::::0;;20024:117::o;21540:91::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;21600:16:::1;:23:::0;;-1:-1:-1;;;;21600:23:0::1;-1:-1:-1::0;;;21600:23:0::1;::::0;;21540:91::o;19895:121::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;19983:16:::1;:25:::0;;-1:-1:-1;;;;;;19983:25:0::1;-1:-1:-1::0;;;;;19983:25:0;;;::::1;::::0;;;::::1;::::0;;19895:121::o;4116:87::-;4155:13;4188:7;4181:14;;;;;:::i;19666:221::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;19752:7:::1;:24:::0;;;19812:10:::1;::::0;19795:12:::1;::::0;:41:::1;::::0;19762:14;;19795:28:::1;::::0;:16:::1;:28::i;18918:258::-:0;19000:4;19017:129;2033:10;19040:7;19049:96;19088:15;19049:96;;;;;;;;;;;;;;;;;2033:10;19049:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19049:34:0;;;;;;;;;;;;:38;:96::i;17906:165::-;17982:4;17999:42;2033:10;18023:9;18034:6;17999:9;:42::i;21928:148::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22028:31:0;;;::::1;;::::0;;;:23:::1;:31;::::0;;;;:40;;-1:-1:-1;;22028:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21928:148::o;19432:226::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;19519:10:::1;:30:::0;;;19613:2:::1;19601:7:::0;;19568:12:::1;::::0;:41:::1;::::0;19601:7;19568:28:::1;::::0;19532:17;19568:16:::1;:28::i;20268:171::-:0;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;20345:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;20345:32:0::1;-1:-1:-1::0;;;;20345:32:0;;::::1;;::::0;;20393:38:::1;::::0;::::1;::::0;::::1;::::0;20369:8;567:14:1;560:22;542:41;;530:2;515:18;;402:187;20393:38:0::1;;;;;;;;20268:171:::0;:::o;20447:190::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;20567:29:::1;:62:::0;20447:190::o;21780:140::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21876:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;21876:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21780:140::o;28270:339::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;28372:4:::1;-1:-1:-1::0;;;;;28352:25:0;::::1;::::0;28344:82:::1;;;::::0;-1:-1:-1;;;28344:82:0;;7369:2:1;28344:82:0::1;::::0;::::1;7351:21:1::0;7408:2;7388:18;;;7381:30;7447:34;7427:18;;;7420:62;-1:-1:-1;;;7498:18:1;;;7491:42;7550:19;;28344:82:0::1;7167:408:1::0;28344:82:0::1;28445:41;::::0;-1:-1:-1;;;28445:41:0;;28480:4:::1;28445:41;::::0;::::1;1689:51:1::0;28489:1:0::1;::::0;-1:-1:-1;;;;;28445:26:0;::::1;::::0;::::1;::::0;1662:18:1;;28445:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;28437:74;;;::::0;-1:-1:-1;;;28437:74:0;;7971:2:1;28437:74:0::1;::::0;::::1;7953:21:1::0;8010:2;7990:18;;;7983:30;-1:-1:-1;;;8029:18:1;;;8022:46;8085:18;;28437:74:0::1;7769:340:1::0;28437:74:0::1;28531:8;-1:-1:-1::0;;;;;28524:25:0::1;;28550:7;2562::::0;2589:6;-1:-1:-1;;;;;2589:6:0;;2524:79;28550:7:::1;28559:41;::::0;-1:-1:-1;;;28559:41:0;;28594:4:::1;28559:41;::::0;::::1;1689:51:1::0;-1:-1:-1;;;;;28559:26:0;::::1;::::0;::::1;::::0;1662:18:1;;28559:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28524:77;::::0;-1:-1:-1;;;;;;28524:77:0::1;::::0;;;;;;-1:-1:-1;;;;;8306:32:1;;;28524:77:0::1;::::0;::::1;8288:51:1::0;8355:18;;;8348:34;8261:18;;28524:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28270:339:::0;:::o;20766:110::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20833:27:0::1;20863:5;20833:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;20833:35:0::1;::::0;;20766:110::o;3470:244::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3559:22:0;::::1;3551:73;;;::::0;-1:-1:-1;;;3551:73:0;;8845:2:1;3551:73:0::1;::::0;::::1;8827:21:1::0;8884:2;8864:18;;;8857:30;8923:34;8903:18;;;8896:62;-1:-1:-1;;;8974:18:1;;;8967:36;9020:19;;3551:73:0::1;8643:402:1::0;3551:73:0::1;3661:6;::::0;;3640:38:::1;::::0;-1:-1:-1;;;;;3640:38:0;;::::1;::::0;3661:6;::::1;::::0;3640:38:::1;::::0;::::1;3689:6;:17:::0;;-1:-1:-1;;;;;;3689:17:0::1;-1:-1:-1::0;;;;;3689:17:0;;;::::1;::::0;;;::::1;::::0;;3470:244::o;21010:121::-;2736:6;;-1:-1:-1;;;;;2736:6:0;2033:10;2736:22;2728:68;;;;-1:-1:-1;;;2728:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21092:23:0::1;21118:5;21092:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;21092:31:0::1;::::0;;21010:121::o;27721:339::-;-1:-1:-1;;;;;27813:20:0;;27805:69;;;;-1:-1:-1;;;27805:69:0;;9252:2:1;27805:69:0;;;9234:21:1;9291:2;9271:18;;;9264:30;9330:34;9310:18;;;9303:62;-1:-1:-1;;;9381:18:1;;;9374:34;9425:19;;27805:69:0;9050:400:1;27805:69:0;-1:-1:-1;;;;;27893:21:0;;27885:68;;;;-1:-1:-1;;;27885:68:0;;9657:2:1;27885:68:0;;;9639:21:1;9696:2;9676:18;;;9669:30;9735:34;9715:18;;;9708:62;-1:-1:-1;;;9786:18:1;;;9779:32;9828:19;;27885:68:0;9455:398:1;27885:68:0;-1:-1:-1;;;;;27966:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;28019:33;;1897:25:1;;;28019:33:0;;1870:18:1;28019:33:0;;;;;;;27721:339;;;:::o;22534:3269::-;-1:-1:-1;;;;;22630:20:0;;22622:70;;;;-1:-1:-1;;;22622:70:0;;10060:2:1;22622:70:0;;;10042:21:1;10099:2;10079:18;;;10072:30;10138:34;10118:18;;;10111:62;-1:-1:-1;;;10189:18:1;;;10182:35;10234:19;;22622:70:0;9858:401:1;22622:70:0;-1:-1:-1;;;;;22711:23:0;;22703:71;;;;-1:-1:-1;;;22703:71:0;;10466:2:1;22703:71:0;;;10448:21:1;10505:2;10485:18;;;10478:30;10544:34;10524:18;;;10517:62;-1:-1:-1;;;10595:18:1;;;10588:33;10638:19;;22703:71:0;10264:399:1;22703:71:0;-1:-1:-1;;;;;22794:22:0;;;;;;:14;:22;;;;;;;;22793:23;22785:57;;;;-1:-1:-1;;;22785:57:0;;10870:2:1;22785:57:0;;;10852:21:1;10909:2;10889:18;;;10882:30;-1:-1:-1;;;10928:18:1;;;10921:51;10989:18;;22785:57:0;10668:345:1;22785:57:0;-1:-1:-1;;;;;22862:25:0;;;;;;:14;:25;;;;;;;;22861:26;22853:63;;;;-1:-1:-1;;;22853:63:0;;11220:2:1;22853:63:0;;;11202:21:1;11259:2;11239:18;;;11232:30;11298:26;11278:18;;;11271:54;11342:18;;22853:63:0;11018:348:1;22853:63:0;2562:7;2589:6;-1:-1:-1;;;;;22932:17:0;;;2589:6;;22932:17;22929:90;;22969:16;;-1:-1:-1;;;22969:16:0;;;;22961:56;;;;-1:-1:-1;;;22961:56:0;;11573:2:1;22961:56:0;;;11555:21:1;11612:2;11592:18;;;11585:30;11651:29;11631:18;;;11624:57;11698:18;;22961:56:0;11371:351:1;22961:56:0;-1:-1:-1;;;;;23035:27:0;;;;;;:19;:27;;;;;;;;23031:139;;23106:12;;23096:6;:22;;23088:70;;;;-1:-1:-1;;;23088:70:0;;11929:2:1;23088:70:0;;;11911:21:1;11968:2;11948:18;;;11941:30;12007:34;11987:18;;;11980:62;-1:-1:-1;;;12058:18:1;;;12051:33;12101:19;;23088:70:0;11727:399:1;23088:70:0;-1:-1:-1;;;;;23184:34:0;;;;;;:23;:34;;;;;;;;23180:168;;23285:16;;23275:6;23252:20;23262:9;-1:-1:-1;;;;;17874:18:0;17850:4;17874:18;;;:9;:18;;;;;;;17784:116;23252:20;:29;;;;:::i;:::-;:49;;23244:92;;;;-1:-1:-1;;;23244:92:0;;12598:2:1;23244:92:0;;;12580:21:1;12637:2;12617:18;;;12610:30;12676:32;12656:18;;;12649:60;12726:18;;23244:92:0;12396:354:1;23244:92:0;23469:13;-1:-1:-1;;;;;23459:23:0;:6;-1:-1:-1;;;;;23459:23:0;;:58;;;;-1:-1:-1;23499:18:0;;-1:-1:-1;;;23499:18:0;;;;23459:58;:103;;;;-1:-1:-1;;;;;;23535:27:0;;;;;;:16;:27;;;;;;;;23534:28;23459:103;23455:314;;;-1:-1:-1;;;;;23587:24:0;;;;;;:13;:24;;;;;;23614:15;-1:-1:-1;23579:97:0;;;;-1:-1:-1;;;23579:97:0;;12957:2:1;23579:97:0;;;12939:21:1;12996:2;12976:18;;;12969:30;13035:34;13015:18;;;13008:62;-1:-1:-1;;;13086:18:1;;;13079:41;13137:19;;23579:97:0;12755:407:1;23579:97:0;23736:21;;23718:39;;-1:-1:-1;;;23736:21:0;;;;23718:15;:39;:::i;:::-;-1:-1:-1;;;;;23691:24:0;;;;;;:13;:24;;;;;:66;23455:314;23784:17;23804:59;23859:3;23805:48;23844:7;;23831:10;;23816:12;;:25;;;;:::i;:::-;:35;;;;:::i;:::-;23805:6;;:10;:48::i;:::-;23804:54;;:59::i;:::-;24207:4;24158:28;17874:18;;;:9;:18;;;;;;24295:29;;23784:79;;-1:-1:-1;17874:18:0;24271:53;;;;;;;24353;;-1:-1:-1;24390:16:0;;-1:-1:-1;;;24390:16:0;;;;24389:17;24353:53;:83;;;;-1:-1:-1;;;;;;24424:12:0;;;;;;:4;:12;;;;;;;;24423:13;24353:83;:121;;;;-1:-1:-1;24453:21:0;;-1:-1:-1;;;24453:21:0;;;;24353:121;24335:310;;;24524:29;;24501:52;;24597:36;24612:20;24597:14;:36::i;:::-;-1:-1:-1;;;;;24846:26:0;;24719:12;24846:26;;;:18;:26;;;;;;24734:4;;24846:26;;;:59;;-1:-1:-1;;;;;;24876:29:0;;;;;;:18;:29;;;;;;;;24846:59;24843:105;;;-1:-1:-1;24931:5:0;24843:105;-1:-1:-1;;;;;24971:15:0;;;;;;:4;:15;;;;;;;;24970:16;:33;;;;-1:-1:-1;;;;;;24991:12:0;;;;;;:4;:12;;;;;;;;24990:13;24970:33;24967:65;;;-1:-1:-1;25025:5:0;24967:65;25054:7;25051:736;;;25087:17;25107:21;:6;25118:9;25107:10;:21::i;:::-;25087:41;;25163:71;25185:6;25163:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25163:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;25143:17:0;;;;;;;:9;:17;;;;;;:91;;;;25272:20;;;;;;;:35;;25297:9;25272:24;:35::i;:::-;-1:-1:-1;;;;;25249:20:0;;;;;;:9;:20;;;;;;:58;;;;25367:4;25349:24;;;;:39;;25378:9;25349:28;:39::i;:::-;25340:4;25322:24;;;;:9;:24;;;;;;;;;:66;;;;25408:38;1897:25:1;;;-1:-1:-1;;;;;25408:38:0;;;;;;;;;;1870:18:1;25408:38:0;;;;;;;25466:42;;1897:25:1;;;25491:4:0;;-1:-1:-1;;;;;25466:42:0;;;;;1885:2:1;1870:18;25466:42:0;;;;;;;25072:448;25051:736;;;25579:71;25601:6;25579:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25579:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;25559:17:0;;;;;;;:9;:17;;;;;;:91;;;;25688:20;;;;;;;:32;;25713:6;25688:24;:32::i;:::-;-1:-1:-1;;;;;25665:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25740:35;;;;;;;;;;25768:6;1897:25:1;;1885:2;1870:18;;1751:177;25740:35:0;;;;;;;;25051:736;22609:3194;;;;22534:3269;;;:::o;1045:180::-;1125:4;1158:12;1150:6;;;;1142:29;;;;-1:-1:-1;;;1142:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1182:6:0;1191:5;1195:1;1191;:5;:::i;:::-;1182:14;1045:180;-1:-1:-1;;;;;1045:180:0:o;737:169::-;789:4;;815:5;819:1;815;:5;:::i;:::-;806:14;;844:1;839;:6;;831:46;;;;-1:-1:-1;;;831:46:0;;13499:2:1;831:46:0;;;13481:21:1;13538:2;13518:18;;;13511:30;13577:29;13557:18;;;13550:57;13624:18;;831:46:0;13297:351:1;831:46:0;897:1;737:169;-1:-1:-1;;;737:169:0:o;1231:238::-;1283:4;1304:1;1309;1304:6;1300:47;;-1:-1:-1;1334:1:0;1327:8;;1300:47;1359:6;1368:5;1372:1;1368;:5;:::i;:::-;1359:14;-1:-1:-1;1401:1:0;1392:5;1396:1;1359:14;1392:5;:::i;:::-;:10;1384:56;;;;-1:-1:-1;;;1384:56:0;;14250:2:1;1384:56:0;;;14232:21:1;14289:2;14269:18;;;14262:30;14328:34;14308:18;;;14301:62;-1:-1:-1;;;14379:18:1;;;14372:31;14420:19;;1384:56:0;14048:397:1;1475:123:0;1527:4;1551:39;1555:1;1558;1551:39;;;;;;;;;;;;;;;;;:3;:39::i;25943:906::-;16056:16;:23;;-1:-1:-1;;;;16056:23:0;-1:-1:-1;;;16056:23:0;;;26062:21:::1;26128:38;26145:20:::0;26128:16:::1;:38::i;:::-;26297:18;26318:41;:21;26344:14:::0;26318:25:::1;:41::i;:::-;26297:62;;26372:22;26397:44;26430:10;:8;:10::i;:::-;26412:12;::::0;26397:28:::1;::::0;:10;;:14:::1;:28::i;:44::-;26372:69;;26452:20;26475:42;26506:10;:8;:10::i;:::-;26490;::::0;26475:26:::1;::::0;:10;;:14:::1;:26::i;:42::-;26452:65:::0;-1:-1:-1;26528:17:0::1;26548:48;26563:32;:14:::0;26452:65;26563:18:::1;:32::i;:::-;26548:10:::0;;:14:::1;:48::i;:::-;26617:16;::::0;26609:50:::1;::::0;26528:68;;-1:-1:-1;;;;;;26617:16:0::1;::::0;26609:50;::::1;;;::::0;26644:14;;26617:16:::1;26609:50:::0;26617:16;26609:50;26644:14;26617:16;26609:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;26678:14:0::1;::::0;26670:46:::1;::::0;-1:-1:-1;;;;;26678:14:0;;::::1;::::0;26670:46;::::1;;;::::0;26703:12;;26678:14:::1;26670:46:::0;26678:14;26670:46;26703:12;26678:14;26670:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;26735:11:0::1;::::0;26727:40:::1;::::0;-1:-1:-1;;;;;26735:11:0;;::::1;::::0;26727:40;::::1;;;::::0;26757:9;;26735:11:::1;26727:40:::0;26735:11;26727:40;26757:9;26735:11;26727:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;26793:48:0::1;::::0;;14624:25:1;;;14680:2;14665:18;;14658:34;;;26793:48:0::1;::::0;14597:18:1;26793:48:0::1;;;;;;;-1:-1:-1::0;;16102:16:0;:24;;-1:-1:-1;;;;16102:24:0;;;-1:-1:-1;;;;25943:906:0:o;912:127::-;964:4;988:43;992:1;995;988:43;;;;;;;;;;;;;;;;;:3;:43::i;1604:246::-;1684:4;1783:12;1776:5;1768:28;;;;-1:-1:-1;;;1768:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1807:6:0;1816:5;1820:1;1816;:5;:::i;26857:589::-;27007:16;;;27021:1;27007:16;;;;;;;;26983:21;;27007:16;;;;;;;;;;-1:-1:-1;27007:16:0;26983:40;;27052:4;27034;27039:1;27034:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27034:23:0;;;-1:-1:-1;;;;;27034:23:0;;;;;27078:15;-1:-1:-1;;;;;27078:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27068:4;27073:1;27068:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27068:32:0;;;-1:-1:-1;;;;;27068:32:0;;;;;27113:62;27130:4;27145:15;27163:11;27113:8;:62::i;:::-;27214:224;;-1:-1:-1;;;27214:224:0;;-1:-1:-1;;;;;27214:15:0;:66;;;;:224;;27295:11;;27321:1;;27365:4;;27392;;27412:15;;27214:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26912:534;26857:589;:::o;25811:123::-;25853:7;25885:41;25918:7;;25885:28;25902:10;;25885:12;;:16;;:28;;;;:::i;:41::-;25878:48;;25811:123;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;594:597::-;706:4;735:2;764;753:9;746:21;796:6;790:13;839:6;834:2;823:9;819:18;812:34;864:1;874:140;888:6;885:1;882:13;874:140;;;983:14;;;979:23;;973:30;949:17;;;968:2;945:26;938:66;903:10;;874:140;;;1032:6;1029:1;1026:13;1023:91;;;1102:1;1097:2;1088:6;1077:9;1073:22;1069:31;1062:42;1023:91;-1:-1:-1;1175:2:1;1154:15;-1:-1:-1;;1150:29:1;1135:45;;;;1182:2;1131:54;;594:597;-1:-1:-1;;;594:597:1:o;1196:315::-;1264:6;1272;1325:2;1313:9;1304:7;1300:23;1296:32;1293:52;;;1341:1;1338;1331:12;1293:52;1380:9;1367:23;1399:31;1424:5;1399:31;:::i;:::-;1449:5;1501:2;1486:18;;;;1473:32;;-1:-1:-1;;;1196:315:1:o;2157:456::-;2234:6;2242;2250;2303:2;2291:9;2282:7;2278:23;2274:32;2271:52;;;2319:1;2316;2309:12;2271:52;2358:9;2345:23;2377:31;2402:5;2377:31;:::i;:::-;2427:5;-1:-1:-1;2484:2:1;2469:18;;2456:32;2497:33;2456:32;2497:33;:::i;:::-;2157:456;;2549:7;;-1:-1:-1;;;2603:2:1;2588:18;;;;2575:32;;2157:456::o;2618:118::-;2704:5;2697:13;2690:21;2683:5;2680:32;2670:60;;2726:1;2723;2716:12;2741:406;2804:6;2812;2865:2;2853:9;2844:7;2840:23;2836:32;2833:52;;;2881:1;2878;2871:12;2833:52;2920:9;2907:23;2939:28;2961:5;2939:28;:::i;:::-;2986:5;-1:-1:-1;3043:2:1;3028:18;;3015:32;3091:4;3078:18;;3066:31;;3056:59;;3111:1;3108;3101:12;3056:59;3134:7;3124:17;;;2741:406;;;;;:::o;3341:180::-;3400:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:52;;;3469:1;3466;3459:12;3421:52;-1:-1:-1;3492:23:1;;3341:180;-1:-1:-1;3341:180:1:o;3734:382::-;3799:6;3807;3860:2;3848:9;3839:7;3835:23;3831:32;3828:52;;;3876:1;3873;3866:12;3828:52;3915:9;3902:23;3934:31;3959:5;3934:31;:::i;:::-;3984:5;-1:-1:-1;4041:2:1;4026:18;;4013:32;4054:30;4013:32;4054:30;:::i;4381:241::-;4437:6;4490:2;4478:9;4469:7;4465:23;4461:32;4458:52;;;4506:1;4503;4496:12;4458:52;4545:9;4532:23;4564:28;4586:5;4564:28;:::i;4627:388::-;4695:6;4703;4756:2;4744:9;4735:7;4731:23;4727:32;4724:52;;;4772:1;4769;4762:12;4724:52;4811:9;4798:23;4830:31;4855:5;4830:31;:::i;:::-;4880:5;-1:-1:-1;4937:2:1;4922:18;;4909:32;4950:33;4909:32;4950:33;:::i;5020:356::-;5222:2;5204:21;;;5241:18;;;5234:30;5300:34;5295:2;5280:18;;5273:62;5367:2;5352:18;;5020:356::o;5381:380::-;5460:1;5456:12;;;;5503;;;5524:61;;5578:4;5570:6;5566:17;5556:27;;5524:61;5631:2;5623:6;5620:14;5600:18;5597:38;5594:161;;5677:10;5672:3;5668:20;5665:1;5658:31;5712:4;5709:1;5702:15;5740:4;5737:1;5730:15;5594:161;;5381:380;;;:::o;7580:184::-;7650:6;7703:2;7691:9;7682:7;7678:23;7674:32;7671:52;;;7719:1;7716;7709:12;7671:52;-1:-1:-1;7742:16:1;;7580:184;-1:-1:-1;7580:184:1:o;8393:245::-;8460:6;8513:2;8501:9;8492:7;8488:23;8484:32;8481:52;;;8529:1;8526;8519:12;8481:52;8561:9;8555:16;8580:28;8602:5;8580:28;:::i;12131:127::-;12192:10;12187:3;12183:20;12180:1;12173:31;12223:4;12220:1;12213:15;12247:4;12244:1;12237:15;12263:128;12303:3;12334:1;12330:6;12327:1;12324:13;12321:39;;;12340:18;;:::i;:::-;-1:-1:-1;12376:9:1;;12263:128::o;13167:125::-;13207:4;13235:1;13232;13229:8;13226:34;;;13240:18;;:::i;:::-;-1:-1:-1;13277:9:1;;13167:125::o;13653:168::-;13693:7;13759:1;13755;13751:6;13747:14;13744:1;13741:21;13736:1;13729:9;13722:17;13718:45;13715:71;;;13766:18;;:::i;:::-;-1:-1:-1;13806:9:1;;13653:168::o;13826:217::-;13866:1;13892;13882:132;;13936:10;13931:3;13927:20;13924:1;13917:31;13971:4;13968:1;13961:15;13999:4;13996:1;13989:15;13882:132;-1:-1:-1;14028:9:1;;13826:217::o;14835:127::-;14896:10;14891:3;14887:20;14884:1;14877:31;14927:4;14924:1;14917:15;14951:4;14948:1;14941:15;14967:251;15037:6;15090:2;15078:9;15069:7;15065:23;15061:32;15058:52;;;15106:1;15103;15096:12;15058:52;15138:9;15132:16;15157:31;15182:5;15157:31;:::i;15223:980::-;15485:4;15533:3;15522:9;15518:19;15564:6;15553:9;15546:25;15590:2;15628:6;15623:2;15612:9;15608:18;15601:34;15671:3;15666:2;15655:9;15651:18;15644:31;15695:6;15730;15724:13;15761:6;15753;15746:22;15799:3;15788:9;15784:19;15777:26;;15838:2;15830:6;15826:15;15812:29;;15859:1;15869:195;15883:6;15880:1;15877:13;15869:195;;;15948:13;;-1:-1:-1;;;;;15944:39:1;15932:52;;16039:15;;;;16004:12;;;;15980:1;15898:9;15869:195;;;-1:-1:-1;;;;;;;16120:32:1;;;;16115:2;16100:18;;16093:60;-1:-1:-1;;;16184:3:1;16169:19;16162:35;16081:3;15223:980;-1:-1:-1;;;15223:980:1:o

Swarm Source

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