ETH Price: $2,414.74 (-0.08%)
Gas: 1.37 Gwei

Token

BOJACK (BOJACK)
 

Overview

Max Total Supply

1,234,567,890 BOJACK

Holders

77

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TOKEN

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-20
*/

// SPDX-License-Identifier: MIT

pragma solidity >= 0.8.0;

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

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _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);
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}
interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}
interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

 contract TOKEN is IERC20, Ownable {

  uint256 private constant _totalTokens = 1_234_567_890 * 10**DECIMALS; 
  string private constant NAME = "BOJACK";
  string private constant SYMBOL = "BOJACK";
  uint8 private constant DECIMALS = 18;

  struct feeProfile{ uint8 _liquidity; uint8 _marketing; uint8 _dev; uint8 _totalFee; }

  feeProfile public _buyProfile;
  feeProfile public _sellProfile;
        
  mapping (address => mapping (address => uint256)) private _allowances;
  mapping (address => uint256) private _balances; 
  mapping (address => bool) public _addressesExcludedFromFees; 

  bool public _isSwapEnabled; 
  bool public _isFeeEnabled; 
  bool public _isBuyingAllowed; //The contract will be activated once liquidity is added.

  uint256 public _tokenSwapThreshold = _totalTokens / 1000 * 1; //0.1%

  // UNISWAP INTERFACES (For swaps)
  IRouter02 internal V2Router;
  address private V2Pair;

  address public _marketingWallet;
  address public _devWallet;

  uint256 private blockPenalty;
  uint256 public tradingActiveBlock = 0; // 0 means trading is not active

  event _changeFees(uint256 _liq, uint256 _marketing, uint256 _dev, bool _isBuy);
  event _updateWallets(address _marketing, address _dev);
  event _setRouter(address _routerAddress);
  event _setThreshold(uint256 _threshold);
  event _clear(uint256 _tokenAmount);
  event _claimDust(uint256 _amount);
  event _launch(uint256 _start);
  event _swapAndLiquify(uint256 _amount);
    
  constructor () {
    _balances[_msgSender()] = totalSupply();
    _marketingWallet = address(0xa7d2a94fB19a0Fa4d07E63C623c89827e4d01f86);
    _devWallet = address(0xe8222921A07B931986045Fd880af4c3032A3A937);

    // Initialize V2 router 
    setSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    // Exclude contract from fees
    setExcludedFromFees(address(this), true);
    setExcludedFromFees(_msgSender(), true);
    setExcludedFromFees(_marketingWallet, true);
    setExcludedFromFees(_devWallet, true);

    // buy 
    setFeeProfile(0,0,0,true);

    // sell
    setFeeProfile(1,3,1,false);

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

  function Launch(uint256 _blockPenalty) external onlyOwner {
    require(!_isBuyingAllowed, "trading is already active");
  
    setSwapEnabled(true);
    setFeeEnabled(true);

    _isBuyingAllowed = true;
    tradingActiveBlock = block.number;
    blockPenalty = _blockPenalty;

    emit _launch(tradingActiveBlock);
  }

  function setWallets(address _marketing, address _dev) external onlyOwner() {
        _marketingWallet = _marketing;
        _devWallet = _dev;
        emit _updateWallets(_marketing, _dev);
    }

  function setFeeProfile(uint8 _liquidity, uint8 _marketing, uint8 _dev, bool _updateBuy) public onlyOwner() {
    uint8 _totalFee = _liquidity + _marketing + _dev;
    require(_totalFee <= 20, "tax to high");
        if(_updateBuy) { _buyProfile._liquidity = _liquidity;  _buyProfile._marketing = _marketing;  _buyProfile._dev = _dev; _buyProfile._totalFee = _totalFee; }
        else{ _sellProfile._liquidity = _liquidity; _sellProfile._marketing = _marketing; _sellProfile._dev = _dev; _sellProfile._totalFee = _totalFee;}
        emit _changeFees(_liquidity,_marketing,_dev,_updateBuy);
    }
    
  function transfer(address recipient, uint256 amount) public override returns (bool) {
    doTransfer(_msgSender(), recipient, amount);
    return true;
  }

  function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
    doTransfer(sender, recipient, amount);
    doApprove(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); // Will fail when there is not enough allowance
    return true;
  }
  
  function balanceOf(address account) public view override returns (uint256) {
    return _balances[account];
  }

  function approve(address spender, uint256 amount) public override returns (bool) {
    doApprove(_msgSender(), spender, amount);
    return true;
  }
  
  function doTransfer(address sender, address recipient, uint256 amount) internal virtual {
    require(sender != address(0), "zero address transfer is not allowed");
    require(recipient != address(0), "zero address transfer is not allowed");
    require(amount > 0, "amount must be greater than zero");

    if(!_isBuyingAllowed)  { require(_addressesExcludedFromFees[sender], "cant transfer"); }
    if(_isSwapEnabled){	executeSwapCheck(sender, recipient); }

    uint256 feeRate = calculateFeeRate(sender, recipient);
    uint256 feeAmount = amount * feeRate / 100;
    uint256 transferAmount = amount - feeAmount;

    updateBalances(sender, recipient, amount, feeAmount);

    emit Transfer(sender, recipient, transferAmount); 
  }
  
  function executeSwapCheck(address sender, address recipient) private {
    if (!isMarketTransfer(sender, recipient)) {
      return;
    }

    uint256 tokensAvailableForSwap = balanceOf(address(this));
    if (tokensAvailableForSwap >= _tokenSwapThreshold) {
      tokensAvailableForSwap = _tokenSwapThreshold;

      bool isSelling = isPancakeswapPair(recipient);
      if (isSelling) {
        executeSwap(tokensAvailableForSwap);
      }
    }
  }

  // if buildup becomes to large in contract
  function clearSwap(uint256 _tokenAmount) external onlyOwner(){
    executeSwap(_tokenAmount);
    emit _clear(_tokenAmount);
  }
  
  function executeSwap(uint256 amount) private {
    // Allow pancakeswap to spend the tokens of the address
    doApprove(address(this), address(V2Router), amount);
    uint256 total = _sellProfile._totalFee;

    if(total > 0 ){
      uint256 tokensReservedForLiquidity = amount * _sellProfile._liquidity / total;
      uint256 tokensReservedForDev = amount * _sellProfile._dev / total ;
      uint256 tokensReservedForMarketing = amount - tokensReservedForLiquidity - tokensReservedForDev;

      uint256 tokensToSwapForLiquidity = tokensReservedForLiquidity / 2;
      uint256 tokensToAddAsLiquidity = tokensToSwapForLiquidity;

      uint256 tokensToSwap = tokensToSwapForLiquidity + tokensReservedForMarketing + tokensReservedForDev;
      uint256 ethSwapped = swapTokensForBNB(tokensToSwap);
      
      uint256 bnbToBeAddedToLiquidity = ethSwapped * tokensToSwapForLiquidity / tokensToSwap;
      uint256 bnbToBeSentToDevelopment = ethSwapped * tokensReservedForDev / tokensToSwap;
      uint256 bnbToBeSentToMarketing = ethSwapped - bnbToBeAddedToLiquidity- bnbToBeSentToDevelopment;

      payable(_marketingWallet).transfer(bnbToBeSentToMarketing);
      payable(_devWallet).transfer(bnbToBeSentToDevelopment);

      try V2Router.addLiquidityETH{value: bnbToBeAddedToLiquidity}(address(this), tokensToAddAsLiquidity, 0, 0, _devWallet, block.timestamp){} catch {}
      emit _swapAndLiquify(ethSwapped);
    }
  }

  function updateBalances(address sender, address recipient, uint256 sentAmount, uint256 feeAmount) private {
    // Calculate amount to be received by recipient
    uint256 receivedAmount = sentAmount - feeAmount;

    // Update balances
    _balances[sender] -= sentAmount;
    _balances[recipient] += receivedAmount;
    
    // Add fees to contract
    _balances[address(this)] += feeAmount;

    // hides bloat emits
    if(feeAmount > 0 ){
      emit Transfer(sender, address(this), feeAmount); 
    }
  
  }

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

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

  function calculateFeeRate(address sender, address recipient) private view returns(uint256) {
    bool applyFees = _isFeeEnabled && !_addressesExcludedFromFees[sender] && !_addressesExcludedFromFees[recipient];
    if (applyFees) {
      if (isPancakeswapPair(recipient)) {
        return _sellProfile._totalFee;
      }else{
            if(isPenaltyActive()){
                return 75;
              }else{
                return _buyProfile._totalFee;
              }
            }
    }
    return 0;
  }
  
  function swapTokensForBNB(uint256 tokenAmount) internal returns(uint256) {
    uint256 initialBalance = address(this).balance;
  
    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = V2Router.WETH();
    V2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
 
    return address(this).balance - initialBalance;
  }

  function isSwapTransfer(address sender, address recipient) private view returns(bool) {
    bool isContractSelling = sender == address(this) && isPancakeswapPair(recipient);
    return isContractSelling;
  }

  function isMarketTransfer(address sender, address recipient) internal virtual view returns(bool) {
    return !isSwapTransfer(sender, recipient);
  }

  function amountUntilSwap() external  view returns (uint256) {
    uint256 balance = balanceOf(address(this));
    if (balance > _tokenSwapThreshold) {
      return 0;
    }
    return _tokenSwapThreshold - balance;
  }

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

  function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
    doApprove(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
    return true;
  }

  function setSwapRouter(address routerAddress) public onlyOwner {
    require(routerAddress != address(0), "Cannot use the zero address as router address");
    V2Router = IRouter02(routerAddress);
    V2Pair = IFactoryV2(V2Router.factory()).createPair(address(this), V2Router.WETH());
    emit _setRouter(routerAddress);
  }

  function isPancakeswapPair(address addr) internal view returns(bool) {
    return V2Pair == addr;
  }

  function setTokenSwapThreshold(uint256 threshold) external  onlyOwner {
    require(threshold > 0, "Threshold must be greater than 0");
    _tokenSwapThreshold = threshold;
    emit _setThreshold(threshold);
  }

  // dust can build up by failure of adding liq 
  function clearDust() external  onlyOwner{
      payable(_devWallet).transfer(address(this).balance);
      emit _claimDust(address(this).balance);
  }

    function totalSupply() public override pure returns (uint256) { return _totalTokens; }
    function allowance(address user, address spender) public view override returns (uint256) { return _allowances[user][spender]; }
    function pairAddress() public view returns (address) { return V2Pair; }
    function setSwapEnabled(bool isEnabled) public onlyOwner { _isSwapEnabled = isEnabled; }
    function setFeeEnabled(bool isEnabled) public onlyOwner { _isFeeEnabled = isEnabled; }
    function setExcludedFromFees(address addr, bool value) public onlyOwner { _addressesExcludedFromFees[addr] = value; }
    function isPenaltyActive() public view returns (bool) { return tradingActiveBlock >= block.number - blockPenalty; } 
    function decimals() external pure override returns (uint8) { if (totalSupply() == 0) { revert(); } return DECIMALS; }
    function symbol() external pure override returns (string memory) { return SYMBOL; }
    function name() external pure override returns (string memory) { return NAME; }
    function getOwner() external view override returns (address) { return owner(); }

  receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"uint256","name":"_liq","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_dev","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_isBuy","type":"bool"}],"name":"_changeFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_claimDust","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"_clear","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_start","type":"uint256"}],"name":"_launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_routerAddress","type":"address"}],"name":"_setRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"_setThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_swapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_marketing","type":"address"},{"indexed":false,"internalType":"address","name":"_dev","type":"address"}],"name":"_updateWallets","type":"event"},{"inputs":[{"internalType":"uint256","name":"_blockPenalty","type":"uint256"}],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_addressesExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyProfile","outputs":[{"internalType":"uint8","name":"_liquidity","type":"uint8"},{"internalType":"uint8","name":"_marketing","type":"uint8"},{"internalType":"uint8","name":"_dev","type":"uint8"},{"internalType":"uint8","name":"_totalFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isBuyingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellProfile","outputs":[{"internalType":"uint8","name":"_liquidity","type":"uint8"},{"internalType":"uint8","name":"_marketing","type":"uint8"},{"internalType":"uint8","name":"_dev","type":"uint8"},{"internalType":"uint8","name":"_totalFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountUntilSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"clearSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isPenaltyActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnabled","type":"bool"}],"name":"setFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidity","type":"uint8"},{"internalType":"uint8","name":"_marketing","type":"uint8"},{"internalType":"uint8","name":"_dev","type":"uint8"},{"internalType":"bool","name":"_updateBuy","type":"bool"}],"name":"setFeeProfile","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTokenSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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"},{"stateMutability":"payable","type":"receive"}]

