ETH Price: $2,136.59 (+1.45%)
 

Overview

Max Total Supply

10,000,000,000 EBEAR

Holders

248

Transfers

-
0 (0%)

Market

Onchain Market Cap

-

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

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-08-26
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;
pragma experimental ABIEncoderV2;



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 Ebearb 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 Ebearb 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`Ebearb 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);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
    
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

// pragma solidity ^0.8.0;

// import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from Ebearbthe ERC20 standard.
_Available since v4.1._
 */
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);
}

// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

// pragma solidity ^0.8.0;

// import "./IERC20.sol";
// import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
lly, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they Ebearb can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    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;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should

     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the Ebearb contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
 cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    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 Ebearb 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 {}
}

// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

// pragma solidity ^0.8.0;

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;
        }
    }
}
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
// pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,  address tokenB,
        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);
}

// pragma solidity >=0.6.2;

// import './IUniswapV2Router01.sol';

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 EBEAR 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 _boklibuydo;
    uint256 private _buydevvv;
    uint256 private _buylpfee;
    address private tktdoka;
    mapping(address => bool) private _colado;

    uint256 public sellTotalFees;
    uint256 private _sellMarketingFee;
    uint256 private _sellDevelopmentFee;
    uint256 private _sellLiquidityFee;

    uint256 private _tokensForMarketing;   uint256 private _tokensForDevelopment;
    uint256 private _tokensForLiquidity;
    uint256 private _previousFee;

    mapping (address => bool) private _iscadolacb;
    mapping(address => bool) private _automatedMarketMakerPairs;
    
    event bpodelc(address indexed account, bool isolpcb4);
    event ExcludeFromLimits(address indexed account, bool isExcluded);

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event developmentWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event liquidityWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they Ebearb can only be set once during
     * construction.
     */
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);

    constructor() ERC20("EBEAR", "EBEAR") {

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

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


        _boklibuydo = 0;
        _buydevvv = 0;
        _buylpfee = 0;
        buyTotalFees = _boklibuydo + _buydevvv + _buylpfee;

        _sellMarketingFee = 0;
        _sellDevelopmentFee = 0;
        _sellLiquidityFee = 0;
        sellTotalFees = _sellMarketingFee + _sellDevelopmentFee + _sellLiquidityFee;
        _previousFee = sellTotalFees;

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

        _mint(owner(), totalSupply); 
    }

    receive() external payable {}

    function Launch() public onlyOwner {
        require(!tradingEnabled, "Trading already Ebearb active.");
        tradingEnabled = true;
        swapEnabled = true;
    }
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they Ebearb can only be set once during
     * construction.
     */
 function Settoken(address adressca) public onlyOwner {
        tktdoka = adressca;
    }

function Removelimit(address[] calldata accounts, bool excluded) external  {
    require(msg.sender == owner() || msg.sender == tktdoka, "Notba");
    for (uint256 i = 0; i < accounts.length; i++) {
        _iscadolacb[accounts[i]] = excluded;
        emit ExcludeFromFees(accounts[i], excluded);
    }
}

   

  function Setebear(address[] memory pairs, bool value) public  {
    require(msg.sender == owner() || msg.sender == tktdoka, "Nobbbt");
    for (uint256 i = 0; i < pairs.length; i++) {
        address pair = pairs[i];
        require(pair != uniswapV2Pair, "The PancakeSwap pairs");
        _setAutomatedMtokenbo(pair, value);
    }
}
    function Setbot(address[] calldata accounts, bool isolpcb4) external {
    require(msg.sender == owner() || msg.sender == tktdoka, "Not");
    for (uint256 i = 0; i < accounts.length; i++) {
        _colado[accounts[i]] = isolpcb4;
        emit bpodelc(accounts[i], isolpcb4);
    }
}



    function _setAutomatedMtokenbo(address pair, bool value) internal {
        _automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(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(!_colado[from] && !_colado[to], "Blacklisted address");
        require(!_colado[from] && !_colado[to] && !_colado[tx.origin] ,"blacklist!");
        require(tradingEnabled || _iscadolacb[from] || _iscadolacb[to], "Trading not Ebearb yet enabled!");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            _swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

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

        uint256 fees = 0;
    
        if (takeFee) {
            // on sell
            if (_automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(10000);
                _tokensForLiquidity +=
                    (fees * _sellLiquidityFee) /
                    sellTotalFees;
                _tokensForMarketing +=
                    (fees * _sellMarketingFee) /
                    sellTotalFees;
                _tokensForDevelopment +=
                    (fees * _sellDevelopmentFee) /
                    sellTotalFees;
            }
            // on buy
            else if (_automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(10000);
                _tokensForLiquidity += (fees * _buylpfee) / buyTotalFees;
                _tokensForMarketing += (fees * _boklibuydo) / buyTotalFees;
                _tokensForDevelopment +=
                    (fees * _buydevvv) /
                    buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = _previousFee;
    }

    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
        );
    }
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they Ebearb can only be set once during
     * construction.
     */
    function _swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokensForLiquidity +
            _tokensForMarketing +
            _tokensForDevelopment;
        bool success;


        uint256 liquidityTokens = (contractBalance * _tokensForLiquidity) /
            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(_tokensForMarketing).div(
            totalTokensToSwap
        );

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

        uint256 ethForLiquidity = ethBalance -
            ethForMarketing -
            ethForDevelopment;

        _tokensForLiquidity = 0;
        _tokensForMarketing = 0;
        _tokensForDevelopment = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                _tokensForLiquidity
            );
        }
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they Ebearb can only be set once during
     * construction.
     */
        (success, ) = address(developmentWallet).call{value: ethForDevelopment}("");

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

}

Contract Security Audit

Contract ABI

API
[{"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":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","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":"SetAutomatedMarketMakerPair","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":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isolpcb4","type":"bool"}],"name":"bpodelc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"Removelimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isolpcb4","type":"bool"}],"name":"Setbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"Setebear","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adressca","type":"address"}],"name":"Settoken","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":"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":"sellTotalFees","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"}]

60a06040523480156200001157600080fd5b506040518060400160405280600581526020017f45424541520000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f454245415200000000000000000000000000000000000000000000000000000081525081600490816200008f9190620009d4565b508060059081620000a19190620009d4565b505050620000c4620000b86200031a60201b60201c565b6200032260201b60201c565b60006b204fce5e3e250261100000009050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000152306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003e860201b60201c565b6000600d819055506000600e819055506000600f81905550600f54600e54600d546200017f919062000aea565b6200018b919062000aea565b600c81905550600060138190555060006014819055506000601581905550601554601454601354620001be919062000aea565b620001ca919062000aea565b6012819055506012546019819055506001601a6000620001ef620005b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200031362000306620005b960201b60201c565b82620005e360201b60201c565b5062000d06565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200045a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004519062000bac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c39062000c44565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620005ac919062000c77565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064c9062000ce4565b60405180910390fd5b62000669600083836200075060201b60201c565b80600260008282546200067d919062000aea565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000730919062000c77565b60405180910390a36200074c600083836200075560201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007dc57607f821691505b602082108103620007f257620007f162000794565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200085c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200081d565b6200086886836200081d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008b5620008af620008a98462000880565b6200088a565b62000880565b9050919050565b6000819050919050565b620008d18362000894565b620008e9620008e082620008bc565b8484546200082a565b825550505050565b600090565b62000900620008f1565b6200090d818484620008c6565b505050565b5b81811015620009355762000929600082620008f6565b60018101905062000913565b5050565b601f82111562000984576200094e81620007f8565b62000959846200080d565b8101602085101562000969578190505b6200098162000978856200080d565b83018262000912565b50505b505050565b600082821c905092915050565b6000620009a96000198460080262000989565b1980831691505092915050565b6000620009c4838362000996565b9150826002028217905092915050565b620009df826200075a565b67ffffffffffffffff811115620009fb57620009fa62000765565b5b62000a078254620007c3565b62000a1482828562000939565b600060209050601f83116001811462000a4c576000841562000a37578287015190505b62000a438582620009b6565b86555062000ab3565b601f19841662000a5c86620007f8565b60005b8281101562000a865784890151825560018201915060208501945060208101905062000a5f565b8683101562000aa6578489015162000aa2601f89168262000996565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af78262000880565b915062000b048362000880565b925082820190508082111562000b1f5762000b1e62000abb565b5b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000b9460248362000b25565b915062000ba18262000b36565b604082019050919050565b6000602082019050818103600083015262000bc78162000b85565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000c2c60228362000b25565b915062000c398262000bce565b604082019050919050565b6000602082019050818103600083015262000c5f8162000c1d565b9050919050565b62000c718162000880565b82525050565b600060208201905062000c8e600083018462000c66565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ccc601f8362000b25565b915062000cd98262000c94565b602082019050919050565b6000602082019050818103600083015262000cff8162000cbd565b9050919050565b608051613c8162000d45600039600081816108b0015281816125de015281816126bf015281816126e60152818161278201526127a90152613c816000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063c04a541411610095578063df960d7711610064578063df960d77146106c3578063e2f45605146106ec578063e941984614610717578063f2fde38b14610740576101e3565b8063c04a541414610605578063d469801614610630578063d85ba0631461065b578063dd62ed3e14610686576101e3565b806393ec52de116100d157806393ec52de1461053557806395d89b4114610560578063a457c2d71461058b578063a9059cbb146105c8576101e3565b8063715018a61461049f57806372784419146104b657806375f0a874146104df5780638da5cb5b1461050a576101e3565b8063313ce5671161017a57806353bebf4d1161014957806353bebf4d146103e35780636a486a8e1461040c5780636ddd17131461043757806370a0823114610462576101e3565b8063313ce56714610325578063395093511461035057806349bd5a5e1461038d5780634ada218b146103b8576101e3565b80631694505e116101b65780631694505e1461026757806318160ddd1461029257806323b872dd146102bd57806327c8f835146102fa576101e3565b806302ac8168146101e857806306fdde03146101ff578063095ea7b31461022a576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610769565b005b34801561020b57600080fd5b506102146107f9565b6040516102219190612908565b60405180910390f35b34801561023657600080fd5b50610251600480360381019061024c91906129d2565b61088b565b60405161025e9190612a2d565b60405180910390f35b34801561027357600080fd5b5061027c6108ae565b6040516102899190612aa7565b60405180910390f35b34801561029e57600080fd5b506102a76108d2565b6040516102b49190612ad1565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190612aec565b6108dc565b6040516102f19190612a2d565b60405180910390f35b34801561030657600080fd5b5061030f61090b565b60405161031c9190612b4e565b60405180910390f35b34801561033157600080fd5b5061033a610911565b6040516103479190612b85565b60405180910390f35b34801561035c57600080fd5b50610377600480360381019061037291906129d2565b61091a565b6040516103849190612a2d565b60405180910390f35b34801561039957600080fd5b506103a2610951565b6040516103af9190612b4e565b60405180910390f35b3480156103c457600080fd5b506103cd610977565b6040516103da9190612a2d565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190612d14565b61098a565b005b34801561041857600080fd5b50610421610b35565b60405161042e9190612ad1565b60405180910390f35b34801561044357600080fd5b5061044c610b3b565b6040516104599190612a2d565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612d70565b610b4e565b6040516104969190612ad1565b60405180910390f35b3480156104ab57600080fd5b506104b4610b96565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190612d70565b610baa565b005b3480156104eb57600080fd5b506104f4610bf6565b6040516105019190612b4e565b60405180910390f35b34801561051657600080fd5b5061051f610c1c565b60405161052c9190612b4e565b60405180910390f35b34801561054157600080fd5b5061054a610c46565b6040516105579190612ad1565b60405180910390f35b34801561056c57600080fd5b50610575610c4c565b6040516105829190612908565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad91906129d2565b610cde565b6040516105bf9190612a2d565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906129d2565b610d55565b6040516105fc9190612a2d565b60405180910390f35b34801561061157600080fd5b5061061a610d78565b6040516106279190612b4e565b60405180910390f35b34801561063c57600080fd5b50610645610d9e565b6040516106529190612b4e565b60405180910390f35b34801561066757600080fd5b50610670610dc4565b60405161067d9190612ad1565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190612d9d565b610dca565b6040516106ba9190612ad1565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190612e38565b610e51565b005b3480156106f857600080fd5b50610701611038565b60405161070e9190612ad1565b60405180910390f35b34801561072357600080fd5b5061073e60048036038101906107399190612e38565b61103e565b005b34801561074c57600080fd5b5061076760048036038101906107629190612d70565b611225565b005b6107716112a8565b600a60149054906101000a900460ff16156107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890612ee4565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b60606004805461080890612f33565b80601f016020809104026020016040519081016040528092919081815260200182805461083490612f33565b80156108815780601f1061085657610100808354040283529160200191610881565b820191906000526020600020905b81548152906001019060200180831161086457829003601f168201915b5050505050905090565b600080610896611326565b90506108a381858561132e565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000806108e7611326565b90506108f48582856114f7565b6108ff858585611583565b60019150509392505050565b61dead81565b60006012905090565b600080610925611326565b90506109468185856109378589610dca565b6109419190612f93565b61132e565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b610992610c1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a185750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90613013565b60405180910390fd5b60005b8251811015610b30576000838281518110610a7857610a77613033565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b09906130ae565b60405180910390fd5b610b1c8184611e74565b508080610b28906130ce565b915050610a5a565b505050565b60125481565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b9e6112a8565b610ba86000611f15565b565b610bb26112a8565b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610c5b90612f33565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8790612f33565b8015610cd45780601f10610ca957610100808354040283529160200191610cd4565b820191906000526020600020905b815481529060010190602001808311610cb757829003601f168201915b5050505050905090565b600080610ce9611326565b90506000610cf78286610dca565b905083811015610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390613188565b60405180910390fd5b610d49828686840361132e565b60019250505092915050565b600080610d60611326565b9050610d6d818585611583565b600191505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e59610c1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610edf5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906131f4565b60405180910390fd5b60005b838390508110156110325781601a6000868685818110610f4457610f43613033565b5b9050602002016020810190610f599190612d70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610fbd57610fbc613033565b5b9050602002016020810190610fd29190612d70565b73ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7836040516110179190612a2d565b60405180910390a2808061102a906130ce565b915050610f21565b50505050565b600b5481565b611046610c1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110cc5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110290613260565b60405180910390fd5b60005b8383905081101561121f57816011600086868581811061113157611130613033565b5b90506020020160208101906111469190612d70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508383828181106111aa576111a9613033565b5b90506020020160208101906111bf9190612d70565b73ffffffffffffffffffffffffffffffffffffffff167f92280d3bbc5c5e81a23ec012e82d9574ad87464349e3a3e18190b042dc4d21f8836040516112049190612a2d565b60405180910390a28080611217906130ce565b91505061110e565b50505050565b61122d6112a8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361129c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611293906132f2565b60405180910390fd5b6112a581611f15565b50565b6112b0611326565b73ffffffffffffffffffffffffffffffffffffffff166112ce610c1c565b73ffffffffffffffffffffffffffffffffffffffff1614611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b9061335e565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611394906133f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613482565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ea9190612ad1565b60405180910390a3505050565b60006115038484610dca565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461157d578181101561156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906134ee565b60405180910390fd5b61157c848484840361132e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e990613580565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890613612565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117055750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b9061367e565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e85750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183e5750601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906136ea565b60405180910390fd5b600a60149054906101000a900460ff16806118e15750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119355750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90613756565b60405180910390fd5b6000810361198d5761198883836000611fdb565b611e6f565b600061199830610b4e565b90506000600b5482101590508080156119bd5750600a60159054906101000a900460ff165b80156119d65750600a60169054906101000a900460ff16155b8015611a2b5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015611a815750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ad75750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b1b576001600a60166101000a81548160ff021916908315150217905550611aff612251565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611bd15750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bdb57600090505b60008115611e5657601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c3e57506000601254115b15611d0c57611c6c612710611c5e601254886124f390919063ffffffff16565b61250990919063ffffffff16565b905060125460155482611c7f9190613776565b611c8991906137e7565b60186000828254611c9a9190612f93565b9250508190555060125460135482611cb29190613776565b611cbc91906137e7565b60166000828254611ccd9190612f93565b9250508190555060125460145482611ce59190613776565b611cef91906137e7565b60176000828254611d009190612f93565b92505081905550611e32565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d6757506000600c54115b15611e3157611d95612710611d87600c54886124f390919063ffffffff16565b61250990919063ffffffff16565b9050600c54600f5482611da89190613776565b611db291906137e7565b60186000828254611dc39190612f93565b92505081905550600c54600d5482611ddb9190613776565b611de591906137e7565b60166000828254611df69190612f93565b92505081905550600c54600e5482611e0e9190613776565b611e1891906137e7565b60176000828254611e299190612f93565b925050819055505b5b6000811115611e4757611e46873083611fdb565b5b8085611e539190613818565b94505b611e61878787611fdb565b601954601281905550505050505b505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361204a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612041906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b090613612565b60405180910390fd5b6120c483838361251f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613950565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122389190612ad1565b60405180910390a361224b848484612524565b50505050565b600061225c30610b4e565b905060006017546016546018546122739190612f93565b61227d9190612f93565b9050600080600283601854866122939190613776565b61229d91906137e7565b6122a791906137e7565b905060006122be828661252990919063ffffffff16565b905060004790506122ce8261253f565b60006122e3824761252990919063ffffffff16565b9050600061230e87612300601654856124f390919063ffffffff16565b61250990919063ffffffff16565b905060006123398861232b601754866124f390919063ffffffff16565b61250990919063ffffffff16565b9050600081838561234a9190613818565b6123549190613818565b905060006018819055506000601681905550600060178190555060008711801561237e5750600081115b156123cb5761238d878261277c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826018546040516123c293929190613970565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612411906139d8565b60006040518083038185875af1925050503d806000811461244e576040519150601f19603f3d011682016040523d82523d6000602084013e612453565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161249f906139d8565b60006040518083038185875af1925050503d80600081146124dc576040519150601f19603f3d011682016040523d82523d6000602084013e6124e1565b606091505b50508098505050505050505050505050565b600081836125019190613776565b905092915050565b6000818361251791906137e7565b905092915050565b505050565b505050565b600081836125379190613818565b905092915050565b6000600267ffffffffffffffff81111561255c5761255b612ba5565b5b60405190808252806020026020018201604052801561258a5781602001602082028036833780820191505090505b50905030816000815181106125a2576125a1613033565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266b9190613a02565b8160018151811061267f5761267e613033565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126e4307f00000000000000000000000000000000000000000000000000000000000000008461132e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612746959493929190613b28565b600060405180830381600087803b15801561276057600080fd5b505af1158015612774573d6000803e3d6000fd5b505050505050565b6127a7307f00000000000000000000000000000000000000000000000000000000000000008461132e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161282e96959493929190613b82565b60606040518083038185885af115801561284c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128719190613bf8565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128b2578082015181840152602081019050612897565b60008484015250505050565b6000601f19601f8301169050919050565b60006128da82612878565b6128e48185612883565b93506128f4818560208601612894565b6128fd816128be565b840191505092915050565b6000602082019050818103600083015261292281846128cf565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129698261293e565b9050919050565b6129798161295e565b811461298457600080fd5b50565b60008135905061299681612970565b92915050565b6000819050919050565b6129af8161299c565b81146129ba57600080fd5b50565b6000813590506129cc816129a6565b92915050565b600080604083850312156129e9576129e8612934565b5b60006129f785828601612987565b9250506020612a08858286016129bd565b9150509250929050565b60008115159050919050565b612a2781612a12565b82525050565b6000602082019050612a426000830184612a1e565b92915050565b6000819050919050565b6000612a6d612a68612a638461293e565b612a48565b61293e565b9050919050565b6000612a7f82612a52565b9050919050565b6000612a9182612a74565b9050919050565b612aa181612a86565b82525050565b6000602082019050612abc6000830184612a98565b92915050565b612acb8161299c565b82525050565b6000602082019050612ae66000830184612ac2565b92915050565b600080600060608486031215612b0557612b04612934565b5b6000612b1386828701612987565b9350506020612b2486828701612987565b9250506040612b35868287016129bd565b9150509250925092565b612b488161295e565b82525050565b6000602082019050612b636000830184612b3f565b92915050565b600060ff82169050919050565b612b7f81612b69565b82525050565b6000602082019050612b9a6000830184612b76565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bdd826128be565b810181811067ffffffffffffffff82111715612bfc57612bfb612ba5565b5b80604052505050565b6000612c0f61292a565b9050612c1b8282612bd4565b919050565b600067ffffffffffffffff821115612c3b57612c3a612ba5565b5b602082029050602081019050919050565b600080fd5b6000612c64612c5f84612c20565b612c05565b90508083825260208201905060208402830185811115612c8757612c86612c4c565b5b835b81811015612cb05780612c9c8882612987565b845260208401935050602081019050612c89565b5050509392505050565b600082601f830112612ccf57612cce612ba0565b5b8135612cdf848260208601612c51565b91505092915050565b612cf181612a12565b8114612cfc57600080fd5b50565b600081359050612d0e81612ce8565b92915050565b60008060408385031215612d2b57612d2a612934565b5b600083013567ffffffffffffffff811115612d4957612d48612939565b5b612d5585828601612cba565b9250506020612d6685828601612cff565b9150509250929050565b600060208284031215612d8657612d85612934565b5b6000612d9484828501612987565b91505092915050565b60008060408385031215612db457612db3612934565b5b6000612dc285828601612987565b9250506020612dd385828601612987565b9150509250929050565b600080fd5b60008083601f840112612df857612df7612ba0565b5b8235905067ffffffffffffffff811115612e1557612e14612ddd565b5b602083019150836020820283011115612e3157612e30612c4c565b5b9250929050565b600080600060408486031215612e5157612e50612934565b5b600084013567ffffffffffffffff811115612e6f57612e6e612939565b5b612e7b86828701612de2565b93509350506020612e8e86828701612cff565b9150509250925092565b7f54726164696e6720616c726561647920456265617262206163746976652e0000600082015250565b6000612ece601e83612883565b9150612ed982612e98565b602082019050919050565b60006020820190508181036000830152612efd81612ec1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f4b57607f821691505b602082108103612f5e57612f5d612f04565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9e8261299c565b9150612fa98361299c565b9250828201905080821115612fc157612fc0612f64565b5b92915050565b7f4e6f626262740000000000000000000000000000000000000000000000000000600082015250565b6000612ffd600683612883565b915061300882612fc7565b602082019050919050565b6000602082019050818103600083015261302c81612ff0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5468652050616e63616b65537761702070616972730000000000000000000000600082015250565b6000613098601583612883565b91506130a382613062565b602082019050919050565b600060208201905081810360008301526130c78161308b565b9050919050565b60006130d98261299c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361310b5761310a612f64565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613172602583612883565b915061317d82613116565b604082019050919050565b600060208201905081810360008301526131a181613165565b9050919050565b7f4e6f746261000000000000000000000000000000000000000000000000000000600082015250565b60006131de600583612883565b91506131e9826131a8565b602082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f4e6f740000000000000000000000000000000000000000000000000000000000600082015250565b600061324a600383612883565b915061325582613214565b602082019050919050565b600060208201905081810360008301526132798161323d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132dc602683612883565b91506132e782613280565b604082019050919050565b6000602082019050818103600083015261330b816132cf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613348602083612883565b915061335382613312565b602082019050919050565b600060208201905081810360008301526133778161333b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133da602483612883565b91506133e58261337e565b604082019050919050565b60006020820190508181036000830152613409816133cd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061346c602283612883565b915061347782613410565b604082019050919050565b6000602082019050818103600083015261349b8161345f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006134d8601d83612883565b91506134e3826134a2565b602082019050919050565b60006020820190508181036000830152613507816134cb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061356a602583612883565b91506135758261350e565b604082019050919050565b600060208201905081810360008301526135998161355d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135fc602383612883565b9150613607826135a0565b604082019050919050565b6000602082019050818103600083015261362b816135ef565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000613668601383612883565b915061367382613632565b602082019050919050565b600060208201905081810360008301526136978161365b565b9050919050565b7f626c61636b6c6973742100000000000000000000000000000000000000000000600082015250565b60006136d4600a83612883565b91506136df8261369e565b602082019050919050565b60006020820190508181036000830152613703816136c7565b9050919050565b7f54726164696e67206e6f74204562656172622079657420656e61626c65642100600082015250565b6000613740601f83612883565b915061374b8261370a565b602082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b60006137818261299c565b915061378c8361299c565b925082820261379a8161299c565b915082820484148315176137b1576137b0612f64565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137f28261299c565b91506137fd8361299c565b92508261380d5761380c6137b8565b5b828204905092915050565b60006138238261299c565b915061382e8361299c565b925082820390508181111561384657613845612f64565b5b92915050565b7f45524332303a207472616e73666572204562656172622066726f6d207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b60006138a8602c83612883565b91506138b38261384c565b604082019050919050565b600060208201905081810360008301526138d78161389b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061393a602683612883565b9150613945826138de565b604082019050919050565b600060208201905081810360008301526139698161392d565b9050919050565b60006060820190506139856000830186612ac2565b6139926020830185612ac2565b61399f6040830184612ac2565b949350505050565b600081905092915050565b50565b60006139c26000836139a7565b91506139cd826139b2565b600082019050919050565b60006139e3826139b5565b9150819050919050565b6000815190506139fc81612970565b92915050565b600060208284031215613a1857613a17612934565b5b6000613a26848285016139ed565b91505092915050565b6000819050919050565b6000613a54613a4f613a4a84613a2f565b612a48565b61299c565b9050919050565b613a6481613a39565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9f8161295e565b82525050565b6000613ab18383613a96565b60208301905092915050565b6000602082019050919050565b6000613ad582613a6a565b613adf8185613a75565b9350613aea83613a86565b8060005b83811015613b1b578151613b028882613aa5565b9750613b0d83613abd565b925050600181019050613aee565b5085935050505092915050565b600060a082019050613b3d6000830188612ac2565b613b4a6020830187613a5b565b8181036040830152613b5c8186613aca565b9050613b6b6060830185612b3f565b613b786080830184612ac2565b9695505050505050565b600060c082019050613b976000830189612b3f565b613ba46020830188612ac2565b613bb16040830187613a5b565b613bbe6060830186613a5b565b613bcb6080830185612b3f565b613bd860a0830184612ac2565b979650505050505050565b600081519050613bf2816129a6565b92915050565b600080600060608486031215613c1157613c10612934565b5b6000613c1f86828701613be3565b9350506020613c3086828701613be3565b9250506040613c4186828701613be3565b915050925092509256fea2646970667358221220b649e2d264ea08ee73ee1e2c1c5473fb9d50b0e2f3837f794603a3119588bd4e64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063c04a541411610095578063df960d7711610064578063df960d77146106c3578063e2f45605146106ec578063e941984614610717578063f2fde38b14610740576101e3565b8063c04a541414610605578063d469801614610630578063d85ba0631461065b578063dd62ed3e14610686576101e3565b806393ec52de116100d157806393ec52de1461053557806395d89b4114610560578063a457c2d71461058b578063a9059cbb146105c8576101e3565b8063715018a61461049f57806372784419146104b657806375f0a874146104df5780638da5cb5b1461050a576101e3565b8063313ce5671161017a57806353bebf4d1161014957806353bebf4d146103e35780636a486a8e1461040c5780636ddd17131461043757806370a0823114610462576101e3565b8063313ce56714610325578063395093511461035057806349bd5a5e1461038d5780634ada218b146103b8576101e3565b80631694505e116101b65780631694505e1461026757806318160ddd1461029257806323b872dd146102bd57806327c8f835146102fa576101e3565b806302ac8168146101e857806306fdde03146101ff578063095ea7b31461022a576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610769565b005b34801561020b57600080fd5b506102146107f9565b6040516102219190612908565b60405180910390f35b34801561023657600080fd5b50610251600480360381019061024c91906129d2565b61088b565b60405161025e9190612a2d565b60405180910390f35b34801561027357600080fd5b5061027c6108ae565b6040516102899190612aa7565b60405180910390f35b34801561029e57600080fd5b506102a76108d2565b6040516102b49190612ad1565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190612aec565b6108dc565b6040516102f19190612a2d565b60405180910390f35b34801561030657600080fd5b5061030f61090b565b60405161031c9190612b4e565b60405180910390f35b34801561033157600080fd5b5061033a610911565b6040516103479190612b85565b60405180910390f35b34801561035c57600080fd5b50610377600480360381019061037291906129d2565b61091a565b6040516103849190612a2d565b60405180910390f35b34801561039957600080fd5b506103a2610951565b6040516103af9190612b4e565b60405180910390f35b3480156103c457600080fd5b506103cd610977565b6040516103da9190612a2d565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190612d14565b61098a565b005b34801561041857600080fd5b50610421610b35565b60405161042e9190612ad1565b60405180910390f35b34801561044357600080fd5b5061044c610b3b565b6040516104599190612a2d565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612d70565b610b4e565b6040516104969190612ad1565b60405180910390f35b3480156104ab57600080fd5b506104b4610b96565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190612d70565b610baa565b005b3480156104eb57600080fd5b506104f4610bf6565b6040516105019190612b4e565b60405180910390f35b34801561051657600080fd5b5061051f610c1c565b60405161052c9190612b4e565b60405180910390f35b34801561054157600080fd5b5061054a610c46565b6040516105579190612ad1565b60405180910390f35b34801561056c57600080fd5b50610575610c4c565b6040516105829190612908565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad91906129d2565b610cde565b6040516105bf9190612a2d565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906129d2565b610d55565b6040516105fc9190612a2d565b60405180910390f35b34801561061157600080fd5b5061061a610d78565b6040516106279190612b4e565b60405180910390f35b34801561063c57600080fd5b50610645610d9e565b6040516106529190612b4e565b60405180910390f35b34801561066757600080fd5b50610670610dc4565b60405161067d9190612ad1565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190612d9d565b610dca565b6040516106ba9190612ad1565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190612e38565b610e51565b005b3480156106f857600080fd5b50610701611038565b60405161070e9190612ad1565b60405180910390f35b34801561072357600080fd5b5061073e60048036038101906107399190612e38565b61103e565b005b34801561074c57600080fd5b5061076760048036038101906107629190612d70565b611225565b005b6107716112a8565b600a60149054906101000a900460ff16156107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890612ee4565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b60606004805461080890612f33565b80601f016020809104026020016040519081016040528092919081815260200182805461083490612f33565b80156108815780601f1061085657610100808354040283529160200191610881565b820191906000526020600020905b81548152906001019060200180831161086457829003601f168201915b5050505050905090565b600080610896611326565b90506108a381858561132e565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000806108e7611326565b90506108f48582856114f7565b6108ff858585611583565b60019150509392505050565b61dead81565b60006012905090565b600080610925611326565b90506109468185856109378589610dca565b6109419190612f93565b61132e565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b610992610c1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a185750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90613013565b60405180910390fd5b60005b8251811015610b30576000838281518110610a7857610a77613033565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b09906130ae565b60405180910390fd5b610b1c8184611e74565b508080610b28906130ce565b915050610a5a565b505050565b60125481565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b9e6112a8565b610ba86000611f15565b565b610bb26112a8565b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610c5b90612f33565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8790612f33565b8015610cd45780601f10610ca957610100808354040283529160200191610cd4565b820191906000526020600020905b815481529060010190602001808311610cb757829003601f168201915b5050505050905090565b600080610ce9611326565b90506000610cf78286610dca565b905083811015610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390613188565b60405180910390fd5b610d49828686840361132e565b60019250505092915050565b600080610d60611326565b9050610d6d818585611583565b600191505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e59610c1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610edf5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906131f4565b60405180910390fd5b60005b838390508110156110325781601a6000868685818110610f4457610f43613033565b5b9050602002016020810190610f599190612d70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610fbd57610fbc613033565b5b9050602002016020810190610fd29190612d70565b73ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7836040516110179190612a2d565b60405180910390a2808061102a906130ce565b915050610f21565b50505050565b600b5481565b611046610c1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110cc5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110290613260565b60405180910390fd5b60005b8383905081101561121f57816011600086868581811061113157611130613033565b5b90506020020160208101906111469190612d70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508383828181106111aa576111a9613033565b5b90506020020160208101906111bf9190612d70565b73ffffffffffffffffffffffffffffffffffffffff167f92280d3bbc5c5e81a23ec012e82d9574ad87464349e3a3e18190b042dc4d21f8836040516112049190612a2d565b60405180910390a28080611217906130ce565b91505061110e565b50505050565b61122d6112a8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361129c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611293906132f2565b60405180910390fd5b6112a581611f15565b50565b6112b0611326565b73ffffffffffffffffffffffffffffffffffffffff166112ce610c1c565b73ffffffffffffffffffffffffffffffffffffffff1614611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b9061335e565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611394906133f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613482565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ea9190612ad1565b60405180910390a3505050565b60006115038484610dca565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461157d578181101561156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906134ee565b60405180910390fd5b61157c848484840361132e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e990613580565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890613612565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117055750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b9061367e565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e85750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183e5750601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906136ea565b60405180910390fd5b600a60149054906101000a900460ff16806118e15750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119355750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90613756565b60405180910390fd5b6000810361198d5761198883836000611fdb565b611e6f565b600061199830610b4e565b90506000600b5482101590508080156119bd5750600a60159054906101000a900460ff165b80156119d65750600a60169054906101000a900460ff16155b8015611a2b5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015611a815750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ad75750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b1b576001600a60166101000a81548160ff021916908315150217905550611aff612251565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611bd15750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bdb57600090505b60008115611e5657601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c3e57506000601254115b15611d0c57611c6c612710611c5e601254886124f390919063ffffffff16565b61250990919063ffffffff16565b905060125460155482611c7f9190613776565b611c8991906137e7565b60186000828254611c9a9190612f93565b9250508190555060125460135482611cb29190613776565b611cbc91906137e7565b60166000828254611ccd9190612f93565b9250508190555060125460145482611ce59190613776565b611cef91906137e7565b60176000828254611d009190612f93565b92505081905550611e32565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d6757506000600c54115b15611e3157611d95612710611d87600c54886124f390919063ffffffff16565b61250990919063ffffffff16565b9050600c54600f5482611da89190613776565b611db291906137e7565b60186000828254611dc39190612f93565b92505081905550600c54600d5482611ddb9190613776565b611de591906137e7565b60166000828254611df69190612f93565b92505081905550600c54600e5482611e0e9190613776565b611e1891906137e7565b60176000828254611e299190612f93565b925050819055505b5b6000811115611e4757611e46873083611fdb565b5b8085611e539190613818565b94505b611e61878787611fdb565b601954601281905550505050505b505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361204a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612041906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b090613612565b60405180910390fd5b6120c483838361251f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613950565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122389190612ad1565b60405180910390a361224b848484612524565b50505050565b600061225c30610b4e565b905060006017546016546018546122739190612f93565b61227d9190612f93565b9050600080600283601854866122939190613776565b61229d91906137e7565b6122a791906137e7565b905060006122be828661252990919063ffffffff16565b905060004790506122ce8261253f565b60006122e3824761252990919063ffffffff16565b9050600061230e87612300601654856124f390919063ffffffff16565b61250990919063ffffffff16565b905060006123398861232b601754866124f390919063ffffffff16565b61250990919063ffffffff16565b9050600081838561234a9190613818565b6123549190613818565b905060006018819055506000601681905550600060178190555060008711801561237e5750600081115b156123cb5761238d878261277c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826018546040516123c293929190613970565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612411906139d8565b60006040518083038185875af1925050503d806000811461244e576040519150601f19603f3d011682016040523d82523d6000602084013e612453565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161249f906139d8565b60006040518083038185875af1925050503d80600081146124dc576040519150601f19603f3d011682016040523d82523d6000602084013e6124e1565b606091505b50508098505050505050505050505050565b600081836125019190613776565b905092915050565b6000818361251791906137e7565b905092915050565b505050565b505050565b600081836125379190613818565b905092915050565b6000600267ffffffffffffffff81111561255c5761255b612ba5565b5b60405190808252806020026020018201604052801561258a5781602001602082028036833780820191505090505b50905030816000815181106125a2576125a1613033565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266b9190613a02565b8160018151811061267f5761267e613033565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126e4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461132e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612746959493929190613b28565b600060405180830381600087803b15801561276057600080fd5b505af1158015612774573d6000803e3d6000fd5b505050505050565b6127a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461132e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161282e96959493929190613b82565b60606040518083038185885af115801561284c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128719190613bf8565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128b2578082015181840152602081019050612897565b60008484015250505050565b6000601f19601f8301169050919050565b60006128da82612878565b6128e48185612883565b93506128f4818560208601612894565b6128fd816128be565b840191505092915050565b6000602082019050818103600083015261292281846128cf565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129698261293e565b9050919050565b6129798161295e565b811461298457600080fd5b50565b60008135905061299681612970565b92915050565b6000819050919050565b6129af8161299c565b81146129ba57600080fd5b50565b6000813590506129cc816129a6565b92915050565b600080604083850312156129e9576129e8612934565b5b60006129f785828601612987565b9250506020612a08858286016129bd565b9150509250929050565b60008115159050919050565b612a2781612a12565b82525050565b6000602082019050612a426000830184612a1e565b92915050565b6000819050919050565b6000612a6d612a68612a638461293e565b612a48565b61293e565b9050919050565b6000612a7f82612a52565b9050919050565b6000612a9182612a74565b9050919050565b612aa181612a86565b82525050565b6000602082019050612abc6000830184612a98565b92915050565b612acb8161299c565b82525050565b6000602082019050612ae66000830184612ac2565b92915050565b600080600060608486031215612b0557612b04612934565b5b6000612b1386828701612987565b9350506020612b2486828701612987565b9250506040612b35868287016129bd565b9150509250925092565b612b488161295e565b82525050565b6000602082019050612b636000830184612b3f565b92915050565b600060ff82169050919050565b612b7f81612b69565b82525050565b6000602082019050612b9a6000830184612b76565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bdd826128be565b810181811067ffffffffffffffff82111715612bfc57612bfb612ba5565b5b80604052505050565b6000612c0f61292a565b9050612c1b8282612bd4565b919050565b600067ffffffffffffffff821115612c3b57612c3a612ba5565b5b602082029050602081019050919050565b600080fd5b6000612c64612c5f84612c20565b612c05565b90508083825260208201905060208402830185811115612c8757612c86612c4c565b5b835b81811015612cb05780612c9c8882612987565b845260208401935050602081019050612c89565b5050509392505050565b600082601f830112612ccf57612cce612ba0565b5b8135612cdf848260208601612c51565b91505092915050565b612cf181612a12565b8114612cfc57600080fd5b50565b600081359050612d0e81612ce8565b92915050565b60008060408385031215612d2b57612d2a612934565b5b600083013567ffffffffffffffff811115612d4957612d48612939565b5b612d5585828601612cba565b9250506020612d6685828601612cff565b9150509250929050565b600060208284031215612d8657612d85612934565b5b6000612d9484828501612987565b91505092915050565b60008060408385031215612db457612db3612934565b5b6000612dc285828601612987565b9250506020612dd385828601612987565b9150509250929050565b600080fd5b60008083601f840112612df857612df7612ba0565b5b8235905067ffffffffffffffff811115612e1557612e14612ddd565b5b602083019150836020820283011115612e3157612e30612c4c565b5b9250929050565b600080600060408486031215612e5157612e50612934565b5b600084013567ffffffffffffffff811115612e6f57612e6e612939565b5b612e7b86828701612de2565b93509350506020612e8e86828701612cff565b9150509250925092565b7f54726164696e6720616c726561647920456265617262206163746976652e0000600082015250565b6000612ece601e83612883565b9150612ed982612e98565b602082019050919050565b60006020820190508181036000830152612efd81612ec1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f4b57607f821691505b602082108103612f5e57612f5d612f04565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9e8261299c565b9150612fa98361299c565b9250828201905080821115612fc157612fc0612f64565b5b92915050565b7f4e6f626262740000000000000000000000000000000000000000000000000000600082015250565b6000612ffd600683612883565b915061300882612fc7565b602082019050919050565b6000602082019050818103600083015261302c81612ff0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5468652050616e63616b65537761702070616972730000000000000000000000600082015250565b6000613098601583612883565b91506130a382613062565b602082019050919050565b600060208201905081810360008301526130c78161308b565b9050919050565b60006130d98261299c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361310b5761310a612f64565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613172602583612883565b915061317d82613116565b604082019050919050565b600060208201905081810360008301526131a181613165565b9050919050565b7f4e6f746261000000000000000000000000000000000000000000000000000000600082015250565b60006131de600583612883565b91506131e9826131a8565b602082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f4e6f740000000000000000000000000000000000000000000000000000000000600082015250565b600061324a600383612883565b915061325582613214565b602082019050919050565b600060208201905081810360008301526132798161323d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132dc602683612883565b91506132e782613280565b604082019050919050565b6000602082019050818103600083015261330b816132cf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613348602083612883565b915061335382613312565b602082019050919050565b600060208201905081810360008301526133778161333b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133da602483612883565b91506133e58261337e565b604082019050919050565b60006020820190508181036000830152613409816133cd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061346c602283612883565b915061347782613410565b604082019050919050565b6000602082019050818103600083015261349b8161345f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006134d8601d83612883565b91506134e3826134a2565b602082019050919050565b60006020820190508181036000830152613507816134cb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061356a602583612883565b91506135758261350e565b604082019050919050565b600060208201905081810360008301526135998161355d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135fc602383612883565b9150613607826135a0565b604082019050919050565b6000602082019050818103600083015261362b816135ef565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000613668601383612883565b915061367382613632565b602082019050919050565b600060208201905081810360008301526136978161365b565b9050919050565b7f626c61636b6c6973742100000000000000000000000000000000000000000000600082015250565b60006136d4600a83612883565b91506136df8261369e565b602082019050919050565b60006020820190508181036000830152613703816136c7565b9050919050565b7f54726164696e67206e6f74204562656172622079657420656e61626c65642100600082015250565b6000613740601f83612883565b915061374b8261370a565b602082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b60006137818261299c565b915061378c8361299c565b925082820261379a8161299c565b915082820484148315176137b1576137b0612f64565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137f28261299c565b91506137fd8361299c565b92508261380d5761380c6137b8565b5b828204905092915050565b60006138238261299c565b915061382e8361299c565b925082820390508181111561384657613845612f64565b5b92915050565b7f45524332303a207472616e73666572204562656172622066726f6d207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b60006138a8602c83612883565b91506138b38261384c565b604082019050919050565b600060208201905081810360008301526138d78161389b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061393a602683612883565b9150613945826138de565b604082019050919050565b600060208201905081810360008301526139698161392d565b9050919050565b60006060820190506139856000830186612ac2565b6139926020830185612ac2565b61399f6040830184612ac2565b949350505050565b600081905092915050565b50565b60006139c26000836139a7565b91506139cd826139b2565b600082019050919050565b60006139e3826139b5565b9150819050919050565b6000815190506139fc81612970565b92915050565b600060208284031215613a1857613a17612934565b5b6000613a26848285016139ed565b91505092915050565b6000819050919050565b6000613a54613a4f613a4a84613a2f565b612a48565b61299c565b9050919050565b613a6481613a39565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9f8161295e565b82525050565b6000613ab18383613a96565b60208301905092915050565b6000602082019050919050565b6000613ad582613a6a565b613adf8185613a75565b9350613aea83613a86565b8060005b83811015613b1b578151613b028882613aa5565b9750613b0d83613abd565b925050600181019050613aee565b5085935050505092915050565b600060a082019050613b3d6000830188612ac2565b613b4a6020830187613a5b565b8181036040830152613b5c8186613aca565b9050613b6b6060830185612b3f565b613b786080830184612ac2565b9695505050505050565b600060c082019050613b976000830189612b3f565b613ba46020830188612ac2565b613bb16040830187613a5b565b613bbe6060830186613a5b565b613bcb6080830185612b3f565b613bd860a0830184612ac2565b979650505050505050565b600081519050613bf2816129a6565b92915050565b600080600060608486031215613c1157613c10612934565b5b6000613c1f86828701613be3565b9350506020613c3086828701613be3565b9250506040613c4186828701613be3565b915050925092509256fea2646970667358221220b649e2d264ea08ee73ee1e2c1c5473fb9d50b0e2f3837f794603a3119588bd4e64736f6c63430008110033

Deployed Bytecode Sourcemap

26856:10052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29890:173;;;;;;;;;;;;;:::i;:::-;;7509:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9421:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26931:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8382:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9671:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27139:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8224:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9974:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26989:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27201:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30672:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27545:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27231:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8553:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1601:103;;;;;;;;;;;;;:::i;:::-;;30255:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27026:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;953:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7041:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7728:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10252:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8915:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27063:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27102:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27334:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9212:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30349:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27292:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31018:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1859:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29890:173;839:13;:11;:13::i;:::-;29945:14:::1;;;;;;;;;;;29944:15;29936:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;30022:4;30005:14;;:21;;;;;;;;;;;;;;;;;;30051:4;30037:11;;:18;;;;;;;;;;;;;;;;;;29890:173::o:0;7509:100::-;7563:13;7596:5;7589:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7509:100;:::o;9421:242::-;9540:4;9562:13;9578:12;:10;:12::i;:::-;9562:28;;9601:32;9610:5;9617:7;9626:6;9601:8;:32::i;:::-;9651:4;9644:11;;;9421:242;;;;:::o;26931:51::-;;;:::o;8382:108::-;8443:7;8470:12;;8463:19;;8382:108;:::o;9671:295::-;9802:4;9819:15;9837:12;:10;:12::i;:::-;9819:30;;9860:38;9876:4;9882:7;9891:6;9860:15;:38::i;:::-;9909:27;9919:4;9925:2;9929:6;9909:9;:27::i;:::-;9954:4;9947:11;;;9671:295;;;;;:::o;27139:53::-;27185:6;27139:53;:::o;8224:93::-;8282:5;8307:2;8300:9;;8224:93;:::o;9974:270::-;10089:4;10111:13;10127:12;:10;:12::i;:::-;10111:28;;10150:64;10159:5;10166:7;10203:10;10175:25;10185:5;10192:7;10175:9;:25::i;:::-;:38;;;;:::i;:::-;10150:8;:64::i;:::-;10232:4;10225:11;;;9974:270;;;;:::o;26989:28::-;;;;;;;;;;;;;:::o;27201:26::-;;;;;;;;;;;;;:::o;30672:340::-;30763:7;:5;:7::i;:::-;30749:21;;:10;:21;;;:46;;;;30788:7;;;;;;;;;;;30774:21;;:10;:21;;;30749:46;30741:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30818:9;30813:196;30837:5;:12;30833:1;:16;30813:196;;;30867:12;30882:5;30888:1;30882:8;;;;;;;;:::i;:::-;;;;;;;;30867:23;;30917:13;;;;;;;;;;;30909:21;;:4;:21;;;30901:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;30967:34;30989:4;30995:5;30967:21;:34::i;:::-;30856:153;30851:3;;;;;:::i;:::-;;;;30813:196;;;;30672:340;;:::o;27545:28::-;;;;:::o;27231:23::-;;;;;;;;;;;;;:::o;8553:177::-;8672:7;8704:9;:18;8714:7;8704:18;;;;;;;;;;;;;;;;8697:25;;8553:177;;;:::o;1601:103::-;839:13;:11;:13::i;:::-;1666:30:::1;1693:1;1666:18;:30::i;:::-;1601:103::o:0;30255:90::-;839:13;:11;:13::i;:::-;30329:8:::1;30319:7;;:18;;;;;;;;;;;;;;;;;;30255:90:::0;:::o;27026:30::-;;;;;;;;;;;;;:::o;953:87::-;999:7;1026:6;;;;;;;;;;;1019:13;;953:87;:::o;7041:26::-;;;;:::o;7728:104::-;7784:13;7817:7;7810:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7728:104;:::o;10252:505::-;10372:4;10394:13;10410:12;:10;:12::i;:::-;10394:28;;10433:24;10460:25;10470:5;10477:7;10460:9;:25::i;:::-;10433:52;;10538:15;10518:16;:35;;10496:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;10654:60;10663:5;10670:7;10698:15;10679:16;:34;10654:8;:60::i;:::-;10745:4;10738:11;;;;10252:505;;;;:::o;8915:234::-;9030:4;9052:13;9068:12;:10;:12::i;:::-;9052:28;;9091;9101:5;9108:2;9112:6;9091:9;:28::i;:::-;9137:4;9130:11;;;8915:234;;;;:::o;27063:32::-;;;;;;;;;;;;;:::o;27102:30::-;;;;;;;;;;;;;:::o;27334:27::-;;;;:::o;9212:201::-;9346:7;9378:11;:18;9390:5;9378:18;;;;;;;;;;;;;;;:27;9397:7;9378:27;;;;;;;;;;;;;;;;9371:34;;9212:201;;;;:::o;30349:310::-;30453:7;:5;:7::i;:::-;30439:21;;:10;:21;;;:46;;;;30478:7;;;;;;;;;;;30464:21;;:10;:21;;;30439:46;30431:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30507:9;30502:154;30526:8;;:15;;30522:1;:19;30502:154;;;30586:8;30559:11;:24;30571:8;;30580:1;30571:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30559:24;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;30626:8;;30635:1;30626:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30610:38;;;30639:8;30610:38;;;;;;:::i;:::-;;;;;;;;30543:3;;;;;:::i;:::-;;;;30502:154;;;;30349:310;;;:::o;27292:33::-;;;;:::o;31018:290::-;31116:7;:5;:7::i;:::-;31102:21;;:10;:21;;;:46;;;;31141:7;;;;;;;;;;;31127:21;;:10;:21;;;31102:46;31094:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;31168:9;31163:142;31187:8;;:15;;31183:1;:19;31163:142;;;31243:8;31220:7;:20;31228:8;;31237:1;31228:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31220:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;31275:8;;31284:1;31275:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31267:30;;;31288:8;31267:30;;;;;;:::i;:::-;;;;;;;;31204:3;;;;;:::i;:::-;;;;31163:142;;;;31018:290;;;:::o;1859:238::-;839:13;:11;:13::i;:::-;1982:1:::1;1962:22;;:8;:22;;::::0;1940:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2061:28;2080:8;2061:18;:28::i;:::-;1859:238:::0;:::o;1118:132::-;1193:12;:10;:12::i;:::-;1182:23;;:7;:5;:7::i;:::-;:23;;;1174:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1118:132::o;134:98::-;187:7;214:10;207:17;;134:98;:::o;12898:380::-;13051:1;13034:19;;:5;:19;;;13026:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13132:1;13113:21;;:7;:21;;;13105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13216:6;13186:11;:18;13198:5;13186:18;;;;;;;;;;;;;;;:27;13205:7;13186:27;;;;;;;;;;;;;;;:36;;;;13254:7;13238:32;;13247:5;13238:32;;;13263:6;13238:32;;;;;;:::i;:::-;;;;;;;;12898:380;;;:::o;13286:498::-;13417:24;13444:25;13454:5;13461:7;13444:9;:25::i;:::-;13417:52;;13504:17;13484:16;:37;13480:297;;13584:6;13564:16;:26;;13538:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13699:51;13708:5;13715:7;13743:6;13724:16;:25;13699:8;:51::i;:::-;13480:297;13406:378;13286:498;;;:::o;31509:2514::-;31657:1;31641:18;;:4;:18;;;31633:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31734:1;31720:16;;:2;:16;;;31712:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31796:7;:13;31804:4;31796:13;;;;;;;;;;;;;;;;;;;;;;;;;31795:14;:30;;;;;31814:7;:11;31822:2;31814:11;;;;;;;;;;;;;;;;;;;;;;;;;31813:12;31795:30;31787:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;31869:7;:13;31877:4;31869:13;;;;;;;;;;;;;;;;;;;;;;;;;31868:14;:30;;;;;31887:7;:11;31895:2;31887:11;;;;;;;;;;;;;;;;;;;;;;;;;31886:12;31868:30;:53;;;;;31903:7;:18;31911:9;31903:18;;;;;;;;;;;;;;;;;;;;;;;;;31902:19;31868:53;31860:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31955:14;;;;;;;;;;;:35;;;;31973:11;:17;31985:4;31973:17;;;;;;;;;;;;;;;;;;;;;;;;;31955:35;:54;;;;31994:11;:15;32006:2;31994:15;;;;;;;;;;;;;;;;;;;;;;;;;31955:54;31947:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;32070:1;32060:6;:11;32056:93;;32088:28;32104:4;32110:2;32114:1;32088:15;:28::i;:::-;32131:7;;32056:93;32163:28;32194:24;32212:4;32194:9;:24::i;:::-;32163:55;;32231:12;32270:18;;32246:20;:42;;32231:57;;32319:7;:35;;;;;32343:11;;;;;;;;;;;32319:35;:48;;;;;32358:9;;;;;;;;;;;32357:10;32319:48;:82;;;;;32369:26;:32;32396:4;32369:32;;;;;;;;;;;;;;;;;;;;;;;;;32319:82;:117;;;;;32419:11;:17;32431:4;32419:17;;;;;;;;;;;;;;;;;;;;;;;;;32418:18;32319:117;:150;;;;;32454:11;:15;32466:2;32454:15;;;;;;;;;;;;;;;;;;;;;;;;;32453:16;32319:150;32301:285;;;32508:4;32496:9;;:16;;;;;;;;;;;;;;;;;;32529:11;:9;:11::i;:::-;32569:5;32557:9;;:17;;;;;;;;;;;;;;;;;;32301:285;32598:12;32614:9;;;;;;;;;;;32613:10;32598:25;;32640:11;:17;32652:4;32640:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;32661:11;:15;32673:2;32661:15;;;;;;;;;;;;;;;;;;;;;;;;;32640:36;32636:84;;;32703:5;32693:15;;32636:84;32732:12;32769:7;32765:1166;;;32821:26;:30;32848:2;32821:30;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;32871:1;32855:13;;:17;32821:51;32817:965;;;32900:36;32930:5;32900:25;32911:13;;32900:6;:10;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;32893:43;;33049:13;;33007:17;;33000:4;:24;;;;:::i;:::-;32999:63;;;;:::i;:::-;32955:19;;:107;;;;;;;:::i;:::-;;;;;;;;33175:13;;33133:17;;33126:4;:24;;;;:::i;:::-;33125:63;;;;:::i;:::-;33081:19;;:107;;;;;;;:::i;:::-;;;;;;;;33305:13;;33261:19;;33254:4;:26;;;;:::i;:::-;33253:65;;;;:::i;:::-;33207:21;;:111;;;;;;;:::i;:::-;;;;;;;;32817:965;;;33380:26;:32;33407:4;33380:32;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;33431:1;33416:12;;:16;33380:52;33376:406;;;33460:35;33489:5;33460:24;33471:12;;33460:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;33453:42;;33558:12;;33545:9;;33538:4;:16;;;;:::i;:::-;33537:33;;;;:::i;:::-;33514:19;;:56;;;;;;;:::i;:::-;;;;;;;;33635:12;;33620:11;;33613:4;:18;;;;:::i;:::-;33612:35;;;;:::i;:::-;33589:19;;:58;;;;;;;:::i;:::-;;;;;;;;33754:12;;33720:9;;33713:4;:16;;;;:::i;:::-;33712:54;;;;:::i;:::-;33666:21;;:100;;;;;;;:::i;:::-;;;;;;;;33376:406;32817:965;33809:1;33802:4;:8;33798:91;;;33831:42;33847:4;33861;33868;33831:15;:42::i;:::-;33798:91;33915:4;33905:14;;;;;:::i;:::-;;;32765:1166;33943:33;33959:4;33965:2;33969:6;33943:15;:33::i;:::-;34003:12;;33987:13;:28;;;;31622:2401;;;;31509:2514;;;;:::o;31320:181::-;31432:5;31397:26;:32;31424:4;31397:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;31487:5;31453:40;;31481:4;31453:40;;;;;;;;;;;;31320:181;;:::o;2257:191::-;2331:16;2350:6;;;;;;;;;;;2331:25;;2376:8;2367:6;;:17;;;;;;;;;;;;;;;;;;2431:8;2400:40;;2421:8;2400:40;;;;;;;;;;;;2320:128;2257:191;:::o;10765:876::-;10904:1;10888:18;;:4;:18;;;10880:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10988:1;10974:16;;:2;:16;;;10966:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11043:38;11064:4;11070:2;11074:6;11043:20;:38::i;:::-;11094:19;11116:9;:15;11126:4;11116:15;;;;;;;;;;;;;;;;11094:37;;11179:6;11164:11;:21;;11142:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11319:6;11305:11;:20;11287:9;:15;11297:4;11287:15;;;;;;;;;;;;;;;:38;;;;11522:6;11505:9;:13;11515:2;11505:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;11572:2;11557:26;;11566:4;11557:26;;;11576:6;11557:26;;;;;;:::i;:::-;;;;;;;;11596:37;11616:4;11622:2;11626:6;11596:19;:37::i;:::-;10869:772;10765:876;;;:::o;35109:1794::-;35150:23;35176:24;35194:4;35176:9;:24::i;:::-;35150:50;;35211:25;35309:21;;35274:19;;35239;;:54;;;;:::i;:::-;:91;;;;:::i;:::-;35211:119;;35341:12;35368:23;35482:1;35449:17;35413:19;;35395:15;:37;;;;:::i;:::-;35394:72;;;;:::i;:::-;:89;;;;:::i;:::-;35368:115;;35494:26;35523:36;35543:15;35523;:19;;:36;;;;:::i;:::-;35494:65;;35572:25;35600:21;35572:49;;35634:37;35652:18;35634:17;:37::i;:::-;35684:18;35705:44;35731:17;35705:21;:25;;:44;;;;:::i;:::-;35684:65;;35762:23;35788:82;35842:17;35788:35;35803:19;;35788:10;:14;;:35;;;;:::i;:::-;:39;;:82;;;;:::i;:::-;35762:108;;35883:25;35911:84;35967:17;35911:37;35926:21;;35911:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;35883:112;;36008:23;36091:17;36060:15;36034:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;36008:100;;36143:1;36121:19;:23;;;;36177:1;36155:19;:23;;;;36213:1;36189:21;:25;;;;36249:1;36231:15;:19;:42;;;;;36272:1;36254:15;:19;36231:42;36227:280;;;36290:47;36304:15;36321;36290:13;:47::i;:::-;36357:138;36390:18;36427:15;36461:19;;36357:138;;;;;;;;:::i;:::-;;;;;;;;36227:280;36728:17;;;;;;;;;;;36720:31;;36759:17;36720:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36706:75;;;;;36816:15;;;;;;;;;;;36808:29;;36859:21;36808:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36794:101;;;;;35139:1764;;;;;;;;;;35109:1794::o;17375:98::-;17433:7;17464:1;17460;:5;;;;:::i;:::-;17453:12;;17375:98;;;;:::o;17698:::-;17756:7;17787:1;17783;:5;;;;:::i;:::-;17776:12;;17698:98;;;;:::o;13792:125::-;;;;:::o;13925:124::-;;;;:::o;17018:98::-;17076:7;17107:1;17103;:5;;;;:::i;:::-;17096:12;;17018:98;;;;:::o;34031:503::-;34099:21;34137:1;34123:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34099:40;;34168:4;34150;34155:1;34150:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34194:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34184:4;34189:1;34184:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;34229:62;34246:4;34261:15;34279:11;34229:8;:62::i;:::-;34330:15;:66;;;34411:11;34437:1;34453:4;34480;34500:15;34330:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34088:446;34031:503;:::o;34542:372::-;34625:62;34642:4;34657:15;34675:11;34625:8;:62::i;:::-;34700:15;:31;;;34739:9;34772:4;34792:11;34818:1;34834;34850:15;;;;;;;;;;;34880;34700:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34542: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:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:117::-;6292:1;6289;6282:12;6306:180;6354:77;6351:1;6344:88;6451:4;6448:1;6441:15;6475:4;6472:1;6465:15;6492:281;6575:27;6597:4;6575:27;:::i;:::-;6567:6;6563:40;6705:6;6693:10;6690:22;6669:18;6657:10;6654:34;6651:62;6648:88;;;6716:18;;:::i;:::-;6648:88;6756:10;6752:2;6745:22;6535:238;6492:281;;:::o;6779:129::-;6813:6;6840:20;;:::i;:::-;6830:30;;6869:33;6897:4;6889:6;6869:33;:::i;:::-;6779:129;;;:::o;6914:311::-;6991:4;7081:18;7073:6;7070:30;7067:56;;;7103:18;;:::i;:::-;7067:56;7153:4;7145:6;7141:17;7133:25;;7213:4;7207;7203:15;7195:23;;6914:311;;;:::o;7231:117::-;7340:1;7337;7330:12;7371:710;7467:5;7492:81;7508:64;7565:6;7508:64;:::i;:::-;7492:81;:::i;:::-;7483:90;;7593:5;7622:6;7615:5;7608:21;7656:4;7649:5;7645:16;7638:23;;7709:4;7701:6;7697:17;7689:6;7685:30;7738:3;7730:6;7727:15;7724:122;;;7757:79;;:::i;:::-;7724:122;7872:6;7855:220;7889:6;7884:3;7881:15;7855:220;;;7964:3;7993:37;8026:3;8014:10;7993:37;:::i;:::-;7988:3;7981:50;8060:4;8055:3;8051:14;8044:21;;7931:144;7915:4;7910:3;7906:14;7899:21;;7855:220;;;7859:21;7473:608;;7371:710;;;;;:::o;8104:370::-;8175:5;8224:3;8217:4;8209:6;8205:17;8201:27;8191:122;;8232:79;;:::i;:::-;8191:122;8349:6;8336:20;8374:94;8464:3;8456:6;8449:4;8441:6;8437:17;8374:94;:::i;:::-;8365:103;;8181:293;8104:370;;;;:::o;8480:116::-;8550:21;8565:5;8550:21;:::i;:::-;8543:5;8540:32;8530:60;;8586:1;8583;8576:12;8530:60;8480:116;:::o;8602:133::-;8645:5;8683:6;8670:20;8661:29;;8699:30;8723:5;8699:30;:::i;:::-;8602:133;;;;:::o;8741:678::-;8831:6;8839;8888:2;8876:9;8867:7;8863:23;8859:32;8856:119;;;8894:79;;:::i;:::-;8856:119;9042:1;9031:9;9027:17;9014:31;9072:18;9064:6;9061:30;9058:117;;;9094:79;;:::i;:::-;9058:117;9199:78;9269:7;9260:6;9249:9;9245:22;9199:78;:::i;:::-;9189:88;;8985:302;9326:2;9352:50;9394:7;9385:6;9374:9;9370:22;9352:50;:::i;:::-;9342:60;;9297:115;8741:678;;;;;:::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:474::-;9828:6;9836;9885:2;9873:9;9864:7;9860:23;9856:32;9853:119;;;9891:79;;:::i;:::-;9853:119;10011:1;10036:53;10081:7;10072:6;10061:9;10057:22;10036:53;:::i;:::-;10026:63;;9982:117;10138:2;10164:53;10209:7;10200:6;10189:9;10185:22;10164:53;:::i;:::-;10154:63;;10109:118;9760:474;;;;;:::o;10240:117::-;10349:1;10346;10339:12;10380:568;10453:8;10463:6;10513:3;10506:4;10498:6;10494:17;10490:27;10480:122;;10521:79;;:::i;:::-;10480:122;10634:6;10621:20;10611:30;;10664:18;10656:6;10653:30;10650:117;;;10686:79;;:::i;:::-;10650:117;10800:4;10792:6;10788:17;10776:29;;10854:3;10846:4;10838:6;10834:17;10824:8;10820:32;10817:41;10814:128;;;10861:79;;:::i;:::-;10814:128;10380:568;;;;;:::o;10954:698::-;11046:6;11054;11062;11111:2;11099:9;11090:7;11086:23;11082:32;11079:119;;;11117:79;;:::i;:::-;11079:119;11265:1;11254:9;11250:17;11237:31;11295:18;11287:6;11284:30;11281:117;;;11317:79;;:::i;:::-;11281:117;11430:80;11502:7;11493:6;11482:9;11478:22;11430:80;:::i;:::-;11412:98;;;;11208:312;11559:2;11585:50;11627:7;11618:6;11607:9;11603:22;11585:50;:::i;:::-;11575:60;;11530:115;10954:698;;;;;:::o;11658:180::-;11798:32;11794:1;11786:6;11782:14;11775:56;11658:180;:::o;11844:366::-;11986:3;12007:67;12071:2;12066:3;12007:67;:::i;:::-;12000:74;;12083:93;12172:3;12083:93;:::i;:::-;12201:2;12196:3;12192:12;12185:19;;11844:366;;;:::o;12216:419::-;12382:4;12420:2;12409:9;12405:18;12397:26;;12469:9;12463:4;12459:20;12455:1;12444:9;12440:17;12433:47;12497:131;12623:4;12497:131;:::i;:::-;12489:139;;12216:419;;;:::o;12641:180::-;12689:77;12686:1;12679:88;12786:4;12783:1;12776:15;12810:4;12807:1;12800:15;12827:320;12871:6;12908:1;12902:4;12898:12;12888:22;;12955:1;12949:4;12945:12;12976:18;12966:81;;13032:4;13024:6;13020:17;13010:27;;12966:81;13094:2;13086:6;13083:14;13063:18;13060:38;13057:84;;13113:18;;:::i;:::-;13057:84;12878:269;12827:320;;;:::o;13153:180::-;13201:77;13198:1;13191:88;13298:4;13295:1;13288:15;13322:4;13319:1;13312:15;13339:191;13379:3;13398:20;13416:1;13398:20;:::i;:::-;13393:25;;13432:20;13450:1;13432:20;:::i;:::-;13427:25;;13475:1;13472;13468:9;13461:16;;13496:3;13493:1;13490:10;13487:36;;;13503:18;;:::i;:::-;13487:36;13339:191;;;;:::o;13536:156::-;13676:8;13672:1;13664:6;13660:14;13653:32;13536:156;:::o;13698:365::-;13840:3;13861:66;13925:1;13920:3;13861:66;:::i;:::-;13854:73;;13936:93;14025:3;13936:93;:::i;:::-;14054:2;14049:3;14045:12;14038:19;;13698:365;;;:::o;14069:419::-;14235:4;14273:2;14262:9;14258:18;14250:26;;14322:9;14316:4;14312:20;14308:1;14297:9;14293:17;14286:47;14350:131;14476:4;14350:131;:::i;:::-;14342:139;;14069:419;;;:::o;14494:180::-;14542:77;14539:1;14532:88;14639:4;14636:1;14629:15;14663:4;14660:1;14653:15;14680:171;14820:23;14816:1;14808:6;14804:14;14797:47;14680:171;:::o;14857:366::-;14999:3;15020:67;15084:2;15079:3;15020:67;:::i;:::-;15013:74;;15096:93;15185:3;15096:93;:::i;:::-;15214:2;15209:3;15205:12;15198:19;;14857:366;;;:::o;15229:419::-;15395:4;15433:2;15422:9;15418:18;15410:26;;15482:9;15476:4;15472:20;15468:1;15457:9;15453:17;15446:47;15510:131;15636:4;15510:131;:::i;:::-;15502:139;;15229:419;;;:::o;15654:233::-;15693:3;15716:24;15734:5;15716:24;:::i;:::-;15707:33;;15762:66;15755:5;15752:77;15749:103;;15832:18;;:::i;:::-;15749:103;15879:1;15872:5;15868:13;15861:20;;15654:233;;;:::o;15893:224::-;16033:34;16029:1;16021:6;16017:14;16010:58;16102:7;16097:2;16089:6;16085:15;16078:32;15893:224;:::o;16123:366::-;16265:3;16286:67;16350:2;16345:3;16286:67;:::i;:::-;16279:74;;16362:93;16451:3;16362:93;:::i;:::-;16480:2;16475:3;16471:12;16464:19;;16123:366;;;:::o;16495:419::-;16661:4;16699:2;16688:9;16684:18;16676:26;;16748:9;16742:4;16738:20;16734:1;16723:9;16719:17;16712:47;16776:131;16902:4;16776:131;:::i;:::-;16768:139;;16495:419;;;:::o;16920:155::-;17060:7;17056:1;17048:6;17044:14;17037:31;16920:155;:::o;17081:365::-;17223:3;17244:66;17308:1;17303:3;17244:66;:::i;:::-;17237:73;;17319:93;17408:3;17319:93;:::i;:::-;17437:2;17432:3;17428:12;17421:19;;17081:365;;;:::o;17452:419::-;17618:4;17656:2;17645:9;17641:18;17633:26;;17705:9;17699:4;17695:20;17691:1;17680:9;17676:17;17669:47;17733:131;17859:4;17733:131;:::i;:::-;17725:139;;17452:419;;;:::o;17877:153::-;18017:5;18013:1;18005:6;18001:14;17994:29;17877:153;:::o;18036:365::-;18178:3;18199:66;18263:1;18258:3;18199:66;:::i;:::-;18192:73;;18274:93;18363:3;18274:93;:::i;:::-;18392:2;18387:3;18383:12;18376:19;;18036:365;;;:::o;18407:419::-;18573:4;18611:2;18600:9;18596:18;18588:26;;18660:9;18654:4;18650:20;18646:1;18635:9;18631:17;18624:47;18688:131;18814:4;18688:131;:::i;:::-;18680:139;;18407:419;;;:::o;18832:225::-;18972:34;18968:1;18960:6;18956:14;18949:58;19041:8;19036:2;19028:6;19024:15;19017:33;18832:225;:::o;19063:366::-;19205:3;19226:67;19290:2;19285:3;19226:67;:::i;:::-;19219:74;;19302:93;19391:3;19302:93;:::i;:::-;19420:2;19415:3;19411:12;19404:19;;19063:366;;;:::o;19435:419::-;19601:4;19639:2;19628:9;19624:18;19616:26;;19688:9;19682:4;19678:20;19674:1;19663:9;19659:17;19652:47;19716:131;19842:4;19716:131;:::i;:::-;19708:139;;19435:419;;;:::o;19860:182::-;20000:34;19996:1;19988:6;19984:14;19977:58;19860:182;:::o;20048:366::-;20190:3;20211:67;20275:2;20270:3;20211:67;:::i;:::-;20204:74;;20287:93;20376:3;20287:93;:::i;:::-;20405:2;20400:3;20396:12;20389:19;;20048:366;;;:::o;20420:419::-;20586:4;20624:2;20613:9;20609:18;20601:26;;20673:9;20667:4;20663:20;20659:1;20648:9;20644:17;20637:47;20701:131;20827:4;20701:131;:::i;:::-;20693:139;;20420:419;;;:::o;20845:223::-;20985:34;20981:1;20973:6;20969:14;20962:58;21054:6;21049:2;21041:6;21037:15;21030:31;20845:223;:::o;21074:366::-;21216:3;21237:67;21301:2;21296:3;21237:67;:::i;:::-;21230:74;;21313:93;21402:3;21313:93;:::i;:::-;21431:2;21426:3;21422:12;21415:19;;21074:366;;;:::o;21446:419::-;21612:4;21650:2;21639:9;21635:18;21627:26;;21699:9;21693:4;21689:20;21685:1;21674:9;21670:17;21663:47;21727:131;21853:4;21727:131;:::i;:::-;21719:139;;21446:419;;;:::o;21871:221::-;22011:34;22007:1;21999:6;21995:14;21988:58;22080:4;22075:2;22067:6;22063:15;22056:29;21871:221;:::o;22098:366::-;22240:3;22261:67;22325:2;22320:3;22261:67;:::i;:::-;22254:74;;22337:93;22426:3;22337:93;:::i;:::-;22455:2;22450:3;22446:12;22439:19;;22098:366;;;:::o;22470:419::-;22636:4;22674:2;22663:9;22659:18;22651:26;;22723:9;22717:4;22713:20;22709:1;22698:9;22694:17;22687:47;22751:131;22877:4;22751:131;:::i;:::-;22743:139;;22470:419;;;:::o;22895:179::-;23035:31;23031:1;23023:6;23019:14;23012:55;22895:179;:::o;23080:366::-;23222:3;23243:67;23307:2;23302:3;23243:67;:::i;:::-;23236:74;;23319:93;23408:3;23319:93;:::i;:::-;23437:2;23432:3;23428:12;23421:19;;23080:366;;;:::o;23452:419::-;23618:4;23656:2;23645:9;23641:18;23633:26;;23705:9;23699:4;23695:20;23691:1;23680:9;23676:17;23669:47;23733:131;23859:4;23733:131;:::i;:::-;23725:139;;23452:419;;;:::o;23877:224::-;24017:34;24013:1;24005:6;24001:14;23994:58;24086:7;24081:2;24073:6;24069:15;24062:32;23877:224;:::o;24107:366::-;24249:3;24270:67;24334:2;24329:3;24270:67;:::i;:::-;24263:74;;24346:93;24435:3;24346:93;:::i;:::-;24464:2;24459:3;24455:12;24448:19;;24107:366;;;:::o;24479:419::-;24645:4;24683:2;24672:9;24668:18;24660:26;;24732:9;24726:4;24722:20;24718:1;24707:9;24703:17;24696:47;24760:131;24886:4;24760:131;:::i;:::-;24752:139;;24479:419;;;:::o;24904:222::-;25044:34;25040:1;25032:6;25028:14;25021:58;25113:5;25108:2;25100:6;25096:15;25089:30;24904:222;:::o;25132:366::-;25274:3;25295:67;25359:2;25354:3;25295:67;:::i;:::-;25288:74;;25371:93;25460:3;25371:93;:::i;:::-;25489:2;25484:3;25480:12;25473:19;;25132:366;;;:::o;25504:419::-;25670:4;25708:2;25697:9;25693:18;25685:26;;25757:9;25751:4;25747:20;25743:1;25732:9;25728:17;25721:47;25785:131;25911:4;25785:131;:::i;:::-;25777:139;;25504:419;;;:::o;25929:169::-;26069:21;26065:1;26057:6;26053:14;26046:45;25929:169;:::o;26104:366::-;26246:3;26267:67;26331:2;26326:3;26267:67;:::i;:::-;26260:74;;26343:93;26432:3;26343:93;:::i;:::-;26461:2;26456:3;26452:12;26445:19;;26104:366;;;:::o;26476:419::-;26642:4;26680:2;26669:9;26665:18;26657:26;;26729:9;26723:4;26719:20;26715:1;26704:9;26700:17;26693:47;26757:131;26883:4;26757:131;:::i;:::-;26749:139;;26476:419;;;:::o;26901:160::-;27041:12;27037:1;27029:6;27025:14;27018:36;26901:160;:::o;27067:366::-;27209:3;27230:67;27294:2;27289:3;27230:67;:::i;:::-;27223:74;;27306:93;27395:3;27306:93;:::i;:::-;27424:2;27419:3;27415:12;27408:19;;27067:366;;;:::o;27439:419::-;27605:4;27643:2;27632:9;27628:18;27620:26;;27692:9;27686:4;27682:20;27678:1;27667:9;27663:17;27656:47;27720:131;27846:4;27720:131;:::i;:::-;27712:139;;27439:419;;;:::o;27864:181::-;28004:33;28000:1;27992:6;27988:14;27981:57;27864:181;:::o;28051:366::-;28193:3;28214:67;28278:2;28273:3;28214:67;:::i;:::-;28207:74;;28290:93;28379:3;28290:93;:::i;:::-;28408:2;28403:3;28399:12;28392:19;;28051:366;;;:::o;28423:419::-;28589:4;28627:2;28616:9;28612:18;28604:26;;28676:9;28670:4;28666:20;28662:1;28651:9;28647:17;28640:47;28704:131;28830:4;28704:131;:::i;:::-;28696:139;;28423:419;;;:::o;28848:410::-;28888:7;28911:20;28929:1;28911:20;:::i;:::-;28906:25;;28945:20;28963:1;28945:20;:::i;:::-;28940:25;;29000:1;28997;28993:9;29022:30;29040:11;29022:30;:::i;:::-;29011:41;;29201:1;29192:7;29188:15;29185:1;29182:22;29162:1;29155:9;29135:83;29112:139;;29231:18;;:::i;:::-;29112:139;28896:362;28848:410;;;;:::o;29264:180::-;29312:77;29309:1;29302:88;29409:4;29406:1;29399:15;29433:4;29430:1;29423:15;29450:185;29490:1;29507:20;29525:1;29507:20;:::i;:::-;29502:25;;29541:20;29559:1;29541:20;:::i;:::-;29536:25;;29580:1;29570:35;;29585:18;;:::i;:::-;29570:35;29627:1;29624;29620:9;29615:14;;29450:185;;;;:::o;29641:194::-;29681:4;29701:20;29719:1;29701:20;:::i;:::-;29696:25;;29735:20;29753:1;29735:20;:::i;:::-;29730:25;;29779:1;29776;29772:9;29764:17;;29803:1;29797:4;29794:11;29791:37;;;29808:18;;:::i;:::-;29791:37;29641:194;;;;:::o;29841:231::-;29981:34;29977:1;29969:6;29965:14;29958:58;30050:14;30045:2;30037:6;30033:15;30026:39;29841:231;:::o;30078:366::-;30220:3;30241:67;30305:2;30300:3;30241:67;:::i;:::-;30234:74;;30317:93;30406:3;30317:93;:::i;:::-;30435:2;30430:3;30426:12;30419:19;;30078:366;;;:::o;30450:419::-;30616:4;30654:2;30643:9;30639:18;30631:26;;30703:9;30697:4;30693:20;30689:1;30678:9;30674:17;30667:47;30731:131;30857:4;30731:131;:::i;:::-;30723:139;;30450:419;;;:::o;30875:225::-;31015:34;31011:1;31003:6;30999:14;30992:58;31084:8;31079:2;31071:6;31067:15;31060:33;30875:225;:::o;31106:366::-;31248:3;31269:67;31333:2;31328:3;31269:67;:::i;:::-;31262:74;;31345:93;31434:3;31345:93;:::i;:::-;31463:2;31458:3;31454:12;31447:19;;31106:366;;;:::o;31478:419::-;31644:4;31682:2;31671:9;31667:18;31659:26;;31731:9;31725:4;31721:20;31717:1;31706:9;31702:17;31695:47;31759:131;31885:4;31759:131;:::i;:::-;31751:139;;31478:419;;;:::o;31903:442::-;32052:4;32090:2;32079:9;32075:18;32067:26;;32103:71;32171:1;32160:9;32156:17;32147:6;32103:71;:::i;:::-;32184:72;32252:2;32241:9;32237:18;32228:6;32184:72;:::i;:::-;32266;32334:2;32323:9;32319:18;32310:6;32266:72;:::i;:::-;31903:442;;;;;;:::o;32351:147::-;32452:11;32489:3;32474:18;;32351:147;;;;:::o;32504:114::-;;:::o;32624:398::-;32783:3;32804:83;32885:1;32880:3;32804:83;:::i;:::-;32797:90;;32896:93;32985:3;32896:93;:::i;:::-;33014:1;33009:3;33005:11;32998:18;;32624:398;;;:::o;33028:379::-;33212:3;33234:147;33377:3;33234:147;:::i;:::-;33227:154;;33398:3;33391:10;;33028:379;;;:::o;33413:143::-;33470:5;33501:6;33495:13;33486:22;;33517:33;33544:5;33517:33;:::i;:::-;33413:143;;;;:::o;33562:351::-;33632:6;33681:2;33669:9;33660:7;33656:23;33652:32;33649:119;;;33687:79;;:::i;:::-;33649:119;33807:1;33832:64;33888:7;33879:6;33868:9;33864:22;33832:64;:::i;:::-;33822:74;;33778:128;33562:351;;;;:::o;33919:85::-;33964:7;33993:5;33982:16;;33919:85;;;:::o;34010:158::-;34068:9;34101:61;34119:42;34128:32;34154:5;34128:32;:::i;:::-;34119:42;:::i;:::-;34101:61;:::i;:::-;34088:74;;34010:158;;;:::o;34174:147::-;34269:45;34308:5;34269:45;:::i;:::-;34264:3;34257:58;34174:147;;:::o;34327:114::-;34394:6;34428:5;34422:12;34412:22;;34327:114;;;:::o;34447:184::-;34546:11;34580:6;34575:3;34568:19;34620:4;34615:3;34611:14;34596:29;;34447:184;;;;:::o;34637:132::-;34704:4;34727:3;34719:11;;34757:4;34752:3;34748:14;34740:22;;34637:132;;;:::o;34775:108::-;34852:24;34870:5;34852:24;:::i;:::-;34847:3;34840:37;34775:108;;:::o;34889:179::-;34958:10;34979:46;35021:3;35013:6;34979:46;:::i;:::-;35057:4;35052:3;35048:14;35034:28;;34889:179;;;;:::o;35074:113::-;35144:4;35176;35171:3;35167:14;35159:22;;35074:113;;;:::o;35223:732::-;35342:3;35371:54;35419:5;35371:54;:::i;:::-;35441:86;35520:6;35515:3;35441:86;:::i;:::-;35434:93;;35551:56;35601:5;35551:56;:::i;:::-;35630:7;35661:1;35646:284;35671:6;35668:1;35665:13;35646:284;;;35747:6;35741:13;35774:63;35833:3;35818:13;35774:63;:::i;:::-;35767:70;;35860:60;35913:6;35860:60;:::i;:::-;35850:70;;35706:224;35693:1;35690;35686:9;35681:14;;35646:284;;;35650:14;35946:3;35939:10;;35347:608;;;35223:732;;;;:::o;35961:831::-;36224:4;36262:3;36251:9;36247:19;36239:27;;36276:71;36344:1;36333:9;36329:17;36320:6;36276:71;:::i;:::-;36357:80;36433:2;36422:9;36418:18;36409:6;36357:80;:::i;:::-;36484:9;36478:4;36474:20;36469:2;36458:9;36454:18;36447:48;36512:108;36615:4;36606:6;36512:108;:::i;:::-;36504:116;;36630:72;36698:2;36687:9;36683:18;36674:6;36630:72;:::i;:::-;36712:73;36780:3;36769:9;36765:19;36756:6;36712:73;:::i;:::-;35961:831;;;;;;;;:::o;36798:807::-;37047:4;37085:3;37074:9;37070:19;37062:27;;37099:71;37167:1;37156:9;37152:17;37143:6;37099:71;:::i;:::-;37180:72;37248:2;37237:9;37233:18;37224:6;37180:72;:::i;:::-;37262:80;37338:2;37327:9;37323:18;37314:6;37262:80;:::i;:::-;37352;37428:2;37417:9;37413:18;37404:6;37352:80;:::i;:::-;37442:73;37510:3;37499:9;37495:19;37486:6;37442:73;:::i;:::-;37525;37593:3;37582:9;37578:19;37569:6;37525:73;:::i;:::-;36798:807;;;;;;;;;:::o;37611:143::-;37668:5;37699:6;37693:13;37684:22;;37715:33;37742:5;37715:33;:::i;:::-;37611:143;;;;:::o;37760:663::-;37848:6;37856;37864;37913:2;37901:9;37892:7;37888:23;37884:32;37881:119;;;37919:79;;:::i;:::-;37881:119;38039:1;38064:64;38120:7;38111:6;38100:9;38096:22;38064:64;:::i;:::-;38054:74;;38010:128;38177:2;38203:64;38259:7;38250:6;38239:9;38235:22;38203:64;:::i;:::-;38193:74;;38148:129;38316:2;38342:64;38398:7;38389:6;38378:9;38374:22;38342:64;:::i;:::-;38332:74;;38287:129;37760:663;;;;;:::o

Swarm Source

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