ETH Price: $3,192.76 (+3.62%)

Token

Destra Network (DSync)
 

Overview

Max Total Supply

1,000,000,000 DSync

Holders

25,402

Market

Price

$0.26 @ 0.000082 ETH (-7.73%)

Onchain Market Cap

$262,122,000.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,873.588429098811423986 DSync

Value
$753.23 ( ~0.235918337171431 Eth) [0.0003%]
0x58e8f336eefcd2494345956bf479e76d40abcc76
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Destra Network offers a one-step solution for all your DePIN and AI computing needs.

Market

Volume (24H):$1,535,316.00
Market Capitalization:$0.00
Circulating Supply:0.00 DSync
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DestraNetwork

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-11
*/

/** 
Website: https://destra.network
Telegram: https://t.me/DestraNetwork
Twitter: https://x.com/destranetwork
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

library Address {
  function isContract(address account) internal view returns (bool) {
    return account.code.length > 0;
  }

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

    (bool success, ) = recipient.call{value: amount}("");
    require(
      success,
      "Address: unable to send value, recipient may have reverted"
    );
  }

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

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

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

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

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

  function functionStaticCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    (bool success, bytes memory returndata) = target.staticcall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

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

  function functionDelegateCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal returns (bytes memory) {
    (bool success, bytes memory returndata) = target.delegatecall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function verifyCallResultFromTarget(
    address target,
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    if (success) {
      if (returndata.length == 0) {
        // only check isContract if the call was successful and the return data is empty
        // otherwise we already know that it was a contract
        require(isContract(target), "Address: call to non-contract");
      }
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function verifyCallResult(
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal pure returns (bytes memory) {
    if (success) {
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function _revert(
    bytes memory returndata,
    string memory errorMessage
  ) private pure {
    // Look for revert reason and bubble it up if present
    if (returndata.length > 0) {
      // The easiest way to bubble the revert reason is using memory via assembly
      /// @solidity memory-safe-assembly
      assembly {
        let returndata_size := mload(returndata)
        revert(add(32, returndata), returndata_size)
      }
    } else {
      revert(errorMessage);
    }
  }
}

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

  function _msgData() internal view virtual returns (bytes calldata) {
    return msg.data;
  }
}

interface IERC20 {
  function totalSupply() external view returns (uint256);

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

  function transfer(address recipient, uint256 amount) external returns (bool);

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

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

  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external returns (bool);

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

  function WETH() external pure returns (address);

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

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

abstract contract Ownable is Context {
  address private _owner;

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

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

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

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

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

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

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

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

contract DestraNetwork is IERC20, Ownable {
  using Address for address;

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

  string constant _name = "Destra Network";
  string constant _symbol = "DSync";
  uint8 constant _decimals = 18;

  uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
  uint256 _maxBuyTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxSellTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxWalletSize = (_totalSupply * 1) / 100;

  mapping(address => uint256) _balances;
  mapping(address => mapping(address => uint256)) _allowances;

  mapping(uint256 => uint256) public swapBackCounter;
  uint256 public swapBackRateLimit = 3;

  mapping(address => bool) public isFeeExempt;
  mapping(address => bool) public isTxLimitExempt;
  mapping(address => bool) public isLiquidityCreator;

  uint256 marketingBuyFee = 500;
  uint256 marketingSellFee = 6000;
  uint256 liquidityBuyFee = 0;
  uint256 liquiditySellFee = 0;
  uint256 totalBuyFee = marketingBuyFee + liquidityBuyFee;
  uint256 totalSellFee = marketingSellFee + liquiditySellFee;
  uint256 feeDenominator = 10000;

  bool public transferTax = false;

  address payable public liquidityFeeReceiver = payable(0xa75bFFD82FFE8A5064A5b6122448221aCEbCf950);
  address payable public marketingFeeReceiver = payable(0xa75bFFD82FFE8A5064A5b6122448221aCEbCf950);

  IDEXRouter public router;
  address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
  mapping(address => bool) liquidityPools;
  address public pair;

  mapping(address => uint256) public blacklist;
  uint256 public blacklistCount;

  uint256 public launchBlock;
  uint256 public launchTimestamp;
  bool isTradingEnabled = false;

  bool public swapEnabled = false;
  uint256 public swapThreshold = _totalSupply / 1000;
  uint256 public swapAtMinimum = _totalSupply / 10000;
  bool inSwap;

  modifier swapping() {
    inSwap = true;
    _;
    inSwap = false;
  }

  mapping(address => bool) teamMembers;

  modifier onlyTeam() {
    require(
      teamMembers[_msgSender()] || msg.sender == owner(),
      "Caller is not a team member"
    );
    _;
  }

  event WalletBlacklisted(address, address, uint256);

  constructor() {
    router = IDEXRouter(routerAddress);
    pair = IDEXFactory(router.factory()).createPair(
      router.WETH(),
      address(this)
    );
    liquidityPools[pair] = true;
    _allowances[owner()][routerAddress] = type(uint256).max;
    _allowances[address(this)][routerAddress] = type(uint256).max;

    isFeeExempt[owner()] = true;
    isLiquidityCreator[owner()] = true;

    isTxLimitExempt[address(this)] = true;
    isTxLimitExempt[owner()] = true;
    isTxLimitExempt[routerAddress] = true;
    isTxLimitExempt[DEAD] = true;

    _balances[owner()] = _totalSupply;

    emit Transfer(address(0), owner(), _totalSupply);
  }

  receive() external payable {}

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

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

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

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

  function getOwner() external view returns (address) {
    return owner();
  }

  function maxBuyTxTokens() external view returns (uint256) {
    return _maxBuyTxAmount / (10 ** _decimals);
  }

  function maxSellTxTokens() external view returns (uint256) {
    return _maxSellTxAmount / (10 ** _decimals);
  }

  function maxWalletTokens() external view returns (uint256) {
    return _maxWalletSize / (10 ** _decimals);
  }

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

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

  function approve(
    address spender,
    uint256 amount
  ) public override returns (bool) {
    _allowances[msg.sender][spender] = amount;
    emit Approval(msg.sender, spender, amount);
    return true;
  }

  function approveMaxAmount(address spender) external returns (bool) {
    return approve(spender, type(uint256).max);
  }

  function setTeamMember(address _team, bool _enabled) external onlyOwner {
    teamMembers[_team] = _enabled;
  }

  function airdrop(
    address[] calldata addresses,
    uint256[] calldata amounts
  ) external onlyOwner {
    require(addresses.length > 0 && amounts.length == addresses.length);
    address from = msg.sender;

    for (uint i = 0; i < addresses.length; i++) {
      if (!liquidityPools[addresses[i]] && !isLiquidityCreator[addresses[i]]) {
        _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
      }
    }
  }

  function clearStuckBalance(
    uint256 amountPercentage,
    address adr
  ) external onlyTeam {
    uint256 amountETH = address(this).balance;

    if (amountETH > 0) {
      (bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
      require(sent, "Failed to transfer funds");
    }
  }

  function blacklistWallets(
    address[] calldata _wallets,
    bool _blacklist
  ) external onlyTeam {
    for (uint i = 0; i < _wallets.length; i++) {
      if (_blacklist) {
        blacklistCount++;
        emit WalletBlacklisted(tx.origin, _wallets[i], block.number);
      } else {
        if (blacklist[_wallets[i]] != 0) blacklistCount--;
      }
      blacklist[_wallets[i]] = _blacklist ? block.number : 0;
    }
  }

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

  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external override returns (bool) {
    if (_allowances[sender][msg.sender] != type(uint256).max) {
      _allowances[sender][msg.sender] =
        _allowances[sender][msg.sender] -
        amount;
    }

    return _transferFrom(sender, recipient, amount);
  }

  function _transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    require(sender != address(0), "ERC20: transfer from 0x0");
    require(recipient != address(0), "ERC20: transfer to 0x0");
    require(amount > 0, "Amount must be > zero");
    require(_balances[sender] >= amount, "Insufficient balance");
    if (!launched() && liquidityPools[recipient]) {
      require(isLiquidityCreator[sender], "Liquidity not added yet.");
      launch();
    }
    if (!isTradingEnabled) {
      require(
        isLiquidityCreator[sender] || isLiquidityCreator[recipient],
        "Trading is not launched yet."
      );
    }

    checkTxLimit(sender, recipient, amount);

    if (!liquidityPools[recipient] && recipient != DEAD) {
      if (!isTxLimitExempt[recipient]) {
        checkWalletLimit(recipient, amount);
      }
    }

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

    _balances[sender] = _balances[sender] - amount;

    uint256 amountReceived = amount;

    if (shouldTakeFee(sender, recipient)) {
      amountReceived = takeFee(recipient, amount);
      if (shouldSwapBack(recipient) && amount > 0) swapBack(amount);
    }

    _balances[recipient] = _balances[recipient] + amountReceived;

    emit Transfer(sender, recipient, amountReceived);
    return true;
  }

  function launched() internal view returns (bool) {
    return launchBlock != 0;
  }

  function launch() internal {
    launchBlock = block.number;
    launchTimestamp = block.timestamp;
  }

  function openTrading() external onlyTeam {
    require(!isTradingEnabled, "Can't re-open trading");
    isTradingEnabled = true;
    swapEnabled = true;
  }

  function _basicTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    _balances[sender] = _balances[sender] - amount;
    _balances[recipient] = _balances[recipient] + amount;
    emit Transfer(sender, recipient, amount);
    return true;
  }

  function checkWalletLimit(address recipient, uint256 amount) internal view {
    uint256 walletLimit = _maxWalletSize;
    require(
      _balances[recipient] + amount <= walletLimit,
      "Amount exceeds the max wallet size."
    );
  }

  function checkTxLimit(
    address sender,
    address recipient,
    uint256 amount
  ) internal view {
    if (isTxLimitExempt[sender] || isTxLimitExempt[recipient]) return;

    require(
      amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount),
      "Amount exceeds the tx limit."
    );

    require(blacklist[sender] == 0, "Wallet blacklisted!");
  }

  function shouldTakeFee(
    address sender,
    address recipient
  ) public view returns (bool) {
    if (!transferTax && !liquidityPools[recipient] && !liquidityPools[sender])
      return false;
    return !isFeeExempt[sender] && !isFeeExempt[recipient];
  }

  function getTotalFee(bool selling) public view returns (uint256) {
    if (selling) return totalSellFee;
    return totalBuyFee;
  }

  function takeFee(
    address recipient,
    uint256 amount
  ) internal returns (uint256) {
    bool selling = liquidityPools[recipient];
    uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;

    _balances[address(this)] += feeAmount;

    return amount - feeAmount;
  }

  function shouldSwapBack(address recipient) internal view returns (bool) {
    return
      !liquidityPools[msg.sender] &&
      !inSwap &&
      swapEnabled &&
      swapBackCounter[block.number] < swapBackRateLimit &&
      liquidityPools[recipient] &&
      _balances[address(this)] >= swapAtMinimum &&
      totalBuyFee + totalSellFee > 0;
  }

  function swapBack(uint256 amount) internal swapping {
    uint256 totalFee = totalBuyFee + totalSellFee;
    uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
    if (_balances[address(this)] < amountToSwap)
      amountToSwap = _balances[address(this)];

    uint256 totalLiquidityFee = liquidityBuyFee + liquiditySellFee;
    uint256 amountToLiquify = ((amountToSwap * totalLiquidityFee) / 2) /
      totalFee;
    amountToSwap -= amountToLiquify;

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

    uint256 balanceBefore = address(this).balance;

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

    uint256 amountETH = address(this).balance - balanceBefore;
    uint256 totalETHFee = totalFee - (totalLiquidityFee / 2);

    uint256 amountETHLiquidity = ((amountETH * totalLiquidityFee) / 2) /
      totalETHFee;
    uint256 amountETHMarketing = amountETH - amountETHLiquidity;

    if (amountETHMarketing > 0) {
      (bool sentMarketing, ) = marketingFeeReceiver.call{
        value: amountETHMarketing
      }("");
      if (!sentMarketing) {
        //Failed to transfer to marketing wallet
      }
    }

    if (amountToLiquify > 0) {
      router.addLiquidityETH{value: amountETHLiquidity}(
        address(this),
        amountToLiquify,
        0,
        0,
        liquidityFeeReceiver,
        block.timestamp
      );
    }
    swapBackCounter[block.number] = swapBackCounter[block.number] + 1;
    emit FundsDistributed(
      amountETHMarketing,
      amountETHLiquidity,
      amountToLiquify
    );
  }

  function addLiquidityPool(address lp, bool isPool) external onlyOwner {
    require(lp != pair, "Can't alter current liquidity pair");
    liquidityPools[lp] = isPool;
  }

  function setSwapBackRateLimit(uint256 rate) external onlyOwner {
    swapBackRateLimit = rate;
  }

  function setTxLimit(
    uint256 buyNumerator,
    uint256 sellNumerator,
    uint256 divisor
  ) external onlyOwner {
    require(
      buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000
    );
    _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
    _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
  }

  function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner {
    require(numerator > 0 && divisor > 0 && divisor <= 10000);
    _maxWalletSize = (_totalSupply * numerator) / divisor;
  }

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

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

  function setFees(
    uint256 _liquidityBuyFee,
    uint256 _liquiditySellFee,
    uint256 _marketingBuyFee,
    uint256 _marketingSellFee,
    uint256 _feeDenominator
  ) external onlyOwner {
    require(
      ((_liquidityBuyFee + _liquiditySellFee) / 2) * 2 ==
        (_liquidityBuyFee + _liquiditySellFee),
      "Liquidity fee must be an even number for rounding compatibility."
    );
    liquidityBuyFee = _liquidityBuyFee;
    liquiditySellFee = _liquiditySellFee;
    marketingBuyFee = _marketingBuyFee;
    marketingSellFee = _marketingSellFee;
    totalBuyFee = _liquidityBuyFee + _marketingBuyFee;
    totalSellFee = _liquiditySellFee + _marketingSellFee;
    feeDenominator = _feeDenominator;
    emit FeesSet(totalBuyFee, totalSellFee, feeDenominator);
  }

  function toggleTransferTax() external onlyOwner {
    transferTax = !transferTax;
  }

  function setFeeReceivers(
    address _liquidityFeeReceiver,
    address _marketingFeeReceiver
  ) external onlyOwner {
    liquidityFeeReceiver = payable(_liquidityFeeReceiver);
    marketingFeeReceiver = payable(_marketingFeeReceiver);
  }

  function setSwapBackSettings(
    bool _enabled,
    uint256 _denominator,
    uint256 _swapAtMinimum
  ) external onlyOwner {
    require(_denominator > 0);
    swapEnabled = _enabled;
    swapThreshold = _totalSupply / _denominator;
    swapAtMinimum = _swapAtMinimum * (10 ** _decimals);
  }

  function getCirculatingSupply() public view returns (uint256) {
    return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
  }

  event FundsDistributed(
    uint256 marketingETH,
    uint256 liquidityETH,
    uint256 liquidityTokens
  );
  event FeesSet(
    uint256 totalBuyFees,
    uint256 totalSellFees,
    uint256 denominator
  );
}

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":"totalBuyFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSellFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"FeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"WalletBlacklisted","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMaxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_blacklist","type":"bool"}],"name":"blacklistWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityCreator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityBuyFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingBuyFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSwapBackRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapAtMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"swapBackCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBackRateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleTransferTax","outputs":[],"stateMutability":"nonpayable","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":"transferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326012600a620005ff565b6200004290633b9aca0062000617565b6003556064600354600162000058919062000617565b62000064919062000631565b600455606460035460016200007a919062000617565b62000086919062000631565b600555606460035460016200009c919062000617565b620000a8919062000631565b6006556003600a556101f4600e55611770600f5560006010556000601155601054600e54620000d8919062000654565b601255601154600f54620000ed919062000654565b6013556127106014556015805474a75bffd82ffe8a5064a5b6122448221acebcf950006001600160a81b0319909116179055601680546001600160a01b031990811673a75bffd82ffe8a5064a5b6122448221acebcf9501790915560188054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601f805461ffff1916905560035462000184906103e89062000631565b60205561271060035462000199919062000631565b602155348015620001a957600080fd5b50620001b5336200049a565b601854601780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023891906200066a565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c091906200066a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033391906200066a565b601a80546001600160a01b0319166001600160a01b039290921691821790556000908152601960205260408120805460ff1916600117905560001990600890620003856000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601880548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000695565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000541578160001904821115620005255762000525620004ea565b808516156200053357918102915b93841c939080029062000505565b509250929050565b6000826200055a57506001620005f9565b816200056957506000620005f9565b81600181146200058257600281146200058d57620005ad565b6001915050620005f9565b60ff841115620005a157620005a1620004ea565b50506001821b620005f9565b5060208310610133831016604e8410600b8410161715620005d2575081810a620005f9565b620005de838362000500565b8060001904821115620005f557620005f5620004ea565b0290505b92915050565b60006200061060ff84168362000549565b9392505050565b8082028115828204841417620005f957620005f9620004ea565b6000826200064f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005f957620005f9620004ea565b6000602082840312156200067d57600080fd5b81516001600160a01b03811681146200061057600080fd5b6127e380620006a56000396000f3fe6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b14610951578063f84ba65d14610971578063f887ea4014610991578063f9f92be4146109b157600080fd5b8063e8b574f2146108e4578063e96fada214610911578063f1f3bca31461093157600080fd5b8063c9567bf91461081e578063d00efb2f14610833578063d088935814610849578063d58d850c14610869578063d912b2ce14610889578063dd62ed3e1461089e57600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e70146107a4578063bafe446b146107c4578063bb2188b4146107d9578063bfa21d6a146107f957600080fd5b8063a845bd861461074e578063a8aa1b3114610764578063a9059cbb1461078457600080fd5b8063893d20e8146106605780638b42507f146106925780638da5cb5b146106c257806395d89b41146106e05780639fdc80051461070e578063a4b45c001461072e57600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105dc57806370a08231146105fb578063715018a6146106315780638124f7ac1461064657600080fd5b8063658d4b7f1461058657806365cf7c9b146105a657806367243482146105bc57600080fd5b8063492a937b146104c157806350713935146104e157806356a227f21461050157806360bba03d1461052157806360eef7411461054157806363a803e11461057157600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e4914610440578063313ce56714610455578063332402f8146104715780633f4218e01461049157600080fd5b8063188d1644146103f5578063234e94941461040b57806323b872dd1461042057600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b31461039a578063178a18ce146103ca57806318160ddd146103e057600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b5061035861035336600461217b565b6109de565b005b34801561036657600080fd5b5060408051808201909152600e81526d446573747261204e6574776f726b60901b60208201525b60405161032f91906121b6565b3480156103a657600080fd5b506103ba6103b5366004612219565b610b0c565b604051901515815260200161032f565b3480156103d657600080fd5b50610325600a5481565b3480156103ec57600080fd5b50600354610325565b34801561040157600080fd5b50610325601c5481565b34801561041757600080fd5b50610325610b79565b34801561042c57600080fd5b506103ba61043b366004612245565b610b99565b34801561044c57600080fd5b50610325610c2e565b34801561046157600080fd5b506040516012815260200161032f565b34801561047d57600080fd5b506103ba61048c366004612286565b610c6f565b34801561049d57600080fd5b506103ba6104ac3660046122bf565b600b6020526000908152604090205460ff1681565b3480156104cd57600080fd5b506103586104dc3660046122f1565b610d16565b3480156104ed57600080fd5b506103586104fc366004612326565b610db2565b34801561050d57600080fd5b5061035861051c366004612352565b610e2b565b34801561052d57600080fd5b5061035861053c3660046122f1565b610f31565b34801561054d57600080fd5b506103ba61055c3660046122bf565b600d6020526000908152604090205460ff1681565b34801561057d57600080fd5b50610325610f64565b34801561059257600080fd5b506103586105a13660046122f1565b610f7f565b3480156105b257600080fd5b50610325601e5481565b3480156105c857600080fd5b506103586105d73660046123c3565b610fb2565b3480156105e857600080fd5b50601f546103ba90610100900460ff1681565b34801561060757600080fd5b506103256106163660046122bf565b6001600160a01b031660009081526007602052604090205490565b34801561063d57600080fd5b506103586110f7565b34801561065257600080fd5b506015546103ba9060ff1681565b34801561066c57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069e57600080fd5b506103ba6106ad3660046122bf565b600c6020526000908152604090205460ff1681565b3480156106ce57600080fd5b506000546001600160a01b031661067a565b3480156106ec57600080fd5b506040805180820190915260058152644453796e6360d81b602082015261038d565b34801561071a57600080fd5b506103ba6107293660046122bf565b61110b565b34801561073a57600080fd5b50610358610749366004612286565b611119565b34801561075a57600080fd5b5061032560215481565b34801561077057600080fd5b50601a5461067a906001600160a01b031681565b34801561079057600080fd5b506103ba61079f366004612219565b611159565b3480156107b057600080fd5b506103586107bf36600461242f565b611166565b3480156107d057600080fd5b506103256111b5565b3480156107e557600080fd5b506103586107f4366004612451565b6111d0565b34801561080557600080fd5b5060155461067a9061010090046001600160a01b031681565b34801561082a57600080fd5b50610358611377565b34801561083f57600080fd5b50610325601d5481565b34801561085557600080fd5b506103586108643660046124a5565b611417565b34801561087557600080fd5b506103586108843660046124d8565b61146e565b34801561089557600080fd5b5061035861147b565b3480156108aa57600080fd5b506103256108b9366004612286565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108f057600080fd5b506103256108ff3660046124d8565b60096020526000908152604090205481565b34801561091d57600080fd5b5060165461067a906001600160a01b031681565b34801561093d57600080fd5b5061032561094c3660046124f1565b611497565b34801561095d57600080fd5b5061035861096c3660046122bf565b6114af565b34801561097d57600080fd5b5061035861098c3660046122f1565b611528565b34801561099d57600080fd5b5060175461067a906001600160a01b031681565b3480156109bd57600080fd5b506103256109cc3660046122bf565b601b6020526000908152604090205481565b6109e661155b565b6109f08486612522565b60026109fc8688612522565b610a069190612535565b610a11906002612557565b14610a8b576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa98386612522565b601255610ab68285612522565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b679086815260200190565b60405180910390a35060015b92915050565b6000610b876012600a612652565b600554610b949190612535565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c19576001600160a01b0384166000908152600860209081526040808320338452909152902054610bf4908390612661565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c248484846115b5565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c6291612522565b600354610b949190612661565b60155460009060ff16158015610c9e57506001600160a01b03821660009081526019602052604090205460ff16155b8015610cc357506001600160a01b03831660009081526019602052604090205460ff16155b15610cd057506000610b73565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c275750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d1e61155b565b601a546001600160a01b0390811690831603610d875760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a82565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610dba61155b565b600083118015610dca5750600082115b8015610dd65750600081115b8015610de457506127108111155b610ded57600080fd5b8083600354610dfc9190612557565b610e069190612535565b6004556003548190610e19908490612557565b610e239190612535565b600555505050565b3360009081526023602052604090205460ff1680610e5357506000546001600160a01b031633145b610e6f5760405162461bcd60e51b8152600401610a8290612674565b478015610f2c5760006001600160a01b0383166064610e8e8685612557565b610e989190612535565b604051600081818185875af1925050503d8060008114610ed4576040519150601f19603f3d011682016040523d82523d6000602084013e610ed9565b606091505b5050905080610f2a5760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a82565b505b505050565b610f3961155b565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f726012600a612652565b600654610b949190612535565b610f8761155b565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fba61155b565b8215801590610fc857508083145b610fd157600080fd5b3360005b848110156110ef5760196000878784818110610ff357610ff36126ab565b905060200201602081019061100891906122bf565b6001600160a01b0316815260208101919091526040016000205460ff161580156110775750600d6000878784818110611043576110436126ab565b905060200201602081019061105891906122bf565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110dd576110db82878784818110611092576110926126ab565b90506020020160208101906110a791906122bf565b6110b36012600a612652565b8787868181106110c5576110c56126ab565b905060200201356110d69190612557565b6119cf565b505b806110e7816126c1565b915050610fd5565b505050505050565b6110ff61155b565b6111096000611a89565b565b6000610b7382600019610b0c565b61112161155b565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c273384846115b5565b61116e61155b565b60008211801561117e5750600081115b801561118c57506127108111155b61119557600080fd5b80826003546111a49190612557565b6111ae9190612535565b6006555050565b60006111c36012600a612652565b600454610b949190612535565b3360009081526023602052604090205460ff16806111f857506000546001600160a01b031633145b6112145760405162461bcd60e51b8152600401610a8290612674565b60005b82811015610f2a5781156112b257601c8054906000611235836126c1565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc338633285858481811061126e5761126e6126ab565b905060200201602081019061128391906122bf565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a1611312565b601b60008585848181106112c8576112c86126ab565b90506020020160208101906112dd91906122bf565b6001600160a01b031681526020810191909152604001600020541561131257601c805490600061130c836126da565b91905055505b8161131e576000611320565b435b601b6000868685818110611336576113366126ab565b905060200201602081019061134b91906122bf565b6001600160a01b031681526020810191909152604001600020558061136f816126c1565b915050611217565b3360009081526023602052604090205460ff168061139f57506000546001600160a01b031633145b6113bb5760405162461bcd60e51b8152600401610a8290612674565b601f5460ff16156114065760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a82565b601f805461ffff1916610101179055565b61141f61155b565b6000821161142c57600080fd5b601f805461ff0019166101008515150217905560035461144d908390612535565b60205561145c6012600a612652565b6114669082612557565b602155505050565b61147661155b565b600a55565b61148361155b565b6015805460ff19811660ff90911615179055565b600081156114a757505060135490565b505060125490565b6114b761155b565b6001600160a01b03811661151c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a82565b61152581611a89565b50565b61153061155b565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a82565b60006001600160a01b03841661160d5760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a82565b6001600160a01b03831661165c5760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a82565b600082116116a45760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a82565b6001600160a01b0384166000908152600760205260409020548211156117035760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a82565b601d5415801561172b57506001600160a01b03831660009081526019602052604090205460ff165b156117a5576001600160a01b0384166000908152600d602052604090205460ff166117985760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a82565b6117a543601d5542601e55565b601f5460ff1661183a576001600160a01b0384166000908152600d602052604090205460ff16806117ee57506001600160a01b0383166000908152600d602052604090205460ff165b61183a5760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a82565b611845848484611ad9565b6001600160a01b03831660009081526019602052604090205460ff1615801561187c57506001546001600160a01b03848116911614155b156118ab576001600160a01b0383166000908152600c602052604090205460ff166118ab576118ab8383611bf9565b60225460ff16156118c8576118c18484846119cf565b9050610c27565b6001600160a01b0384166000908152600760205260409020546118ec908390612661565b6001600160a01b038516600090815260076020526040902055816119108585610c6f565b156119445761191f8484611c7c565b905061192a84611cfa565b80156119365750600083115b156119445761194483611dad565b6001600160a01b038416600090815260076020526040902054611968908290612522565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119bc9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119f3908390612661565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a23908390612522565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a779086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1857506001600160a01b0382166000908152600c602052604090205460ff165b15611b2257505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4a57600554611b4e565b6004545b811115611b9d5760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a82565b6001600160a01b0383166000908152601b602052604090205415610f2c5760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a82565b6006546001600160a01b0383166000908152600760205260409020548190611c22908490612522565b1115610f2c5760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a82565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca983611497565b611cb39086612557565b611cbd9190612535565b30600090815260076020526040812080549293508392909190611ce1908490612522565b90915550611cf190508185612661565b95945050505050565b3360009081526019602052604081205460ff16158015611d1d575060225460ff16155b8015611d305750601f54610100900460ff165b8015611d4c5750600a5443600090815260096020526040902054105b8015611d7057506001600160a01b03821660009081526019602052604090205460ff165b8015611d8d57506021543060009081526007602052604090205410155b8015610b7357506000601354601254611da69190612522565b1192915050565b6022805460ff19166001179055601354601254600091611dcc91612522565b905060006020548310611de157602054611de3565b825b30600090815260076020526040902054909150811115611e0f5750306000908152600760205260409020545b6000601154601054611e219190612522565b90506000836002611e328486612557565b611e3c9190612535565b611e469190612535565b9050611e528184612661565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8c57611e8c6126ab565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0991906126f1565b81600181518110611f1c57611f1c6126ab565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f6690889060009087903090429060040161270e565b600060405180830381600087803b158015611f8057600080fd5b505af1158015611f94573d6000803e3d6000fd5b5050505060008147611fa69190612661565b90506000611fb5600287612535565b611fbf9089612661565b90506000816002611fd08986612557565b611fda9190612535565b611fe49190612535565b90506000611ff28285612661565b90508015612051576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612047576040519150601f19603f3d011682016040523d82523d6000602084013e61204c565b606091505b505050505b86156120f55760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120cc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120f1919061277f565b5050505b43600090815260096020526040902054612110906001612522565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561219357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121e3578581018301518582016040015282016121c7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461152557600080fd5b6000806040838503121561222c57600080fd5b823561223781612204565b946020939093013593505050565b60008060006060848603121561225a57600080fd5b833561226581612204565b9250602084013561227581612204565b929592945050506040919091013590565b6000806040838503121561229957600080fd5b82356122a481612204565b915060208301356122b481612204565b809150509250929050565b6000602082840312156122d157600080fd5b8135610c2781612204565b803580151581146122ec57600080fd5b919050565b6000806040838503121561230457600080fd5b823561230f81612204565b915061231d602084016122dc565b90509250929050565b60008060006060848603121561233b57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561236557600080fd5b8235915060208301356122b481612204565b60008083601f84011261238957600080fd5b50813567ffffffffffffffff8111156123a157600080fd5b6020830191508360208260051b85010111156123bc57600080fd5b9250929050565b600080600080604085870312156123d957600080fd5b843567ffffffffffffffff808211156123f157600080fd5b6123fd88838901612377565b9096509450602087013591508082111561241657600080fd5b5061242387828801612377565b95989497509550505050565b6000806040838503121561244257600080fd5b50508035926020909101359150565b60008060006040848603121561246657600080fd5b833567ffffffffffffffff81111561247d57600080fd5b61248986828701612377565b909450925061249c9050602085016122dc565b90509250925092565b6000806000606084860312156124ba57600080fd5b6124c3846122dc565b95602085013595506040909401359392505050565b6000602082840312156124ea57600080fd5b5035919050565b60006020828403121561250357600080fd5b610c27826122dc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b7357610b7361250c565b60008261255257634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b7357610b7361250c565b600181815b808511156125a957816000190482111561258f5761258f61250c565b8085161561259c57918102915b93841c9390800290612573565b509250929050565b6000826125c057506001610b73565b816125cd57506000610b73565b81600181146125e357600281146125ed57612609565b6001915050610b73565b60ff8411156125fe576125fe61250c565b50506001821b610b73565b5060208310610133831016604e8410600b841016171561262c575081810a610b73565b612636838361256e565b806000190482111561264a5761264a61250c565b029392505050565b6000610c2760ff8416836125b1565b81810381811115610b7357610b7361250c565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126d3576126d361250c565b5060010190565b6000816126e9576126e961250c565b506000190190565b60006020828403121561270357600080fd5b8151610c2781612204565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561275e5784516001600160a01b031683529383019391830191600101612739565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561279457600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122022b94021eab2175421fad102ac836f5e7d71d53e10ad6828e6dc296941b6d21364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b14610951578063f84ba65d14610971578063f887ea4014610991578063f9f92be4146109b157600080fd5b8063e8b574f2146108e4578063e96fada214610911578063f1f3bca31461093157600080fd5b8063c9567bf91461081e578063d00efb2f14610833578063d088935814610849578063d58d850c14610869578063d912b2ce14610889578063dd62ed3e1461089e57600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e70146107a4578063bafe446b146107c4578063bb2188b4146107d9578063bfa21d6a146107f957600080fd5b8063a845bd861461074e578063a8aa1b3114610764578063a9059cbb1461078457600080fd5b8063893d20e8146106605780638b42507f146106925780638da5cb5b146106c257806395d89b41146106e05780639fdc80051461070e578063a4b45c001461072e57600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105dc57806370a08231146105fb578063715018a6146106315780638124f7ac1461064657600080fd5b8063658d4b7f1461058657806365cf7c9b146105a657806367243482146105bc57600080fd5b8063492a937b146104c157806350713935146104e157806356a227f21461050157806360bba03d1461052157806360eef7411461054157806363a803e11461057157600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e4914610440578063313ce56714610455578063332402f8146104715780633f4218e01461049157600080fd5b8063188d1644146103f5578063234e94941461040b57806323b872dd1461042057600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b31461039a578063178a18ce146103ca57806318160ddd146103e057600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b5061035861035336600461217b565b6109de565b005b34801561036657600080fd5b5060408051808201909152600e81526d446573747261204e6574776f726b60901b60208201525b60405161032f91906121b6565b3480156103a657600080fd5b506103ba6103b5366004612219565b610b0c565b604051901515815260200161032f565b3480156103d657600080fd5b50610325600a5481565b3480156103ec57600080fd5b50600354610325565b34801561040157600080fd5b50610325601c5481565b34801561041757600080fd5b50610325610b79565b34801561042c57600080fd5b506103ba61043b366004612245565b610b99565b34801561044c57600080fd5b50610325610c2e565b34801561046157600080fd5b506040516012815260200161032f565b34801561047d57600080fd5b506103ba61048c366004612286565b610c6f565b34801561049d57600080fd5b506103ba6104ac3660046122bf565b600b6020526000908152604090205460ff1681565b3480156104cd57600080fd5b506103586104dc3660046122f1565b610d16565b3480156104ed57600080fd5b506103586104fc366004612326565b610db2565b34801561050d57600080fd5b5061035861051c366004612352565b610e2b565b34801561052d57600080fd5b5061035861053c3660046122f1565b610f31565b34801561054d57600080fd5b506103ba61055c3660046122bf565b600d6020526000908152604090205460ff1681565b34801561057d57600080fd5b50610325610f64565b34801561059257600080fd5b506103586105a13660046122f1565b610f7f565b3480156105b257600080fd5b50610325601e5481565b3480156105c857600080fd5b506103586105d73660046123c3565b610fb2565b3480156105e857600080fd5b50601f546103ba90610100900460ff1681565b34801561060757600080fd5b506103256106163660046122bf565b6001600160a01b031660009081526007602052604090205490565b34801561063d57600080fd5b506103586110f7565b34801561065257600080fd5b506015546103ba9060ff1681565b34801561066c57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069e57600080fd5b506103ba6106ad3660046122bf565b600c6020526000908152604090205460ff1681565b3480156106ce57600080fd5b506000546001600160a01b031661067a565b3480156106ec57600080fd5b506040805180820190915260058152644453796e6360d81b602082015261038d565b34801561071a57600080fd5b506103ba6107293660046122bf565b61110b565b34801561073a57600080fd5b50610358610749366004612286565b611119565b34801561075a57600080fd5b5061032560215481565b34801561077057600080fd5b50601a5461067a906001600160a01b031681565b34801561079057600080fd5b506103ba61079f366004612219565b611159565b3480156107b057600080fd5b506103586107bf36600461242f565b611166565b3480156107d057600080fd5b506103256111b5565b3480156107e557600080fd5b506103586107f4366004612451565b6111d0565b34801561080557600080fd5b5060155461067a9061010090046001600160a01b031681565b34801561082a57600080fd5b50610358611377565b34801561083f57600080fd5b50610325601d5481565b34801561085557600080fd5b506103586108643660046124a5565b611417565b34801561087557600080fd5b506103586108843660046124d8565b61146e565b34801561089557600080fd5b5061035861147b565b3480156108aa57600080fd5b506103256108b9366004612286565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108f057600080fd5b506103256108ff3660046124d8565b60096020526000908152604090205481565b34801561091d57600080fd5b5060165461067a906001600160a01b031681565b34801561093d57600080fd5b5061032561094c3660046124f1565b611497565b34801561095d57600080fd5b5061035861096c3660046122bf565b6114af565b34801561097d57600080fd5b5061035861098c3660046122f1565b611528565b34801561099d57600080fd5b5060175461067a906001600160a01b031681565b3480156109bd57600080fd5b506103256109cc3660046122bf565b601b6020526000908152604090205481565b6109e661155b565b6109f08486612522565b60026109fc8688612522565b610a069190612535565b610a11906002612557565b14610a8b576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa98386612522565b601255610ab68285612522565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b679086815260200190565b60405180910390a35060015b92915050565b6000610b876012600a612652565b600554610b949190612535565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c19576001600160a01b0384166000908152600860209081526040808320338452909152902054610bf4908390612661565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c248484846115b5565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c6291612522565b600354610b949190612661565b60155460009060ff16158015610c9e57506001600160a01b03821660009081526019602052604090205460ff16155b8015610cc357506001600160a01b03831660009081526019602052604090205460ff16155b15610cd057506000610b73565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c275750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d1e61155b565b601a546001600160a01b0390811690831603610d875760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a82565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610dba61155b565b600083118015610dca5750600082115b8015610dd65750600081115b8015610de457506127108111155b610ded57600080fd5b8083600354610dfc9190612557565b610e069190612535565b6004556003548190610e19908490612557565b610e239190612535565b600555505050565b3360009081526023602052604090205460ff1680610e5357506000546001600160a01b031633145b610e6f5760405162461bcd60e51b8152600401610a8290612674565b478015610f2c5760006001600160a01b0383166064610e8e8685612557565b610e989190612535565b604051600081818185875af1925050503d8060008114610ed4576040519150601f19603f3d011682016040523d82523d6000602084013e610ed9565b606091505b5050905080610f2a5760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a82565b505b505050565b610f3961155b565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f726012600a612652565b600654610b949190612535565b610f8761155b565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fba61155b565b8215801590610fc857508083145b610fd157600080fd5b3360005b848110156110ef5760196000878784818110610ff357610ff36126ab565b905060200201602081019061100891906122bf565b6001600160a01b0316815260208101919091526040016000205460ff161580156110775750600d6000878784818110611043576110436126ab565b905060200201602081019061105891906122bf565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110dd576110db82878784818110611092576110926126ab565b90506020020160208101906110a791906122bf565b6110b36012600a612652565b8787868181106110c5576110c56126ab565b905060200201356110d69190612557565b6119cf565b505b806110e7816126c1565b915050610fd5565b505050505050565b6110ff61155b565b6111096000611a89565b565b6000610b7382600019610b0c565b61112161155b565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c273384846115b5565b61116e61155b565b60008211801561117e5750600081115b801561118c57506127108111155b61119557600080fd5b80826003546111a49190612557565b6111ae9190612535565b6006555050565b60006111c36012600a612652565b600454610b949190612535565b3360009081526023602052604090205460ff16806111f857506000546001600160a01b031633145b6112145760405162461bcd60e51b8152600401610a8290612674565b60005b82811015610f2a5781156112b257601c8054906000611235836126c1565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc338633285858481811061126e5761126e6126ab565b905060200201602081019061128391906122bf565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a1611312565b601b60008585848181106112c8576112c86126ab565b90506020020160208101906112dd91906122bf565b6001600160a01b031681526020810191909152604001600020541561131257601c805490600061130c836126da565b91905055505b8161131e576000611320565b435b601b6000868685818110611336576113366126ab565b905060200201602081019061134b91906122bf565b6001600160a01b031681526020810191909152604001600020558061136f816126c1565b915050611217565b3360009081526023602052604090205460ff168061139f57506000546001600160a01b031633145b6113bb5760405162461bcd60e51b8152600401610a8290612674565b601f5460ff16156114065760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a82565b601f805461ffff1916610101179055565b61141f61155b565b6000821161142c57600080fd5b601f805461ff0019166101008515150217905560035461144d908390612535565b60205561145c6012600a612652565b6114669082612557565b602155505050565b61147661155b565b600a55565b61148361155b565b6015805460ff19811660ff90911615179055565b600081156114a757505060135490565b505060125490565b6114b761155b565b6001600160a01b03811661151c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a82565b61152581611a89565b50565b61153061155b565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a82565b60006001600160a01b03841661160d5760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a82565b6001600160a01b03831661165c5760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a82565b600082116116a45760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a82565b6001600160a01b0384166000908152600760205260409020548211156117035760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a82565b601d5415801561172b57506001600160a01b03831660009081526019602052604090205460ff165b156117a5576001600160a01b0384166000908152600d602052604090205460ff166117985760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a82565b6117a543601d5542601e55565b601f5460ff1661183a576001600160a01b0384166000908152600d602052604090205460ff16806117ee57506001600160a01b0383166000908152600d602052604090205460ff165b61183a5760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a82565b611845848484611ad9565b6001600160a01b03831660009081526019602052604090205460ff1615801561187c57506001546001600160a01b03848116911614155b156118ab576001600160a01b0383166000908152600c602052604090205460ff166118ab576118ab8383611bf9565b60225460ff16156118c8576118c18484846119cf565b9050610c27565b6001600160a01b0384166000908152600760205260409020546118ec908390612661565b6001600160a01b038516600090815260076020526040902055816119108585610c6f565b156119445761191f8484611c7c565b905061192a84611cfa565b80156119365750600083115b156119445761194483611dad565b6001600160a01b038416600090815260076020526040902054611968908290612522565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119bc9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119f3908390612661565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a23908390612522565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a779086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1857506001600160a01b0382166000908152600c602052604090205460ff165b15611b2257505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4a57600554611b4e565b6004545b811115611b9d5760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a82565b6001600160a01b0383166000908152601b602052604090205415610f2c5760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a82565b6006546001600160a01b0383166000908152600760205260409020548190611c22908490612522565b1115610f2c5760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a82565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca983611497565b611cb39086612557565b611cbd9190612535565b30600090815260076020526040812080549293508392909190611ce1908490612522565b90915550611cf190508185612661565b95945050505050565b3360009081526019602052604081205460ff16158015611d1d575060225460ff16155b8015611d305750601f54610100900460ff165b8015611d4c5750600a5443600090815260096020526040902054105b8015611d7057506001600160a01b03821660009081526019602052604090205460ff165b8015611d8d57506021543060009081526007602052604090205410155b8015610b7357506000601354601254611da69190612522565b1192915050565b6022805460ff19166001179055601354601254600091611dcc91612522565b905060006020548310611de157602054611de3565b825b30600090815260076020526040902054909150811115611e0f5750306000908152600760205260409020545b6000601154601054611e219190612522565b90506000836002611e328486612557565b611e3c9190612535565b611e469190612535565b9050611e528184612661565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8c57611e8c6126ab565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0991906126f1565b81600181518110611f1c57611f1c6126ab565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f6690889060009087903090429060040161270e565b600060405180830381600087803b158015611f8057600080fd5b505af1158015611f94573d6000803e3d6000fd5b5050505060008147611fa69190612661565b90506000611fb5600287612535565b611fbf9089612661565b90506000816002611fd08986612557565b611fda9190612535565b611fe49190612535565b90506000611ff28285612661565b90508015612051576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612047576040519150601f19603f3d011682016040523d82523d6000602084013e61204c565b606091505b505050505b86156120f55760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120cc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120f1919061277f565b5050505b43600090815260096020526040902054612110906001612522565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561219357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121e3578581018301518582016040015282016121c7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461152557600080fd5b6000806040838503121561222c57600080fd5b823561223781612204565b946020939093013593505050565b60008060006060848603121561225a57600080fd5b833561226581612204565b9250602084013561227581612204565b929592945050506040919091013590565b6000806040838503121561229957600080fd5b82356122a481612204565b915060208301356122b481612204565b809150509250929050565b6000602082840312156122d157600080fd5b8135610c2781612204565b803580151581146122ec57600080fd5b919050565b6000806040838503121561230457600080fd5b823561230f81612204565b915061231d602084016122dc565b90509250929050565b60008060006060848603121561233b57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561236557600080fd5b8235915060208301356122b481612204565b60008083601f84011261238957600080fd5b50813567ffffffffffffffff8111156123a157600080fd5b6020830191508360208260051b85010111156123bc57600080fd5b9250929050565b600080600080604085870312156123d957600080fd5b843567ffffffffffffffff808211156123f157600080fd5b6123fd88838901612377565b9096509450602087013591508082111561241657600080fd5b5061242387828801612377565b95989497509550505050565b6000806040838503121561244257600080fd5b50508035926020909101359150565b60008060006040848603121561246657600080fd5b833567ffffffffffffffff81111561247d57600080fd5b61248986828701612377565b909450925061249c9050602085016122dc565b90509250925092565b6000806000606084860312156124ba57600080fd5b6124c3846122dc565b95602085013595506040909401359392505050565b6000602082840312156124ea57600080fd5b5035919050565b60006020828403121561250357600080fd5b610c27826122dc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b7357610b7361250c565b60008261255257634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b7357610b7361250c565b600181815b808511156125a957816000190482111561258f5761258f61250c565b8085161561259c57918102915b93841c9390800290612573565b509250929050565b6000826125c057506001610b73565b816125cd57506000610b73565b81600181146125e357600281146125ed57612609565b6001915050610b73565b60ff8411156125fe576125fe61250c565b50506001821b610b73565b5060208310610133831016604e8410600b841016171561262c575081810a610b73565b612636838361256e565b806000190482111561264a5761264a61250c565b029392505050565b6000610c2760ff8416836125b1565b81810381811115610b7357610b7361250c565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126d3576126d361250c565b5060010190565b6000816126e9576126e961250c565b506000190190565b60006020828403121561270357600080fd5b8151610c2781612204565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561275e5784516001600160a01b031683529383019391830191600101612739565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561279457600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122022b94021eab2175421fad102ac836f5e7d71d53e10ad6828e6dc296941b6d21364736f6c63430008110033

Deployed Bytecode Sourcemap

6957:14856:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8804:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8804:50:0;;;;;;;;20004:791;;;;;;;;;;-1:-1:-1;20004:791:0;;;;;:::i;:::-;;:::i;:::-;;10258:79;;;;;;;;;;-1:-1:-1;10326:5:0;;;;;;;;;;;;-1:-1:-1;;;10326:5:0;;;;10258:79;;;;;;;:::i;11068:217::-;;;;;;;;;;-1:-1:-1;11068:217:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;11068:217:0;1664:187:1;7672:36:0;;;;;;;;;;;;;;;;9982:96;;;;;;;;;;-1:-1:-1;10060:12:0;;9982:96;;8630:29;;;;;;;;;;;;;;;;10547:115;;;;;;;;;;;;;:::i;12935:361::-;;;;;;;;;;-1:-1:-1;12935:361:0;;;;;:::i;:::-;;:::i;21456:132::-;;;;;;;;;;;;;:::i;10084:79::-;;;;;;;;;;-1:-1:-1;10084:79:0;;7272:2;2459:36:1;;2447:2;2432:18;10084:79:0;2317:184:1;16038:268:0;;;;;;;;;;-1:-1:-1;16038:268:0;;;;;:::i;:::-;;:::i;7715:43::-;;;;;;;;;;-1:-1:-1;7715:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18894:174;;;;;;;;;;-1:-1:-1;18894:174:0;;;;;:::i;:::-;;:::i;19180:359::-;;;;;;;;;;-1:-1:-1;19180:359:0;;;;;:::i;:::-;;:::i;11993:320::-;;;;;;;;;;-1:-1:-1;11993:320:0;;;;;:::i;:::-;;:::i;11419:114::-;;;;;;;;;;-1:-1:-1;11419:114:0;;;;;:::i;:::-;;:::i;7815:50::-;;;;;;;;;;-1:-1:-1;7815:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10668:113;;;;;;;;;;;;;:::i;19758:::-;;;;;;;;;;-1:-1:-1;19758:113:0;;;;;:::i;:::-;;:::i;8697:30::-;;;;;;;;;;;;;;;;11539:448;;;;;;;;;;-1:-1:-1;11539:448:0;;;;;:::i;:::-;;:::i;8768:31::-;;;;;;;;;;-1:-1:-1;8768:31:0;;;;;;;;;;;10787:113;;;;;;;;;;-1:-1:-1;10787:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;10876:18:0;10853:7;10876:18;;;:9;:18;;;;;;;10787:113;6473:97;;;;;;;;;;;;;:::i;8167:31::-;;;;;;;;;;-1:-1:-1;8167:31:0;;;;;;;;10343:79;;;;;;;;;;-1:-1:-1;10386:7:0;6323:6;-1:-1:-1;;;;;6323:6:0;10343:79;;;-1:-1:-1;;;;;5591:32:1;;;5573:51;;5561:2;5546:18;10343:79:0;5427:203:1;7763:47:0;;;;;;;;;;-1:-1:-1;7763:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6254:81;;;;;;;;;;-1:-1:-1;6300:7:0;6323:6;-1:-1:-1;;;;;6323:6:0;6254:81;;10169:83;;;;;;;;;;-1:-1:-1;10239:7:0;;;;;;;;;;;;-1:-1:-1;;;10239:7:0;;;;10169:83;;11291:122;;;;;;;;;;-1:-1:-1;11291:122:0;;;;;:::i;:::-;;:::i;20894:247::-;;;;;;;;;;-1:-1:-1;20894:247:0;;;;;:::i;:::-;;:::i;8859:51::-;;;;;;;;;;;;;;;;8555:19;;;;;;;;;;-1:-1:-1;8555:19:0;;;;-1:-1:-1;;;;;8555:19:0;;;12764:165;;;;;;;;;;-1:-1:-1;12764:165:0;;;;;:::i;:::-;;:::i;19545:207::-;;;;;;;;;;-1:-1:-1;19545:207:0;;;;;:::i;:::-;;:::i;10428:113::-;;;;;;;;;;;;;:::i;12319:439::-;;;;;;;;;;-1:-1:-1;12319:439:0;;;;;:::i;:::-;;:::i;8205:97::-;;;;;;;;;;-1:-1:-1;8205:97:0;;;;;;;-1:-1:-1;;;;;8205:97:0;;;14918:160;;;;;;;;;;;;;:::i;8666:26::-;;;;;;;;;;;;;;;;21147:303;;;;;;;;;;-1:-1:-1;21147:303:0;;;;;:::i;:::-;;:::i;19074:100::-;;;;;;;;;;-1:-1:-1;19074:100:0;;;;;:::i;:::-;;:::i;20801:87::-;;;;;;;;;;;;;:::i;10906:156::-;;;;;;;;;;-1:-1:-1;10906:156:0;;;;;:::i;:::-;-1:-1:-1;;;;;11028:19:0;;;11005:7;11028:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10906:156;7617:50;;;;;;;;;;-1:-1:-1;7617:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;8307:97;;;;;;;;;;-1:-1:-1;8307:97:0;;;;-1:-1:-1;;;;;8307:97:0;;;16312:135;;;;;;;;;;-1:-1:-1;16312:135:0;;;;;:::i;:::-;;:::i;6576:191::-;;;;;;;;;;-1:-1:-1;6576:191:0;;;;;:::i;:::-;;:::i;19877:121::-;;;;;;;;;;-1:-1:-1;19877:121:0;;;;;:::i;:::-;;:::i;8411:24::-;;;;;;;;;;-1:-1:-1;8411:24:0;;;;-1:-1:-1;;;;;8411:24:0;;;8581:44;;;;;;;;;;-1:-1:-1;8581:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;20004:791;6221:13;:11;:13::i;:::-;20286:36:::1;20305:17:::0;20286:16;:36:::1;:::i;:::-;20266:1;20226:36;20245:17:::0;20226:16;:36:::1;:::i;:::-;20225:42;;;;:::i;:::-;20224:48;::::0;20271:1:::1;20224:48;:::i;:::-;:99;20208:197;;;::::0;;-1:-1:-1;;;20208:197:0;;8398:2:1;20208:197:0::1;::::0;::::1;8380:21:1::0;8417:18;;;8410:30;;;;8476:34;8456:18;;;8449:62;8547:34;8527:18;;;8520:62;8599:19;;20208:197:0::1;;;;;;;;;20412:15;:34:::0;;;20453:16:::1;:36:::0;;;20496:15:::1;:34:::0;;;20537:16:::1;:36:::0;;;20594:35:::1;20514:16:::0;20430;20594:35:::1;:::i;:::-;20580:11;:49:::0;20651:37:::1;20671:17:::0;20651;:37:::1;:::i;:::-;20636:12;:52:::0;;;20695:14:::1;:32:::0;;;20747:11:::1;::::0;20739:50:::1;::::0;;8831:25:1;;;8887:2;8872:18;;8865:34;;;;8915:18;;;8908:34;;;20739:50:0::1;::::0;8819:2:1;8804:18;20739:50:0::1;;;;;;;20004:791:::0;;;;;:::o;11068:217::-;11183:10;11158:4;11171:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11171:32:0;;;;;;;;;;:41;;;11224:37;11158:4;;11171:32;;11224:37;;;;11206:6;160:25:1;;148:2;133:18;;14:177;11224:37:0;;;;;;;;-1:-1:-1;11275:4:0;11068:217;;;;;:::o;10547:115::-;10597:7;10640:15;7272:2;10640;:15;:::i;:::-;10620:16;;:36;;;;:::i;:::-;10613:43;;10547:115;:::o;12935:361::-;-1:-1:-1;;;;;13072:19:0;;13055:4;13072:19;;;:11;:19;;;;;;;;13092:10;13072:31;;;;;;;;-1:-1:-1;;13072:52:0;13068:167;;-1:-1:-1;;;;;13178:19:0;;;;;;:11;:19;;;;;;;;13198:10;13178:31;;;;;;;;:49;;13221:6;;13178:49;:::i;:::-;-1:-1:-1;;;;;13135:19:0;;;;;;:11;:19;;;;;;;;13155:10;13135:31;;;;;;;:92;13068:167;13250:40;13264:6;13272:9;13283:6;13250:13;:40::i;:::-;13243:47;;12935:361;;;;;;:::o;21456:132::-;21576:4;;-1:-1:-1;;;;;21576:4:0;;;21509:7;10876:18;;;:9;:18;;;;;;;21558:4;;;;;10876:18;;;;;21509:7;;21548:33;;;:::i;:::-;21532:12;;:50;;;;:::i;16038:268::-;16150:11;;16132:4;;16150:11;;16149:12;:42;;;;-1:-1:-1;;;;;;16166:25:0;;;;;;:14;:25;;;;;;;;16165:26;16149:42;:69;;;;-1:-1:-1;;;;;;16196:22:0;;;;;;:14;:22;;;;;;;;16195:23;16149:69;16145:94;;;-1:-1:-1;16234:5:0;16227:12;;16145:94;-1:-1:-1;;;;;16254:19:0;;;;;;:11;:19;;;;;;;;16253:20;:47;;;;-1:-1:-1;;;;;;;16278:22:0;;;;;:11;:22;;;;;;;;16277:23;;16246:54;-1:-1:-1;16038:268:0:o;18894:174::-;6221:13;:11;:13::i;:::-;18985:4:::1;::::0;-1:-1:-1;;;;;18985:4:0;;::::1;18979:10:::0;;::::1;::::0;18971:57:::1;;;::::0;-1:-1:-1;;;18971:57:0;;10671:2:1;18971:57:0::1;::::0;::::1;10653:21:1::0;10710:2;10690:18;;;10683:30;10749:34;10729:18;;;10722:62;-1:-1:-1;;;10800:18:1;;;10793:32;10842:19;;18971:57:0::1;10469:398:1::0;18971:57:0::1;-1:-1:-1::0;;;;;19035:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;19035:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18894:174::o;19180:359::-;6221:13;:11;:13::i;:::-;19339:1:::1;19324:12;:16;:37;;;;;19360:1;19344:13;:17;19324:37;:52;;;;;19375:1;19365:7;:11;19324:52;:72;;;;;19391:5;19380:7;:16;;19324:72;19308:95;;;::::0;::::1;;19460:7;19444:12;19429;;:27;;;;:::i;:::-;19428:39;;;;:::i;:::-;19410:15;:57:::0;19494:12:::1;::::0;19526:7;;19494:28:::1;::::0;19509:13;;19494:28:::1;:::i;:::-;19493:40;;;;:::i;:::-;19474:16;:59:::0;-1:-1:-1;;;19180:359:0:o;11993:320::-;4409:10;9100:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6300:7:0;6323:6;-1:-1:-1;;;;;6323:6:0;9129:10;:21;9100:50;9084:111;;;;-1:-1:-1;;;9084:111:0;;;;;;;:::i;:::-;12119:21:::1;12153:13:::0;;12149:159:::1;;12178:9;-1:-1:-1::0;;;;;12193:8:0;::::1;12242:3;12210:28;12222:16:::0;12210:9;:28:::1;:::i;:::-;12209:36;;;;:::i;:::-;12193:57;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12177:73;;;12267:4;12259:41;;;::::0;-1:-1:-1;;;12259:41:0;;11640:2:1;12259:41:0::1;::::0;::::1;11622:21:1::0;11679:2;11659:18;;;11652:30;11718:26;11698:18;;;11691:54;11762:18;;12259:41:0::1;11438:348:1::0;12259:41:0::1;12168:140;12149:159;12092:221;11993:320:::0;;:::o;11419:114::-;6221:13;:11;:13::i;:::-;-1:-1:-1;;;;;11498:18:0;;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:29;;-1:-1:-1;;11498:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11419:114::o;10668:113::-;10718:7;10759:15;7272:2;10759;:15;:::i;:::-;10741:14;;:34;;;;:::i;19758:113::-;6221:13;:11;:13::i;:::-;-1:-1:-1;;;;;19837:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;19837:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19758:113::o;11539:448::-;6221:13;:11;:13::i;:::-;11663:20;;;;;:58:::1;;-1:-1:-1::0;11687:34:0;;::::1;11663:58;11655:67;;;::::0;::::1;;11744:10;11729:12;11763:219;11780:20:::0;;::::1;11763:219;;;11821:14;:28;11836:9;;11846:1;11836:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11821:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11821:28:0;;::::1;;11820:29;:66:::0;::::1;;;;11854:18;:32;11873:9;;11883:1;11873:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11854:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11854:32:0;;::::1;;11853:33;11820:66;11816:159;;;11899:66;11914:4;11920:9;;11930:1;11920:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11948:15;7272:2;11948;:15;:::i;:::-;11934:7;;11942:1;11934:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;11899:14;:66::i;:::-;;11816:159;11802:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11763:219;;;;11648:339;11539:448:::0;;;;:::o;6473:97::-;6221:13;:11;:13::i;:::-;6534:30:::1;6561:1;6534:18;:30::i;:::-;6473:97::o:0;11291:122::-;11352:4;11372:35;11380:7;-1:-1:-1;;11372:7:0;:35::i;20894:247::-;6221:13;:11;:13::i;:::-;21022:20:::1;:53:::0;;-1:-1:-1;;;;;;21022:53:0::1;;-1:-1:-1::0;;;;;21022:53:0;;::::1;;;::::0;;21082:20:::1;:53:::0;;-1:-1:-1;;;;;;21082:53:0::1;::::0;;;::::1;;::::0;;20894:247::o;12764:165::-;12859:4;12879:44;12893:10;12905:9;12916:6;12879:13;:44::i;19545:207::-;6221:13;:11;:13::i;:::-;19649:1:::1;19637:9;:13;:28;;;;;19664:1;19654:7;:11;19637:28;:48;;;;;19680:5;19669:7;:16;;19637:48;19629:57;;;::::0;::::1;;19739:7;19726:9;19711:12;;:24;;;;:::i;:::-;19710:36;;;;:::i;:::-;19693:14;:53:::0;-1:-1:-1;;19545:207:0:o;10428:113::-;10477:7;10519:15;7272:2;10519;:15;:::i;:::-;10500;;:35;;;;:::i;12319:439::-;4409:10;9100:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6300:7:0;6323:6;-1:-1:-1;;;;;6323:6:0;9129:10;:21;9100:50;9084:111;;;;-1:-1:-1;;;9084:111:0;;;;;;;:::i;:::-;12436:6:::1;12431:322;12448:19:::0;;::::1;12431:322;;;12487:10;12483:200;;;12510:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12542:55;12560:9;12571:8;;12580:1;12571:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12542:55;::::0;;-1:-1:-1;;;;;12321:15:1;;;12303:34;;12373:15;;;;12368:2;12353:18;;12346:43;12584:12:0::1;12405:18:1::0;;;12398:34;12253:2;12238:18;12542:55:0::1;;;;;;;12483:200;;;12628:9;:22;12638:8;;12647:1;12638:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12628:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12628:22:0;;:27;12624:49:::1;;12657:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12624:49;12716:10;:29;;12744:1;12716:29;;;12729:12;12716:29;12691:9;:22;12701:8;;12710:1;12701:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12691:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12691:22:0;:54;12469:3;::::1;::::0;::::1;:::i;:::-;;;;12431:322;;14918:160:::0;4409:10;9100:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6300:7:0;6323:6;-1:-1:-1;;;;;6323:6:0;9129:10;:21;9100:50;9084:111;;;;-1:-1:-1;;;9084:111:0;;;;;;;:::i;:::-;14975:16:::1;::::0;::::1;;14974:17;14966:51;;;::::0;-1:-1:-1;;;14966:51:0;;12786:2:1;14966:51:0::1;::::0;::::1;12768:21:1::0;12825:2;12805:18;;;12798:30;-1:-1:-1;;;12844:18:1;;;12837:51;12905:18;;14966:51:0::1;12584:345:1::0;14966:51:0::1;15024:16;:23:::0;;-1:-1:-1;;15054:18:0;;;;;14918:160::o;21147:303::-;6221:13;:11;:13::i;:::-;21306:1:::1;21291:12;:16;21283:25;;;::::0;::::1;;21315:11;:22:::0;;-1:-1:-1;;21315:22:0::1;;::::0;::::1;;;;::::0;;21360:12:::1;::::0;:27:::1;::::0;21375:12;;21360:27:::1;:::i;:::-;21344:13;:43:::0;21428:15:::1;7272:2;21428;:15;:::i;:::-;21410:34;::::0;:14;:34:::1;:::i;:::-;21394:13;:50:::0;-1:-1:-1;;;21147:303:0:o;19074:100::-;6221:13;:11;:13::i;:::-;19144:17:::1;:24:::0;19074:100::o;20801:87::-;6221:13;:11;:13::i;:::-;20871:11:::1;::::0;;-1:-1:-1;;20856:26:0;::::1;20871:11;::::0;;::::1;20870:12;20856:26;::::0;;20801:87::o;16312:135::-;16368:7;16388;16384:32;;;-1:-1:-1;;16404:12:0;;;16312:135::o;16384:32::-;-1:-1:-1;;16430:11:0;;;16312:135::o;6576:191::-;6221:13;:11;:13::i;:::-;-1:-1:-1;;;;;6661:22:0;::::1;6653:73;;;::::0;-1:-1:-1;;;6653:73:0;;13136:2:1;6653:73:0::1;::::0;::::1;13118:21:1::0;13175:2;13155:18;;;13148:30;13214:34;13194:18;;;13187:62;-1:-1:-1;;;13265:18:1;;;13258:36;13311:19;;6653:73:0::1;12934:402:1::0;6653:73:0::1;6733:28;6752:8;6733:18;:28::i;:::-;6576:191:::0;:::o;19877:121::-;6221:13;:11;:13::i;:::-;-1:-1:-1;;;;;19960:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;19960:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19877:121::o;6341:126::-;6300:7;6323:6;-1:-1:-1;;;;;6323:6:0;4409:10;6401:23;6393:68;;;;-1:-1:-1;;;6393:68:0;;13543:2:1;6393:68:0;;;13525:21:1;;;13562:18;;;13555:30;13621:34;13601:18;;;13594:62;13673:18;;6393:68:0;13341:356:1;13302:1407:0;13414:4;-1:-1:-1;;;;;13435:20:0;;13427:57;;;;-1:-1:-1;;;13427:57:0;;13904:2:1;13427:57:0;;;13886:21:1;13943:2;13923:18;;;13916:30;13982:26;13962:18;;;13955:54;14026:18;;13427:57:0;13702:348:1;13427:57:0;-1:-1:-1;;;;;13499:23:0;;13491:58;;;;-1:-1:-1;;;13491:58:0;;14257:2:1;13491:58:0;;;14239:21:1;14296:2;14276:18;;;14269:30;-1:-1:-1;;;14315:18:1;;;14308:52;14377:18;;13491:58:0;14055:346:1;13491:58:0;13573:1;13564:6;:10;13556:44;;;;-1:-1:-1;;;13556:44:0;;14608:2:1;13556:44:0;;;14590:21:1;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:1;;;14659:51;14727:18;;13556:44:0;14406:345:1;13556:44:0;-1:-1:-1;;;;;13615:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13615:27:0;13607:60;;;;-1:-1:-1;;;13607:60:0;;14958:2:1;13607:60:0;;;14940:21:1;14997:2;14977:18;;;14970:30;-1:-1:-1;;;15016:18:1;;;15009:50;15076:18;;13607:60:0;14756:344:1;13607:60:0;14778:11;;:16;;;13678:40;;-1:-1:-1;;;;;;13693:25:0;;;;;;:14;:25;;;;;;;;13678:40;13674:143;;;-1:-1:-1;;;;;13737:26:0;;;;;;:18;:26;;;;;;;;13729:63;;;;-1:-1:-1;;;13729:63:0;;15307:2:1;13729:63:0;;;15289:21:1;15346:2;15326:18;;;15319:30;15385:26;15365:18;;;15358:54;15429:18;;13729:63:0;15105:348:1;13729:63:0;13801:8;14854:12;14840:11;:26;14891:15;14873;:33;14806:106;13801:8;13828:16;;;;13823:167;;-1:-1:-1;;;;;13873:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;13903:29:0;;;;;;:18;:29;;;;;;;;13873:59;13855:127;;;;-1:-1:-1;;;13855:127:0;;15660:2:1;13855:127:0;;;15642:21:1;15699:2;15679:18;;;15672:30;15738;15718:18;;;15711:58;15786:18;;13855:127:0;15458:352:1;13855:127:0;13998:39;14011:6;14019:9;14030:6;13998:12;:39::i;:::-;-1:-1:-1;;;;;14051:25:0;;;;;;:14;:25;;;;;;;;14050:26;:47;;;;-1:-1:-1;14093:4:0;;-1:-1:-1;;;;;14080:17:0;;;14093:4;;14080:17;;14050:47;14046:158;;;-1:-1:-1;;;;;14113:26:0;;;;;;:15;:26;;;;;;;;14108:89;;14152:35;14169:9;14180:6;14152:16;:35::i;:::-;14216:6;;;;14212:77;;;14240:41;14255:6;14263:9;14274:6;14240:14;:41::i;:::-;14233:48;;;;14212:77;-1:-1:-1;;;;;14317:17:0;;;;;;:9;:17;;;;;;:26;;14337:6;;14317:26;:::i;:::-;-1:-1:-1;;;;;14297:17:0;;;;;;:9;:17;;;;;:46;14377:6;14396:32;14307:6;14418:9;14396:13;:32::i;:::-;14392:168;;;14456:26;14464:9;14475:6;14456:7;:26::i;:::-;14439:43;;14495:25;14510:9;14495:14;:25::i;:::-;:39;;;;;14533:1;14524:6;:10;14495:39;14491:61;;;14536:16;14545:6;14536:8;:16::i;:::-;-1:-1:-1;;;;;14591:20:0;;;;;;:9;:20;;;;;;:37;;14614:14;;14591:37;:::i;:::-;-1:-1:-1;;;;;14568:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14642:43;;;;;;;;;;14670:14;160:25:1;;148:2;133:18;;14:177;14642:43:0;;;;;;;;-1:-1:-1;14699:4:0;;13302:1407;-1:-1:-1;;;;13302:1407:0:o;15084:302::-;-1:-1:-1;;;;;15230:17:0;;15197:4;15230:17;;;:9;:17;;;;;;:26;;15250:6;;15230:26;:::i;:::-;-1:-1:-1;;;;;15210:17:0;;;;;;;:9;:17;;;;;;:46;;;;15286:20;;;;;;;:29;;15309:6;;15286:29;:::i;:::-;-1:-1:-1;;;;;15263:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15327:35;;;;;;;;;;15355:6;160:25:1;;148:2;133:18;;14:177;15327:35:0;;;;;;;;-1:-1:-1;15376:4:0;15084:302;;;;;:::o;6773:177::-;6843:16;6862:6;;-1:-1:-1;;;;;6875:17:0;;;-1:-1:-1;;;;;;6875:17:0;;;;;;6904:40;;6862:6;;;;;;;6904:40;;6843:16;6904:40;6836:114;6773:177;:::o;15642:390::-;-1:-1:-1;;;;;15760:23:0;;;;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;15787:26:0;;;;;;:15;:26;;;;;;;;15760:53;15756:66;;;15642:390;;;:::o;15756:66::-;-1:-1:-1;;;;;15857:22:0;;;;;;:14;:22;;;;;;;;:59;;15900:16;;15857:59;;;15882:15;;15857:59;15846:6;:71;;15830:133;;;;-1:-1:-1;;;15830:133:0;;16017:2:1;15830:133:0;;;15999:21:1;16056:2;16036:18;;;16029:30;16095;16075:18;;;16068:58;16143:18;;15830:133:0;15815:352:1;15830:133:0;-1:-1:-1;;;;;15980:17:0;;;;;;:9;:17;;;;;;:22;15972:54;;;;-1:-1:-1;;;15972:54:0;;16374:2:1;15972:54:0;;;16356:21:1;16413:2;16393:18;;;16386:30;-1:-1:-1;;;16432:18:1;;;16425:49;16491:18;;15972:54:0;16172:343:1;15392:244:0;15496:14;;-1:-1:-1;;;;;15533:20:0;;15474:19;15533:20;;;:9;:20;;;;;;15496:14;;15533:29;;15556:6;;15533:29;:::i;:::-;:44;;15517:113;;;;-1:-1:-1;;;15517:113:0;;16722:2:1;15517:113:0;;;16704:21:1;16761:2;16741:18;;;16734:30;16800:34;16780:18;;;16773:62;-1:-1:-1;;;16851:18:1;;;16844:33;16894:19;;15517:113:0;16520:399:1;16453:302:0;-1:-1:-1;;;;;16569:25:0;;16538:7;16569:25;;;:14;:25;;;;;;16655:14;;16569:25;;;;;16538:7;;16631:20;16569:25;16631:11;:20::i;:::-;16622:29;;:6;:29;:::i;:::-;16621:48;;;;:::i;:::-;16696:4;16678:24;;;;:9;:24;;;;;:37;;16601:68;;-1:-1:-1;16601:68:0;;16678:24;;;:37;;16601:68;;16678:37;:::i;:::-;;;;-1:-1:-1;16731:18:0;;-1:-1:-1;16740:9:0;16731:6;:18;:::i;:::-;16724:25;16453:302;-1:-1:-1;;;;;16453:302:0:o;16761:355::-;16870:10;16827:4;16855:26;;;:14;:26;;;;;;;;16854:27;:45;;;;-1:-1:-1;16893:6:0;;;;16892:7;16854:45;:67;;;;-1:-1:-1;16910:11:0;;;;;;;16854:67;:127;;;;-1:-1:-1;16964:17:0;;16948:12;16932:29;;;;:15;:29;;;;;;:49;16854:127;:163;;;;-1:-1:-1;;;;;;16992:25:0;;;;;;:14;:25;;;;;;;;16854:163;:215;;;;-1:-1:-1;17056:13:0;;17046:4;17028:24;;;;:9;:24;;;;;;:41;;16854:215;:256;;;;;17109:1;17094:12;;17080:11;;:26;;;;:::i;:::-;:30;16840:270;16761:355;-1:-1:-1;;16761:355:0:o;17122:1766::-;8960:6;:13;;-1:-1:-1;;8960:13:0;8969:4;8960:13;;;17214:12:::1;::::0;17200:11:::1;::::0;8960:6;;17200:26:::1;::::0;::::1;:::i;:::-;17181:45;;17233:20;17265:13;;17256:6;:22;:47;;17290:13;;17256:47;;;17281:6;17256:47;17332:4;17314:24;::::0;;;:9:::1;:24;::::0;;;;;17233:70;;-1:-1:-1;17314:39:0;-1:-1:-1;17310:91:0::1;;;-1:-1:-1::0;17395:4:0::1;17377:24;::::0;;;:9:::1;:24;::::0;;;;;17310:91:::1;17410:25;17456:16;;17438:15;;:34;;;;:::i;:::-;17410:62:::0;-1:-1:-1;17479:23:0::1;17555:8:::0;17543:1:::1;17507:32;17410:62:::0;17507:12;:32:::1;:::i;:::-;17506:38;;;;:::i;:::-;17505:58;;;;:::i;:::-;17479:84:::0;-1:-1:-1;17570:31:0::1;17479:84:::0;17570:31;::::1;:::i;:::-;17634:16;::::0;;17648:1:::1;17634:16:::0;;;;;::::1;::::0;;17570:31;;-1:-1:-1;17610:21:0::1;::::0;17634:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17634:16:0::1;17610:40;;17675:4;17657;17662:1;17657:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17657:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17697:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17697:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;17657:7;;17697:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17687:4;17692:1;17687:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17687:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17773:6:::1;::::0;:154:::1;::::0;-1:-1:-1;;;17773:154:0;;17743:21:::1;::::0;17773:6;;;::::1;::::0;:57:::1;::::0;:154:::1;::::0;17839:12;;17719:21:::1;::::0;17870:4;;17891::::1;::::0;17905:15:::1;::::0;17773:154:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17936:17;17980:13;17956:21;:37;;;;:::i;:::-;17936:57:::0;-1:-1:-1;18000:19:0::1;18034:21;18054:1;18034:17:::0;:21:::1;:::i;:::-;18022:34;::::0;:8;:34:::1;:::i;:::-;18000:56:::0;-1:-1:-1;18065:26:0::1;18000:56:::0;18129:1:::1;18096:29;18108:17:::0;18096:9;:29:::1;:::i;:::-;18095:35;;;;:::i;:::-;18094:58;;;;:::i;:::-;18065:87:::0;-1:-1:-1;18159:26:0::1;18188:30;18065:87:::0;18188:9;:30:::1;:::i;:::-;18159:59:::0;-1:-1:-1;18231:22:0;;18227:232:::1;;18289:20;::::0;:74:::1;::::0;18265:18:::1;::::0;-1:-1:-1;;;;;18289:20:0::1;::::0;18332:18;;18265;18289:74;18265:18;18289:74;18332:18;18289:20;:74:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;18227:232:0::1;18471:19:::0;;18467:231:::1;;18501:6;::::0;18635:20:::1;::::0;18501:189:::1;::::0;-1:-1:-1;;;18501:189:0;;18569:4:::1;18501:189;::::0;::::1;18646:34:1::0;18696:18;;;18689:34;;;-1:-1:-1;18739:18:1;;;18732:34;;;18782:18;;;18775:34;-1:-1:-1;;;;;18501:6:0::1;18635:20:::0;;::::1;::::0;::::1;18825:19:1::0;;;18818:44;18666:15:0::1;18878:19:1::0;;;18871:35;18501:6:0;::::1;::::0;:22:::1;::::0;18531:18;;18580:19:1;;18501:189:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18467:231;18752:12;18736:29;::::0;;;:15:::1;:29;::::0;;;;;:33:::1;::::0;18768:1:::1;18736:33;:::i;:::-;18720:12;18704:29;::::0;;;:15:::1;:29;::::0;;;;;;;;:65;;;;18781:101;;8831:25:1;;;8872:18;;;8865:34;;;8915:18;;8908:34;;;18781:101:0::1;::::0;8819:2:1;8804:18;18781:101:0::1;;;;;;;-1:-1:-1::0;;8988:6:0;:14;;-1:-1:-1;;8988:14:0;;;-1:-1:-1;;;;;;;;;17122:1766:0:o;196:454:1:-;291:6;299;307;315;323;376:3;364:9;355:7;351:23;347:33;344:53;;;393:1;390;383:12;344:53;-1:-1:-1;;416:23:1;;;486:2;471:18;;458:32;;-1:-1:-1;537:2:1;522:18;;509:32;;588:2;573:18;;560:32;;-1:-1:-1;639:3:1;624:19;611:33;;-1:-1:-1;196:454:1;-1:-1:-1;196:454:1:o;655:548::-;767:4;796:2;825;814:9;807:21;857:6;851:13;900:6;895:2;884:9;880:18;873:34;925:1;935:140;949:6;946:1;943:13;935:140;;;1044:14;;;1040:23;;1034:30;1010:17;;;1029:2;1006:26;999:66;964:10;;935:140;;;939:3;1124:1;1119:2;1110:6;1099:9;1095:22;1091:31;1084:42;1194:2;1187;1183:7;1178:2;1170:6;1166:15;1162:29;1151:9;1147:45;1143:54;1135:62;;;;655:548;;;;:::o;1208:131::-;-1:-1:-1;;;;;1283:31:1;;1273:42;;1263:70;;1329:1;1326;1319:12;1344:315;1412:6;1420;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1344:315:1:o;1856:456::-;1933:6;1941;1949;2002:2;1990:9;1981:7;1977:23;1973:32;1970:52;;;2018:1;2015;2008:12;1970:52;2057:9;2044:23;2076:31;2101:5;2076:31;:::i;:::-;2126:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2196:33;2155:32;2196:33;:::i;:::-;1856:456;;2248:7;;-1:-1:-1;;;2302:2:1;2287:18;;;;2274:32;;1856:456::o;2506:388::-;2574:6;2582;2635:2;2623:9;2614:7;2610:23;2606:32;2603:52;;;2651:1;2648;2641:12;2603:52;2690:9;2677:23;2709:31;2734:5;2709:31;:::i;:::-;2759:5;-1:-1:-1;2816:2:1;2801:18;;2788:32;2829:33;2788:32;2829:33;:::i;:::-;2881:7;2871:17;;;2506:388;;;;;:::o;2899:247::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3066:9;3053:23;3085:31;3110:5;3085:31;:::i;3151:160::-;3216:20;;3272:13;;3265:21;3255:32;;3245:60;;3301:1;3298;3291:12;3245:60;3151:160;;;:::o;3316:315::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3497:9;3484:23;3516:31;3541:5;3516:31;:::i;:::-;3566:5;-1:-1:-1;3590:35:1;3621:2;3606:18;;3590:35;:::i;:::-;3580:45;;3316:315;;;;;:::o;3636:316::-;3713:6;3721;3729;3782:2;3770:9;3761:7;3757:23;3753:32;3750:52;;;3798:1;3795;3788:12;3750:52;-1:-1:-1;;3821:23:1;;;3891:2;3876:18;;3863:32;;-1:-1:-1;3942:2:1;3927:18;;;3914:32;;3636:316;-1:-1:-1;3636:316:1:o;3957:315::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4138:9;4125:23;4115:33;;4198:2;4187:9;4183:18;4170:32;4211:31;4236:5;4211:31;:::i;4277:367::-;4340:8;4350:6;4404:3;4397:4;4389:6;4385:17;4381:27;4371:55;;4422:1;4419;4412:12;4371:55;-1:-1:-1;4445:20:1;;4488:18;4477:30;;4474:50;;;4520:1;4517;4510:12;4474:50;4557:4;4549:6;4545:17;4533:29;;4617:3;4610:4;4600:6;4597:1;4593:14;4585:6;4581:27;4577:38;4574:47;4571:67;;;4634:1;4631;4624:12;4571:67;4277:367;;;;;:::o;4649:773::-;4771:6;4779;4787;4795;4848:2;4836:9;4827:7;4823:23;4819:32;4816:52;;;4864:1;4861;4854:12;4816:52;4904:9;4891:23;4933:18;4974:2;4966:6;4963:14;4960:34;;;4990:1;4987;4980:12;4960:34;5029:70;5091:7;5082:6;5071:9;5067:22;5029:70;:::i;:::-;5118:8;;-1:-1:-1;5003:96:1;-1:-1:-1;5206:2:1;5191:18;;5178:32;;-1:-1:-1;5222:16:1;;;5219:36;;;5251:1;5248;5241:12;5219:36;;5290:72;5354:7;5343:8;5332:9;5328:24;5290:72;:::i;:::-;4649:773;;;;-1:-1:-1;5381:8:1;-1:-1:-1;;;;4649:773:1:o;5635:248::-;5703:6;5711;5764:2;5752:9;5743:7;5739:23;5735:32;5732:52;;;5780:1;5777;5770:12;5732:52;-1:-1:-1;;5803:23:1;;;5873:2;5858:18;;;5845:32;;-1:-1:-1;5635:248:1:o;5888:505::-;5980:6;5988;5996;6049:2;6037:9;6028:7;6024:23;6020:32;6017:52;;;6065:1;6062;6055:12;6017:52;6105:9;6092:23;6138:18;6130:6;6127:30;6124:50;;;6170:1;6167;6160:12;6124:50;6209:70;6271:7;6262:6;6251:9;6247:22;6209:70;:::i;:::-;6298:8;;-1:-1:-1;6183:96:1;-1:-1:-1;6352:35:1;;-1:-1:-1;6383:2:1;6368:18;;6352:35;:::i;:::-;6342:45;;5888:505;;;;;:::o;6622:316::-;6696:6;6704;6712;6765:2;6753:9;6744:7;6740:23;6736:32;6733:52;;;6781:1;6778;6771:12;6733:52;6804:26;6820:9;6804:26;:::i;:::-;6794:36;6877:2;6862:18;;6849:32;;-1:-1:-1;6928:2:1;6913:18;;;6900:32;;6622:316;-1:-1:-1;;;6622:316:1:o;6943:180::-;7002:6;7055:2;7043:9;7034:7;7030:23;7026:32;7023:52;;;7071:1;7068;7061:12;7023:52;-1:-1:-1;7094:23:1;;6943:180;-1:-1:-1;6943:180:1:o;7128:::-;7184:6;7237:2;7225:9;7216:7;7212:23;7208:32;7205:52;;;7253:1;7250;7243:12;7205:52;7276:26;7292:9;7276:26;:::i;7539:127::-;7600:10;7595:3;7591:20;7588:1;7581:31;7631:4;7628:1;7621:15;7655:4;7652:1;7645:15;7671:125;7736:9;;;7757:10;;;7754:36;;;7770:18;;:::i;7801:217::-;7841:1;7867;7857:132;;7911:10;7906:3;7902:20;7899:1;7892:31;7946:4;7943:1;7936:15;7974:4;7971:1;7964:15;7857:132;-1:-1:-1;8003:9:1;;7801:217::o;8023:168::-;8096:9;;;8127;;8144:15;;;8138:22;;8124:37;8114:71;;8165:18;;:::i;8953:422::-;9042:1;9085:5;9042:1;9099:270;9120:7;9110:8;9107:21;9099:270;;;9179:4;9175:1;9171:6;9167:17;9161:4;9158:27;9155:53;;;9188:18;;:::i;:::-;9238:7;9228:8;9224:22;9221:55;;;9258:16;;;;9221:55;9337:22;;;;9297:15;;;;9099:270;;;9103:3;8953:422;;;;;:::o;9380:806::-;9429:5;9459:8;9449:80;;-1:-1:-1;9500:1:1;9514:5;;9449:80;9548:4;9538:76;;-1:-1:-1;9585:1:1;9599:5;;9538:76;9630:4;9648:1;9643:59;;;;9716:1;9711:130;;;;9623:218;;9643:59;9673:1;9664:10;;9687:5;;;9711:130;9748:3;9738:8;9735:17;9732:43;;;9755:18;;:::i;:::-;-1:-1:-1;;9811:1:1;9797:16;;9826:5;;9623:218;;9925:2;9915:8;9912:16;9906:3;9900:4;9897:13;9893:36;9887:2;9877:8;9874:16;9869:2;9863:4;9860:12;9856:35;9853:77;9850:159;;;-1:-1:-1;9962:19:1;;;9994:5;;9850:159;10041:34;10066:8;10060:4;10041:34;:::i;:::-;10111:6;10107:1;10103:6;10099:19;10090:7;10087:32;10084:58;;;10122:18;;:::i;:::-;10160:20;;9380:806;-1:-1:-1;;;9380:806:1:o;10191:140::-;10249:5;10278:47;10319:4;10309:8;10305:19;10299:4;10278:47;:::i;10336:128::-;10403:9;;;10424:11;;;10421:37;;;10438:18;;:::i;10872:351::-;11074:2;11056:21;;;11113:2;11093:18;;;11086:30;11152:29;11147:2;11132:18;;11125:57;11214:2;11199:18;;10872:351::o;11791:127::-;11852:10;11847:3;11843:20;11840:1;11833:31;11883:4;11880:1;11873:15;11907:4;11904:1;11897:15;11923:135;11962:3;11983:17;;;11980:43;;12003:18;;:::i;:::-;-1:-1:-1;12050:1:1;12039:13;;11923:135::o;12443:136::-;12482:3;12510:5;12500:39;;12519:18;;:::i;:::-;-1:-1:-1;;;12555:18:1;;12443:136::o;17056:251::-;17126:6;17179:2;17167:9;17158:7;17154:23;17150:32;17147:52;;;17195:1;17192;17185:12;17147:52;17227:9;17221:16;17246:31;17271:5;17246:31;:::i;17312:980::-;17574:4;17622:3;17611:9;17607:19;17653:6;17642:9;17635:25;17679:2;17717:6;17712:2;17701:9;17697:18;17690:34;17760:3;17755:2;17744:9;17740:18;17733:31;17784:6;17819;17813:13;17850:6;17842;17835:22;17888:3;17877:9;17873:19;17866:26;;17927:2;17919:6;17915:15;17901:29;;17948:1;17958:195;17972:6;17969:1;17966:13;17958:195;;;18037:13;;-1:-1:-1;;;;;18033:39:1;18021:52;;18128:15;;;;18093:12;;;;18069:1;17987:9;17958:195;;;-1:-1:-1;;;;;;;18209:32:1;;;;18204:2;18189:18;;18182:60;-1:-1:-1;;;18273:3:1;18258:19;18251:35;18170:3;17312:980;-1:-1:-1;;;17312:980:1:o;18917:306::-;19005:6;19013;19021;19074:2;19062:9;19053:7;19049:23;19045:32;19042:52;;;19090:1;19087;19080:12;19042:52;19119:9;19113:16;19103:26;;19169:2;19158:9;19154:18;19148:25;19138:35;;19213:2;19202:9;19198:18;19192:25;19182:35;;18917:306;;;;;:::o

Swarm Source

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