608060405260016103e86012600a62000019919062000cf0565b63499602d26200002a919062000e2d565b62000036919062000c5d565b62000042919062000e2d565b6007556000600d553480156200005757600080fd5b50620000786200006c6200030360201b60201c565b6200030b60201b60201c565b62000088620003cf60201b60201c565b600460006200009c6200030360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073a7d2a94fb19a0fa4d07e63c623c89827e4d01f86600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e8222921a07b931986045fd880af4c3032a3a937600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001a9737a250d5630b4cf539739df2c5dacb4c659f2488d620003f760201b60201c565b620001bc3060016200071060201b60201c565b620001de620001d06200030360201b60201c565b60016200071060201b60201c565b62000213600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200071060201b60201c565b62000248600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200071060201b60201c565b6200025f600080600060016200077b60201b60201c565b6200027760016003600160006200077b60201b60201c565b620002876200030360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002e6620003cf60201b60201c565b604051620002f5919062000ba4565b60405180910390a362001024565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012600a620003e1919062000cf0565b63499602d2620003f2919062000e2d565b905090565b620004076200093860201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200047a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004719062000b3e565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052457600080fd5b505afa15801562000539573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055f919062000a09565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e457600080fd5b505afa158015620005f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061f919062000a09565b6040518363ffffffff1660e01b81526004016200063e92919062000b11565b602060405180830381600087803b1580156200065957600080fd5b505af11580156200066e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000694919062000a09565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1431ffd6b1c0a705bfdf15dbd9a5954739e5f4f093dd08fef588fd4151642618160405162000705919062000af4565b60405180910390a150565b620007206200093860201b60201c565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6200078b6200093860201b60201c565b60008284866200079c919062000c1f565b620007a8919062000c1f565b905060148160ff161115620007f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007eb9062000b60565b60405180910390fd5b8115620008795784600160000160006101000a81548160ff021916908360ff16021790555083600160000160016101000a81548160ff021916908360ff16021790555082600160000160026101000a81548160ff021916908360ff16021790555080600160000160036101000a81548160ff021916908360ff160217905550620008f2565b84600260000160006101000a81548160ff021916908360ff16021790555083600260000160016101000a81548160ff021916908360ff16021790555082600260000160026101000a81548160ff021916908360ff16021790555080600260000160036101000a81548160ff021916908360ff1602179055505b7f44bc7ab7a81ee033147d69565c5c1c74915cd840ece00a5eb172ce9c7b7814c08585858560405162000929949392919062000bc1565b60405180910390a15050505050565b620009486200030360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200096e620009c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009be9062000b82565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008151905062000a03816200100a565b92915050565b60006020828403121562000a225762000a2162000f57565b5b600062000a3284828501620009f2565b91505092915050565b62000a468162000e8e565b82525050565b62000a578162000ea2565b82525050565b600062000a6c602d8362000c0e565b915062000a798262000f69565b604082019050919050565b600062000a93600b8362000c0e565b915062000aa08262000fb8565b602082019050919050565b600062000aba60208362000c0e565b915062000ac78262000fe1565b602082019050919050565b62000add8162000ece565b82525050565b62000aee8162000ee5565b82525050565b600060208201905062000b0b600083018462000a3b565b92915050565b600060408201905062000b28600083018562000a3b565b62000b37602083018462000a3b565b9392505050565b6000602082019050818103600083015262000b598162000a5d565b9050919050565b6000602082019050818103600083015262000b7b8162000a84565b9050919050565b6000602082019050818103600083015262000b9d8162000aab565b9050919050565b600060208201905062000bbb600083018462000ad2565b92915050565b600060808201905062000bd8600083018762000ae3565b62000be7602083018662000ae3565b62000bf6604083018562000ae3565b62000c05606083018462000a4c565b95945050505050565b600082825260208201905092915050565b600062000c2c8262000ed8565b915062000c398362000ed8565b92508260ff0382111562000c525762000c5162000ef9565b5b828201905092915050565b600062000c6a8262000ece565b915062000c778362000ece565b92508262000c8a5762000c8962000f28565b5b828204905092915050565b6000808291508390505b600185111562000ce75780860481111562000cbf5762000cbe62000ef9565b5b600185161562000ccf5780820291505b808102905062000cdf8562000f5c565b945062000c9f565b94509492505050565b600062000cfd8262000ece565b915062000d0a8362000ed8565b925062000d397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d41565b905092915050565b60008262000d53576001905062000e26565b8162000d63576000905062000e26565b816001811462000d7c576002811462000d875762000dbd565b600191505062000e26565b60ff84111562000d9c5762000d9b62000ef9565b5b8360020a91508482111562000db65762000db562000ef9565b5b5062000e26565b5060208310610133831016604e8410600b841016171562000df75782820a90508381111562000df15762000df062000ef9565b5b62000e26565b62000e06848484600162000c95565b9250905081840481111562000e205762000e1f62000ef9565b5b81810290505b9392505050565b600062000e3a8262000ece565b915062000e478362000ece565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e835762000e8262000ef9565b5b828202905092915050565b600062000e9b8262000eae565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062000ef28262000ed8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b7f43616e6e6f742075736520746865207a65726f2061646472657373206173207260008201527f6f75746572206164647265737300000000000000000000000000000000000000602082015250565b7f74617820746f2068696768000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620010158162000e8e565b81146200102157600080fd5b50565b61378280620010346000396000f3fe6080604052600436106102295760003560e01c8063893d20e811610123578063d3f6a157116100ab578063ee40166e1161006f578063ee40166e1461080c578063f097735714610837578063f16f07ae14610860578063f2fde38b1461088b578063fb96a95f146108b457610230565b8063d3f6a15714610724578063d3ff209d1461074d578063dd62ed3e14610778578063e01af92c146107b5578063e6f2306b146107de57610230565b8063962dfc75116100f2578063962dfc751461062b578063a457c2d714610656578063a72e5e1514610693578063a8b08982146106bc578063a9059cbb146106e757610230565b8063893d20e8146105815780638da5cb5b146105ac57806391f24c09146105d757806395d89b411461060057610230565b80633e0bf716116101b15780635a264ca7116101755780635a264ca7146104c057806370a08231146104eb578063715018a6146105285780637d584aa11461053f5780637f7fcecc1461055657610230565b80633e0bf716146103ec578063412736571461041a57806358b69bc314610443578063590ffdce1461046e57806359ecf39e1461049757610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c5780633094375d14610359578063313ce5671461038457806339509351146103af57610230565b806306fdde0314610235578063095ea7b3146102605780630db474fa1461029d57806311a63e17146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108f1565b6040516102579190612d36565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612889565b61092e565b6040516102949190612d1b565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906128c9565b61094c565b005b3480156102d257600080fd5b506102db610971565b6040516102e89190612c76565b60405180910390f35b3480156102fd57600080fd5b50610306610997565b6040516103139190612eb8565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906127f6565b6109bb565b6040516103509190612d1b565b60405180910390f35b34801561036557600080fd5b5061036e610a73565b60405161037b9190612eb8565b60405180910390f35b34801561039057600080fd5b50610399610aaa565b6040516103a69190612f2d565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612889565b610ac7565b6040516103e39190612d1b565b60405180910390f35b3480156103f857600080fd5b50610401610b73565b6040516104119493929190612f8d565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061275c565b610bc5565b005b34801561044f57600080fd5b50610458610ec3565b6040516104659190612d1b565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190612849565b610edd565b005b3480156104a357600080fd5b506104be60048036038101906104b991906128f6565b610f40565b005b3480156104cc57600080fd5b506104d5610fcc565b6040516104e29190612d1b565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d919061275c565b610fdf565b60405161051f9190612eb8565b60405180910390f35b34801561053457600080fd5b5061053d611028565b005b34801561054b57600080fd5b5061055461103c565b005b34801561056257600080fd5b5061056b6110e6565b6040516105789190612d1b565b60405180910390f35b34801561058d57600080fd5b506105966110f9565b6040516105a39190612c76565b60405180910390f35b3480156105b857600080fd5b506105c1611108565b6040516105ce9190612c76565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190612976565b611131565b005b34801561060c57600080fd5b506106156112db565b6040516106229190612d36565b60405180910390f35b34801561063757600080fd5b50610640611318565b60405161064d9190612c76565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190612889565b61133e565b60405161068a9190612d1b565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b591906128f6565b6113ea565b005b3480156106c857600080fd5b506106d16114bb565b6040516106de9190612c76565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190612889565b6114e5565b60405161071b9190612d1b565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906127b6565b611503565b005b34801561075957600080fd5b506107626115ca565b60405161076f9190612d1b565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a91906127b6565b6115dd565b6040516107ac9190612eb8565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d791906128c9565b611664565b005b3480156107ea57600080fd5b506107f3611689565b6040516108039493929190612f8d565b60405180910390f35b34801561081857600080fd5b506108216116db565b60405161082e9190612eb8565b60405180910390f35b34801561084357600080fd5b5061085e600480360381019061085991906128f6565b6116e1565b005b34801561086c57600080fd5b5061087561172c565b6040516108829190612eb8565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad919061275c565b611732565b005b3480156108c057600080fd5b506108db60048036038101906108d6919061275c565b6117b6565b6040516108e89190612d1b565b60405180910390f35b60606040518060400160405280600681526020017f424f4a41434b0000000000000000000000000000000000000000000000000000815250905090565b600061094261093b6117d6565b84846117de565b6001905092915050565b6109546119a9565b80600660016101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6109a79190613138565b63499602d26109b69190613256565b905090565b60006109c8848484611a27565b610a68846109d46117d6565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a1e6117d6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a6391906132b0565b6117de565b600190509392505050565b600080610a7f30610fdf565b9050600754811115610a95576000915050610aa7565b80600754610aa391906132b0565b9150505b90565b600080610ab5610997565b1415610ac057600080fd5b6012905090565b6000610b69610ad46117d6565b848460036000610ae26117d6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b649190613027565b6117de565b6001905092915050565b60018060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16905084565b610bcd6119a9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612d98565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce657600080fd5b505afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190612789565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda9190612789565b6040518363ffffffff1660e01b8152600401610df7929190612c91565b602060405180830381600087803b158015610e1157600080fd5b505af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e499190612789565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1431ffd6b1c0a705bfdf15dbd9a5954739e5f4f093dd08fef588fd41516426181604051610eb89190612c76565b60405180910390a150565b6000600c5443610ed391906132b0565b600d541015905090565b610ee56119a9565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f486119a9565b60008111610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290612e98565b60405180910390fd5b806007819055507f3d5472e45a39af360c106b99aa48f7356cd3b609ea581b5deb38a4b1270e898581604051610fc19190612eb8565b60405180910390a150565b600660029054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110306119a9565b61103a6000611cbe565b565b6110446119a9565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156110ac573d6000803e3d6000fd5b507fd1c23667321cc2db9d1de3db7f4dcf0eb5ade4f87e163713d3667eec1e92facb476040516110dc9190612eb8565b60405180910390a1565b600660009054906101000a900460ff1681565b6000611103611108565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111396119a9565b6000828486611148919061307d565b611152919061307d565b905060148160ff16111561119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290612dd8565b60405180910390fd5b811561121e5784600160000160006101000a81548160ff021916908360ff16021790555083600160000160016101000a81548160ff021916908360ff16021790555082600160000160026101000a81548160ff021916908360ff16021790555080600160000160036101000a81548160ff021916908360ff160217905550611297565b84600260000160006101000a81548160ff021916908360ff16021790555083600260000160016101000a81548160ff021916908360ff16021790555082600260000160026101000a81548160ff021916908360ff16021790555080600260000160036101000a81548160ff021916908360ff1602179055505b7f44bc7ab7a81ee033147d69565c5c1c74915cd840ece00a5eb172ce9c7b7814c0858585856040516112cc9493929190612f48565b60405180910390a15050505050565b60606040518060400160405280600681526020017f424f4a41434b0000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113e061134b6117d6565b8484600360006113596117d6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113db91906132b0565b6117de565b6001905092915050565b6113f26119a9565b600660029054906101000a900460ff1615611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990612df8565b60405180910390fd5b61144c6001611664565b611456600161094c565b6001600660026101000a81548160ff02191690831515021790555043600d8190555080600c819055507f6600f6005863f92891b8c04d901a1f5d14860257428eba2058e9f3f9175b5633600d546040516114b09190612eb8565b60405180910390a150565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006114f96114f26117d6565b8484611a27565b6001905092915050565b61150b6119a9565b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe67d5d4d7e74d0ccbdf30dbd83729da0b6a8405bfb83b5f35038638e19a4ea1382826040516115be929190612c91565b60405180910390a15050565b600660019054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61166c6119a9565b80600660006101000a81548160ff02191690831515021790555050565b60028060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16905084565b600d5481565b6116e96119a9565b6116f281611d82565b7f8d9f39d10957a4e556f944f249fcdc7cc1263cc4e31368fe3056895f85d4599d816040516117219190612eb8565b60405180910390a150565b60075481565b61173a6119a9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a190612d78565b60405180910390fd5b6117b381611cbe565b50565b60056020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184590612db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b590612d58565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161199c9190612eb8565b60405180910390a3505050565b6119b16117d6565b73ffffffffffffffffffffffffffffffffffffffff166119cf611108565b73ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90612e58565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e90612e38565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90612e38565b60405180910390fd5b60008111611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190612e78565b60405180910390fd5b600660029054906101000a900460ff16611beb57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190612e18565b60405180910390fd5b5b600660009054906101000a900460ff1615611c0b57611c0a83836120d5565b5b6000611c178484612128565b9050600060648284611c299190613256565b611c3391906130b4565b905060008184611c4391906132b0565b9050611c518686868561225c565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cae9190612eb8565b60405180910390a3505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611daf30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836117de565b6000600260000160039054906101000a900460ff1660ff16905060008111156120d157600081600260000160009054906101000a900460ff1660ff1684611df69190613256565b611e0091906130b4565b9050600082600260000160029054906101000a900460ff1660ff1685611e269190613256565b611e3091906130b4565b90506000818386611e4191906132b0565b611e4b91906132b0565b90506000600284611e5c91906130b4565b905060008190506000848484611e729190613027565b611e7c9190613027565b90506000611e89826123e4565b90506000828583611e9a9190613256565b611ea491906130b4565b90506000838884611eb59190613256565b611ebf91906130b4565b90506000818385611ed091906132b0565b611eda91906132b0565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f44573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611fad573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843089600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161203796959493929190612cba565b6060604051808303818588803b15801561205057600080fd5b505af19350505050801561208257506040513d601f19601f8201168201806040525081019061207f9190612923565b60015b61208b5761208f565b5050505b7f7bf54cb9a865e8dabf744f65dfac5fe865060b1d1b8172c512d88fe90815cf2a846040516120be9190612eb8565b60405180910390a1505050505050505050505b5050565b6120df8282612620565b6120e857612124565b60006120f330610fdf565b90506007548110612122576007549050600061210e83612635565b905080156121205761211f82611d82565b5b505b505b5050565b600080600660019054906101000a900460ff1680156121915750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508015612250576121f883612635565b1561221b57600260000160039054906101000a900460ff1660ff16915050612256565b612223610ec3565b1561223257604b915050612256565b600160000160039054906101000a900460ff1660ff16915050612256565b60009150505b92915050565b6000818361226a91906132b0565b905082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122bb91906132b0565b9250508190555080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123119190613027565b9250508190555081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123679190613027565b9250508190555060008211156123dd573073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123d49190612eb8565b60405180910390a35b5050505050565b6000804790506000600267ffffffffffffffff8111156124075761240661341d565b5b6040519080825280602002602001820160405280156124355781602001602082028036833780820191505090505b509050308160008151811061244d5761244c6133ee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124ef57600080fd5b505afa158015612503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125279190612789565b8160018151811061253b5761253a6133ee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016125d9959493929190612ed3565b600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b50505050814761261791906132b0565b92505050919050565b600061262c838361268f565b15905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000803073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126d257506126d183612635565b5b90508091505092915050565b6000813590506126ed816136f0565b92915050565b600081519050612702816136f0565b92915050565b60008135905061271781613707565b92915050565b60008135905061272c8161371e565b92915050565b6000815190506127418161371e565b92915050565b60008135905061275681613735565b92915050565b6000602082840312156127725761277161344c565b5b6000612780848285016126de565b91505092915050565b60006020828403121561279f5761279e61344c565b5b60006127ad848285016126f3565b91505092915050565b600080604083850312156127cd576127cc61344c565b5b60006127db858286016126de565b92505060206127ec858286016126de565b9150509250929050565b60008060006060848603121561280f5761280e61344c565b5b600061281d868287016126de565b935050602061282e868287016126de565b925050604061283f8682870161271d565b9150509250925092565b600080604083850312156128605761285f61344c565b5b600061286e858286016126de565b925050602061287f85828601612708565b9150509250929050565b600080604083850312156128a05761289f61344c565b5b60006128ae858286016126de565b92505060206128bf8582860161271d565b9150509250929050565b6000602082840312156128df576128de61344c565b5b60006128ed84828501612708565b91505092915050565b60006020828403121561290c5761290b61344c565b5b600061291a8482850161271d565b91505092915050565b60008060006060848603121561293c5761293b61344c565b5b600061294a86828701612732565b935050602061295b86828701612732565b925050604061296c86828701612732565b9150509250925092565b600080600080608085870312156129905761298f61344c565b5b600061299e87828801612747565b94505060206129af87828801612747565b93505060406129c087828801612747565b92505060606129d187828801612708565b91505092959194509250565b60006129e983836129f5565b60208301905092915050565b6129fe816132e4565b82525050565b612a0d816132e4565b82525050565b6000612a1e82612fe2565b612a288185613005565b9350612a3383612fd2565b8060005b83811015612a64578151612a4b88826129dd565b9750612a5683612ff8565b925050600181019050612a37565b5085935050505092915050565b612a7a816132f6565b82525050565b612a8981613339565b82525050565b6000612a9a82612fed565b612aa48185613016565b9350612ab481856020860161335d565b612abd81613451565b840191505092915050565b6000612ad5602283613016565b9150612ae08261346f565b604082019050919050565b6000612af8602683613016565b9150612b03826134be565b604082019050919050565b6000612b1b602d83613016565b9150612b268261350d565b604082019050919050565b6000612b3e602483613016565b9150612b498261355c565b604082019050919050565b6000612b61600b83613016565b9150612b6c826135ab565b602082019050919050565b6000612b84601983613016565b9150612b8f826135d4565b602082019050919050565b6000612ba7600d83613016565b9150612bb2826135fd565b602082019050919050565b6000612bca602483613016565b9150612bd582613626565b604082019050919050565b6000612bed602083613016565b9150612bf882613675565b602082019050919050565b6000612c10602083613016565b9150612c1b8261369e565b602082019050919050565b6000612c33602083613016565b9150612c3e826136c7565b602082019050919050565b612c5281613322565b82525050565b612c618161334b565b82525050565b612c708161332c565b82525050565b6000602082019050612c8b6000830184612a04565b92915050565b6000604082019050612ca66000830185612a04565b612cb36020830184612a04565b9392505050565b600060c082019050612ccf6000830189612a04565b612cdc6020830188612c49565b612ce96040830187612a80565b612cf66060830186612a80565b612d036080830185612a04565b612d1060a0830184612c49565b979650505050505050565b6000602082019050612d306000830184612a71565b92915050565b60006020820190508181036000830152612d508184612a8f565b905092915050565b60006020820190508181036000830152612d7181612ac8565b9050919050565b60006020820190508181036000830152612d9181612aeb565b9050919050565b60006020820190508181036000830152612db181612b0e565b9050919050565b60006020820190508181036000830152612dd181612b31565b9050919050565b60006020820190508181036000830152612df181612b54565b9050919050565b60006020820190508181036000830152612e1181612b77565b9050919050565b60006020820190508181036000830152612e3181612b9a565b9050919050565b60006020820190508181036000830152612e5181612bbd565b9050919050565b60006020820190508181036000830152612e7181612be0565b9050919050565b60006020820190508181036000830152612e9181612c03565b9050919050565b60006020820190508181036000830152612eb181612c26565b9050919050565b6000602082019050612ecd6000830184612c49565b92915050565b600060a082019050612ee86000830188612c49565b612ef56020830187612a80565b8181036040830152612f078186612a13565b9050612f166060830185612a04565b612f236080830184612c49565b9695505050505050565b6000602082019050612f426000830184612c67565b92915050565b6000608082019050612f5d6000830187612c58565b612f6a6020830186612c58565b612f776040830185612c58565b612f846060830184612a71565b95945050505050565b6000608082019050612fa26000830187612c67565b612faf6020830186612c67565b612fbc6040830185612c67565b612fc96060830184612c67565b95945050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061303282613322565b915061303d83613322565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561307257613071613390565b5b828201905092915050565b60006130888261332c565b91506130938361332c565b92508260ff038211156130a9576130a8613390565b5b828201905092915050565b60006130bf82613322565b91506130ca83613322565b9250826130da576130d96133bf565b5b828204905092915050565b6000808291508390505b600185111561312f5780860481111561310b5761310a613390565b5b600185161561311a5780820291505b808102905061312885613462565b94506130ef565b94509492505050565b600061314382613322565b915061314e8361332c565b925061317b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613183565b905092915050565b600082613193576001905061324f565b816131a1576000905061324f565b81600181146131b757600281146131c1576131f0565b600191505061324f565b60ff8411156131d3576131d2613390565b5b8360020a9150848211156131ea576131e9613390565b5b5061324f565b5060208310610133831016604e8410600b84101617156132255782820a9050838111156132205761321f613390565b5b61324f565b61323284848460016130e5565b9250905081840481111561324957613248613390565b5b81810290505b9392505050565b600061326182613322565b915061326c83613322565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132a5576132a4613390565b5b828202905092915050565b60006132bb82613322565b91506132c683613322565b9250828210156132d9576132d8613390565b5b828203905092915050565b60006132ef82613302565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061334482613322565b9050919050565b60006133568261332c565b9050919050565b60005b8381101561337b578082015181840152602081019050613360565b8381111561338a576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f43616e6e6f7420617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f742075736520746865207a65726f2061646472657373206173207260008201527f6f75746572206164647265737300000000000000000000000000000000000000602082015250565b7f43616e6e6f7420617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74617820746f2068696768000000000000000000000000000000000000000000600082015250565b7f74726164696e6720697320616c72656164792061637469766500000000000000600082015250565b7f63616e74207472616e7366657200000000000000000000000000000000000000600082015250565b7f7a65726f2061646472657373207472616e73666572206973206e6f7420616c6c60008201527f6f77656400000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f616d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b7f5468726573686f6c64206d7573742062652067726561746572207468616e2030600082015250565b6136f9816132e4565b811461370457600080fd5b50565b613710816132f6565b811461371b57600080fd5b50565b61372781613322565b811461373257600080fd5b50565b61373e8161332c565b811461374957600080fd5b5056fea264697066735822122057fd551eb312e02d5d1de4d7a3015503209ac03453149ad5ea4b3ce3f03acbae64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102295760003560e01c8063893d20e811610123578063d3f6a157116100ab578063ee40166e1161006f578063ee40166e1461080c578063f097735714610837578063f16f07ae14610860578063f2fde38b1461088b578063fb96a95f146108b457610230565b8063d3f6a15714610724578063d3ff209d1461074d578063dd62ed3e14610778578063e01af92c146107b5578063e6f2306b146107de57610230565b8063962dfc75116100f2578063962dfc751461062b578063a457c2d714610656578063a72e5e1514610693578063a8b08982146106bc578063a9059cbb146106e757610230565b8063893d20e8146105815780638da5cb5b146105ac57806391f24c09146105d757806395d89b411461060057610230565b80633e0bf716116101b15780635a264ca7116101755780635a264ca7146104c057806370a08231146104eb578063715018a6146105285780637d584aa11461053f5780637f7fcecc1461055657610230565b80633e0bf716146103ec578063412736571461041a57806358b69bc314610443578063590ffdce1461046e57806359ecf39e1461049757610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c5780633094375d14610359578063313ce5671461038457806339509351146103af57610230565b806306fdde0314610235578063095ea7b3146102605780630db474fa1461029d57806311a63e17146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108f1565b6040516102579190612d36565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612889565b61092e565b6040516102949190612d1b565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906128c9565b61094c565b005b3480156102d257600080fd5b506102db610971565b6040516102e89190612c76565b60405180910390f35b3480156102fd57600080fd5b50610306610997565b6040516103139190612eb8565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906127f6565b6109bb565b6040516103509190612d1b565b60405180910390f35b34801561036557600080fd5b5061036e610a73565b60405161037b9190612eb8565b60405180910390f35b34801561039057600080fd5b50610399610aaa565b6040516103a69190612f2d565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612889565b610ac7565b6040516103e39190612d1b565b60405180910390f35b3480156103f857600080fd5b50610401610b73565b6040516104119493929190612f8d565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061275c565b610bc5565b005b34801561044f57600080fd5b50610458610ec3565b6040516104659190612d1b565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190612849565b610edd565b005b3480156104a357600080fd5b506104be60048036038101906104b991906128f6565b610f40565b005b3480156104cc57600080fd5b506104d5610fcc565b6040516104e29190612d1b565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d919061275c565b610fdf565b60405161051f9190612eb8565b60405180910390f35b34801561053457600080fd5b5061053d611028565b005b34801561054b57600080fd5b5061055461103c565b005b34801561056257600080fd5b5061056b6110e6565b6040516105789190612d1b565b60405180910390f35b34801561058d57600080fd5b506105966110f9565b6040516105a39190612c76565b60405180910390f35b3480156105b857600080fd5b506105c1611108565b6040516105ce9190612c76565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190612976565b611131565b005b34801561060c57600080fd5b506106156112db565b6040516106229190612d36565b60405180910390f35b34801561063757600080fd5b50610640611318565b60405161064d9190612c76565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190612889565b61133e565b60405161068a9190612d1b565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b591906128f6565b6113ea565b005b3480156106c857600080fd5b506106d16114bb565b6040516106de9190612c76565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190612889565b6114e5565b60405161071b9190612d1b565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906127b6565b611503565b005b34801561075957600080fd5b506107626115ca565b60405161076f9190612d1b565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a91906127b6565b6115dd565b6040516107ac9190612eb8565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d791906128c9565b611664565b005b3480156107ea57600080fd5b506107f3611689565b6040516108039493929190612f8d565b60405180910390f35b34801561081857600080fd5b506108216116db565b60405161082e9190612eb8565b60405180910390f35b34801561084357600080fd5b5061085e600480360381019061085991906128f6565b6116e1565b005b34801561086c57600080fd5b5061087561172c565b6040516108829190612eb8565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad919061275c565b611732565b005b3480156108c057600080fd5b506108db60048036038101906108d6919061275c565b6117b6565b6040516108e89190612d1b565b60405180910390f35b60606040518060400160405280600681526020017f424f4a41434b0000000000000000000000000000000000000000000000000000815250905090565b600061094261093b6117d6565b84846117de565b6001905092915050565b6109546119a9565b80600660016101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6109a79190613138565b63499602d26109b69190613256565b905090565b60006109c8848484611a27565b610a68846109d46117d6565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a1e6117d6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a6391906132b0565b6117de565b600190509392505050565b600080610a7f30610fdf565b9050600754811115610a95576000915050610aa7565b80600754610aa391906132b0565b9150505b90565b600080610ab5610997565b1415610ac057600080fd5b6012905090565b6000610b69610ad46117d6565b848460036000610ae26117d6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b649190613027565b6117de565b6001905092915050565b60018060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16905084565b610bcd6119a9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612d98565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce657600080fd5b505afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190612789565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda9190612789565b6040518363ffffffff1660e01b8152600401610df7929190612c91565b602060405180830381600087803b158015610e1157600080fd5b505af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e499190612789565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1431ffd6b1c0a705bfdf15dbd9a5954739e5f4f093dd08fef588fd41516426181604051610eb89190612c76565b60405180910390a150565b6000600c5443610ed391906132b0565b600d541015905090565b610ee56119a9565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f486119a9565b60008111610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290612e98565b60405180910390fd5b806007819055507f3d5472e45a39af360c106b99aa48f7356cd3b609ea581b5deb38a4b1270e898581604051610fc19190612eb8565b60405180910390a150565b600660029054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110306119a9565b61103a6000611cbe565b565b6110446119a9565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156110ac573d6000803e3d6000fd5b507fd1c23667321cc2db9d1de3db7f4dcf0eb5ade4f87e163713d3667eec1e92facb476040516110dc9190612eb8565b60405180910390a1565b600660009054906101000a900460ff1681565b6000611103611108565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111396119a9565b6000828486611148919061307d565b611152919061307d565b905060148160ff16111561119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290612dd8565b60405180910390fd5b811561121e5784600160000160006101000a81548160ff021916908360ff16021790555083600160000160016101000a81548160ff021916908360ff16021790555082600160000160026101000a81548160ff021916908360ff16021790555080600160000160036101000a81548160ff021916908360ff160217905550611297565b84600260000160006101000a81548160ff021916908360ff16021790555083600260000160016101000a81548160ff021916908360ff16021790555082600260000160026101000a81548160ff021916908360ff16021790555080600260000160036101000a81548160ff021916908360ff1602179055505b7f44bc7ab7a81ee033147d69565c5c1c74915cd840ece00a5eb172ce9c7b7814c0858585856040516112cc9493929190612f48565b60405180910390a15050505050565b60606040518060400160405280600681526020017f424f4a41434b0000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113e061134b6117d6565b8484600360006113596117d6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113db91906132b0565b6117de565b6001905092915050565b6113f26119a9565b600660029054906101000a900460ff1615611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990612df8565b60405180910390fd5b61144c6001611664565b611456600161094c565b6001600660026101000a81548160ff02191690831515021790555043600d8190555080600c819055507f6600f6005863f92891b8c04d901a1f5d14860257428eba2058e9f3f9175b5633600d546040516114b09190612eb8565b60405180910390a150565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006114f96114f26117d6565b8484611a27565b6001905092915050565b61150b6119a9565b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe67d5d4d7e74d0ccbdf30dbd83729da0b6a8405bfb83b5f35038638e19a4ea1382826040516115be929190612c91565b60405180910390a15050565b600660019054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61166c6119a9565b80600660006101000a81548160ff02191690831515021790555050565b60028060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16905084565b600d5481565b6116e96119a9565b6116f281611d82565b7f8d9f39d10957a4e556f944f249fcdc7cc1263cc4e31368fe3056895f85d4599d816040516117219190612eb8565b60405180910390a150565b60075481565b61173a6119a9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a190612d78565b60405180910390fd5b6117b381611cbe565b50565b60056020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184590612db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b590612d58565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161199c9190612eb8565b60405180910390a3505050565b6119b16117d6565b73ffffffffffffffffffffffffffffffffffffffff166119cf611108565b73ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90612e58565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e90612e38565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90612e38565b60405180910390fd5b60008111611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190612e78565b60405180910390fd5b600660029054906101000a900460ff16611beb57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190612e18565b60405180910390fd5b5b600660009054906101000a900460ff1615611c0b57611c0a83836120d5565b5b6000611c178484612128565b9050600060648284611c299190613256565b611c3391906130b4565b905060008184611c4391906132b0565b9050611c518686868561225c565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cae9190612eb8565b60405180910390a3505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611daf30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836117de565b6000600260000160039054906101000a900460ff1660ff16905060008111156120d157600081600260000160009054906101000a900460ff1660ff1684611df69190613256565b611e0091906130b4565b9050600082600260000160029054906101000a900460ff1660ff1685611e269190613256565b611e3091906130b4565b90506000818386611e4191906132b0565b611e4b91906132b0565b90506000600284611e5c91906130b4565b905060008190506000848484611e729190613027565b611e7c9190613027565b90506000611e89826123e4565b90506000828583611e9a9190613256565b611ea491906130b4565b90506000838884611eb59190613256565b611ebf91906130b4565b90506000818385611ed091906132b0565b611eda91906132b0565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f44573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611fad573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843089600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161203796959493929190612cba565b6060604051808303818588803b15801561205057600080fd5b505af19350505050801561208257506040513d601f19601f8201168201806040525081019061207f9190612923565b60015b61208b5761208f565b5050505b7f7bf54cb9a865e8dabf744f65dfac5fe865060b1d1b8172c512d88fe90815cf2a846040516120be9190612eb8565b60405180910390a1505050505050505050505b5050565b6120df8282612620565b6120e857612124565b60006120f330610fdf565b90506007548110612122576007549050600061210e83612635565b905080156121205761211f82611d82565b5b505b505b5050565b600080600660019054906101000a900460ff1680156121915750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508015612250576121f883612635565b1561221b57600260000160039054906101000a900460ff1660ff16915050612256565b612223610ec3565b1561223257604b915050612256565b600160000160039054906101000a900460ff1660ff16915050612256565b60009150505b92915050565b6000818361226a91906132b0565b905082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122bb91906132b0565b9250508190555080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123119190613027565b9250508190555081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123679190613027565b9250508190555060008211156123dd573073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123d49190612eb8565b60405180910390a35b5050505050565b6000804790506000600267ffffffffffffffff8111156124075761240661341d565b5b6040519080825280602002602001820160405280156124355781602001602082028036833780820191505090505b509050308160008151811061244d5761244c6133ee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124ef57600080fd5b505afa158015612503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125279190612789565b8160018151811061253b5761253a6133ee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016125d9959493929190612ed3565b600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b50505050814761261791906132b0565b92505050919050565b600061262c838361268f565b15905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000803073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126d257506126d183612635565b5b90508091505092915050565b6000813590506126ed816136f0565b92915050565b600081519050612702816136f0565b92915050565b60008135905061271781613707565b92915050565b60008135905061272c8161371e565b92915050565b6000815190506127418161371e565b92915050565b60008135905061275681613735565b92915050565b6000602082840312156127725761277161344c565b5b6000612780848285016126de565b91505092915050565b60006020828403121561279f5761279e61344c565b5b60006127ad848285016126f3565b91505092915050565b600080604083850312156127cd576127cc61344c565b5b60006127db858286016126de565b92505060206127ec858286016126de565b9150509250929050565b60008060006060848603121561280f5761280e61344c565b5b600061281d868287016126de565b935050602061282e868287016126de565b925050604061283f8682870161271d565b9150509250925092565b600080604083850312156128605761285f61344c565b5b600061286e858286016126de565b925050602061287f85828601612708565b9150509250929050565b600080604083850312156128a05761289f61344c565b5b60006128ae858286016126de565b92505060206128bf8582860161271d565b9150509250929050565b6000602082840312156128df576128de61344c565b5b60006128ed84828501612708565b91505092915050565b60006020828403121561290c5761290b61344c565b5b600061291a8482850161271d565b91505092915050565b60008060006060848603121561293c5761293b61344c565b5b600061294a86828701612732565b935050602061295b86828701612732565b925050604061296c86828701612732565b9150509250925092565b600080600080608085870312156129905761298f61344c565b5b600061299e87828801612747565b94505060206129af87828801612747565b93505060406129c087828801612747565b92505060606129d187828801612708565b91505092959194509250565b60006129e983836129f5565b60208301905092915050565b6129fe816132e4565b82525050565b612a0d816132e4565b82525050565b6000612a1e82612fe2565b612a288185613005565b9350612a3383612fd2565b8060005b83811015612a64578151612a4b88826129dd565b9750612a5683612ff8565b925050600181019050612a37565b5085935050505092915050565b612a7a816132f6565b82525050565b612a8981613339565b82525050565b6000612a9a82612fed565b612aa48185613016565b9350612ab481856020860161335d565b612abd81613451565b840191505092915050565b6000612ad5602283613016565b9150612ae08261346f565b604082019050919050565b6000612af8602683613016565b9150612b03826134be565b604082019050919050565b6000612b1b602d83613016565b9150612b268261350d565b604082019050919050565b6000612b3e602483613016565b9150612b498261355c565b604082019050919050565b6000612b61600b83613016565b9150612b6c826135ab565b602082019050919050565b6000612b84601983613016565b9150612b8f826135d4565b602082019050919050565b6000612ba7600d83613016565b9150612bb2826135fd565b602082019050919050565b6000612bca602483613016565b9150612bd582613626565b604082019050919050565b6000612bed602083613016565b9150612bf882613675565b602082019050919050565b6000612c10602083613016565b9150612c1b8261369e565b602082019050919050565b6000612c33602083613016565b9150612c3e826136c7565b602082019050919050565b612c5281613322565b82525050565b612c618161334b565b82525050565b612c708161332c565b82525050565b6000602082019050612c8b6000830184612a04565b92915050565b6000604082019050612ca66000830185612a04565b612cb36020830184612a04565b9392505050565b600060c082019050612ccf6000830189612a04565b612cdc6020830188612c49565b612ce96040830187612a80565b612cf66060830186612a80565b612d036080830185612a04565b612d1060a0830184612c49565b979650505050505050565b6000602082019050612d306000830184612a71565b92915050565b60006020820190508181036000830152612d508184612a8f565b905092915050565b60006020820190508181036000830152612d7181612ac8565b9050919050565b60006020820190508181036000830152612d9181612aeb565b9050919050565b60006020820190508181036000830152612db181612b0e565b9050919050565b60006020820190508181036000830152612dd181612b31565b9050919050565b60006020820190508181036000830152612df181612b54565b9050919050565b60006020820190508181036000830152612e1181612b77565b9050919050565b60006020820190508181036000830152612e3181612b9a565b9050919050565b60006020820190508181036000830152612e5181612bbd565b9050919050565b60006020820190508181036000830152612e7181612be0565b9050919050565b60006020820190508181036000830152612e9181612c03565b9050919050565b60006020820190508181036000830152612eb181612c26565b9050919050565b6000602082019050612ecd6000830184612c49565b92915050565b600060a082019050612ee86000830188612c49565b612ef56020830187612a80565b8181036040830152612f078186612a13565b9050612f166060830185612a04565b612f236080830184612c49565b9695505050505050565b6000602082019050612f426000830184612c67565b92915050565b6000608082019050612f5d6000830187612c58565b612f6a6020830186612c58565b612f776040830185612c58565b612f846060830184612a71565b95945050505050565b6000608082019050612fa26000830187612c67565b612faf6020830186612c67565b612fbc6040830185612c67565b612fc96060830184612c67565b95945050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061303282613322565b915061303d83613322565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561307257613071613390565b5b828201905092915050565b60006130888261332c565b91506130938361332c565b92508260ff038211156130a9576130a8613390565b5b828201905092915050565b60006130bf82613322565b91506130ca83613322565b9250826130da576130d96133bf565b5b828204905092915050565b6000808291508390505b600185111561312f5780860481111561310b5761310a613390565b5b600185161561311a5780820291505b808102905061312885613462565b94506130ef565b94509492505050565b600061314382613322565b915061314e8361332c565b925061317b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613183565b905092915050565b600082613193576001905061324f565b816131a1576000905061324f565b81600181146131b757600281146131c1576131f0565b600191505061324f565b60ff8411156131d3576131d2613390565b5b8360020a9150848211156131ea576131e9613390565b5b5061324f565b5060208310610133831016604e8410600b84101617156132255782820a9050838111156132205761321f613390565b5b61324f565b61323284848460016130e5565b9250905081840481111561324957613248613390565b5b81810290505b9392505050565b600061326182613322565b915061326c83613322565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132a5576132a4613390565b5b828202905092915050565b60006132bb82613322565b91506132c683613322565b9250828210156132d9576132d8613390565b5b828203905092915050565b60006132ef82613302565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061334482613322565b9050919050565b60006133568261332c565b9050919050565b60005b8381101561337b578082015181840152602081019050613360565b8381111561338a576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f43616e6e6f7420617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f742075736520746865207a65726f2061646472657373206173207260008201527f6f75746572206164647265737300000000000000000000000000000000000000602082015250565b7f43616e6e6f7420617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74617820746f2068696768000000000000000000000000000000000000000000600082015250565b7f74726164696e6720697320616c72656164792061637469766500000000000000600082015250565b7f63616e74207472616e7366657200000000000000000000000000000000000000600082015250565b7f7a65726f2061646472657373207472616e73666572206973206e6f7420616c6c60008201527f6f77656400000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f616d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b7f5468726573686f6c64206d7573742062652067726561746572207468616e2030600082015250565b6136f9816132e4565b811461370457600080fd5b50565b613710816132f6565b811461371b57600080fd5b50565b61372781613322565b811461373257600080fd5b50565b61373e8161332c565b811461374957600080fd5b5056fea264697066735822122057fd551eb312e02d5d1de4d7a3015503209ac03453149ad5ea4b3ce3f03acbae64736f6c63430008070033

