ETH Price: $2,507.55 (-0.12%)

Token

$KoKo (KOKO)
 

Overview

Max Total Supply

4,206,900,000 KOKO

Holders

330

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:
KoKo

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        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 cccasdaaa the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

// pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender`cccasdaaa for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

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

   
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}


interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.

     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *

     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
 
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *

     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}



contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    uint256 public _maxlSupply;

    string private _name;
    string private _symbol;

  
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

  
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

  
    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,  address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer cccasdaaa from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account,
         amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _spendAllowance(
        address owner,
        address spender,      uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}




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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,  address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,  uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA, uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,  uint256 amountTokenDesired,
        uint256 amountTokenMin,  uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,  uint256 amountETH,
            uint256 liquidity
        );
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,  uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin, address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,    uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,  uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,   uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut, address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,  uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}



interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token, uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,  uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,  bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,  address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
  
contract KoKo is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    address public marketingWallet;
    address public developmentWallet;
    address public liquidityWallet;
    address public constant deadAddress = address(0xdead);

    bool public tradingEnabled;   bool public swapEnabled;
    bool private _swapping;

    uint256 public swapTokensAtAmount;

    uint256 public buyTotalFees;
    uint256 private _buy1;
    uint256 private _buy2;
    uint256 private _totalbuy;
    
   

    uint256 public sell1;
    uint256 private sell2;
    uint256 private _selldev;
    uint256 private _selllp1;

    uint256 private _tokenfaco;   
    uint256 private _tokensForDevelopment;
    uint256 private _tokenFor;
    uint256 private _tokensellall;

    mapping (address => bool) private _excludetoken;
    mapping(address => bool) private _istoken;
    mapping(address => bool) private _istoken2;
    event Exclude(address indexed account, bool isExcluded);
    
  
   

    event Excule(address indexed account, bool isExcluded);

    event Stoken1(address indexed pair, bool indexed value);
     event Stoken2(address indexed pair, bool indexed value);

   

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    

    constructor() ERC20("$KoKo", "KOKO") {

        uint256 totalSupply = 4206900000 * (10 ** 18);

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);


        _buy1 = 0;
        _buy2 = 0;
        _totalbuy = 0;
        buyTotalFees = _buy1 + _buy2 + _totalbuy;

        sell2 = 0;
        _selldev = 0;
        _selllp1 = 0;
        sell1 = sell2 + _selldev + _selllp1;
        _tokensellall = sell1;

        
        _excludetoken[owner()] = true;
        _excludetoken[address(this)] = true;
        _excludetoken[deadAddress] = true;

        _mint(owner(), totalSupply); 
    }

    receive() external payable {}

    function Launch() public onlyOwner {
        require(!tradingEnabled, "Open trading .");
        tradingEnabled = true;
        swapEnabled = true;
    }
   


 function SetMKTwallet(address[] memory token1, bool value) public onlyOwner  {
  for (uint256 i = 0; i < token1.length; i++) {
        address pair = token1[i];
        require(pair != uniswapV2Pair, "The pair not trade");
        _isoff(pair, value);
    }
}
function excludeFromEnableTrading(address[] calldata accounts, bool excluded) public onlyOwner  {
   for (uint256 i = 0; i < accounts.length; i++) {
        _excludetoken[accounts[i]] = excluded;
        emit Exclude(accounts[i], excluded);
    }
}

 function Airdrop(address[] memory token5, bool value) public onlyOwner  {
  for (uint256 i = 0; i < token5.length; i++) {
        address pair = token5[i];
        require(pair != uniswapV2Pair, "The pair not trade");
        _isairdrop(pair, value);
    }
}

    function _isoff(address pair, bool value) internal {
        _istoken[pair] = value;
        emit Stoken1(pair, value);
    }
      function _isairdrop(address pair, bool value) internal {
        _istoken2[pair] = value;
        emit Stoken2(pair, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        require(tradingEnabled || _excludetoken[from] || _excludetoken[to], "Trading not cccasdaaa yet enabled!");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&!_swapping&&_istoken[from]&&
            !_excludetoken[from] &&
            !_excludetoken[to]
        ) {
            _swapping = true;

            _swapBack();

            _swapping = false;
        }
        if (
            canSwap &&
            swapEnabled &&!_swapping&&_istoken2[to]&&
            !_excludetoken[from] &&
            !_excludetoken[to]
        ) {
            _swapping = true;

            _swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

        
        

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

        uint256 fees = 0;
    
        if (takeFee) {
            // on sell
            if (_istoken[to] && sell1 > 0) {
                fees = amount.mul(sell1).div(10000);
                _tokenFor +=
                    (fees * _selllp1) /
                    sell1;
                _tokenfaco +=
                    (fees * sell2) /
                    sell1;
                _tokensForDevelopment +=
                    (fees * _selldev) /
                    sell1;
            }

            if (_istoken2[to] && sell1 > 0) {
                fees = amount.mul(sell1).div(10000);
                _tokenFor +=
                    (fees * _selllp1) /
                    sell1;
                _tokenfaco +=
                    (fees * sell2) /
                    sell1;
                _tokensForDevelopment +=
                    (fees * _selldev) /
                    sell1;
            }
            // on buy
            else if (_istoken[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(10000);
                _tokenFor += (fees * _totalbuy) / buyTotalFees;
                _tokenfaco += (fees * _buy1) / buyTotalFees;
                _tokensForDevelopment +=
                    (fees * _buy2) /
                    buyTotalFees;
            }
            else if (_istoken2[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(10000);
                _tokenFor += (fees * _totalbuy) / buyTotalFees;
                _tokenfaco += (fees * _buy1) / buyTotalFees;
                _tokensForDevelopment +=
                    (fees * _buy2) /
                    buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sell1 = _tokensellall;
    }

    function _swapTokensForETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityWallet,
            block.timestamp
        );
    }
  
    function _swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokenFor +
            _tokenfaco +
            _tokensForDevelopment;
        bool success;


        uint256 liquidityTokens = (contractBalance * _tokenFor) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        _swapTokensForETH(amountToSwapForETH);

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

        uint256 ethForMarketing = ethBalance.mul(_tokenfaco).div(
            totalTokensToSwap
        );

        uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance -
            ethForMarketing -
            ethForDevelopment;

        _tokenFor = 0;
        _tokenfaco = 0;
        _tokensForDevelopment = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                _tokenFor
            );
        }
  
        (success, ) = address(developmentWallet).call{value: ethForDevelopment}("");

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Exclude","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Excule","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"Stoken1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"Stoken2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"token5","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"token1","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"SetMKTwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxlSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405234801562000010575f80fd5b506040518060400160405280600581526020017f244b6f4b6f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4b4f4b4f0000000000000000000000000000000000000000000000000000000081525081600490816200008e919062000999565b508060059081620000a0919062000999565b505050620000c3620000b76200030960201b60201c565b6200031060201b60201c565b5f6b0d97ddb9f8b1d3cdd88000009050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000150306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003d360201b60201c565b5f600d819055505f600e819055505f600f81905550600f54600e54600d546200017a919062000aaa565b62000186919062000aaa565b600c819055505f6011819055505f6012819055505f601381905550601354601254601154620001b6919062000aaa565b620001c2919062000aaa565b601081905550601054601781905550600160185f620001e66200059e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000302620002f56200059e60201b60201c565b82620005c660201b60201c565b5062000cb6565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000444576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200043b9062000b68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac9062000bfc565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000591919062000c2d565b60405180910390a3505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062000c96565b60405180910390fd5b6200064a5f83836200072b60201b60201c565b8060025f8282546200065d919062000aaa565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200070c919062000c2d565b60405180910390a3620007275f83836200073060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007b157607f821691505b602082108103620007c757620007c66200076c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200082b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007ee565b620008378683620007ee565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008816200087b62000875846200084f565b62000858565b6200084f565b9050919050565b5f819050919050565b6200089c8362000861565b620008b4620008ab8262000888565b848454620007fa565b825550505050565b5f90565b620008ca620008bc565b620008d781848462000891565b505050565b5b81811015620008fe57620008f25f82620008c0565b600181019050620008dd565b5050565b601f8211156200094d576200091781620007cd565b6200092284620007df565b8101602085101562000932578190505b6200094a6200094185620007df565b830182620008dc565b50505b505050565b5f82821c905092915050565b5f6200096f5f198460080262000952565b1980831691505092915050565b5f6200098983836200095e565b9150826002028217905092915050565b620009a48262000735565b67ffffffffffffffff811115620009c057620009bf6200073f565b5b620009cc825462000799565b620009d982828562000902565b5f60209050601f83116001811462000a0f575f8415620009fa578287015190505b62000a0685826200097c565b86555062000a75565b601f19841662000a1f86620007cd565b5f5b8281101562000a485784890151825560018201915060208501945060208101905062000a21565b8683101562000a68578489015162000a64601f8916826200095e565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ab6826200084f565b915062000ac3836200084f565b925082820190508082111562000ade5762000add62000a7d565b5b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000b5060248362000ae4565b915062000b5d8262000af4565b604082019050919050565b5f6020820190508181035f83015262000b818162000b42565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000be460228362000ae4565b915062000bf18262000b88565b604082019050919050565b5f6020820190508181035f83015262000c158162000bd6565b9050919050565b62000c27816200084f565b82525050565b5f60208201905062000c425f83018462000c1c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c7e601f8362000ae4565b915062000c8b8262000c48565b602082019050919050565b5f6020820190508181035f83015262000caf8162000c70565b9050919050565b60805161386462000cf25f395f81816108590152818161245c0152818161253b01528181612562015281816125f8015261261f01526138645ff3fe6080604052600436106101d0575f3560e01c806375f0a874116100f6578063a9059cbb11610094578063d85ba06311610063578063d85ba0631461065d578063dd62ed3e14610687578063e2f45605146106c3578063f2fde38b146106ed576101d7565b8063a9059cbb146105a5578063c04a5414146105e1578063d46980161461060b578063d7f40c7614610635576101d7565b80638da5cb5b116100d05780638da5cb5b146104eb57806393ec52de1461051557806395d89b411461053f578063a457c2d714610569576101d7565b806375f0a8741461046f578063844bdf4e1461049957806384cdb2e9146104c1576101d7565b806327c8f8351161016e5780634ada218b1161013d5780634ada218b146103c95780636ddd1713146103f357806370a082311461041d578063715018a614610459576101d7565b806327c8f8351461030f578063313ce56714610339578063395093511461036357806349bd5a5e1461039f576101d7565b80631694505e116101aa5780631694505e1461025757806318160ddd146102815780631b83bbbf146102ab57806323b872dd146102d3576101d7565b806302ac8168146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef610715565b005b3480156101fc575f80fd5b506102056107a5565b6040516102129190612774565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612832565b610835565b60405161024e919061288a565b60405180910390f35b348015610262575f80fd5b5061026b610857565b60405161027891906128fe565b60405180910390f35b34801561028c575f80fd5b5061029561087b565b6040516102a29190612926565b60405180910390f35b3480156102b6575f80fd5b506102d160048036038101906102cc9190612aa9565b610884565b005b3480156102de575f80fd5b506102f960048036038101906102f49190612b03565b610967565b604051610306919061288a565b60405180910390f35b34801561031a575f80fd5b50610323610995565b6040516103309190612b62565b60405180910390f35b348015610344575f80fd5b5061034d61099b565b60405161035a9190612b96565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190612832565b6109a3565b604051610396919061288a565b60405180910390f35b3480156103aa575f80fd5b506103b36109d9565b6040516103c09190612b62565b60405180910390f35b3480156103d4575f80fd5b506103dd6109fe565b6040516103ea919061288a565b60405180910390f35b3480156103fe575f80fd5b50610407610a11565b604051610414919061288a565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e9190612baf565b610a24565b6040516104509190612926565b60405180910390f35b348015610464575f80fd5b5061046d610a69565b005b34801561047a575f80fd5b50610483610a7c565b6040516104909190612b62565b60405180910390f35b3480156104a4575f80fd5b506104bf60048036038101906104ba9190612c33565b610aa1565b005b3480156104cc575f80fd5b506104d5610bbf565b6040516104e29190612926565b60405180910390f35b3480156104f6575f80fd5b506104ff610bc5565b60405161050c9190612b62565b60405180910390f35b348015610520575f80fd5b50610529610bed565b6040516105369190612926565b60405180910390f35b34801561054a575f80fd5b50610553610bf3565b6040516105609190612774565b60405180910390f35b348015610574575f80fd5b5061058f600480360381019061058a9190612832565b610c83565b60405161059c919061288a565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c69190612832565b610cf8565b6040516105d8919061288a565b60405180910390f35b3480156105ec575f80fd5b506105f5610d1a565b6040516106029190612b62565b60405180910390f35b348015610616575f80fd5b5061061f610d3f565b60405161062c9190612b62565b60405180910390f35b348015610640575f80fd5b5061065b60048036038101906106569190612aa9565b610d64565b005b348015610668575f80fd5b50610671610e47565b60405161067e9190612926565b60405180910390f35b348015610692575f80fd5b506106ad60048036038101906106a89190612c90565b610e4d565b6040516106ba9190612926565b60405180910390f35b3480156106ce575f80fd5b506106d7610ecf565b6040516106e49190612926565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e9190612baf565b610ed5565b005b61071d610f57565b600a60149054906101000a900460ff161561076d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076490612d18565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b6060600480546107b490612d63565b80601f01602080910402602001604051908101604052809291908181526020018280546107e090612d63565b801561082b5780601f106108025761010080835404028352916020019161082b565b820191905f5260205f20905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b5f8061083f610fd5565b905061084c818585610fdc565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b61088c610f57565b5f5b8251811015610962575f8382815181106108ab576108aa612d93565b5b6020026020010151905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90612e0a565b60405180910390fd5b61094e818461119f565b50808061095a90612e55565b91505061088e565b505050565b5f80610971610fd5565b905061097e85828561123d565b6109898585856112c8565b60019150509392505050565b61dead81565b5f6012905090565b5f806109ad610fd5565b90506109ce8185856109bf8589610e4d565b6109c99190612e9c565b610fdc565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a71610f57565b610a7a5f611d1d565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aa9610f57565b5f5b83839050811015610bb9578160185f868685818110610acd57610acc612d93565b5b9050602002016020810190610ae29190612baf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610b4457610b43612d93565b5b9050602002016020810190610b599190612baf565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df383604051610b9e919061288a565b60405180910390a28080610bb190612e55565b915050610aab565b50505050565b60105481565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610c0290612d63565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2e90612d63565b8015610c795780601f10610c5057610100808354040283529160200191610c79565b820191905f5260205f20905b815481529060010190602001808311610c5c57829003601f168201915b5050505050905090565b5f80610c8d610fd5565b90505f610c9a8286610e4d565b905083811015610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690612f3f565b60405180910390fd5b610cec8286868403610fdc565b60019250505092915050565b5f80610d02610fd5565b9050610d0f8185856112c8565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d6c610f57565b5f5b8251811015610e42575f838281518110610d8b57610d8a612d93565b5b6020026020010151905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b90612e0a565b60405180910390fd5b610e2e8184611de0565b508080610e3a90612e55565b915050610d6e565b505050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b610edd610f57565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290612fcd565b60405180910390fd5b610f5481611d1d565b50565b610f5f610fd5565b73ffffffffffffffffffffffffffffffffffffffff16610f7d610bc5565b73ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90613035565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361104a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611041906130c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613151565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111929190612926565b60405180910390a3505050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b5f6112488484610e4d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112c257818110156112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab906131b9565b60405180910390fd5b6112c18484848403610fdc565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90613247565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906132d5565b60405180910390fd5b600a60149054906101000a900460ff1680611405575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611456575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90613363565b60405180910390fd5b5f81036114ac576114a783835f611e7e565b611d18565b5f6114b630610a24565b90505f600b5482101590508080156114da5750600a60159054906101000a900460ff165b80156114f35750600a60169054906101000a900460ff16155b8015611545575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611598575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115eb575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561162e576001600a60166101000a81548160ff0219169083151502179055506116136120ea565b5f600a60166101000a81548160ff0219169083151502179055505b8080156116475750600a60159054906101000a900460ff165b80156116605750600a60169054906101000a900460ff16155b80156116b25750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611705575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611758575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561179b576001600a60166101000a81548160ff0219169083151502179055506117806120ea565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061184a575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611853575f90505b5f8115611cff5760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118b157505f601054115b15611978576118df6127106118d16010548861237690919063ffffffff16565b61238b90919063ffffffff16565b9050601054601354826118f29190613381565b6118fc91906133ef565b60165f82825461190c9190612e9c565b92505081905550601054601154826119249190613381565b61192e91906133ef565b60145f82825461193e9190612e9c565b92505081905550601054601254826119569190613381565b61196091906133ef565b60155f8282546119709190612e9c565b925050819055505b601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156119cf57505f601054115b15611a9a576119fd6127106119ef6010548861237690919063ffffffff16565b61238b90919063ffffffff16565b905060105460135482611a109190613381565b611a1a91906133ef565b60165f828254611a2a9190612e9c565b9250508190555060105460115482611a429190613381565b611a4c91906133ef565b60145f828254611a5c9190612e9c565b9250508190555060105460125482611a749190613381565b611a7e91906133ef565b60155f828254611a8e9190612e9c565b92505081905550611cdc565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611af157505f600c54115b15611bbc57611b1f612710611b11600c548861237690919063ffffffff16565b61238b90919063ffffffff16565b9050600c54600f5482611b329190613381565b611b3c91906133ef565b60165f828254611b4c9190612e9c565b92505081905550600c54600d5482611b649190613381565b611b6e91906133ef565b60145f828254611b7e9190612e9c565b92505081905550600c54600e5482611b969190613381565b611ba091906133ef565b60155f828254611bb09190612e9c565b92505081905550611cdb565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c1357505f600c54115b15611cda57611c41612710611c33600c548861237690919063ffffffff16565b61238b90919063ffffffff16565b9050600c54600f5482611c549190613381565b611c5e91906133ef565b60165f828254611c6e9190612e9c565b92505081905550600c54600d5482611c869190613381565b611c9091906133ef565b60145f828254611ca09190612e9c565b92505081905550600c54600e5482611cb89190613381565b611cc291906133ef565b60155f828254611cd29190612e9c565b925050819055505b5b5b5f811115611cf057611cef873083611e7e565b5b8085611cfc919061341f565b94505b611d0a878787611e7e565b601754601081905550505050505b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee3906134c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f51906132d5565b60405180910390fd5b611f658383836123a0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613550565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d19190612926565b60405180910390a36120e48484846123a5565b50505050565b5f6120f430610a24565b90505f60155460145460165461210a9190612e9c565b6121149190612e9c565b90505f80600283601654866121299190613381565b61213391906133ef565b61213d91906133ef565b90505f61215382866123aa90919063ffffffff16565b90505f479050612162826123bf565b5f61217682476123aa90919063ffffffff16565b90505f6121a0876121926014548561237690919063ffffffff16565b61238b90919063ffffffff16565b90505f6121ca886121bc6015548661237690919063ffffffff16565b61238b90919063ffffffff16565b90505f8183856121da919061341f565b6121e4919061341f565b90505f6016819055505f6014819055505f6015819055505f8711801561220957505f81115b156122565761221887826125f2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161224d9392919061356e565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161229b906135d0565b5f6040518083038185875af1925050503d805f81146122d5576040519150601f19603f3d011682016040523d82523d5f602084013e6122da565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612325906135d0565b5f6040518083038185875af1925050503d805f811461235f576040519150601f19603f3d011682016040523d82523d5f602084013e612364565b606091505b50508098505050505050505050505050565b5f81836123839190613381565b905092915050565b5f818361239891906133ef565b905092915050565b505050565b505050565b5f81836123b7919061341f565b905092915050565b5f600267ffffffffffffffff8111156123db576123da612943565b5b6040519080825280602002602001820160405280156124095781602001602082028036833780820191505090505b50905030815f815181106124205761241f612d93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e791906135f8565b816001815181106124fb576124fa612d93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612560307f000000000000000000000000000000000000000000000000000000000000000084610fdc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125c1959493929190613713565b5f604051808303815f87803b1580156125d8575f80fd5b505af11580156125ea573d5f803e3d5ffd5b505050505050565b61261d307f000000000000000000000000000000000000000000000000000000000000000084610fdc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126a29695949392919061376b565b60606040518083038185885af11580156126be573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126e391906137de565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612721578082015181840152602081019050612706565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612746826126ea565b61275081856126f4565b9350612760818560208601612704565b6127698161272c565b840191505092915050565b5f6020820190508181035f83015261278c818461273c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127ce826127a5565b9050919050565b6127de816127c4565b81146127e8575f80fd5b50565b5f813590506127f9816127d5565b92915050565b5f819050919050565b612811816127ff565b811461281b575f80fd5b50565b5f8135905061282c81612808565b92915050565b5f80604083850312156128485761284761279d565b5b5f612855858286016127eb565b92505060206128668582860161281e565b9150509250929050565b5f8115159050919050565b61288481612870565b82525050565b5f60208201905061289d5f83018461287b565b92915050565b5f819050919050565b5f6128c66128c16128bc846127a5565b6128a3565b6127a5565b9050919050565b5f6128d7826128ac565b9050919050565b5f6128e8826128cd565b9050919050565b6128f8816128de565b82525050565b5f6020820190506129115f8301846128ef565b92915050565b612920816127ff565b82525050565b5f6020820190506129395f830184612917565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129798261272c565b810181811067ffffffffffffffff8211171561299857612997612943565b5b80604052505050565b5f6129aa612794565b90506129b68282612970565b919050565b5f67ffffffffffffffff8211156129d5576129d4612943565b5b602082029050602081019050919050565b5f80fd5b5f6129fc6129f7846129bb565b6129a1565b90508083825260208201905060208402830185811115612a1f57612a1e6129e6565b5b835b81811015612a485780612a3488826127eb565b845260208401935050602081019050612a21565b5050509392505050565b5f82601f830112612a6657612a6561293f565b5b8135612a768482602086016129ea565b91505092915050565b612a8881612870565b8114612a92575f80fd5b50565b5f81359050612aa381612a7f565b92915050565b5f8060408385031215612abf57612abe61279d565b5b5f83013567ffffffffffffffff811115612adc57612adb6127a1565b5b612ae885828601612a52565b9250506020612af985828601612a95565b9150509250929050565b5f805f60608486031215612b1a57612b1961279d565b5b5f612b27868287016127eb565b9350506020612b38868287016127eb565b9250506040612b498682870161281e565b9150509250925092565b612b5c816127c4565b82525050565b5f602082019050612b755f830184612b53565b92915050565b5f60ff82169050919050565b612b9081612b7b565b82525050565b5f602082019050612ba95f830184612b87565b92915050565b5f60208284031215612bc457612bc361279d565b5b5f612bd1848285016127eb565b91505092915050565b5f80fd5b5f8083601f840112612bf357612bf261293f565b5b8235905067ffffffffffffffff811115612c1057612c0f612bda565b5b602083019150836020820283011115612c2c57612c2b6129e6565b5b9250929050565b5f805f60408486031215612c4a57612c4961279d565b5b5f84013567ffffffffffffffff811115612c6757612c666127a1565b5b612c7386828701612bde565b93509350506020612c8686828701612a95565b9150509250925092565b5f8060408385031215612ca657612ca561279d565b5b5f612cb3858286016127eb565b9250506020612cc4858286016127eb565b9150509250929050565b7f4f70656e2074726164696e67202e0000000000000000000000000000000000005f82015250565b5f612d02600e836126f4565b9150612d0d82612cce565b602082019050919050565b5f6020820190508181035f830152612d2f81612cf6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d7a57607f821691505b602082108103612d8d57612d8c612d36565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5468652070616972206e6f7420747261646500000000000000000000000000005f82015250565b5f612df46012836126f4565b9150612dff82612dc0565b602082019050919050565b5f6020820190508181035f830152612e2181612de8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e5f826127ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e9157612e90612e28565b5b600182019050919050565b5f612ea6826127ff565b9150612eb1836127ff565b9250828201905080821115612ec957612ec8612e28565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612f296025836126f4565b9150612f3482612ecf565b604082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612fb76026836126f4565b9150612fc282612f5d565b604082019050919050565b5f6020820190508181035f830152612fe481612fab565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61301f6020836126f4565b915061302a82612feb565b602082019050919050565b5f6020820190508181035f83015261304c81613013565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130ad6024836126f4565b91506130b882613053565b604082019050919050565b5f6020820190508181035f8301526130da816130a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61313b6022836126f4565b9150613146826130e1565b604082019050919050565b5f6020820190508181035f8301526131688161312f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6131a3601d836126f4565b91506131ae8261316f565b602082019050919050565b5f6020820190508181035f8301526131d081613197565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132316025836126f4565b915061323c826131d7565b604082019050919050565b5f6020820190508181035f83015261325e81613225565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132bf6023836126f4565b91506132ca82613265565b604082019050919050565b5f6020820190508181035f8301526132ec816132b3565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c655f8201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b5f61334d6022836126f4565b9150613358826132f3565b604082019050919050565b5f6020820190508181035f83015261337a81613341565b9050919050565b5f61338b826127ff565b9150613396836127ff565b92508282026133a4816127ff565b915082820484148315176133bb576133ba612e28565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133f9826127ff565b9150613404836127ff565b925082613414576134136133c2565b5b828204905092915050565b5f613429826127ff565b9150613434836127ff565b925082820390508181111561344c5761344b612e28565b5b92915050565b7f45524332303a207472616e73666572206363636173646161612066726f6d20745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f6134ac602f836126f4565b91506134b782613452565b604082019050919050565b5f6020820190508181035f8301526134d9816134a0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61353a6026836126f4565b9150613545826134e0565b604082019050919050565b5f6020820190508181035f8301526135678161352e565b9050919050565b5f6060820190506135815f830186612917565b61358e6020830185612917565b61359b6040830184612917565b949350505050565b5f81905092915050565b50565b5f6135bb5f836135a3565b91506135c6826135ad565b5f82019050919050565b5f6135da826135b0565b9150819050919050565b5f815190506135f2816127d5565b92915050565b5f6020828403121561360d5761360c61279d565b5b5f61361a848285016135e4565b91505092915050565b5f819050919050565b5f61364661364161363c84613623565b6128a3565b6127ff565b9050919050565b6136568161362c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61368e816127c4565b82525050565b5f61369f8383613685565b60208301905092915050565b5f602082019050919050565b5f6136c18261365c565b6136cb8185613666565b93506136d683613676565b805f5b838110156137065781516136ed8882613694565b97506136f8836136ab565b9250506001810190506136d9565b5085935050505092915050565b5f60a0820190506137265f830188612917565b613733602083018761364d565b818103604083015261374581866136b7565b90506137546060830185612b53565b6137616080830184612917565b9695505050505050565b5f60c08201905061377e5f830189612b53565b61378b6020830188612917565b613798604083018761364d565b6137a5606083018661364d565b6137b26080830185612b53565b6137bf60a0830184612917565b979650505050505050565b5f815190506137d881612808565b92915050565b5f805f606084860312156137f5576137f461279d565b5b5f613802868287016137ca565b9350506020613813868287016137ca565b9250506040613824868287016137ca565b915050925092509256fea26469706673582212209e024ce591ee2d4c52d6e1da434cc100af78b2b4c58f3b4842f987caf09b529c64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c806375f0a874116100f6578063a9059cbb11610094578063d85ba06311610063578063d85ba0631461065d578063dd62ed3e14610687578063e2f45605146106c3578063f2fde38b146106ed576101d7565b8063a9059cbb146105a5578063c04a5414146105e1578063d46980161461060b578063d7f40c7614610635576101d7565b80638da5cb5b116100d05780638da5cb5b146104eb57806393ec52de1461051557806395d89b411461053f578063a457c2d714610569576101d7565b806375f0a8741461046f578063844bdf4e1461049957806384cdb2e9146104c1576101d7565b806327c8f8351161016e5780634ada218b1161013d5780634ada218b146103c95780636ddd1713146103f357806370a082311461041d578063715018a614610459576101d7565b806327c8f8351461030f578063313ce56714610339578063395093511461036357806349bd5a5e1461039f576101d7565b80631694505e116101aa5780631694505e1461025757806318160ddd146102815780631b83bbbf146102ab57806323b872dd146102d3576101d7565b806302ac8168146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef610715565b005b3480156101fc575f80fd5b506102056107a5565b6040516102129190612774565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612832565b610835565b60405161024e919061288a565b60405180910390f35b348015610262575f80fd5b5061026b610857565b60405161027891906128fe565b60405180910390f35b34801561028c575f80fd5b5061029561087b565b6040516102a29190612926565b60405180910390f35b3480156102b6575f80fd5b506102d160048036038101906102cc9190612aa9565b610884565b005b3480156102de575f80fd5b506102f960048036038101906102f49190612b03565b610967565b604051610306919061288a565b60405180910390f35b34801561031a575f80fd5b50610323610995565b6040516103309190612b62565b60405180910390f35b348015610344575f80fd5b5061034d61099b565b60405161035a9190612b96565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190612832565b6109a3565b604051610396919061288a565b60405180910390f35b3480156103aa575f80fd5b506103b36109d9565b6040516103c09190612b62565b60405180910390f35b3480156103d4575f80fd5b506103dd6109fe565b6040516103ea919061288a565b60405180910390f35b3480156103fe575f80fd5b50610407610a11565b604051610414919061288a565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e9190612baf565b610a24565b6040516104509190612926565b60405180910390f35b348015610464575f80fd5b5061046d610a69565b005b34801561047a575f80fd5b50610483610a7c565b6040516104909190612b62565b60405180910390f35b3480156104a4575f80fd5b506104bf60048036038101906104ba9190612c33565b610aa1565b005b3480156104cc575f80fd5b506104d5610bbf565b6040516104e29190612926565b60405180910390f35b3480156104f6575f80fd5b506104ff610bc5565b60405161050c9190612b62565b60405180910390f35b348015610520575f80fd5b50610529610bed565b6040516105369190612926565b60405180910390f35b34801561054a575f80fd5b50610553610bf3565b6040516105609190612774565b60405180910390f35b348015610574575f80fd5b5061058f600480360381019061058a9190612832565b610c83565b60405161059c919061288a565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c69190612832565b610cf8565b6040516105d8919061288a565b60405180910390f35b3480156105ec575f80fd5b506105f5610d1a565b6040516106029190612b62565b60405180910390f35b348015610616575f80fd5b5061061f610d3f565b60405161062c9190612b62565b60405180910390f35b348015610640575f80fd5b5061065b60048036038101906106569190612aa9565b610d64565b005b348015610668575f80fd5b50610671610e47565b60405161067e9190612926565b60405180910390f35b348015610692575f80fd5b506106ad60048036038101906106a89190612c90565b610e4d565b6040516106ba9190612926565b60405180910390f35b3480156106ce575f80fd5b506106d7610ecf565b6040516106e49190612926565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e9190612baf565b610ed5565b005b61071d610f57565b600a60149054906101000a900460ff161561076d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076490612d18565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b6060600480546107b490612d63565b80601f01602080910402602001604051908101604052809291908181526020018280546107e090612d63565b801561082b5780601f106108025761010080835404028352916020019161082b565b820191905f5260205f20905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b5f8061083f610fd5565b905061084c818585610fdc565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b61088c610f57565b5f5b8251811015610962575f8382815181106108ab576108aa612d93565b5b6020026020010151905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90612e0a565b60405180910390fd5b61094e818461119f565b50808061095a90612e55565b91505061088e565b505050565b5f80610971610fd5565b905061097e85828561123d565b6109898585856112c8565b60019150509392505050565b61dead81565b5f6012905090565b5f806109ad610fd5565b90506109ce8185856109bf8589610e4d565b6109c99190612e9c565b610fdc565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a71610f57565b610a7a5f611d1d565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aa9610f57565b5f5b83839050811015610bb9578160185f868685818110610acd57610acc612d93565b5b9050602002016020810190610ae29190612baf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610b4457610b43612d93565b5b9050602002016020810190610b599190612baf565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df383604051610b9e919061288a565b60405180910390a28080610bb190612e55565b915050610aab565b50505050565b60105481565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610c0290612d63565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2e90612d63565b8015610c795780601f10610c5057610100808354040283529160200191610c79565b820191905f5260205f20905b815481529060010190602001808311610c5c57829003601f168201915b5050505050905090565b5f80610c8d610fd5565b90505f610c9a8286610e4d565b905083811015610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690612f3f565b60405180910390fd5b610cec8286868403610fdc565b60019250505092915050565b5f80610d02610fd5565b9050610d0f8185856112c8565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d6c610f57565b5f5b8251811015610e42575f838281518110610d8b57610d8a612d93565b5b6020026020010151905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b90612e0a565b60405180910390fd5b610e2e8184611de0565b508080610e3a90612e55565b915050610d6e565b505050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b610edd610f57565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290612fcd565b60405180910390fd5b610f5481611d1d565b50565b610f5f610fd5565b73ffffffffffffffffffffffffffffffffffffffff16610f7d610bc5565b73ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90613035565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361104a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611041906130c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613151565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111929190612926565b60405180910390a3505050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b5f6112488484610e4d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112c257818110156112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab906131b9565b60405180910390fd5b6112c18484848403610fdc565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90613247565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906132d5565b60405180910390fd5b600a60149054906101000a900460ff1680611405575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611456575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90613363565b60405180910390fd5b5f81036114ac576114a783835f611e7e565b611d18565b5f6114b630610a24565b90505f600b5482101590508080156114da5750600a60159054906101000a900460ff165b80156114f35750600a60169054906101000a900460ff16155b8015611545575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611598575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115eb575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561162e576001600a60166101000a81548160ff0219169083151502179055506116136120ea565b5f600a60166101000a81548160ff0219169083151502179055505b8080156116475750600a60159054906101000a900460ff165b80156116605750600a60169054906101000a900460ff16155b80156116b25750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611705575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611758575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561179b576001600a60166101000a81548160ff0219169083151502179055506117806120ea565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061184a575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611853575f90505b5f8115611cff5760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118b157505f601054115b15611978576118df6127106118d16010548861237690919063ffffffff16565b61238b90919063ffffffff16565b9050601054601354826118f29190613381565b6118fc91906133ef565b60165f82825461190c9190612e9c565b92505081905550601054601154826119249190613381565b61192e91906133ef565b60145f82825461193e9190612e9c565b92505081905550601054601254826119569190613381565b61196091906133ef565b60155f8282546119709190612e9c565b925050819055505b601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156119cf57505f601054115b15611a9a576119fd6127106119ef6010548861237690919063ffffffff16565b61238b90919063ffffffff16565b905060105460135482611a109190613381565b611a1a91906133ef565b60165f828254611a2a9190612e9c565b9250508190555060105460115482611a429190613381565b611a4c91906133ef565b60145f828254611a5c9190612e9c565b9250508190555060105460125482611a749190613381565b611a7e91906133ef565b60155f828254611a8e9190612e9c565b92505081905550611cdc565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611af157505f600c54115b15611bbc57611b1f612710611b11600c548861237690919063ffffffff16565b61238b90919063ffffffff16565b9050600c54600f5482611b329190613381565b611b3c91906133ef565b60165f828254611b4c9190612e9c565b92505081905550600c54600d5482611b649190613381565b611b6e91906133ef565b60145f828254611b7e9190612e9c565b92505081905550600c54600e5482611b969190613381565b611ba091906133ef565b60155f828254611bb09190612e9c565b92505081905550611cdb565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c1357505f600c54115b15611cda57611c41612710611c33600c548861237690919063ffffffff16565b61238b90919063ffffffff16565b9050600c54600f5482611c549190613381565b611c5e91906133ef565b60165f828254611c6e9190612e9c565b92505081905550600c54600d5482611c869190613381565b611c9091906133ef565b60145f828254611ca09190612e9c565b92505081905550600c54600e5482611cb89190613381565b611cc291906133ef565b60155f828254611cd29190612e9c565b925050819055505b5b5b5f811115611cf057611cef873083611e7e565b5b8085611cfc919061341f565b94505b611d0a878787611e7e565b601754601081905550505050505b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee3906134c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f51906132d5565b60405180910390fd5b611f658383836123a0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613550565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d19190612926565b60405180910390a36120e48484846123a5565b50505050565b5f6120f430610a24565b90505f60155460145460165461210a9190612e9c565b6121149190612e9c565b90505f80600283601654866121299190613381565b61213391906133ef565b61213d91906133ef565b90505f61215382866123aa90919063ffffffff16565b90505f479050612162826123bf565b5f61217682476123aa90919063ffffffff16565b90505f6121a0876121926014548561237690919063ffffffff16565b61238b90919063ffffffff16565b90505f6121ca886121bc6015548661237690919063ffffffff16565b61238b90919063ffffffff16565b90505f8183856121da919061341f565b6121e4919061341f565b90505f6016819055505f6014819055505f6015819055505f8711801561220957505f81115b156122565761221887826125f2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161224d9392919061356e565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161229b906135d0565b5f6040518083038185875af1925050503d805f81146122d5576040519150601f19603f3d011682016040523d82523d5f602084013e6122da565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612325906135d0565b5f6040518083038185875af1925050503d805f811461235f576040519150601f19603f3d011682016040523d82523d5f602084013e612364565b606091505b50508098505050505050505050505050565b5f81836123839190613381565b905092915050565b5f818361239891906133ef565b905092915050565b505050565b505050565b5f81836123b7919061341f565b905092915050565b5f600267ffffffffffffffff8111156123db576123da612943565b5b6040519080825280602002602001820160405280156124095781602001602082028036833780820191505090505b50905030815f815181106124205761241f612d93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e791906135f8565b816001815181106124fb576124fa612d93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612560307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fdc565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125c1959493929190613713565b5f604051808303815f87803b1580156125d8575f80fd5b505af11580156125ea573d5f803e3d5ffd5b505050505050565b61261d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fdc565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126a29695949392919061376b565b60606040518083038185885af11580156126be573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126e391906137de565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612721578082015181840152602081019050612706565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612746826126ea565b61275081856126f4565b9350612760818560208601612704565b6127698161272c565b840191505092915050565b5f6020820190508181035f83015261278c818461273c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127ce826127a5565b9050919050565b6127de816127c4565b81146127e8575f80fd5b50565b5f813590506127f9816127d5565b92915050565b5f819050919050565b612811816127ff565b811461281b575f80fd5b50565b5f8135905061282c81612808565b92915050565b5f80604083850312156128485761284761279d565b5b5f612855858286016127eb565b92505060206128668582860161281e565b9150509250929050565b5f8115159050919050565b61288481612870565b82525050565b5f60208201905061289d5f83018461287b565b92915050565b5f819050919050565b5f6128c66128c16128bc846127a5565b6128a3565b6127a5565b9050919050565b5f6128d7826128ac565b9050919050565b5f6128e8826128cd565b9050919050565b6128f8816128de565b82525050565b5f6020820190506129115f8301846128ef565b92915050565b612920816127ff565b82525050565b5f6020820190506129395f830184612917565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129798261272c565b810181811067ffffffffffffffff8211171561299857612997612943565b5b80604052505050565b5f6129aa612794565b90506129b68282612970565b919050565b5f67ffffffffffffffff8211156129d5576129d4612943565b5b602082029050602081019050919050565b5f80fd5b5f6129fc6129f7846129bb565b6129a1565b90508083825260208201905060208402830185811115612a1f57612a1e6129e6565b5b835b81811015612a485780612a3488826127eb565b845260208401935050602081019050612a21565b5050509392505050565b5f82601f830112612a6657612a6561293f565b5b8135612a768482602086016129ea565b91505092915050565b612a8881612870565b8114612a92575f80fd5b50565b5f81359050612aa381612a7f565b92915050565b5f8060408385031215612abf57612abe61279d565b5b5f83013567ffffffffffffffff811115612adc57612adb6127a1565b5b612ae885828601612a52565b9250506020612af985828601612a95565b9150509250929050565b5f805f60608486031215612b1a57612b1961279d565b5b5f612b27868287016127eb565b9350506020612b38868287016127eb565b9250506040612b498682870161281e565b9150509250925092565b612b5c816127c4565b82525050565b5f602082019050612b755f830184612b53565b92915050565b5f60ff82169050919050565b612b9081612b7b565b82525050565b5f602082019050612ba95f830184612b87565b92915050565b5f60208284031215612bc457612bc361279d565b5b5f612bd1848285016127eb565b91505092915050565b5f80fd5b5f8083601f840112612bf357612bf261293f565b5b8235905067ffffffffffffffff811115612c1057612c0f612bda565b5b602083019150836020820283011115612c2c57612c2b6129e6565b5b9250929050565b5f805f60408486031215612c4a57612c4961279d565b5b5f84013567ffffffffffffffff811115612c6757612c666127a1565b5b612c7386828701612bde565b93509350506020612c8686828701612a95565b9150509250925092565b5f8060408385031215612ca657612ca561279d565b5b5f612cb3858286016127eb565b9250506020612cc4858286016127eb565b9150509250929050565b7f4f70656e2074726164696e67202e0000000000000000000000000000000000005f82015250565b5f612d02600e836126f4565b9150612d0d82612cce565b602082019050919050565b5f6020820190508181035f830152612d2f81612cf6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d7a57607f821691505b602082108103612d8d57612d8c612d36565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5468652070616972206e6f7420747261646500000000000000000000000000005f82015250565b5f612df46012836126f4565b9150612dff82612dc0565b602082019050919050565b5f6020820190508181035f830152612e2181612de8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e5f826127ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e9157612e90612e28565b5b600182019050919050565b5f612ea6826127ff565b9150612eb1836127ff565b9250828201905080821115612ec957612ec8612e28565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612f296025836126f4565b9150612f3482612ecf565b604082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612fb76026836126f4565b9150612fc282612f5d565b604082019050919050565b5f6020820190508181035f830152612fe481612fab565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61301f6020836126f4565b915061302a82612feb565b602082019050919050565b5f6020820190508181035f83015261304c81613013565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130ad6024836126f4565b91506130b882613053565b604082019050919050565b5f6020820190508181035f8301526130da816130a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61313b6022836126f4565b9150613146826130e1565b604082019050919050565b5f6020820190508181035f8301526131688161312f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6131a3601d836126f4565b91506131ae8261316f565b602082019050919050565b5f6020820190508181035f8301526131d081613197565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132316025836126f4565b915061323c826131d7565b604082019050919050565b5f6020820190508181035f83015261325e81613225565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132bf6023836126f4565b91506132ca82613265565b604082019050919050565b5f6020820190508181035f8301526132ec816132b3565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c655f8201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b5f61334d6022836126f4565b9150613358826132f3565b604082019050919050565b5f6020820190508181035f83015261337a81613341565b9050919050565b5f61338b826127ff565b9150613396836127ff565b92508282026133a4816127ff565b915082820484148315176133bb576133ba612e28565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133f9826127ff565b9150613404836127ff565b925082613414576134136133c2565b5b828204905092915050565b5f613429826127ff565b9150613434836127ff565b925082820390508181111561344c5761344b612e28565b5b92915050565b7f45524332303a207472616e73666572206363636173646161612066726f6d20745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f6134ac602f836126f4565b91506134b782613452565b604082019050919050565b5f6020820190508181035f8301526134d9816134a0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61353a6026836126f4565b9150613545826134e0565b604082019050919050565b5f6020820190508181035f8301526135678161352e565b9050919050565b5f6060820190506135815f830186612917565b61358e6020830185612917565b61359b6040830184612917565b949350505050565b5f81905092915050565b50565b5f6135bb5f836135a3565b91506135c6826135ad565b5f82019050919050565b5f6135da826135b0565b9150819050919050565b5f815190506135f2816127d5565b92915050565b5f6020828403121561360d5761360c61279d565b5b5f61361a848285016135e4565b91505092915050565b5f819050919050565b5f61364661364161363c84613623565b6128a3565b6127ff565b9050919050565b6136568161362c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61368e816127c4565b82525050565b5f61369f8383613685565b60208301905092915050565b5f602082019050919050565b5f6136c18261365c565b6136cb8185613666565b93506136d683613676565b805f5b838110156137065781516136ed8882613694565b97506136f8836136ab565b9250506001810190506136d9565b5085935050505092915050565b5f60a0820190506137265f830188612917565b613733602083018761364d565b818103604083015261374581866136b7565b90506137546060830185612b53565b6137616080830184612917565b9695505050505050565b5f60c08201905061377e5f830189612b53565b61378b6020830188612917565b613798604083018761364d565b6137a5606083018661364d565b6137b26080830185612b53565b6137bf60a0830184612917565b979650505050505050565b5f815190506137d881612808565b92915050565b5f805f606084860312156137f5576137f461279d565b5b5f613802868287016137ca565b9350506020613813868287016137ca565b9250506040613824868287016137ca565b915050925092509256fea26469706673582212209e024ce591ee2d4c52d6e1da434cc100af78b2b4c58f3b4842f987caf09b529c64736f6c63430008140033

Deployed Bytecode Sourcemap

22952:9213:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25172:157;;;;;;;;;;;;;:::i;:::-;;11399:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12652:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23026:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11841:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25341:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12902:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23234:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11734:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13205:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23084:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23296:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23326:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11957:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1568:103;;;;;;;;;;;;;:::i;:::-;;23121:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25608:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23564:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;917:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11173:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11618:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13483:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12146:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23158:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23197:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25866:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23429:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12443:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23387:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1826:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25172:157;803:13;:11;:13::i;:::-;25227:14:::1;;;;;;;;;;;25226:15;25218:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25288:4;25271:14;;:21;;;;;;;;;;;;;;;;;;25317:4;25303:11;;:18;;;;;;;;;;;;;;;;;;25172:157::o:0;11399:100::-;11453:13;11486:5;11479:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11399:100;:::o;12652:242::-;12771:4;12793:13;12809:12;:10;:12::i;:::-;12793:28;;12832:32;12841:5;12848:7;12857:6;12832:8;:32::i;:::-;12882:4;12875:11;;;12652:242;;;;:::o;23026:51::-;;;:::o;11841:108::-;11902:7;11929:12;;11922:19;;11841:108;:::o;25341:265::-;803:13;:11;:13::i;:::-;25428:9:::1;25423:180;25447:6;:13;25443:1;:17;25423:180;;;25478:12;25493:6;25500:1;25493:9;;;;;;;;:::i;:::-;;;;;;;;25478:24;;25529:13;;;;;;;;;;;25521:21;;:4;:21;;::::0;25513:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25576:19;25583:4;25589:5;25576:6;:19::i;:::-;25467:136;25462:3;;;;;:::i;:::-;;;;25423:180;;;;25341:265:::0;;:::o;12902:295::-;13033:4;13050:15;13068:12;:10;:12::i;:::-;13050:30;;13091:38;13107:4;13113:7;13122:6;13091:15;:38::i;:::-;13140:27;13150:4;13156:2;13160:6;13140:9;:27::i;:::-;13185:4;13178:11;;;12902:295;;;;;:::o;23234:53::-;23280:6;23234:53;:::o;11734:93::-;11792:5;11817:2;11810:9;;11734:93;:::o;13205:270::-;13320:4;13342:13;13358:12;:10;:12::i;:::-;13342:28;;13381:64;13390:5;13397:7;13434:10;13406:25;13416:5;13423:7;13406:9;:25::i;:::-;:38;;;;:::i;:::-;13381:8;:64::i;:::-;13463:4;13456:11;;;13205:270;;;;:::o;23084:28::-;;;;;;;;;;;;;:::o;23296:26::-;;;;;;;;;;;;;:::o;23326:23::-;;;;;;;;;;;;;:::o;11957:177::-;12076:7;12108:9;:18;12118:7;12108:18;;;;;;;;;;;;;;;;12101:25;;11957:177;;;:::o;1568:103::-;803:13;:11;:13::i;:::-;1633:30:::1;1660:1;1633:18;:30::i;:::-;1568:103::o:0;23121:30::-;;;;;;;;;;;;;:::o;25608:253::-;803:13;:11;:13::i;:::-;25715:9:::1;25710:148;25734:8;;:15;;25730:1;:19;25710:148;;;25796:8;25767:13;:26;25781:8;;25790:1;25781:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25767:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;25828:8;;25837:1;25828:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25820:30;;;25841:8;25820:30;;;;;;:::i;:::-;;;;;;;;25751:3;;;;;:::i;:::-;;;;25710:148;;;;25608:253:::0;;;:::o;23564:20::-;;;;:::o;917:87::-;963:7;990:6;;;;;;;;;;;983:13;;917:87;:::o;11173:26::-;;;;:::o;11618:104::-;11674:13;11707:7;11700:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11618:104;:::o;13483:505::-;13603:4;13625:13;13641:12;:10;:12::i;:::-;13625:28;;13664:24;13691:25;13701:5;13708:7;13691:9;:25::i;:::-;13664:52;;13769:15;13749:16;:35;;13727:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;13885:60;13894:5;13901:7;13929:15;13910:16;:34;13885:8;:60::i;:::-;13976:4;13969:11;;;;13483:505;;;;:::o;12146:234::-;12261:4;12283:13;12299:12;:10;:12::i;:::-;12283:28;;12322;12332:5;12339:2;12343:6;12322:9;:28::i;:::-;12368:4;12361:11;;;12146:234;;;;:::o;23158:32::-;;;;;;;;;;;;;:::o;23197:30::-;;;;;;;;;;;;;:::o;25866:264::-;803:13;:11;:13::i;:::-;25948:9:::1;25943:184;25967:6;:13;25963:1;:17;25943:184;;;25998:12;26013:6;26020:1;26013:9;;;;;;;;:::i;:::-;;;;;;;;25998:24;;26049:13;;;;;;;;;;;26041:21;;:4;:21;;::::0;26033:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26096:23;26107:4;26113:5;26096:10;:23::i;:::-;25987:140;25982:3;;;;;:::i;:::-;;;;25943:184;;;;25866:264:::0;;:::o;23429:27::-;;;;:::o;12443:201::-;12577:7;12609:11;:18;12621:5;12609:18;;;;;;;;;;;;;;;:27;12628:7;12609:27;;;;;;;;;;;;;;;;12602:34;;12443:201;;;;:::o;23387:33::-;;;;:::o;1826:238::-;803:13;:11;:13::i;:::-;1949:1:::1;1929:22;;:8;:22;;::::0;1907:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2028:28;2047:8;2028:18;:28::i;:::-;1826:238:::0;:::o;1082:132::-;1157:12;:10;:12::i;:::-;1146:23;;:7;:5;:7::i;:::-;:23;;;1138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1082:132::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;16132:380::-;16285:1;16268:19;;:5;:19;;;16260:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16366:1;16347:21;;:7;:21;;;16339:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16450:6;16420:11;:18;16432:5;16420:18;;;;;;;;;;;;;;;:27;16439:7;16420:27;;;;;;;;;;;;;;;:36;;;;16488:7;16472:32;;16481:5;16472:32;;;16497:6;16472:32;;;;;;:::i;:::-;;;;;;;;16132:380;;;:::o;26138:128::-;26217:5;26200:8;:14;26209:4;26200:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;26252:5;26238:20;;26246:4;26238:20;;;;;;;;;;;;26138:128;;:::o;16520:498::-;16651:24;16678:25;16688:5;16695:7;16678:9;:25::i;:::-;16651:52;;16738:17;16718:16;:37;16714:297;;16818:6;16798:16;:26;;16772:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;16933:51;16942:5;16949:7;16977:6;16958:16;:25;16933:8;:51::i;:::-;16714:297;16640:378;16520:498;;;:::o;26415:3302::-;26563:1;26547:18;;:4;:18;;;26539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26640:1;26626:16;;:2;:16;;;26618:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26711:14;;;;;;;;;;;:37;;;;26729:13;:19;26743:4;26729:19;;;;;;;;;;;;;;;;;;;;;;;;;26711:37;:58;;;;26752:13;:17;26766:2;26752:17;;;;;;;;;;;;;;;;;;;;;;;;;26711:58;26703:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;26833:1;26823:6;:11;26819:93;;26851:28;26867:4;26873:2;26877:1;26851:15;:28::i;:::-;26894:7;;26819:93;26926:28;26957:24;26975:4;26957:9;:24::i;:::-;26926:55;;26994:12;27033:18;;27009:20;:42;;26994:57;;27082:7;:35;;;;;27106:11;;;;;;;;;;;27082:35;:48;;;;;27121:9;;;;;;;;;;;27120:10;27082:48;:64;;;;;27132:8;:14;27141:4;27132:14;;;;;;;;;;;;;;;;;;;;;;;;;27082:64;:100;;;;;27163:13;:19;27177:4;27163:19;;;;;;;;;;;;;;;;;;;;;;;;;27162:20;27082:100;:135;;;;;27200:13;:17;27214:2;27200:17;;;;;;;;;;;;;;;;;;;;;;;;;27199:18;27082:135;27064:270;;;27256:4;27244:9;;:16;;;;;;;;;;;;;;;;;;27277:11;:9;:11::i;:::-;27317:5;27305:9;;:17;;;;;;;;;;;;;;;;;;27064:270;27362:7;:35;;;;;27386:11;;;;;;;;;;;27362:35;:48;;;;;27401:9;;;;;;;;;;;27400:10;27362:48;:63;;;;;27412:9;:13;27422:2;27412:13;;;;;;;;;;;;;;;;;;;;;;;;;27362:63;:99;;;;;27442:13;:19;27456:4;27442:19;;;;;;;;;;;;;;;;;;;;;;;;;27441:20;27362:99;:134;;;;;27479:13;:17;27493:2;27479:17;;;;;;;;;;;;;;;;;;;;;;;;;27478:18;27362:134;27344:269;;;27535:4;27523:9;;:16;;;;;;;;;;;;;;;;;;27556:11;:9;:11::i;:::-;27596:5;27584:9;;:17;;;;;;;;;;;;;;;;;;27344:269;27625:12;27641:9;;;;;;;;;;;27640:10;27625:25;;27689:13;:19;27703:4;27689:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;27712:13;:17;27726:2;27712:17;;;;;;;;;;;;;;;;;;;;;;;;;27689:40;27685:88;;;27756:5;27746:15;;27685:88;27785:12;27822:7;27818:1814;;;27874:8;:12;27883:2;27874:12;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;;27898:1;27890:5;;:9;27874:25;27870:408;;;27927:28;27949:5;27927:17;27938:5;;27927:6;:10;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;27920:35;;28049:5;;28016:8;;28009:4;:15;;;;:::i;:::-;28008:46;;;;:::i;:::-;27974:9;;:80;;;;;;;:::i;:::-;;;;;;;;28146:5;;28116;;28109:4;:12;;;;:::i;:::-;28108:43;;;;:::i;:::-;28073:10;;:78;;;;;;;:::i;:::-;;;;;;;;28257:5;;28224:8;;28217:4;:15;;;;:::i;:::-;28216:46;;;;:::i;:::-;28170:21;;:92;;;;;;;:::i;:::-;;;;;;;;27870:408;28298:9;:13;28308:2;28298:13;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;;28323:1;28315:5;;:9;28298:26;28294:1189;;;28352:28;28374:5;28352:17;28363:5;;28352:6;:10;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;28345:35;;28474:5;;28441:8;;28434:4;:15;;;;:::i;:::-;28433:46;;;;:::i;:::-;28399:9;;:80;;;;;;;:::i;:::-;;;;;;;;28571:5;;28541;;28534:4;:12;;;;:::i;:::-;28533:43;;;;:::i;:::-;28498:10;;:78;;;;;;;:::i;:::-;;;;;;;;28682:5;;28649:8;;28642:4;:15;;;;:::i;:::-;28641:46;;;;:::i;:::-;28595:21;;:92;;;;;;;:::i;:::-;;;;;;;;28294:1189;;;28749:8;:14;28758:4;28749:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;28782:1;28767:12;;:16;28749:34;28745:738;;;28811:35;28840:5;28811:24;28822:12;;28811:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;28804:42;;28899:12;;28886:9;;28879:4;:16;;;;:::i;:::-;28878:33;;;;:::i;:::-;28865:9;;:46;;;;;;;:::i;:::-;;;;;;;;28961:12;;28952:5;;28945:4;:12;;;;:::i;:::-;28944:29;;;;:::i;:::-;28930:10;;:43;;;;;;;:::i;:::-;;;;;;;;29076:12;;29046:5;;29039:4;:12;;;;:::i;:::-;29038:50;;;;:::i;:::-;28992:21;;:96;;;;;;;:::i;:::-;;;;;;;;28745:738;;;29127:9;:15;29137:4;29127:15;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;;29161:1;29146:12;;:16;29127:35;29123:360;;;29190:35;29219:5;29190:24;29201:12;;29190:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;29183:42;;29278:12;;29265:9;;29258:4;:16;;;;:::i;:::-;29257:33;;;;:::i;:::-;29244:9;;:46;;;;;;;:::i;:::-;;;;;;;;29340:12;;29331:5;;29324:4;:12;;;;:::i;:::-;29323:29;;;;:::i;:::-;29309:10;;:43;;;;;;;:::i;:::-;;;;;;;;29455:12;;29425:5;;29418:4;:12;;;;:::i;:::-;29417:50;;;;:::i;:::-;29371:21;;:96;;;;;;;:::i;:::-;;;;;;;;29123:360;28745:738;28294:1189;29510:1;29503:4;:8;29499:91;;;29532:42;29548:4;29562;29569;29532:15;:42::i;:::-;29499:91;29616:4;29606:14;;;;;:::i;:::-;;;27818:1814;29644:33;29660:4;29666:2;29670:6;29644:15;:33::i;:::-;29696:13;;29688:5;:21;;;;26528:3189;;;;26415:3302;;;;:::o;2224:191::-;2298:16;2317:6;;;;;;;;;;;2298:25;;2343:8;2334:6;;:17;;;;;;;;;;;;;;;;;;2398:8;2367:40;;2388:8;2367:40;;;;;;;;;;;;2287:128;2224:191;:::o;26274:133::-;26358:5;26340:9;:15;26350:4;26340:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;26393:5;26379:20;;26387:4;26379:20;;;;;;;;;;;;26274:133;;:::o;13996:879::-;14135:1;14119:18;;:4;:18;;;14111:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;14222:1;14208:16;;:2;:16;;;14200:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14277:38;14298:4;14304:2;14308:6;14277:20;:38::i;:::-;14328:19;14350:9;:15;14360:4;14350:15;;;;;;;;;;;;;;;;14328:37;;14413:6;14398:11;:21;;14376:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;14553:6;14539:11;:20;14521:9;:15;14531:4;14521:15;;;;;;;;;;;;;;;:38;;;;14756:6;14739:9;:13;14749:2;14739:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14806:2;14791:26;;14800:4;14791:26;;;14810:6;14791:26;;;;;;:::i;:::-;;;;;;;;14830:37;14850:4;14856:2;14860:6;14830:19;:37::i;:::-;14100:775;13996:879;;;:::o;30618:1542::-;30659:23;30685:24;30703:4;30685:9;:24::i;:::-;30659:50;;30720:25;30799:21;;30773:10;;30748:9;;:35;;;;:::i;:::-;:72;;;;:::i;:::-;30720:100;;30831:12;30858:23;30962:1;30929:17;30903:9;;30885:15;:27;;;;:::i;:::-;30884:62;;;;:::i;:::-;:79;;;;:::i;:::-;30858:105;;30974:26;31003:36;31023:15;31003;:19;;:36;;;;:::i;:::-;30974:65;;31052:25;31080:21;31052:49;;31114:37;31132:18;31114:17;:37::i;:::-;31164:18;31185:44;31211:17;31185:21;:25;;:44;;;;:::i;:::-;31164:65;;31242:23;31268:73;31313:17;31268:26;31283:10;;31268;:14;;:26;;;;:::i;:::-;:30;;:73;;;;:::i;:::-;31242:99;;31354:25;31382:84;31438:17;31382:37;31397:21;;31382:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;31354:112;;31479:23;31562:17;31531:15;31505:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;31479:100;;31604:1;31592:9;:13;;;;31629:1;31616:10;:14;;;;31665:1;31641:21;:25;;;;31701:1;31683:15;:19;:42;;;;;31724:1;31706:15;:19;31683:42;31679:270;;;31742:47;31756:15;31773;31742:13;:47::i;:::-;31809:128;31842:18;31879:15;31913:9;;31809:128;;;;;;;;:::i;:::-;;;;;;;;31679:270;31985:17;;;;;;;;;;;31977:31;;32016:17;31977:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31963:75;;;;;32073:15;;;;;;;;;;;32065:29;;32116:21;32065:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32051:101;;;;;30648:1512;;;;;;;;;;30618:1542::o;8142:98::-;8200:7;8231:1;8227;:5;;;;:::i;:::-;8220:12;;8142:98;;;;:::o;8465:::-;8523:7;8554:1;8550;:5;;;;:::i;:::-;8543:12;;8465:98;;;;:::o;17026:125::-;;;;:::o;17159:124::-;;;;:::o;7785:98::-;7843:7;7874:1;7870;:5;;;;:::i;:::-;7863:12;;7785:98;;;;:::o;29725:503::-;29793:21;29831:1;29817:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29793:40;;29862:4;29844;29849:1;29844:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29888:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29878:4;29883:1;29878:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29923:62;29940:4;29955:15;29973:11;29923:8;:62::i;:::-;30024:15;:66;;;30105:11;30131:1;30147:4;30174;30194:15;30024:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29782:446;29725:503;:::o;30236:372::-;30319:62;30336:4;30351:15;30369:11;30319:8;:62::i;:::-;30394:15;:31;;;30433:9;30466:4;30486:11;30512:1;30528;30544:15;;;;;;;;;;;30574;30394:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30236:372;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:117::-;4885:1;4882;4875:12;4899:180;4947:77;4944:1;4937:88;5044:4;5041:1;5034:15;5068:4;5065:1;5058:15;5085:281;5168:27;5190:4;5168:27;:::i;:::-;5160:6;5156:40;5298:6;5286:10;5283:22;5262:18;5250:10;5247:34;5244:62;5241:88;;;5309:18;;:::i;:::-;5241:88;5349:10;5345:2;5338:22;5128:238;5085:281;;:::o;5372:129::-;5406:6;5433:20;;:::i;:::-;5423:30;;5462:33;5490:4;5482:6;5462:33;:::i;:::-;5372:129;;;:::o;5507:311::-;5584:4;5674:18;5666:6;5663:30;5660:56;;;5696:18;;:::i;:::-;5660:56;5746:4;5738:6;5734:17;5726:25;;5806:4;5800;5796:15;5788:23;;5507:311;;;:::o;5824:117::-;5933:1;5930;5923:12;5964:710;6060:5;6085:81;6101:64;6158:6;6101:64;:::i;:::-;6085:81;:::i;:::-;6076:90;;6186:5;6215:6;6208:5;6201:21;6249:4;6242:5;6238:16;6231:23;;6302:4;6294:6;6290:17;6282:6;6278:30;6331:3;6323:6;6320:15;6317:122;;;6350:79;;:::i;:::-;6317:122;6465:6;6448:220;6482:6;6477:3;6474:15;6448:220;;;6557:3;6586:37;6619:3;6607:10;6586:37;:::i;:::-;6581:3;6574:50;6653:4;6648:3;6644:14;6637:21;;6524:144;6508:4;6503:3;6499:14;6492:21;;6448:220;;;6452:21;6066:608;;5964:710;;;;;:::o;6697:370::-;6768:5;6817:3;6810:4;6802:6;6798:17;6794:27;6784:122;;6825:79;;:::i;:::-;6784:122;6942:6;6929:20;6967:94;7057:3;7049:6;7042:4;7034:6;7030:17;6967:94;:::i;:::-;6958:103;;6774:293;6697:370;;;;:::o;7073:116::-;7143:21;7158:5;7143:21;:::i;:::-;7136:5;7133:32;7123:60;;7179:1;7176;7169:12;7123:60;7073:116;:::o;7195:133::-;7238:5;7276:6;7263:20;7254:29;;7292:30;7316:5;7292:30;:::i;:::-;7195:133;;;;:::o;7334:678::-;7424:6;7432;7481:2;7469:9;7460:7;7456:23;7452:32;7449:119;;;7487:79;;:::i;:::-;7449:119;7635:1;7624:9;7620:17;7607:31;7665:18;7657:6;7654:30;7651:117;;;7687:79;;:::i;:::-;7651:117;7792:78;7862:7;7853:6;7842:9;7838:22;7792:78;:::i;:::-;7782:88;;7578:302;7919:2;7945:50;7987:7;7978:6;7967:9;7963:22;7945:50;:::i;:::-;7935:60;;7890:115;7334:678;;;;;:::o;8018:619::-;8095:6;8103;8111;8160:2;8148:9;8139:7;8135:23;8131:32;8128:119;;;8166:79;;:::i;:::-;8128:119;8286:1;8311:53;8356:7;8347:6;8336:9;8332:22;8311:53;:::i;:::-;8301:63;;8257:117;8413:2;8439:53;8484:7;8475:6;8464:9;8460:22;8439:53;:::i;:::-;8429:63;;8384:118;8541:2;8567:53;8612:7;8603:6;8592:9;8588:22;8567:53;:::i;:::-;8557:63;;8512:118;8018:619;;;;;:::o;8643:118::-;8730:24;8748:5;8730:24;:::i;:::-;8725:3;8718:37;8643:118;;:::o;8767:222::-;8860:4;8898:2;8887:9;8883:18;8875:26;;8911:71;8979:1;8968:9;8964:17;8955:6;8911:71;:::i;:::-;8767:222;;;;:::o;8995:86::-;9030:7;9070:4;9063:5;9059:16;9048:27;;8995:86;;;:::o;9087:112::-;9170:22;9186:5;9170:22;:::i;:::-;9165:3;9158:35;9087:112;;:::o;9205:214::-;9294:4;9332:2;9321:9;9317:18;9309:26;;9345:67;9409:1;9398:9;9394:17;9385:6;9345:67;:::i;:::-;9205:214;;;;:::o;9425:329::-;9484:6;9533:2;9521:9;9512:7;9508:23;9504:32;9501:119;;;9539:79;;:::i;:::-;9501:119;9659:1;9684:53;9729:7;9720:6;9709:9;9705:22;9684:53;:::i;:::-;9674:63;;9630:117;9425:329;;;;:::o;9760:117::-;9869:1;9866;9859:12;9900:568;9973:8;9983:6;10033:3;10026:4;10018:6;10014:17;10010:27;10000:122;;10041:79;;:::i;:::-;10000:122;10154:6;10141:20;10131:30;;10184:18;10176:6;10173:30;10170:117;;;10206:79;;:::i;:::-;10170:117;10320:4;10312:6;10308:17;10296:29;;10374:3;10366:4;10358:6;10354:17;10344:8;10340:32;10337:41;10334:128;;;10381:79;;:::i;:::-;10334:128;9900:568;;;;;:::o;10474:698::-;10566:6;10574;10582;10631:2;10619:9;10610:7;10606:23;10602:32;10599:119;;;10637:79;;:::i;:::-;10599:119;10785:1;10774:9;10770:17;10757:31;10815:18;10807:6;10804:30;10801:117;;;10837:79;;:::i;:::-;10801:117;10950:80;11022:7;11013:6;11002:9;10998:22;10950:80;:::i;:::-;10932:98;;;;10728:312;11079:2;11105:50;11147:7;11138:6;11127:9;11123:22;11105:50;:::i;:::-;11095:60;;11050:115;10474:698;;;;;:::o;11178:474::-;11246:6;11254;11303:2;11291:9;11282:7;11278:23;11274:32;11271:119;;;11309:79;;:::i;:::-;11271:119;11429:1;11454:53;11499:7;11490:6;11479:9;11475:22;11454:53;:::i;:::-;11444:63;;11400:117;11556:2;11582:53;11627:7;11618:6;11607:9;11603:22;11582:53;:::i;:::-;11572:63;;11527:118;11178:474;;;;;:::o;11658:164::-;11798:16;11794:1;11786:6;11782:14;11775:40;11658:164;:::o;11828:366::-;11970:3;11991:67;12055:2;12050:3;11991:67;:::i;:::-;11984:74;;12067:93;12156:3;12067:93;:::i;:::-;12185:2;12180:3;12176:12;12169:19;;11828:366;;;:::o;12200:419::-;12366:4;12404:2;12393:9;12389:18;12381:26;;12453:9;12447:4;12443:20;12439:1;12428:9;12424:17;12417:47;12481:131;12607:4;12481:131;:::i;:::-;12473:139;;12200:419;;;:::o;12625:180::-;12673:77;12670:1;12663:88;12770:4;12767:1;12760:15;12794:4;12791:1;12784:15;12811:320;12855:6;12892:1;12886:4;12882:12;12872:22;;12939:1;12933:4;12929:12;12960:18;12950:81;;13016:4;13008:6;13004:17;12994:27;;12950:81;13078:2;13070:6;13067:14;13047:18;13044:38;13041:84;;13097:18;;:::i;:::-;13041:84;12862:269;12811:320;;;:::o;13137:180::-;13185:77;13182:1;13175:88;13282:4;13279:1;13272:15;13306:4;13303:1;13296:15;13323:168;13463:20;13459:1;13451:6;13447:14;13440:44;13323:168;:::o;13497:366::-;13639:3;13660:67;13724:2;13719:3;13660:67;:::i;:::-;13653:74;;13736:93;13825:3;13736:93;:::i;:::-;13854:2;13849:3;13845:12;13838:19;;13497:366;;;:::o;13869:419::-;14035:4;14073:2;14062:9;14058:18;14050:26;;14122:9;14116:4;14112:20;14108:1;14097:9;14093:17;14086:47;14150:131;14276:4;14150:131;:::i;:::-;14142:139;;13869:419;;;:::o;14294:180::-;14342:77;14339:1;14332:88;14439:4;14436:1;14429:15;14463:4;14460:1;14453:15;14480:233;14519:3;14542:24;14560:5;14542:24;:::i;:::-;14533:33;;14588:66;14581:5;14578:77;14575:103;;14658:18;;:::i;:::-;14575:103;14705:1;14698:5;14694:13;14687:20;;14480:233;;;:::o;14719:191::-;14759:3;14778:20;14796:1;14778:20;:::i;:::-;14773:25;;14812:20;14830:1;14812:20;:::i;:::-;14807:25;;14855:1;14852;14848:9;14841:16;;14876:3;14873:1;14870:10;14867:36;;;14883:18;;:::i;:::-;14867:36;14719:191;;;;:::o;14916:224::-;15056:34;15052:1;15044:6;15040:14;15033:58;15125:7;15120:2;15112:6;15108:15;15101:32;14916:224;:::o;15146:366::-;15288:3;15309:67;15373:2;15368:3;15309:67;:::i;:::-;15302:74;;15385:93;15474:3;15385:93;:::i;:::-;15503:2;15498:3;15494:12;15487:19;;15146:366;;;:::o;15518:419::-;15684:4;15722:2;15711:9;15707:18;15699:26;;15771:9;15765:4;15761:20;15757:1;15746:9;15742:17;15735:47;15799:131;15925:4;15799:131;:::i;:::-;15791:139;;15518:419;;;:::o;15943:225::-;16083:34;16079:1;16071:6;16067:14;16060:58;16152:8;16147:2;16139:6;16135:15;16128:33;15943:225;:::o;16174:366::-;16316:3;16337:67;16401:2;16396:3;16337:67;:::i;:::-;16330:74;;16413:93;16502:3;16413:93;:::i;:::-;16531:2;16526:3;16522:12;16515:19;;16174:366;;;:::o;16546:419::-;16712:4;16750:2;16739:9;16735:18;16727:26;;16799:9;16793:4;16789:20;16785:1;16774:9;16770:17;16763:47;16827:131;16953:4;16827:131;:::i;:::-;16819:139;;16546:419;;;:::o;16971:182::-;17111:34;17107:1;17099:6;17095:14;17088:58;16971:182;:::o;17159:366::-;17301:3;17322:67;17386:2;17381:3;17322:67;:::i;:::-;17315:74;;17398:93;17487:3;17398:93;:::i;:::-;17516:2;17511:3;17507:12;17500:19;;17159:366;;;:::o;17531:419::-;17697:4;17735:2;17724:9;17720:18;17712:26;;17784:9;17778:4;17774:20;17770:1;17759:9;17755:17;17748:47;17812:131;17938:4;17812:131;:::i;:::-;17804:139;;17531:419;;;:::o;17956:223::-;18096:34;18092:1;18084:6;18080:14;18073:58;18165:6;18160:2;18152:6;18148:15;18141:31;17956:223;:::o;18185:366::-;18327:3;18348:67;18412:2;18407:3;18348:67;:::i;:::-;18341:74;;18424:93;18513:3;18424:93;:::i;:::-;18542:2;18537:3;18533:12;18526:19;;18185:366;;;:::o;18557:419::-;18723:4;18761:2;18750:9;18746:18;18738:26;;18810:9;18804:4;18800:20;18796:1;18785:9;18781:17;18774:47;18838:131;18964:4;18838:131;:::i;:::-;18830:139;;18557:419;;;:::o;18982:221::-;19122:34;19118:1;19110:6;19106:14;19099:58;19191:4;19186:2;19178:6;19174:15;19167:29;18982:221;:::o;19209:366::-;19351:3;19372:67;19436:2;19431:3;19372:67;:::i;:::-;19365:74;;19448:93;19537:3;19448:93;:::i;:::-;19566:2;19561:3;19557:12;19550:19;;19209:366;;;:::o;19581:419::-;19747:4;19785:2;19774:9;19770:18;19762:26;;19834:9;19828:4;19824:20;19820:1;19809:9;19805:17;19798:47;19862:131;19988:4;19862:131;:::i;:::-;19854:139;;19581:419;;;:::o;20006:179::-;20146:31;20142:1;20134:6;20130:14;20123:55;20006:179;:::o;20191:366::-;20333:3;20354:67;20418:2;20413:3;20354:67;:::i;:::-;20347:74;;20430:93;20519:3;20430:93;:::i;:::-;20548:2;20543:3;20539:12;20532:19;;20191:366;;;:::o;20563:419::-;20729:4;20767:2;20756:9;20752:18;20744:26;;20816:9;20810:4;20806:20;20802:1;20791:9;20787:17;20780:47;20844:131;20970:4;20844:131;:::i;:::-;20836:139;;20563:419;;;:::o;20988:224::-;21128:34;21124:1;21116:6;21112:14;21105:58;21197:7;21192:2;21184:6;21180:15;21173:32;20988:224;:::o;21218:366::-;21360:3;21381:67;21445:2;21440:3;21381:67;:::i;:::-;21374:74;;21457:93;21546:3;21457:93;:::i;:::-;21575:2;21570:3;21566:12;21559:19;;21218:366;;;:::o;21590:419::-;21756:4;21794:2;21783:9;21779:18;21771:26;;21843:9;21837:4;21833:20;21829:1;21818:9;21814:17;21807:47;21871:131;21997:4;21871:131;:::i;:::-;21863:139;;21590:419;;;:::o;22015:222::-;22155:34;22151:1;22143:6;22139:14;22132:58;22224:5;22219:2;22211:6;22207:15;22200:30;22015:222;:::o;22243:366::-;22385:3;22406:67;22470:2;22465:3;22406:67;:::i;:::-;22399:74;;22482:93;22571:3;22482:93;:::i;:::-;22600:2;22595:3;22591:12;22584:19;;22243:366;;;:::o;22615:419::-;22781:4;22819:2;22808:9;22804:18;22796:26;;22868:9;22862:4;22858:20;22854:1;22843:9;22839:17;22832:47;22896:131;23022:4;22896:131;:::i;:::-;22888:139;;22615:419;;;:::o;23040:221::-;23180:34;23176:1;23168:6;23164:14;23157:58;23249:4;23244:2;23236:6;23232:15;23225:29;23040:221;:::o;23267:366::-;23409:3;23430:67;23494:2;23489:3;23430:67;:::i;:::-;23423:74;;23506:93;23595:3;23506:93;:::i;:::-;23624:2;23619:3;23615:12;23608:19;;23267:366;;;:::o;23639:419::-;23805:4;23843:2;23832:9;23828:18;23820:26;;23892:9;23886:4;23882:20;23878:1;23867:9;23863:17;23856:47;23920:131;24046:4;23920:131;:::i;:::-;23912:139;;23639:419;;;:::o;24064:410::-;24104:7;24127:20;24145:1;24127:20;:::i;:::-;24122:25;;24161:20;24179:1;24161:20;:::i;:::-;24156:25;;24216:1;24213;24209:9;24238:30;24256:11;24238:30;:::i;:::-;24227:41;;24417:1;24408:7;24404:15;24401:1;24398:22;24378:1;24371:9;24351:83;24328:139;;24447:18;;:::i;:::-;24328:139;24112:362;24064:410;;;;:::o;24480:180::-;24528:77;24525:1;24518:88;24625:4;24622:1;24615:15;24649:4;24646:1;24639:15;24666:185;24706:1;24723:20;24741:1;24723:20;:::i;:::-;24718:25;;24757:20;24775:1;24757:20;:::i;:::-;24752:25;;24796:1;24786:35;;24801:18;;:::i;:::-;24786:35;24843:1;24840;24836:9;24831:14;;24666:185;;;;:::o;24857:194::-;24897:4;24917:20;24935:1;24917:20;:::i;:::-;24912:25;;24951:20;24969:1;24951:20;:::i;:::-;24946:25;;24995:1;24992;24988:9;24980:17;;25019:1;25013:4;25010:11;25007:37;;;25024:18;;:::i;:::-;25007:37;24857:194;;;;:::o;25057:234::-;25197:34;25193:1;25185:6;25181:14;25174:58;25266:17;25261:2;25253:6;25249:15;25242:42;25057:234;:::o;25297:366::-;25439:3;25460:67;25524:2;25519:3;25460:67;:::i;:::-;25453:74;;25536:93;25625:3;25536:93;:::i;:::-;25654:2;25649:3;25645:12;25638:19;;25297:366;;;:::o;25669:419::-;25835:4;25873:2;25862:9;25858:18;25850:26;;25922:9;25916:4;25912:20;25908:1;25897:9;25893:17;25886:47;25950:131;26076:4;25950:131;:::i;:::-;25942:139;;25669:419;;;:::o;26094:225::-;26234:34;26230:1;26222:6;26218:14;26211:58;26303:8;26298:2;26290:6;26286:15;26279:33;26094:225;:::o;26325:366::-;26467:3;26488:67;26552:2;26547:3;26488:67;:::i;:::-;26481:74;;26564:93;26653:3;26564:93;:::i;:::-;26682:2;26677:3;26673:12;26666:19;;26325:366;;;:::o;26697:419::-;26863:4;26901:2;26890:9;26886:18;26878:26;;26950:9;26944:4;26940:20;26936:1;26925:9;26921:17;26914:47;26978:131;27104:4;26978:131;:::i;:::-;26970:139;;26697:419;;;:::o;27122:442::-;27271:4;27309:2;27298:9;27294:18;27286:26;;27322:71;27390:1;27379:9;27375:17;27366:6;27322:71;:::i;:::-;27403:72;27471:2;27460:9;27456:18;27447:6;27403:72;:::i;:::-;27485;27553:2;27542:9;27538:18;27529:6;27485:72;:::i;:::-;27122:442;;;;;;:::o;27570:147::-;27671:11;27708:3;27693:18;;27570:147;;;;:::o;27723:114::-;;:::o;27843:398::-;28002:3;28023:83;28104:1;28099:3;28023:83;:::i;:::-;28016:90;;28115:93;28204:3;28115:93;:::i;:::-;28233:1;28228:3;28224:11;28217:18;;27843:398;;;:::o;28247:379::-;28431:3;28453:147;28596:3;28453:147;:::i;:::-;28446:154;;28617:3;28610:10;;28247:379;;;:::o;28632:143::-;28689:5;28720:6;28714:13;28705:22;;28736:33;28763:5;28736:33;:::i;:::-;28632:143;;;;:::o;28781:351::-;28851:6;28900:2;28888:9;28879:7;28875:23;28871:32;28868:119;;;28906:79;;:::i;:::-;28868:119;29026:1;29051:64;29107:7;29098:6;29087:9;29083:22;29051:64;:::i;:::-;29041:74;;28997:128;28781:351;;;;:::o;29138:85::-;29183:7;29212:5;29201:16;;29138:85;;;:::o;29229:158::-;29287:9;29320:61;29338:42;29347:32;29373:5;29347:32;:::i;:::-;29338:42;:::i;:::-;29320:61;:::i;:::-;29307:74;;29229:158;;;:::o;29393:147::-;29488:45;29527:5;29488:45;:::i;:::-;29483:3;29476:58;29393:147;;:::o;29546:114::-;29613:6;29647:5;29641:12;29631:22;;29546:114;;;:::o;29666:184::-;29765:11;29799:6;29794:3;29787:19;29839:4;29834:3;29830:14;29815:29;;29666:184;;;;:::o;29856:132::-;29923:4;29946:3;29938:11;;29976:4;29971:3;29967:14;29959:22;;29856:132;;;:::o;29994:108::-;30071:24;30089:5;30071:24;:::i;:::-;30066:3;30059:37;29994:108;;:::o;30108:179::-;30177:10;30198:46;30240:3;30232:6;30198:46;:::i;:::-;30276:4;30271:3;30267:14;30253:28;;30108:179;;;;:::o;30293:113::-;30363:4;30395;30390:3;30386:14;30378:22;;30293:113;;;:::o;30442:732::-;30561:3;30590:54;30638:5;30590:54;:::i;:::-;30660:86;30739:6;30734:3;30660:86;:::i;:::-;30653:93;;30770:56;30820:5;30770:56;:::i;:::-;30849:7;30880:1;30865:284;30890:6;30887:1;30884:13;30865:284;;;30966:6;30960:13;30993:63;31052:3;31037:13;30993:63;:::i;:::-;30986:70;;31079:60;31132:6;31079:60;:::i;:::-;31069:70;;30925:224;30912:1;30909;30905:9;30900:14;;30865:284;;;30869:14;31165:3;31158:10;;30566:608;;;30442:732;;;;:::o;31180:831::-;31443:4;31481:3;31470:9;31466:19;31458:27;;31495:71;31563:1;31552:9;31548:17;31539:6;31495:71;:::i;:::-;31576:80;31652:2;31641:9;31637:18;31628:6;31576:80;:::i;:::-;31703:9;31697:4;31693:20;31688:2;31677:9;31673:18;31666:48;31731:108;31834:4;31825:6;31731:108;:::i;:::-;31723:116;;31849:72;31917:2;31906:9;31902:18;31893:6;31849:72;:::i;:::-;31931:73;31999:3;31988:9;31984:19;31975:6;31931:73;:::i;:::-;31180:831;;;;;;;;:::o;32017:807::-;32266:4;32304:3;32293:9;32289:19;32281:27;;32318:71;32386:1;32375:9;32371:17;32362:6;32318:71;:::i;:::-;32399:72;32467:2;32456:9;32452:18;32443:6;32399:72;:::i;:::-;32481:80;32557:2;32546:9;32542:18;32533:6;32481:80;:::i;:::-;32571;32647:2;32636:9;32632:18;32623:6;32571:80;:::i;:::-;32661:73;32729:3;32718:9;32714:19;32705:6;32661:73;:::i;:::-;32744;32812:3;32801:9;32797:19;32788:6;32744:73;:::i;:::-;32017:807;;;;;;;;;:::o;32830:143::-;32887:5;32918:6;32912:13;32903:22;;32934:33;32961:5;32934:33;:::i;:::-;32830:143;;;;:::o;32979:663::-;33067:6;33075;33083;33132:2;33120:9;33111:7;33107:23;33103:32;33100:119;;;33138:79;;:::i;:::-;33100:119;33258:1;33283:64;33339:7;33330:6;33319:9;33315:22;33283:64;:::i;:::-;33273:74;;33229:128;33396:2;33422:64;33478:7;33469:6;33458:9;33454:22;33422:64;:::i;:::-;33412:74;;33367:129;33535:2;33561:64;33617:7;33608:6;33597:9;33593:22;33561:64;:::i;:::-;33551:74;;33506:129;32979:663;;;;;:::o

Swarm Source

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