Deployed Bytecode Sourcemap

5093:11858:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16748:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9045:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16199:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6068:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15803:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8616:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14263:224;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16536:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14493:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5432:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14927:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16414:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16291:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15371:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5767:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8926:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1105:103;;;;;;;;;;;;;:::i;:::-;;15642:153;;;;;;;;;;;;;:::i;:::-;;5704:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16833:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;870:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7842:600;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16659:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6032:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14705:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7300:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16028:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8452:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7637:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5736:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15895:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16105:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5466:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;6133:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10481:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5860:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1216:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5637:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16748:79;16796:13;16820:4;;;;;;;;;;;;;;;;;16813:11;;16748:79;:::o;9045:152::-;9120:4;9133:40;9143:12;:10;:12::i;:::-;9157:7;9166:6;9133:9;:40::i;:::-;9187:4;9180:11;;9045:152;;;;:::o;16199:86::-;829:13;:11;:13::i;:::-;16273:9:::1;16257:13;;:25;;;;;;;;;;;;;;;;;;16199:86:::0;:::o;6068:25::-;;;;;;;;;;;;;:::o;15803:86::-;15856:7;5332:2;5190;:12;;;;:::i;:::-;5174:13;:28;;;;:::i;:::-;15867:19;;15803:86;:::o;8616:302::-;8714:4;8727:37;8738:6;8746:9;8757:6;8727:10;:37::i;:::-;8771:75;8781:6;8789:12;:10;:12::i;:::-;8839:6;8803:11;:19;8815:6;8803:19;;;;;;;;;;;;;;;:33;8823:12;:10;:12::i;:::-;8803:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;8771:9;:75::i;:::-;8908:4;8901:11;;8616:302;;;;;:::o;14263:224::-;14314:7;14330:15;14348:24;14366:4;14348:9;:24::i;:::-;14330:42;;14393:19;;14383:7;:29;14379:60;;;14430:1;14423:8;;;;;14379:60;14474:7;14452:19;;:29;;;;:::i;:::-;14445:36;;;14263:224;;:::o;16536:117::-;16588:5;16618:1;16601:13;:11;:13::i;:::-;:18;16597:37;;;16623:8;;;16597:37;5332:2;16635:15;;16536:117;:::o;14493:206::-;14581:4;14594:81;14604:12;:10;:12::i;:::-;14618:7;14664:10;14627:11;:25;14639:12;:10;:12::i;:::-;14627:25;;;;;;;;;;;;;;;:34;14653:7;14627:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14594:9;:81::i;:::-;14689:4;14682:11;;14493:206;;;;:::o;5432:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14927:329::-;829:13;:11;:13::i;:::-;15030:1:::1;15005:27;;:13;:27;;;;14997:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15110:13;15089:8;;:35;;;;;;;;;;;;;;;;;;15151:8;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15140:41;;;15190:4;15197:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15140:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15131:6;;:82;;;;;;;;;;;;;;;;;;15225:25;15236:13;15225:25;;;;;;:::i;:::-;;;;;;;;14927:329:::0;:::o;16414:115::-;16462:4;16514:12;;16499;:27;;;;:::i;:::-;16477:18;;:49;;16470:56;;16414:115;:::o;16291:117::-;829:13;:11;:13::i;:::-;16400:5:::1;16365:26;:32;16392:4;16365:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;16291:117:::0;;:::o;15371:215::-;829:13;:11;:13::i;:::-;15468:1:::1;15456:9;:13;15448:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15535:9;15513:19;:31;;;;15556:24;15570:9;15556:24;;;;;;:::i;:::-;;;;;;;;15371:215:::0;:::o;5767:28::-;;;;;;;;;;;;;:::o;8926:113::-;8992:7;9015:9;:18;9025:7;9015:18;;;;;;;;;;;;;;;;9008:25;;8926:113;;;:::o;1105:103::-;829:13;:11;:13::i;:::-;1170:30:::1;1197:1;1170:18;:30::i;:::-;1105:103::o:0;15642:153::-;829:13;:11;:13::i;:::-;15699:10:::1;;;;;;;;;;;15691:28;;:51;15720:21;15691:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15756:33;15767:21;15756:33;;;;;;:::i;:::-;;;;;;;;15642:153::o:0;5704:26::-;;;;;;;;;;;;;:::o;16833:80::-;16885:7;16903;:5;:7::i;:::-;16896:14;;16833:80;:::o;870:87::-;916:7;943:6;;;;;;;;;;;936:13;;870:87;:::o;7842:600::-;829:13;:11;:13::i;:::-;7956:15:::1;8000:4;7987:10;7974;:23;;;;:::i;:::-;:30;;;;:::i;:::-;7956:48;;8032:2;8019:9;:15;;;;8011:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;8064:10;8061:308;;;8103:10;8078:11;:22;;;:35;;;;;;;;;;;;;;;;;;8141:10;8116:11;:22;;;:35;;;;;;;;;;;;;;;;;;8173:4;8154:11;:16;;;:23;;;;;;;;;;;;;;;;;;8203:9;8179:11;:21;;;:33;;;;;;;;;;;;;;;;;;8061:308;;;8257:10;8231:12;:23;;;:36;;;;;;;;;;;;;;;;;;8295:10;8269:12;:23;;;:36;;;;;;;;;;;;;;;;;;8327:4;8307:12;:17;;;:24;;;;;;;;;;;;;;;;;;8358:9;8333:12;:22;;;:34;;;;;;;;;;;;;;;;;;8061:308;8384:50;8396:10;8407;8418:4;8423:10;8384:50;;;;;;;;;:::i;:::-;;;;;;;;7949:493;7842:600:::0;;;;:::o;16659:83::-;16709:13;16733:6;;;;;;;;;;;;;;;;;16726:13;;16659:83;:::o;6032:31::-;;;;;;;;;;;;;:::o;14705:216::-;14798:4;14811:86;14821:12;:10;:12::i;:::-;14835:7;14881:15;14844:11;:25;14856:12;:10;:12::i;:::-;14844:25;;;;;;;;;;;;;;;:34;14870:7;14844:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;14811:9;:86::i;:::-;14911:4;14904:11;;14705:216;;;;:::o;7300:331::-;829:13;:11;:13::i;:::-;7374:16:::1;;;;;;;;;;;7373:17;7365:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;7431:20;7446:4;7431:14;:20::i;:::-;7458:19;7472:4;7458:13;:19::i;:::-;7505:4;7486:16;;:23;;;;;;;;;;;;;;;;;;7537:12;7516:18;:33;;;;7571:13;7556:12;:28;;;;7598:27;7606:18;;7598:27;;;;;;:::i;:::-;;;;;;;;7300:331:::0;:::o;16028:71::-;16072:7;16090:6;;;;;;;;;;;16083:13;;16028:71;:::o;8452:158::-;8530:4;8543:43;8554:12;:10;:12::i;:::-;8568:9;8579:6;8543:10;:43::i;:::-;8600:4;8593:11;;8452:158;;;;:::o;7637:199::-;829:13;:11;:13::i;:::-;7742:10:::1;7723:16;;:29;;;;;;;;;;;;;;;;;;7776:4;7763:10;;:17;;;;;;;;;;;;;;;;;;7796:32;7811:10;7823:4;7796:32;;;;;;;:::i;:::-;;;;;;;;7637:199:::0;;:::o;5736:25::-;;;;;;;;;;;;;:::o;15895:127::-;15975:7;15993:11;:17;16005:4;15993:17;;;;;;;;;;;;;;;:26;16011:7;15993:26;;;;;;;;;;;;;;;;15986:33;;15895:127;;;;:::o;16105:88::-;829:13;:11;:13::i;:::-;16181:9:::1;16164:14;;:26;;;;;;;;;;;;;;;;;;16105:88:::0;:::o;5466:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6133:37::-;;;;:::o;10481:131::-;829:13;:11;:13::i;:::-;10549:25:::1;10561:12;10549:11;:25::i;:::-;10586:20;10593:12;10586:20;;;;;;:::i;:::-;;;;;;;;10481:131:::0;:::o;5860:60::-;;;;:::o;1216:201::-;829:13;:11;:13::i;:::-;1325:1:::1;1305:22;;:8;:22;;;;1297:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1381:28;1400:8;1381:18;:28::i;:::-;1216:201:::0;:::o;5637:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;97:115::-;150:15;193:10;178:26;;97:115;:::o;12609:320::-;12716:1;12699:19;;:5;:19;;;;12691:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12793:1;12774:21;;:7;:21;;;;12766:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12873:6;12843:11;:18;12855:5;12843:18;;;;;;;;;;;;;;;:27;12862:7;12843:27;;;;;;;;;;;;;;;:36;;;;12907:7;12891:32;;12900:5;12891:32;;;12916:6;12891:32;;;;;;:::i;:::-;;;;;;;;12609:320;;;:::o;965:132::-;1040:12;:10;:12::i;:::-;1029:23;;:7;:5;:7::i;:::-;:23;;;1021:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;965:132::o;9205:751::-;9326:1;9308:20;;:6;:20;;;;9300:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9405:1;9384:23;;:9;:23;;;;9376:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9472:1;9463:6;:10;9455:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9523:16;;;;;;;;;;;9519:88;;9552:26;:34;9579:6;9552:34;;;;;;;;;;;;;;;;;;;;;;;;;9544:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9519:88;9616:14;;;;;;;;;;;9613:58;;;9633:35;9650:6;9658:9;9633:16;:35::i;:::-;9613:58;9679:15;9697:35;9714:6;9722:9;9697:16;:35::i;:::-;9679:53;;9739:17;9778:3;9768:7;9759:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;9739:42;;9788:22;9822:9;9813:6;:18;;;;:::i;:::-;9788:43;;9840:52;9855:6;9863:9;9874:6;9882:9;9840:14;:52::i;:::-;9923:9;9906:43;;9915:6;9906:43;;;9934:14;9906:43;;;;;;:::i;:::-;;;;;;;;9293:663;;;9205:751;;;:::o;1425:191::-;1499:16;1518:6;;;;;;;;;;;1499:25;;1544:8;1535:6;;:17;;;;;;;;;;;;;;;;;;1599:8;1568:40;;1589:8;1568:40;;;;;;;;;;;;1488:128;1425:191;:::o;10620:1449::-;10733:51;10751:4;10766:8;;;;;;;;;;;10777:6;10733:9;:51::i;:::-;10791:13;10807:12;:22;;;;;;;;;;;;10791:38;;;;10849:1;10841:5;:9;10838:1226;;;10861:34;10933:5;10907:12;:23;;;;;;;;;;;;10898:32;;:6;:32;;;;:::i;:::-;:40;;;;:::i;:::-;10861:77;;10947:28;11007:5;10987:12;:17;;;;;;;;;;;;10978:26;;:6;:26;;;;:::i;:::-;:34;;;;:::i;:::-;10947:65;;11022:34;11097:20;11068:26;11059:6;:35;;;;:::i;:::-;:58;;;;:::i;:::-;11022:95;;11128:32;11192:1;11163:26;:30;;;;:::i;:::-;11128:65;;11202:30;11235:24;11202:57;;11270:20;11349;11320:26;11293:24;:53;;;;:::i;:::-;:76;;;;:::i;:::-;11270:99;;11378:18;11399:30;11416:12;11399:16;:30::i;:::-;11378:51;;11446:31;11520:12;11493:24;11480:10;:37;;;;:::i;:::-;:52;;;;:::i;:::-;11446:86;;11541:32;11612:12;11589:20;11576:10;:33;;;;:::i;:::-;:48;;;;:::i;:::-;11541:83;;11633:30;11704:24;11679:23;11666:10;:36;;;;:::i;:::-;:62;;;;:::i;:::-;11633:95;;11747:16;;;;;;;;;;;11739:34;;:58;11774:22;11739:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11814:10;;;;;;;;;;;11806:28;;:54;11835:24;11806:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11875:8;;;;;;;;;;;:24;;;11907:23;11940:4;11947:22;11971:1;11974;11977:10;;;;;;;;;;;11989:15;11875:130;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11871:145;;;;;;;;;12029:27;12045:10;12029:27;;;;;;:::i;:::-;;;;;;;;10852:1212;;;;;;;;;;10838:1226;10665:1404;10620:1449;:::o;9964:465::-;10045:35;10062:6;10070:9;10045:16;:35::i;:::-;10040:65;;10091:7;;10040:65;10113:30;10146:24;10164:4;10146:9;:24::i;:::-;10113:57;;10207:19;;10181:22;:45;10177:247;;10262:19;;10237:44;;10292:14;10309:28;10327:9;10309:17;:28::i;:::-;10292:45;;10350:9;10346:71;;;10372:35;10384:22;10372:11;:35::i;:::-;10346:71;10228:196;10177:247;10033:396;9964:465;;;:::o;12935:521::-;13017:7;13033:14;13050:13;;;;;;;;;;;:52;;;;;13068:26;:34;13095:6;13068:34;;;;;;;;;;;;;;;;;;;;;;;;;13067:35;13050:52;:94;;;;;13107:26;:37;13134:9;13107:37;;;;;;;;;;;;;;;;;;;;;;;;;13106:38;13050:94;13033:111;;13155:9;13151:285;;;13179:28;13197:9;13179:17;:28::i;:::-;13175:254;;;13227:12;:22;;;;;;;;;;;;13220:29;;;;;;;13175:254;13281:17;:15;:17::i;:::-;13278:136;;;13325:2;13318:9;;;;;13278:136;13375:11;:21;;;;;;;;;;;;13368:28;;;;;;;13151:285;13449:1;13442:8;;;12935:521;;;;;:::o;12075:528::-;12241:22;12279:9;12266:10;:22;;;;:::i;:::-;12241:47;;12342:10;12321:9;:17;12331:6;12321:17;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;12383:14;12359:9;:20;12369:9;12359:20;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;12467:9;12439;:24;12457:4;12439:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;12526:1;12514:9;:13;12511:83;;;12568:4;12543:42;;12552:6;12543:42;;;12575:9;12543:42;;;;;;:::i;:::-;;;;;;;;12511:83;12181:422;12075:528;;;;:::o;13464:420::-;13528:7;13544:22;13569:21;13544:46;;13601:21;13639:1;13625:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13601:40;;13666:4;13648;13653:1;13648:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13688:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13678:4;13683:1;13678:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13710:8;;;;;;;;;;;:59;;;13770:11;13783:1;13786:4;13800;13807:15;13710:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13864:14;13840:21;:38;;;;:::i;:::-;13833:45;;;;13464:420;;;:::o;14106:151::-;14197:4;14218:33;14233:6;14241:9;14218:14;:33::i;:::-;14217:34;14210:41;;14106:151;;;;:::o;15262:103::-;15325:4;15355;15345:14;;:6;;;;;;;;;;;:14;;;15338:21;;15262:103;;;:::o;13890:210::-;13970:4;13983:22;14026:4;14008:23;;:6;:23;;;:55;;;;;14035:28;14053:9;14035:17;:28::i;:::-;14008:55;13983:80;;14077:17;14070:24;;;13890:210;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:135::-;778:5;816:6;803:20;794:29;;832:31;857:5;832:31;:::i;:::-;734:135;;;;:::o;875:329::-;934:6;983:2;971:9;962:7;958:23;954:32;951:119;;;989:79;;:::i;:::-;951:119;1109:1;1134:53;1179:7;1170:6;1159:9;1155:22;1134:53;:::i;:::-;1124:63;;1080:117;875:329;;;;:::o;1210:351::-;1280:6;1329:2;1317:9;1308:7;1304:23;1300:32;1297:119;;;1335:79;;:::i;:::-;1297:119;1455:1;1480:64;1536:7;1527:6;1516:9;1512:22;1480:64;:::i;:::-;1470:74;;1426:128;1210:351;;;;:::o;1567:474::-;1635:6;1643;1692:2;1680:9;1671:7;1667:23;1663:32;1660:119;;;1698:79;;:::i;:::-;1660:119;1818:1;1843:53;1888:7;1879:6;1868:9;1864:22;1843:53;:::i;:::-;1833:63;;1789:117;1945:2;1971:53;2016:7;2007:6;1996:9;1992:22;1971:53;:::i;:::-;1961:63;;1916:118;1567:474;;;;;:::o;2047:619::-;2124:6;2132;2140;2189:2;2177:9;2168:7;2164:23;2160:32;2157:119;;;2195:79;;:::i;:::-;2157:119;2315:1;2340:53;2385:7;2376:6;2365:9;2361:22;2340:53;:::i;:::-;2330:63;;2286:117;2442:2;2468:53;2513:7;2504:6;2493:9;2489:22;2468:53;:::i;:::-;2458:63;;2413:118;2570:2;2596:53;2641:7;2632:6;2621:9;2617:22;2596:53;:::i;:::-;2586:63;;2541:118;2047:619;;;;;:::o;2672:468::-;2737:6;2745;2794:2;2782:9;2773:7;2769:23;2765:32;2762:119;;;2800:79;;:::i;:::-;2762:119;2920:1;2945:53;2990:7;2981:6;2970:9;2966:22;2945:53;:::i;:::-;2935:63;;2891:117;3047:2;3073:50;3115:7;3106:6;3095:9;3091:22;3073:50;:::i;:::-;3063:60;;3018:115;2672:468;;;;;:::o;3146:474::-;3214:6;3222;3271:2;3259:9;3250:7;3246:23;3242:32;3239:119;;;3277:79;;:::i;:::-;3239:119;3397:1;3422:53;3467:7;3458:6;3447:9;3443:22;3422:53;:::i;:::-;3412:63;;3368:117;3524:2;3550:53;3595:7;3586:6;3575:9;3571:22;3550:53;:::i;:::-;3540:63;;3495:118;3146:474;;;;;:::o;3626:323::-;3682:6;3731:2;3719:9;3710:7;3706:23;3702:32;3699:119;;;3737:79;;:::i;:::-;3699:119;3857:1;3882:50;3924:7;3915:6;3904:9;3900:22;3882:50;:::i;:::-;3872:60;;3828:114;3626:323;;;;:::o;3955:329::-;4014:6;4063:2;4051:9;4042:7;4038:23;4034:32;4031:119;;;4069:79;;:::i;:::-;4031:119;4189:1;4214:53;4259:7;4250:6;4239:9;4235:22;4214:53;:::i;:::-;4204:63;;4160:117;3955:329;;;;:::o;4290:663::-;4378:6;4386;4394;4443:2;4431:9;4422:7;4418:23;4414:32;4411:119;;;4449:79;;:::i;:::-;4411:119;4569:1;4594:64;4650:7;4641:6;4630:9;4626:22;4594:64;:::i;:::-;4584:74;;4540:128;4707:2;4733:64;4789:7;4780:6;4769:9;4765:22;4733:64;:::i;:::-;4723:74;;4678:129;4846:2;4872:64;4928:7;4919:6;4908:9;4904:22;4872:64;:::i;:::-;4862:74;;4817:129;4290:663;;;;;:::o;4959:747::-;5036:6;5044;5052;5060;5109:3;5097:9;5088:7;5084:23;5080:33;5077:120;;;5116:79;;:::i;:::-;5077:120;5236:1;5261:51;5304:7;5295:6;5284:9;5280:22;5261:51;:::i;:::-;5251:61;;5207:115;5361:2;5387:51;5430:7;5421:6;5410:9;5406:22;5387:51;:::i;:::-;5377:61;;5332:116;5487:2;5513:51;5556:7;5547:6;5536:9;5532:22;5513:51;:::i;:::-;5503:61;;5458:116;5613:2;5639:50;5681:7;5672:6;5661:9;5657:22;5639:50;:::i;:::-;5629:60;;5584:115;4959:747;;;;;;;:::o;5712:179::-;5781:10;5802:46;5844:3;5836:6;5802:46;:::i;:::-;5880:4;5875:3;5871:14;5857:28;;5712:179;;;;:::o;5897:108::-;5974:24;5992:5;5974:24;:::i;:::-;5969:3;5962:37;5897:108;;:::o;6011:118::-;6098:24;6116:5;6098:24;:::i;:::-;6093:3;6086:37;6011:118;;:::o;6165:732::-;6284:3;6313:54;6361:5;6313:54;:::i;:::-;6383:86;6462:6;6457:3;6383:86;:::i;:::-;6376:93;;6493:56;6543:5;6493:56;:::i;:::-;6572:7;6603:1;6588:284;6613:6;6610:1;6607:13;6588:284;;;6689:6;6683:13;6716:63;6775:3;6760:13;6716:63;:::i;:::-;6709:70;;6802:60;6855:6;6802:60;:::i;:::-;6792:70;;6648:224;6635:1;6632;6628:9;6623:14;;6588:284;;;6592:14;6888:3;6881:10;;6289:608;;;6165:732;;;;:::o;6903:109::-;6984:21;6999:5;6984:21;:::i;:::-;6979:3;6972:34;6903:109;;:::o;7018:147::-;7113:45;7152:5;7113:45;:::i;:::-;7108:3;7101:58;7018:147;;:::o;7171:364::-;7259:3;7287:39;7320:5;7287:39;:::i;:::-;7342:71;7406:6;7401:3;7342:71;:::i;:::-;7335:78;;7422:52;7467:6;7462:3;7455:4;7448:5;7444:16;7422:52;:::i;:::-;7499:29;7521:6;7499:29;:::i;:::-;7494:3;7490:39;7483:46;;7263:272;7171:364;;;;:::o;7541:366::-;7683:3;7704:67;7768:2;7763:3;7704:67;:::i;:::-;7697:74;;7780:93;7869:3;7780:93;:::i;:::-;7898:2;7893:3;7889:12;7882:19;;7541:366;;;:::o;7913:::-;8055:3;8076:67;8140:2;8135:3;8076:67;:::i;:::-;8069:74;;8152:93;8241:3;8152:93;:::i;:::-;8270:2;8265:3;8261:12;8254:19;;7913:366;;;:::o;8285:::-;8427:3;8448:67;8512:2;8507:3;8448:67;:::i;:::-;8441:74;;8524:93;8613:3;8524:93;:::i;:::-;8642:2;8637:3;8633:12;8626:19;;8285:366;;;:::o;8657:::-;8799:3;8820:67;8884:2;8879:3;8820:67;:::i;:::-;8813:74;;8896:93;8985:3;8896:93;:::i;:::-;9014:2;9009:3;9005:12;8998:19;;8657:366;;;:::o;9029:::-;9171:3;9192:67;9256:2;9251:3;9192:67;:::i;:::-;9185:74;;9268:93;9357:3;9268:93;:::i;:::-;9386:2;9381:3;9377:12;9370:19;;9029:366;;;:::o;9401:::-;9543:3;9564:67;9628:2;9623:3;9564:67;:::i;:::-;9557:74;;9640:93;9729:3;9640:93;:::i;:::-;9758:2;9753:3;9749:12;9742:19;;9401:366;;;:::o;9773:::-;9915:3;9936:67;10000:2;9995:3;9936:67;:::i;:::-;9929:74;;10012:93;10101:3;10012:93;:::i;:::-;10130:2;10125:3;10121:12;10114:19;;9773:366;;;:::o;10145:::-;10287:3;10308:67;10372:2;10367:3;10308:67;:::i;:::-;10301:74;;10384:93;10473:3;10384:93;:::i;:::-;10502:2;10497:3;10493:12;10486:19;;10145:366;;;:::o;10517:::-;10659:3;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10756:93;10845:3;10756:93;:::i;:::-;10874:2;10869:3;10865:12;10858:19;;10517:366;;;:::o;10889:::-;11031:3;11052:67;11116:2;11111:3;11052:67;:::i;:::-;11045:74;;11128:93;11217:3;11128:93;:::i;:::-;11246:2;11241:3;11237:12;11230:19;;10889:366;;;:::o;11261:::-;11403:3;11424:67;11488:2;11483:3;11424:67;:::i;:::-;11417:74;;11500:93;11589:3;11500:93;:::i;:::-;11618:2;11613:3;11609:12;11602:19;;11261:366;;;:::o;11633:118::-;11720:24;11738:5;11720:24;:::i;:::-;11715:3;11708:37;11633:118;;:::o;11757:127::-;11842:35;11871:5;11842:35;:::i;:::-;11837:3;11830:48;11757:127;;:::o;11890:112::-;11973:22;11989:5;11973:22;:::i;:::-;11968:3;11961:35;11890:112;;:::o;12008:222::-;12101:4;12139:2;12128:9;12124:18;12116:26;;12152:71;12220:1;12209:9;12205:17;12196:6;12152:71;:::i;:::-;12008:222;;;;:::o;12236:332::-;12357:4;12395:2;12384:9;12380:18;12372:26;;12408:71;12476:1;12465:9;12461:17;12452:6;12408:71;:::i;:::-;12489:72;12557:2;12546:9;12542:18;12533:6;12489:72;:::i;:::-;12236:332;;;;;:::o;12574:807::-;12823:4;12861:3;12850:9;12846:19;12838:27;;12875:71;12943:1;12932:9;12928:17;12919:6;12875:71;:::i;:::-;12956:72;13024:2;13013:9;13009:18;13000:6;12956:72;:::i;:::-;13038:80;13114:2;13103:9;13099:18;13090:6;13038:80;:::i;:::-;13128;13204:2;13193:9;13189:18;13180:6;13128:80;:::i;:::-;13218:73;13286:3;13275:9;13271:19;13262:6;13218:73;:::i;:::-;13301;13369:3;13358:9;13354:19;13345:6;13301:73;:::i;:::-;12574:807;;;;;;;;;:::o;13387:210::-;13474:4;13512:2;13501:9;13497:18;13489:26;;13525:65;13587:1;13576:9;13572:17;13563:6;13525:65;:::i;:::-;13387:210;;;;:::o;13603:313::-;13716:4;13754:2;13743:9;13739:18;13731:26;;13803:9;13797:4;13793:20;13789:1;13778:9;13774:17;13767:47;13831:78;13904:4;13895:6;13831:78;:::i;:::-;13823:86;;13603:313;;;;:::o;13922:419::-;14088:4;14126:2;14115:9;14111:18;14103:26;;14175:9;14169:4;14165:20;14161:1;14150:9;14146:17;14139:47;14203:131;14329:4;14203:131;:::i;:::-;14195:139;;13922:419;;;:::o;14347:::-;14513:4;14551:2;14540:9;14536:18;14528:26;;14600:9;14594:4;14590:20;14586:1;14575:9;14571:17;14564:47;14628:131;14754:4;14628:131;:::i;:::-;14620:139;;14347:419;;;:::o;14772:::-;14938:4;14976:2;14965:9;14961:18;14953:26;;15025:9;15019:4;15015:20;15011:1;15000:9;14996:17;14989:47;15053:131;15179:4;15053:131;:::i;:::-;15045:139;;14772:419;;;:::o;15197:::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15450:9;15444:4;15440:20;15436:1;15425:9;15421:17;15414:47;15478:131;15604:4;15478:131;:::i;:::-;15470:139;;15197:419;;;:::o;15622:::-;15788:4;15826:2;15815:9;15811:18;15803:26;;15875:9;15869:4;15865:20;15861:1;15850:9;15846:17;15839:47;15903:131;16029:4;15903:131;:::i;:::-;15895:139;;15622:419;;;:::o;16047:::-;16213:4;16251:2;16240:9;16236:18;16228:26;;16300:9;16294:4;16290:20;16286:1;16275:9;16271:17;16264:47;16328:131;16454:4;16328:131;:::i;:::-;16320:139;;16047:419;;;:::o;16472:::-;16638:4;16676:2;16665:9;16661:18;16653:26;;16725:9;16719:4;16715:20;16711:1;16700:9;16696:17;16689:47;16753:131;16879:4;16753:131;:::i;:::-;16745:139;;16472:419;;;:::o;16897:::-;17063:4;17101:2;17090:9;17086:18;17078:26;;17150:9;17144:4;17140:20;17136:1;17125:9;17121:17;17114:47;17178:131;17304:4;17178:131;:::i;:::-;17170:139;;16897:419;;;:::o;17322:::-;17488:4;17526:2;17515:9;17511:18;17503:26;;17575:9;17569:4;17565:20;17561:1;17550:9;17546:17;17539:47;17603:131;17729:4;17603:131;:::i;:::-;17595:139;;17322:419;;;:::o;17747:::-;17913:4;17951:2;17940:9;17936:18;17928:26;;18000:9;17994:4;17990:20;17986:1;17975:9;17971:17;17964:47;18028:131;18154:4;18028:131;:::i;:::-;18020:139;;17747:419;;;:::o;18172:::-;18338:4;18376:2;18365:9;18361:18;18353:26;;18425:9;18419:4;18415:20;18411:1;18400:9;18396:17;18389:47;18453:131;18579:4;18453:131;:::i;:::-;18445:139;;18172:419;;;:::o;18597:222::-;18690:4;18728:2;18717:9;18713:18;18705:26;;18741:71;18809:1;18798:9;18794:17;18785:6;18741:71;:::i;:::-;18597:222;;;;:::o;18825:831::-;19088:4;19126:3;19115:9;19111:19;19103:27;;19140:71;19208:1;19197:9;19193:17;19184:6;19140:71;:::i;:::-;19221:80;19297:2;19286:9;19282:18;19273:6;19221:80;:::i;:::-;19348:9;19342:4;19338:20;19333:2;19322:9;19318:18;19311:48;19376:108;19479:4;19470:6;19376:108;:::i;:::-;19368:116;;19494:72;19562:2;19551:9;19547:18;19538:6;19494:72;:::i;:::-;19576:73;19644:3;19633:9;19629:19;19620:6;19576:73;:::i;:::-;18825:831;;;;;;;;:::o;19662:214::-;19751:4;19789:2;19778:9;19774:18;19766:26;;19802:67;19866:1;19855:9;19851:17;19842:6;19802:67;:::i;:::-;19662:214;;;;:::o;19882:529::-;20047:4;20085:3;20074:9;20070:19;20062:27;;20099:69;20165:1;20154:9;20150:17;20141:6;20099:69;:::i;:::-;20178:70;20244:2;20233:9;20229:18;20220:6;20178:70;:::i;:::-;20258;20324:2;20313:9;20309:18;20300:6;20258:70;:::i;:::-;20338:66;20400:2;20389:9;20385:18;20376:6;20338:66;:::i;:::-;19882:529;;;;;;;:::o;20417:521::-;20578:4;20616:3;20605:9;20601:19;20593:27;;20630:67;20694:1;20683:9;20679:17;20670:6;20630:67;:::i;:::-;20707:68;20771:2;20760:9;20756:18;20747:6;20707:68;:::i;:::-;20785;20849:2;20838:9;20834:18;20825:6;20785:68;:::i;:::-;20863;20927:2;20916:9;20912:18;20903:6;20863:68;:::i;:::-;20417:521;;;;;;;:::o;21025:132::-;21092:4;21115:3;21107:11;;21145:4;21140:3;21136:14;21128:22;;21025:132;;;:::o;21163:114::-;21230:6;21264:5;21258:12;21248:22;;21163:114;;;:::o;21283:99::-;21335:6;21369:5;21363:12;21353:22;;21283:99;;;:::o;21388:113::-;21458:4;21490;21485:3;21481:14;21473:22;;21388:113;;;:::o;21507:184::-;21606:11;21640:6;21635:3;21628:19;21680:4;21675:3;21671:14;21656:29;;21507:184;;;;:::o;21697:169::-;21781:11;21815:6;21810:3;21803:19;21855:4;21850:3;21846:14;21831:29;;21697:169;;;;:::o;21872:305::-;21912:3;21931:20;21949:1;21931:20;:::i;:::-;21926:25;;21965:20;21983:1;21965:20;:::i;:::-;21960:25;;22119:1;22051:66;22047:74;22044:1;22041:81;22038:107;;;22125:18;;:::i;:::-;22038:107;22169:1;22166;22162:9;22155:16;;21872:305;;;;:::o;22183:237::-;22221:3;22240:18;22256:1;22240:18;:::i;:::-;22235:23;;22272:18;22288:1;22272:18;:::i;:::-;22267:23;;22362:1;22356:4;22352:12;22349:1;22346:19;22343:45;;;22368:18;;:::i;:::-;22343:45;22412:1;22409;22405:9;22398:16;;22183:237;;;;:::o;22426:185::-;22466:1;22483:20;22501:1;22483:20;:::i;:::-;22478:25;;22517:20;22535:1;22517:20;:::i;:::-;22512:25;;22556:1;22546:35;;22561:18;;:::i;:::-;22546:35;22603:1;22600;22596:9;22591:14;;22426:185;;;;:::o;22617:848::-;22678:5;22685:4;22709:6;22700:15;;22733:5;22724:14;;22747:712;22768:1;22758:8;22755:15;22747:712;;;22863:4;22858:3;22854:14;22848:4;22845:24;22842:50;;;22872:18;;:::i;:::-;22842:50;22922:1;22912:8;22908:16;22905:451;;;23337:4;23330:5;23326:16;23317:25;;22905:451;23387:4;23381;23377:15;23369:23;;23417:32;23440:8;23417:32;:::i;:::-;23405:44;;22747:712;;;22617:848;;;;;;;:::o;23471:281::-;23529:5;23553:23;23571:4;23553:23;:::i;:::-;23545:31;;23597:25;23613:8;23597:25;:::i;:::-;23585:37;;23641:104;23678:66;23668:8;23662:4;23641:104;:::i;:::-;23632:113;;23471:281;;;;:::o;23758:1073::-;23812:5;24003:8;23993:40;;24024:1;24015:10;;24026:5;;23993:40;24052:4;24042:36;;24069:1;24060:10;;24071:5;;24042:36;24138:4;24186:1;24181:27;;;;24222:1;24217:191;;;;24131:277;;24181:27;24199:1;24190:10;;24201:5;;;24217:191;24262:3;24252:8;24249:17;24246:43;;;24269:18;;:::i;:::-;24246:43;24318:8;24315:1;24311:16;24302:25;;24353:3;24346:5;24343:14;24340:40;;;24360:18;;:::i;:::-;24340:40;24393:5;;;24131:277;;24517:2;24507:8;24504:16;24498:3;24492:4;24489:13;24485:36;24467:2;24457:8;24454:16;24449:2;24443:4;24440:12;24436:35;24420:111;24417:246;;;24573:8;24567:4;24563:19;24554:28;;24608:3;24601:5;24598:14;24595:40;;;24615:18;;:::i;:::-;24595:40;24648:5;;24417:246;24688:42;24726:3;24716:8;24710:4;24707:1;24688:42;:::i;:::-;24673:57;;;;24762:4;24757:3;24753:14;24746:5;24743:25;24740:51;;;24771:18;;:::i;:::-;24740:51;24820:4;24813:5;24809:16;24800:25;;23758:1073;;;;;;:::o;24837:348::-;24877:7;24900:20;24918:1;24900:20;:::i;:::-;24895:25;;24934:20;24952:1;24934:20;:::i;:::-;24929:25;;25122:1;25054:66;25050:74;25047:1;25044:81;25039:1;25032:9;25025:17;25021:105;25018:131;;;25129:18;;:::i;:::-;25018:131;25177:1;25174;25170:9;25159:20;;24837:348;;;;:::o;25191:191::-;25231:4;25251:20;25269:1;25251:20;:::i;:::-;25246:25;;25285:20;25303:1;25285:20;:::i;:::-;25280:25;;25324:1;25321;25318:8;25315:34;;;25329:18;;:::i;:::-;25315:34;25374:1;25371;25367:9;25359:17;;25191:191;;;;:::o;25388:96::-;25425:7;25454:24;25472:5;25454:24;:::i;:::-;25443:35;;25388:96;;;:::o;25490:90::-;25524:7;25567:5;25560:13;25553:21;25542:32;;25490:90;;;:::o;25586:126::-;25623:7;25663:42;25656:5;25652:54;25641:65;;25586:126;;;:::o;25718:77::-;25755:7;25784:5;25773:16;;25718:77;;;:::o;25801:86::-;25836:7;25876:4;25869:5;25865:16;25854:27;;25801:86;;;:::o;25893:121::-;25951:9;25984:24;26002:5;25984:24;:::i;:::-;25971:37;;25893:121;;;:::o;26020:109::-;26068:9;26101:22;26117:5;26101:22;:::i;:::-;26088:35;;26020:109;;;:::o;26135:307::-;26203:1;26213:113;26227:6;26224:1;26221:13;26213:113;;;26312:1;26307:3;26303:11;26297:18;26293:1;26288:3;26284:11;26277:39;26249:2;26246:1;26242:10;26237:15;;26213:113;;;26344:6;26341:1;26338:13;26335:101;;;26424:1;26415:6;26410:3;26406:16;26399:27;26335:101;26184:258;26135:307;;;:::o;26448:180::-;26496:77;26493:1;26486:88;26593:4;26590:1;26583:15;26617:4;26614:1;26607:15;26634:180;26682:77;26679:1;26672:88;26779:4;26776:1;26769:15;26803:4;26800:1;26793:15;26820:180;26868:77;26865:1;26858:88;26965:4;26962:1;26955:15;26989:4;26986:1;26979:15;27006:180;27054:77;27051:1;27044:88;27151:4;27148:1;27141:15;27175:4;27172:1;27165:15;27315:117;27424:1;27421;27414:12;27438:102;27479:6;27530:2;27526:7;27521:2;27514:5;27510:14;27506:28;27496:38;;27438:102;;;:::o;27546:::-;27588:8;27635:5;27632:1;27628:13;27607:34;;27546:102;;;:::o;27654:221::-;27794:34;27790:1;27782:6;27778:14;27771:58;27863:4;27858:2;27850:6;27846:15;27839:29;27654:221;:::o;27881:225::-;28021:34;28017:1;28009:6;28005:14;27998:58;28090:8;28085:2;28077:6;28073:15;28066:33;27881:225;:::o;28112:232::-;28252:34;28248:1;28240:6;28236:14;28229:58;28321:15;28316:2;28308:6;28304:15;28297:40;28112:232;:::o;28350:223::-;28490:34;28486:1;28478:6;28474:14;28467:58;28559:6;28554:2;28546:6;28542:15;28535:31;28350:223;:::o;28579:161::-;28719:13;28715:1;28707:6;28703:14;28696:37;28579:161;:::o;28746:175::-;28886:27;28882:1;28874:6;28870:14;28863:51;28746:175;:::o;28927:163::-;29067:15;29063:1;29055:6;29051:14;29044:39;28927:163;:::o;29096:223::-;29236:34;29232:1;29224:6;29220:14;29213:58;29305:6;29300:2;29292:6;29288:15;29281:31;29096:223;:::o;29325:182::-;29465:34;29461:1;29453:6;29449:14;29442:58;29325:182;:::o;29513:::-;29653:34;29649:1;29641:6;29637:14;29630:58;29513:182;:::o;29701:::-;29841:34;29837:1;29829:6;29825:14;29818:58;29701:182;:::o;29889:122::-;29962:24;29980:5;29962:24;:::i;:::-;29955:5;29952:35;29942:63;;30001:1;29998;29991:12;29942:63;29889:122;:::o;30017:116::-;30087:21;30102:5;30087:21;:::i;:::-;30080:5;30077:32;30067:60;;30123:1;30120;30113:12;30067:60;30017:116;:::o;30139:122::-;30212:24;30230:5;30212:24;:::i;:::-;30205:5;30202:35;30192:63;;30251:1;30248;30241:12;30192:63;30139:122;:::o;30267:118::-;30338:22;30354:5;30338:22;:::i;:::-;30331:5;30328:33;30318:61;;30375:1;30372;30365:12;30318:61;30267:118;:::o

Swarm Source

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