ETH Price: $2,958.52 (-1.06%)
Gas: 8 Gwei

Token

Baby DogPad (BDOGPAD)
 

Overview

Max Total Supply

1,000,000,000 BDOGPAD

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.900610116959945864 BDOGPAD

Value
$0.00
0x29B88eE1B8592E26B3876aA0546dfA6e7754DA30
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:
BabyDogPad

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-29
*/

/**

�https://t.me/BabyDogPad

 */
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
 
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
 
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    /**
     * @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` 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);
}
 
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);
}
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;
 
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they 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
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the 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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }
 
    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    /**
     * @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) {
        // 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 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: 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 div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: 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 div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

 
contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
 
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
  
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
 
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

//BabyDogPad.sol

 
contract BabyDogPad is ERC20, Ownable {
    
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private swapping;
 
    address private marketingWallet=0x445F132FcB4065aab8a25c71Ab8C236Dd192dB4B;
    address private BabyWallet=0x445F132FcB4065aab8a25c71Ab8C236Dd192dB4B;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWalletAmount;
 
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;
 
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
 
   
 
    // Blacklist Map
    mapping (address => bool) private _blacklist;
    bool public transferDelayEnabled = true;
 
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyBabyFee;
 
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellBabyFee;
 
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForBaby;
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event BabyWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    constructor() ERC20("Baby DogPad", "BDOGPAD") { 
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 _buyMarketingFee = 8;
        uint256 _buyLiquidityFee = 1;
        uint256 _buyBabyFee = 1;

        uint256 _sellMarketingFee = 16;
        uint256 _sellLiquidityFee = 1;
        uint256 _sellBabyFee = 3;
 
        uint256 totalSupply = 1 * 10 ** 9 * 10 ** decimals(); // 1 Billion Supply
 
        maxTransactionAmount = 2 * 10 ** 7 * 10 ** decimals(); // 20 Million maxTransaction
        maxWalletAmount = 2 * 10 ** 7 * 10 ** decimals(); // 20 Million  maxWallet
        swapTokensAtAmount = 1 * 10 ** 7 * 10 ** decimals(); 
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyBabyFee = _buyBabyFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBabyFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellBabyFee = _sellBabyFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBabyFee;
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
    }
 
    function SetTrading(bool EnableTrade, bool _swap) external onlyOwner {
        tradingActive = EnableTrade;
        swapEnabled = _swap;
        launchedAt = block.number;
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum;
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWalletAmount lower than 0.5%");
        maxWalletAmount = newNum;
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
 
   
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _BabyFee_) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellBabyFee = _BabyFee_;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBabyFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");
    }
 
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _BabyFee_) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyBabyFee = _BabyFee_;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBabyFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");
    }


    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }

        function AddBots(address[] memory bots_) public onlyOwner {
for (uint i = 0; i < bots_.length; i++) {
            _blacklist[bots_[i]] = true;
        
}
    }

function Del(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          _blacklist[notbot[i]] = false;
      }
    }

    function check(address wallet) public view returns (bool){
      return _blacklist[wallet];
    }



 
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function updateBabyWallet(address newWallet) external onlyOwner {
        emit BabyWalletUpdated(newWallet, BabyWallet);
        BabyWallet = newWallet;
    }
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }



  function Airdrop(
        address[] memory airdropWallets,
        uint256[] memory amount
    ) external onlyOwner {
        require(airdropWallets.length == amount.length, "Arrays must be the same length");
        require(airdropWallets.length <= 2000, "Wallets list length must be <= 2000");
        for (uint256 i = 0; i < airdropWallets.length; i++) {
            address wallet = airdropWallets[i];
            uint256 airdropAmount = amount[i] * (10**18);
            super._transfer(msg.sender, wallet, airdropAmount);
        }
    }

 
 
    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(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
                }
            }
        }
 
        // anti bot logic
        if (block.number <= (launchedAt + 2) && 
                to != uniswapV2Pair && 
                to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
            ) { 
            _blacklist[to] = true;
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
 
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
 
        bool takeFee = !swapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForBaby += fees * sellBabyFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForBaby += fees * buyBabyFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForBaby;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        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 ethForBaby = ethBalance.mul(tokensForBaby).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForBaby;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForBaby = 0;
 
        (success,) = address(BabyWallet).call{value: ethForBaby}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
    
  
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"BabyWalletUpdated","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":"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":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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"AddBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"Del","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"EnableTrade","type":"bool"},{"internalType":"bool","name":"_swap","type":"bool"}],"name":"SetTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBabyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBabyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","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":"tokensForBaby","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBabyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_BabyFee_","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_BabyFee_","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405273445f132fcb4065aab8a25c71ab8c236dd192db4b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073445f132fcb4065aab8a25c71ab8c236dd192db4b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200012757600080fd5b506040518060400160405280600b81526020017f4261627920446f675061640000000000000000000000000000000000000000008152506040518060400160405280600781526020017f42444f47504144000000000000000000000000000000000000000000000000008152508160039081620001a5919062000e64565b508060049081620001b7919062000e64565b5050506000620001cc620006ae60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000297816001620006b660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d919062000fb5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb919062000fb5565b6040518363ffffffff1660e01b8152600401620003ea92919062000ff8565b6020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000430919062000fb5565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200047860a0516001620006b660201b60201c565b6200048d60a0516001620007b360201b60201c565b6000600890506000600190506000600190506000601090506000600190506000600390506000620004c36200085460201b60201c565b600a620004d19190620011b5565b633b9aca00620004e2919062001206565b9050620004f46200085460201b60201c565b600a620005029190620011b5565b6301312d0062000513919062001206565b600881905550620005296200085460201b60201c565b600a620005379190620011b5565b6301312d0062000548919062001206565b600a819055506200055e6200085460201b60201c565b600a6200056c9190620011b5565b629896806200057c919062001206565b600981905550866010819055508560118190555084601281905550601254601154601054620005ac919062001251565b620005b8919062001251565b600f81905550836014819055508260158190555081601681905550601654601554601454620005e8919062001251565b620005f4919062001251565b6013819055506200061c6200060e6200085d60201b60201c565b60016200088760201b60201c565b6200062f3060016200088760201b60201c565b6200064461dead60016200088760201b60201c565b62000666620006586200085d60201b60201c565b6001620006b660201b60201c565b62000679306001620006b660201b60201c565b6200068e61dead6001620006b660201b60201c565b620006a03382620009d460201b60201c565b50505050505050506200145b565b600033905090565b620006c6620006ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000758576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200074f90620012ed565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006012905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000897620006ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092090620012ed565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009c891906200132c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3d9062001399565b60405180910390fd5b62000a5a6000838362000b8260201b60201c565b62000a768160025462000b8760201b620028e21790919060201c565b60028190555062000ad4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b8760201b620028e21790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b769190620013cc565b60405180910390a35050565b505050565b600080828462000b98919062001251565b90508381101562000be0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd79062001439565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c6c57607f821691505b60208210810362000c825762000c8162000c24565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cad565b62000cf8868362000cad565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d4562000d3f62000d398462000d10565b62000d1a565b62000d10565b9050919050565b6000819050919050565b62000d618362000d24565b62000d7962000d708262000d4c565b84845462000cba565b825550505050565b600090565b62000d9062000d81565b62000d9d81848462000d56565b505050565b5b8181101562000dc55762000db960008262000d86565b60018101905062000da3565b5050565b601f82111562000e145762000dde8162000c88565b62000de98462000c9d565b8101602085101562000df9578190505b62000e1162000e088562000c9d565b83018262000da2565b50505b505050565b600082821c905092915050565b600062000e396000198460080262000e19565b1980831691505092915050565b600062000e54838362000e26565b9150826002028217905092915050565b62000e6f8262000bea565b67ffffffffffffffff81111562000e8b5762000e8a62000bf5565b5b62000e97825462000c53565b62000ea482828562000dc9565b600060209050601f83116001811462000edc576000841562000ec7578287015190505b62000ed3858262000e46565b86555062000f43565b601f19841662000eec8662000c88565b60005b8281101562000f165784890151825560018201915060208501945060208101905062000eef565b8683101562000f36578489015162000f32601f89168262000e26565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f7d8262000f50565b9050919050565b62000f8f8162000f70565b811462000f9b57600080fd5b50565b60008151905062000faf8162000f84565b92915050565b60006020828403121562000fce5762000fcd62000f4b565b5b600062000fde8482850162000f9e565b91505092915050565b62000ff28162000f70565b82525050565b60006040820190506200100f600083018562000fe7565b6200101e602083018462000fe7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010b3578086048111156200108b576200108a62001025565b5b60018516156200109b5780820291505b8081029050620010ab8562001054565b94506200106b565b94509492505050565b600082620010ce5760019050620011a1565b81620010de5760009050620011a1565b8160018114620010f75760028114620011025762001138565b6001915050620011a1565b60ff84111562001117576200111662001025565b5b8360020a91508482111562001131576200113062001025565b5b50620011a1565b5060208310610133831016604e8410600b8410161715620011725782820a9050838111156200116c576200116b62001025565b5b620011a1565b62001181848484600162001061565b925090508184048111156200119b576200119a62001025565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011c28262000d10565b9150620011cf83620011a8565b9250620011fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010bc565b905092915050565b6000620012138262000d10565b9150620012208362000d10565b9250828202620012308162000d10565b915082820484148315176200124a576200124962001025565b5b5092915050565b60006200125e8262000d10565b91506200126b8362000d10565b925082820190508082111562001286576200128562001025565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012d56020836200128c565b9150620012e2826200129d565b602082019050919050565b600060208201905081810360008301526200130881620012c6565b9050919050565b60008115159050919050565b62001326816200130f565b82525050565b60006020820190506200134360008301846200131b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001381601f836200128c565b91506200138e8262001349565b602082019050919050565b60006020820190508181036000830152620013b48162001372565b9050919050565b620013c68162000d10565b82525050565b6000602082019050620013e36000830184620013bb565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001421601b836200128c565b91506200142e82620013e9565b602082019050919050565b60006020820190508181036000830152620014548162001412565b9050919050565b60805160a051615d9a620014c0600039600081816111ef015281816119b201528181612fa901526133c9015260008181610f0301528181612f51015281816141d0015281816142b1015281816142d801528181614374015261439b0152615d9a6000f3fe6080604052600436106103395760003560e01c806392136913116101ab578063c23697a8116100f7578063dd62ed3e11610095578063ed09924f1161006f578063ed09924f14610c57578063f11a24d314610c80578063f2fde38b14610cab578063f637434214610cd457610340565b8063dd62ed3e14610bc4578063e2f4560514610c01578063e884f26014610c2c57610340565b8063c876d0b9116100d1578063c876d0b914610b06578063c8c8ebe414610b31578063d257b34f14610b5c578063d85ba06314610b9957610340565b8063c23697a814610a75578063c558ae6b14610ab2578063c84e1aec14610adb57610340565b8063aa4bde2811610164578063bbc0c7421161013e578063bbc0c742146109cf578063c0246668146109fa578063c17b5b8c14610a23578063c18bc19514610a4c57610340565b8063aa4bde281461093e578063aacebbe314610969578063b62496f51461099257610340565b8063921369131461081c57806395d89b41146108475780639a7a23d614610872578063a457c2d71461089b578063a9059cbb146108d8578063a910a4c01461091557610340565b80633950935111610285578063715018a6116102235780637bce5a04116101fd5780637bce5a04146107745780638095d5641461079f5780638cc7cade146107c85780638da5cb5b146107f157610340565b8063715018a614610709578063751039fc146107205780637571336a1461074b57610340565b80634fbee1931161025f5780634fbee193146106395780636a486a8e146106765780636ddd1713146106a157806370a08231146106cc57610340565b806339509351146105a657806349bd5a5e146105e35780634a62bb651461060e57610340565b806318160ddd116102f25780631f3fed8f116102cc5780631f3fed8f146104ea578063203e727e1461051557806323b872dd1461053e578063313ce5671461057b57610340565b806318160ddd146104695780631a8145bb146104945780631e0290a3146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad57806310eb3975146103ea578063146368c8146104155780631694505e1461043e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cff565b604051610367919061453b565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614605565b610d91565b6040516103a49190614660565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061467b565b610daf565b6040516103e19190614660565b60405180910390f35b3480156103f657600080fd5b506103ff610dcf565b60405161040c91906146b7565b60405180910390f35b34801561042157600080fd5b5061043c6004803603810190610437919061481a565b610dd5565b005b34801561044a57600080fd5b50610453610f01565b60405161046091906148c2565b60405180910390f35b34801561047557600080fd5b5061047e610f25565b60405161048b91906146b7565b60405180910390f35b3480156104a057600080fd5b506104a9610f2f565b6040516104b691906146b7565b60405180910390f35b3480156104cb57600080fd5b506104d4610f35565b6040516104e191906146b7565b60405180910390f35b3480156104f657600080fd5b506104ff610f3b565b60405161050c91906146b7565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906148dd565b610f41565b005b34801561054a57600080fd5b506105656004803603810190610560919061490a565b611058565b6040516105729190614660565b60405180910390f35b34801561058757600080fd5b50610590611131565b60405161059d9190614979565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190614605565b61113a565b6040516105da9190614660565b60405180910390f35b3480156105ef57600080fd5b506105f86111ed565b60405161060591906149a3565b60405180910390f35b34801561061a57600080fd5b50610623611211565b6040516106309190614660565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b919061467b565b611224565b60405161066d9190614660565b60405180910390f35b34801561068257600080fd5b5061068b61127a565b60405161069891906146b7565b60405180910390f35b3480156106ad57600080fd5b506106b6611280565b6040516106c39190614660565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee919061467b565b611293565b60405161070091906146b7565b60405180910390f35b34801561071557600080fd5b5061071e6112db565b005b34801561072c57600080fd5b50610735611433565b6040516107429190614660565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d91906149ea565b6114ee565b005b34801561078057600080fd5b506107896115e0565b60405161079691906146b7565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614a2a565b6115e6565b005b3480156107d457600080fd5b506107ef60048036038101906107ea919061467b565b611700565b005b3480156107fd57600080fd5b50610806611857565b60405161081391906149a3565b60405180910390f35b34801561082857600080fd5b50610831611881565b60405161083e91906146b7565b60405180910390f35b34801561085357600080fd5b5061085c611887565b604051610869919061453b565b60405180910390f35b34801561087e57600080fd5b50610899600480360381019061089491906149ea565b611919565b005b3480156108a757600080fd5b506108c260048036038101906108bd9190614605565b611a4c565b6040516108cf9190614660565b60405180910390f35b3480156108e457600080fd5b506108ff60048036038101906108fa9190614605565b611b19565b60405161090c9190614660565b60405180910390f35b34801561092157600080fd5b5061093c6004803603810190610937919061481a565b611b37565b005b34801561094a57600080fd5b50610953611c63565b60405161096091906146b7565b60405180910390f35b34801561097557600080fd5b50610990600480360381019061098b919061467b565b611c69565b005b34801561099e57600080fd5b506109b960048036038101906109b4919061467b565b611dc0565b6040516109c69190614660565b60405180910390f35b3480156109db57600080fd5b506109e4611de0565b6040516109f19190614660565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c91906149ea565b611df3565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614a2a565b611f33565b005b348015610a5857600080fd5b50610a736004803603810190610a6e91906148dd565b61204d565b005b348015610a8157600080fd5b50610a9c6004803603810190610a97919061467b565b612164565b604051610aa99190614660565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614b40565b6121ba565b005b348015610ae757600080fd5b50610af061235d565b604051610afd91906146b7565b60405180910390f35b348015610b1257600080fd5b50610b1b612363565b604051610b289190614660565b60405180910390f35b348015610b3d57600080fd5b50610b46612376565b604051610b5391906146b7565b60405180910390f35b348015610b6857600080fd5b50610b836004803603810190610b7e91906148dd565b61237c565b604051610b909190614660565b60405180910390f35b348015610ba557600080fd5b50610bae6124ec565b604051610bbb91906146b7565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190614bb8565b6124f2565b604051610bf891906146b7565b60405180910390f35b348015610c0d57600080fd5b50610c16612579565b604051610c2391906146b7565b60405180910390f35b348015610c3857600080fd5b50610c4161257f565b604051610c4e9190614660565b60405180910390f35b348015610c6357600080fd5b50610c7e6004803603810190610c799190614bf8565b61263a565b005b348015610c8c57600080fd5b50610c95612710565b604051610ca291906146b7565b60405180910390f35b348015610cb757600080fd5b50610cd26004803603810190610ccd919061467b565b612716565b005b348015610ce057600080fd5b50610ce96128dc565b604051610cf691906146b7565b60405180910390f35b606060038054610d0e90614c67565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90614c67565b8015610d875780601f10610d5c57610100808354040283529160200191610d87565b820191906000526020600020905b815481529060010190602001808311610d6a57829003601f168201915b5050505050905090565b6000610da5610d9e612940565b8484612948565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b60195481565b610ddd612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390614ce4565b60405180910390fd5b60005b8151811015610efd576001600d6000848481518110610e9157610e90614d04565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ef590614d62565b915050610e6f565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60185481565b60125481565b60175481565b610f49612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90614ce4565b60405180910390fd5b670de0b6b3a76400006103e86001610fee610f25565b610ff89190614daa565b6110029190614e1b565b61100c9190614e1b565b81101561104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590614ebe565b60405180910390fd5b8060088190555050565b6000611065848484612b11565b61112684611071612940565b61112185604051806060016040528060288152602001615d1860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110d7612940565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461399f9092919063ffffffff16565b612948565b600190509392505050565b60006012905090565b60006111e3611147612940565b846111de8560016000611158612940565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e290919063ffffffff16565b612948565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112e3612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990614ce4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061143d612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390614ce4565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6114f6612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90614ce4565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6115ee612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490614ce4565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546116a59190614ede565b6116af9190614ede565b600f81905550601e60135411156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290614f5e565b60405180910390fd5b505050565b611708612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90614ce4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f54a9110bc7921aae436d63059b685cf15e6da6a603a6a3ed8cff683541049ee460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606004805461189690614c67565b80601f01602080910402602001604051908101604052809291908181526020018280546118c290614c67565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b611921612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790614ce4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614ff0565b60405180910390fd5b611a488282613a03565b5050565b6000611b0f611a59612940565b84611b0a85604051806060016040528060258152602001615d406025913960016000611a83612940565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461399f9092919063ffffffff16565b612948565b6001905092915050565b6000611b2d611b26612940565b8484612b11565b6001905092915050565b611b3f612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc590614ce4565b60405180910390fd5b60005b8151811015611c5f576000600d6000848481518110611bf357611bf2614d04565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c5790614d62565b915050611bd1565b5050565b600a5481565b611c71612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790614ce4565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611dfb612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190614ce4565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f279190614660565b60405180910390a25050565b611f3b612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614ce4565b60405180910390fd5b826014819055508160158190555080601681905550601654601554601454611ff29190614ede565b611ffc9190614ede565b601381905550601e6013541115612048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203f90614f5e565b60405180910390fd5b505050565b612055612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db90614ce4565b60405180910390fd5b670de0b6b3a76400006103e860056120fa610f25565b6121049190614daa565b61210e9190614e1b565b6121189190614e1b565b81101561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190615082565b60405180910390fd5b80600a8190555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6121c2612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890614ce4565b60405180910390fd5b8051825114612295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228c906150ee565b60405180910390fd5b6107d0825111156122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d290615180565b60405180910390fd5b60005b82518110156123585760008382815181106122fc576122fb614d04565b5b602002602001015190506000670de0b6b3a764000084848151811061232457612323614d04565b5b60200260200101516123369190614daa565b9050612343338383613aa4565b5050808061235090614d62565b9150506122de565b505050565b60165481565b600e60009054906101000a900460ff1681565b60085481565b6000612386612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c90614ce4565b60405180910390fd5b620186a06001612423610f25565b61242d9190614daa565b6124379190614e1b565b821015612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090615212565b60405180910390fd5b6103e86005612486610f25565b6124909190614daa565b61249a9190614e1b565b8211156124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d3906152a4565b60405180910390fd5b8160098190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612589612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f90614ce4565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b612642612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c890614ce4565b60405180910390fd5b81600b60016101000a81548160ff02191690831515021790555080600b60026101000a81548160ff02191690831515021790555043601a819055505050565b60115481565b61271e612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a490614ce4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361281c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281390615336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60008082846128f19190614ede565b905083811015612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d906153a2565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90615434565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1d906154c6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b0491906146b7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7790615558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be6906155ea565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c935750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc99061567c565b60405180910390fd5b60008103612ceb57612ce683836000613aa4565b61399a565b600b60009054906101000a900460ff16156133ae57612d08611857565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d765750612d46611857565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612de9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e025750600560149054906101000a900460ff16155b156133ad57600b60019054906101000a900460ff16612efc57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ebc5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef2906156e8565b60405180910390fd5b5b600e60009054906101000a900460ff16156130c457612f19611857565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612fa057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ff857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130c35743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061307e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613075906157a0565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131675750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561320e576008548111156131b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a890615832565b60405180910390fd5b600a546131bd83611293565b826131c89190614ede565b1115613209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132009061589e565b60405180910390fd5b6133ac565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132b15750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613300576008548111156132fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f290615930565b60405180910390fd5b6133ab565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133aa57600a5461335d83611293565b826133689190614ede565b11156133a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a09061589e565b60405180910390fd5b5b5b5b5b5b6002601a546133bd9190614ede565b431115801561341857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134645750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134c2576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006134cd30611293565b9050600060095482101590508080156134f25750600b60029054906101000a900460ff165b801561350b5750600560149054906101000a900460ff16155b80156135615750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135b75750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561360d5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613651576001600560146101000a81548160ff021916908315150217905550613635613d37565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137075750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561371157600090505b6000811561398a57601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561377457506000601354115b15613841576137a160646137936013548861401e90919063ffffffff16565b61409890919063ffffffff16565b9050601354601554826137b49190614daa565b6137be9190614e1b565b601860008282546137cf9190614ede565b92505081905550601354601654826137e79190614daa565b6137f19190614e1b565b601960008282546138029190614ede565b925050819055506013546014548261381a9190614daa565b6138249190614e1b565b601760008282546138359190614ede565b92505081905550613966565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561389c57506000600f54115b15613965576138c960646138bb600f548861401e90919063ffffffff16565b61409890919063ffffffff16565b9050600f54601154826138dc9190614daa565b6138e69190614e1b565b601860008282546138f79190614ede565b92505081905550600f546012548261390f9190614daa565b6139199190614e1b565b6019600082825461392a9190614ede565b92505081905550600f54601054826139429190614daa565b61394c9190614e1b565b6017600082825461395d9190614ede565b925050819055505b5b600081111561397b5761397a873083613aa4565b5b80856139879190615950565b94505b613995878787613aa4565b505050505b505050565b60008383111582906139e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139de919061453b565b60405180910390fd5b50600083856139f69190615950565b9050809150509392505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b0a90615558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b79906155ea565b60405180910390fd5b613b8d8383836140e2565b613bf881604051806060016040528060268152602001615cf2602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461399f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c8b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d2a91906146b7565b60405180910390a3505050565b6000613d4230611293565b90506000601954601754601854613d599190614ede565b613d639190614ede565b9050600080831480613d755750600082145b15613d825750505061401c565b6014600954613d919190614daa565b831115613daa576014600954613da79190614daa565b92505b600060028360185486613dbd9190614daa565b613dc79190614e1b565b613dd19190614e1b565b90506000613de882866140e790919063ffffffff16565b90506000479050613df882614131565b6000613e0d82476140e790919063ffffffff16565b90506000613e3887613e2a6017548561401e90919063ffffffff16565b61409890919063ffffffff16565b90506000613e6388613e556019548661401e90919063ffffffff16565b61409890919063ffffffff16565b90506000818385613e749190615950565b613e7e9190615950565b9050600060188190555060006017819055506000601981905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613ede906159b5565b60006040518083038185875af1925050503d8060008114613f1b576040519150601f19603f3d011682016040523d82523d6000602084013e613f20565b606091505b505080985050600087118015613f365750600081115b15613f8357613f45878261436e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613f7a939291906159ca565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613fc9906159b5565b60006040518083038185875af1925050503d8060008114614006576040519150601f19603f3d011682016040523d82523d6000602084013e61400b565b606091505b505080985050505050505050505050505b565b60008083036140305760009050614092565b6000828461403e9190614daa565b905082848261404d9190614e1b565b1461408d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161408490615a73565b60405180910390fd5b809150505b92915050565b60006140da83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614448565b905092915050565b505050565b600061412983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061399f565b905092915050565b6000600267ffffffffffffffff81111561414e5761414d6146d7565b5b60405190808252806020026020018201604052801561417c5781602001602082028036833780820191505090505b509050308160008151811061419457614193614d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061425d9190615aa8565b8160018151811061427157614270614d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506142d6307f000000000000000000000000000000000000000000000000000000000000000084612948565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614338959493929190615bce565b600060405180830381600087803b15801561435257600080fd5b505af1158015614366573d6000803e3d6000fd5b505050505050565b614399307f000000000000000000000000000000000000000000000000000000000000000084612948565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016143fe96959493929190615c28565b60606040518083038185885af115801561441c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144419190615c9e565b5050505050565b6000808311829061448f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614486919061453b565b60405180910390fd5b506000838561449e9190614e1b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144e55780820151818401526020810190506144ca565b60008484015250505050565b6000601f19601f8301169050919050565b600061450d826144ab565b61451781856144b6565b93506145278185602086016144c7565b614530816144f1565b840191505092915050565b600060208201905081810360008301526145558184614502565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061459c82614571565b9050919050565b6145ac81614591565b81146145b757600080fd5b50565b6000813590506145c9816145a3565b92915050565b6000819050919050565b6145e2816145cf565b81146145ed57600080fd5b50565b6000813590506145ff816145d9565b92915050565b6000806040838503121561461c5761461b614567565b5b600061462a858286016145ba565b925050602061463b858286016145f0565b9150509250929050565b60008115159050919050565b61465a81614645565b82525050565b60006020820190506146756000830184614651565b92915050565b60006020828403121561469157614690614567565b5b600061469f848285016145ba565b91505092915050565b6146b1816145cf565b82525050565b60006020820190506146cc60008301846146a8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61470f826144f1565b810181811067ffffffffffffffff8211171561472e5761472d6146d7565b5b80604052505050565b600061474161455d565b905061474d8282614706565b919050565b600067ffffffffffffffff82111561476d5761476c6146d7565b5b602082029050602081019050919050565b600080fd5b600061479661479184614752565b614737565b905080838252602082019050602084028301858111156147b9576147b861477e565b5b835b818110156147e257806147ce88826145ba565b8452602084019350506020810190506147bb565b5050509392505050565b600082601f830112614801576148006146d2565b5b8135614811848260208601614783565b91505092915050565b6000602082840312156148305761482f614567565b5b600082013567ffffffffffffffff81111561484e5761484d61456c565b5b61485a848285016147ec565b91505092915050565b6000819050919050565b600061488861488361487e84614571565b614863565b614571565b9050919050565b600061489a8261486d565b9050919050565b60006148ac8261488f565b9050919050565b6148bc816148a1565b82525050565b60006020820190506148d760008301846148b3565b92915050565b6000602082840312156148f3576148f2614567565b5b6000614901848285016145f0565b91505092915050565b60008060006060848603121561492357614922614567565b5b6000614931868287016145ba565b9350506020614942868287016145ba565b9250506040614953868287016145f0565b9150509250925092565b600060ff82169050919050565b6149738161495d565b82525050565b600060208201905061498e600083018461496a565b92915050565b61499d81614591565b82525050565b60006020820190506149b86000830184614994565b92915050565b6149c781614645565b81146149d257600080fd5b50565b6000813590506149e4816149be565b92915050565b60008060408385031215614a0157614a00614567565b5b6000614a0f858286016145ba565b9250506020614a20858286016149d5565b9150509250929050565b600080600060608486031215614a4357614a42614567565b5b6000614a51868287016145f0565b9350506020614a62868287016145f0565b9250506040614a73868287016145f0565b9150509250925092565b600067ffffffffffffffff821115614a9857614a976146d7565b5b602082029050602081019050919050565b6000614abc614ab784614a7d565b614737565b90508083825260208201905060208402830185811115614adf57614ade61477e565b5b835b81811015614b085780614af488826145f0565b845260208401935050602081019050614ae1565b5050509392505050565b600082601f830112614b2757614b266146d2565b5b8135614b37848260208601614aa9565b91505092915050565b60008060408385031215614b5757614b56614567565b5b600083013567ffffffffffffffff811115614b7557614b7461456c565b5b614b81858286016147ec565b925050602083013567ffffffffffffffff811115614ba257614ba161456c565b5b614bae85828601614b12565b9150509250929050565b60008060408385031215614bcf57614bce614567565b5b6000614bdd858286016145ba565b9250506020614bee858286016145ba565b9150509250929050565b60008060408385031215614c0f57614c0e614567565b5b6000614c1d858286016149d5565b9250506020614c2e858286016149d5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7f57607f821691505b602082108103614c9257614c91614c38565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614cce6020836144b6565b9150614cd982614c98565b602082019050919050565b60006020820190508181036000830152614cfd81614cc1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d6d826145cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d9f57614d9e614d33565b5b600182019050919050565b6000614db5826145cf565b9150614dc0836145cf565b9250828202614dce816145cf565b91508282048414831517614de557614de4614d33565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e26826145cf565b9150614e31836145cf565b925082614e4157614e40614dec565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ea8602f836144b6565b9150614eb382614e4c565b604082019050919050565b60006020820190508181036000830152614ed781614e9b565b9050919050565b6000614ee9826145cf565b9150614ef4836145cf565b9250828201905080821115614f0c57614f0b614d33565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614f48601d836144b6565b9150614f5382614f12565b602082019050919050565b60006020820190508181036000830152614f7781614f3b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614fda6039836144b6565b9150614fe582614f7e565b604082019050919050565b6000602082019050818103600083015261500981614fcd565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f77657260008201527f207468616e20302e352500000000000000000000000000000000000000000000602082015250565b600061506c602a836144b6565b915061507782615010565b604082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006150d8601e836144b6565b91506150e3826150a2565b602082019050919050565b60006020820190508181036000830152615107816150cb565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030300000000000000000000000000000000000000000000000000000000000602082015250565b600061516a6023836144b6565b91506151758261510e565b604082019050919050565b600060208201905081810360008301526151998161515d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006151fc6035836144b6565b9150615207826151a0565b604082019050919050565b6000602082019050818103600083015261522b816151ef565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061528e6034836144b6565b915061529982615232565b604082019050919050565b600060208201905081810360008301526152bd81615281565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153206026836144b6565b915061532b826152c4565b604082019050919050565b6000602082019050818103600083015261534f81615313565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061538c601b836144b6565b915061539782615356565b602082019050919050565b600060208201905081810360008301526153bb8161537f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061541e6024836144b6565b9150615429826153c2565b604082019050919050565b6000602082019050818103600083015261544d81615411565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154b06022836144b6565b91506154bb82615454565b604082019050919050565b600060208201905081810360008301526154df816154a3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006155426025836144b6565b915061554d826154e6565b604082019050919050565b6000602082019050818103600083015261557181615535565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155d46023836144b6565b91506155df82615578565b604082019050919050565b60006020820190508181036000830152615603816155c7565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006156666031836144b6565b91506156718261560a565b604082019050919050565b6000602082019050818103600083015261569581615659565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006156d26016836144b6565b91506156dd8261569c565b602082019050919050565b60006020820190508181036000830152615701816156c5565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061578a6049836144b6565b915061579582615708565b606082019050919050565b600060208201905081810360008301526157b98161577d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061581c6035836144b6565b9150615827826157c0565b604082019050919050565b6000602082019050818103600083015261584b8161580f565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006158886013836144b6565b915061589382615852565b602082019050919050565b600060208201905081810360008301526158b78161587b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061591a6036836144b6565b9150615925826158be565b604082019050919050565b600060208201905081810360008301526159498161590d565b9050919050565b600061595b826145cf565b9150615966836145cf565b925082820390508181111561597e5761597d614d33565b5b92915050565b600081905092915050565b50565b600061599f600083615984565b91506159aa8261598f565b600082019050919050565b60006159c082615992565b9150819050919050565b60006060820190506159df60008301866146a8565b6159ec60208301856146a8565b6159f960408301846146a8565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615a5d6021836144b6565b9150615a6882615a01565b604082019050919050565b60006020820190508181036000830152615a8c81615a50565b9050919050565b600081519050615aa2816145a3565b92915050565b600060208284031215615abe57615abd614567565b5b6000615acc84828501615a93565b91505092915050565b6000819050919050565b6000615afa615af5615af084615ad5565b614863565b6145cf565b9050919050565b615b0a81615adf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615b4581614591565b82525050565b6000615b578383615b3c565b60208301905092915050565b6000602082019050919050565b6000615b7b82615b10565b615b858185615b1b565b9350615b9083615b2c565b8060005b83811015615bc1578151615ba88882615b4b565b9750615bb383615b63565b925050600181019050615b94565b5085935050505092915050565b600060a082019050615be360008301886146a8565b615bf06020830187615b01565b8181036040830152615c028186615b70565b9050615c116060830185614994565b615c1e60808301846146a8565b9695505050505050565b600060c082019050615c3d6000830189614994565b615c4a60208301886146a8565b615c576040830187615b01565b615c646060830186615b01565b615c716080830185614994565b615c7e60a08301846146a8565b979650505050505050565b600081519050615c98816145d9565b92915050565b600080600060608486031215615cb757615cb6614567565b5b6000615cc586828701615c89565b9350506020615cd686828701615c89565b9250506040615ce786828701615c89565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b67d6ca3e817248aefd7027090081c4acf664172c35af5eae7ab2f791176316364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103395760003560e01c806392136913116101ab578063c23697a8116100f7578063dd62ed3e11610095578063ed09924f1161006f578063ed09924f14610c57578063f11a24d314610c80578063f2fde38b14610cab578063f637434214610cd457610340565b8063dd62ed3e14610bc4578063e2f4560514610c01578063e884f26014610c2c57610340565b8063c876d0b9116100d1578063c876d0b914610b06578063c8c8ebe414610b31578063d257b34f14610b5c578063d85ba06314610b9957610340565b8063c23697a814610a75578063c558ae6b14610ab2578063c84e1aec14610adb57610340565b8063aa4bde2811610164578063bbc0c7421161013e578063bbc0c742146109cf578063c0246668146109fa578063c17b5b8c14610a23578063c18bc19514610a4c57610340565b8063aa4bde281461093e578063aacebbe314610969578063b62496f51461099257610340565b8063921369131461081c57806395d89b41146108475780639a7a23d614610872578063a457c2d71461089b578063a9059cbb146108d8578063a910a4c01461091557610340565b80633950935111610285578063715018a6116102235780637bce5a04116101fd5780637bce5a04146107745780638095d5641461079f5780638cc7cade146107c85780638da5cb5b146107f157610340565b8063715018a614610709578063751039fc146107205780637571336a1461074b57610340565b80634fbee1931161025f5780634fbee193146106395780636a486a8e146106765780636ddd1713146106a157806370a08231146106cc57610340565b806339509351146105a657806349bd5a5e146105e35780634a62bb651461060e57610340565b806318160ddd116102f25780631f3fed8f116102cc5780631f3fed8f146104ea578063203e727e1461051557806323b872dd1461053e578063313ce5671461057b57610340565b806318160ddd146104695780631a8145bb146104945780631e0290a3146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad57806310eb3975146103ea578063146368c8146104155780631694505e1461043e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cff565b604051610367919061453b565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614605565b610d91565b6040516103a49190614660565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061467b565b610daf565b6040516103e19190614660565b60405180910390f35b3480156103f657600080fd5b506103ff610dcf565b60405161040c91906146b7565b60405180910390f35b34801561042157600080fd5b5061043c6004803603810190610437919061481a565b610dd5565b005b34801561044a57600080fd5b50610453610f01565b60405161046091906148c2565b60405180910390f35b34801561047557600080fd5b5061047e610f25565b60405161048b91906146b7565b60405180910390f35b3480156104a057600080fd5b506104a9610f2f565b6040516104b691906146b7565b60405180910390f35b3480156104cb57600080fd5b506104d4610f35565b6040516104e191906146b7565b60405180910390f35b3480156104f657600080fd5b506104ff610f3b565b60405161050c91906146b7565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906148dd565b610f41565b005b34801561054a57600080fd5b506105656004803603810190610560919061490a565b611058565b6040516105729190614660565b60405180910390f35b34801561058757600080fd5b50610590611131565b60405161059d9190614979565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190614605565b61113a565b6040516105da9190614660565b60405180910390f35b3480156105ef57600080fd5b506105f86111ed565b60405161060591906149a3565b60405180910390f35b34801561061a57600080fd5b50610623611211565b6040516106309190614660565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b919061467b565b611224565b60405161066d9190614660565b60405180910390f35b34801561068257600080fd5b5061068b61127a565b60405161069891906146b7565b60405180910390f35b3480156106ad57600080fd5b506106b6611280565b6040516106c39190614660565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee919061467b565b611293565b60405161070091906146b7565b60405180910390f35b34801561071557600080fd5b5061071e6112db565b005b34801561072c57600080fd5b50610735611433565b6040516107429190614660565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d91906149ea565b6114ee565b005b34801561078057600080fd5b506107896115e0565b60405161079691906146b7565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614a2a565b6115e6565b005b3480156107d457600080fd5b506107ef60048036038101906107ea919061467b565b611700565b005b3480156107fd57600080fd5b50610806611857565b60405161081391906149a3565b60405180910390f35b34801561082857600080fd5b50610831611881565b60405161083e91906146b7565b60405180910390f35b34801561085357600080fd5b5061085c611887565b604051610869919061453b565b60405180910390f35b34801561087e57600080fd5b50610899600480360381019061089491906149ea565b611919565b005b3480156108a757600080fd5b506108c260048036038101906108bd9190614605565b611a4c565b6040516108cf9190614660565b60405180910390f35b3480156108e457600080fd5b506108ff60048036038101906108fa9190614605565b611b19565b60405161090c9190614660565b60405180910390f35b34801561092157600080fd5b5061093c6004803603810190610937919061481a565b611b37565b005b34801561094a57600080fd5b50610953611c63565b60405161096091906146b7565b60405180910390f35b34801561097557600080fd5b50610990600480360381019061098b919061467b565b611c69565b005b34801561099e57600080fd5b506109b960048036038101906109b4919061467b565b611dc0565b6040516109c69190614660565b60405180910390f35b3480156109db57600080fd5b506109e4611de0565b6040516109f19190614660565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c91906149ea565b611df3565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614a2a565b611f33565b005b348015610a5857600080fd5b50610a736004803603810190610a6e91906148dd565b61204d565b005b348015610a8157600080fd5b50610a9c6004803603810190610a97919061467b565b612164565b604051610aa99190614660565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614b40565b6121ba565b005b348015610ae757600080fd5b50610af061235d565b604051610afd91906146b7565b60405180910390f35b348015610b1257600080fd5b50610b1b612363565b604051610b289190614660565b60405180910390f35b348015610b3d57600080fd5b50610b46612376565b604051610b5391906146b7565b60405180910390f35b348015610b6857600080fd5b50610b836004803603810190610b7e91906148dd565b61237c565b604051610b909190614660565b60405180910390f35b348015610ba557600080fd5b50610bae6124ec565b604051610bbb91906146b7565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190614bb8565b6124f2565b604051610bf891906146b7565b60405180910390f35b348015610c0d57600080fd5b50610c16612579565b604051610c2391906146b7565b60405180910390f35b348015610c3857600080fd5b50610c4161257f565b604051610c4e9190614660565b60405180910390f35b348015610c6357600080fd5b50610c7e6004803603810190610c799190614bf8565b61263a565b005b348015610c8c57600080fd5b50610c95612710565b604051610ca291906146b7565b60405180910390f35b348015610cb757600080fd5b50610cd26004803603810190610ccd919061467b565b612716565b005b348015610ce057600080fd5b50610ce96128dc565b604051610cf691906146b7565b60405180910390f35b606060038054610d0e90614c67565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90614c67565b8015610d875780601f10610d5c57610100808354040283529160200191610d87565b820191906000526020600020905b815481529060010190602001808311610d6a57829003601f168201915b5050505050905090565b6000610da5610d9e612940565b8484612948565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b60195481565b610ddd612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390614ce4565b60405180910390fd5b60005b8151811015610efd576001600d6000848481518110610e9157610e90614d04565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ef590614d62565b915050610e6f565b5050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60185481565b60125481565b60175481565b610f49612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90614ce4565b60405180910390fd5b670de0b6b3a76400006103e86001610fee610f25565b610ff89190614daa565b6110029190614e1b565b61100c9190614e1b565b81101561104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590614ebe565b60405180910390fd5b8060088190555050565b6000611065848484612b11565b61112684611071612940565b61112185604051806060016040528060288152602001615d1860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110d7612940565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461399f9092919063ffffffff16565b612948565b600190509392505050565b60006012905090565b60006111e3611147612940565b846111de8560016000611158612940565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e290919063ffffffff16565b612948565b6001905092915050565b7f0000000000000000000000007b0648618cab6a01ea792382df18a8735903f5bf81565b600b60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112e3612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990614ce4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061143d612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390614ce4565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6114f6612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90614ce4565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6115ee612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490614ce4565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546116a59190614ede565b6116af9190614ede565b600f81905550601e60135411156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290614f5e565b60405180910390fd5b505050565b611708612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90614ce4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f54a9110bc7921aae436d63059b685cf15e6da6a603a6a3ed8cff683541049ee460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606004805461189690614c67565b80601f01602080910402602001604051908101604052809291908181526020018280546118c290614c67565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b611921612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790614ce4565b60405180910390fd5b7f0000000000000000000000007b0648618cab6a01ea792382df18a8735903f5bf73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614ff0565b60405180910390fd5b611a488282613a03565b5050565b6000611b0f611a59612940565b84611b0a85604051806060016040528060258152602001615d406025913960016000611a83612940565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461399f9092919063ffffffff16565b612948565b6001905092915050565b6000611b2d611b26612940565b8484612b11565b6001905092915050565b611b3f612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc590614ce4565b60405180910390fd5b60005b8151811015611c5f576000600d6000848481518110611bf357611bf2614d04565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c5790614d62565b915050611bd1565b5050565b600a5481565b611c71612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790614ce4565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611dfb612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190614ce4565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f279190614660565b60405180910390a25050565b611f3b612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614ce4565b60405180910390fd5b826014819055508160158190555080601681905550601654601554601454611ff29190614ede565b611ffc9190614ede565b601381905550601e6013541115612048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203f90614f5e565b60405180910390fd5b505050565b612055612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db90614ce4565b60405180910390fd5b670de0b6b3a76400006103e860056120fa610f25565b6121049190614daa565b61210e9190614e1b565b6121189190614e1b565b81101561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190615082565b60405180910390fd5b80600a8190555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6121c2612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890614ce4565b60405180910390fd5b8051825114612295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228c906150ee565b60405180910390fd5b6107d0825111156122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d290615180565b60405180910390fd5b60005b82518110156123585760008382815181106122fc576122fb614d04565b5b602002602001015190506000670de0b6b3a764000084848151811061232457612323614d04565b5b60200260200101516123369190614daa565b9050612343338383613aa4565b5050808061235090614d62565b9150506122de565b505050565b60165481565b600e60009054906101000a900460ff1681565b60085481565b6000612386612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c90614ce4565b60405180910390fd5b620186a06001612423610f25565b61242d9190614daa565b6124379190614e1b565b821015612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090615212565b60405180910390fd5b6103e86005612486610f25565b6124909190614daa565b61249a9190614e1b565b8211156124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d3906152a4565b60405180910390fd5b8160098190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612589612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f90614ce4565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b612642612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c890614ce4565b60405180910390fd5b81600b60016101000a81548160ff02191690831515021790555080600b60026101000a81548160ff02191690831515021790555043601a819055505050565b60115481565b61271e612940565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a490614ce4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361281c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281390615336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60008082846128f19190614ede565b905083811015612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d906153a2565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90615434565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1d906154c6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b0491906146b7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7790615558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be6906155ea565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c935750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc99061567c565b60405180910390fd5b60008103612ceb57612ce683836000613aa4565b61399a565b600b60009054906101000a900460ff16156133ae57612d08611857565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d765750612d46611857565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612de9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e025750600560149054906101000a900460ff16155b156133ad57600b60019054906101000a900460ff16612efc57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ebc5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef2906156e8565b60405180910390fd5b5b600e60009054906101000a900460ff16156130c457612f19611857565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612fa057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ff857507f0000000000000000000000007b0648618cab6a01ea792382df18a8735903f5bf73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130c35743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061307e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613075906157a0565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131675750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561320e576008548111156131b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a890615832565b60405180910390fd5b600a546131bd83611293565b826131c89190614ede565b1115613209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132009061589e565b60405180910390fd5b6133ac565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132b15750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613300576008548111156132fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f290615930565b60405180910390fd5b6133ab565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133aa57600a5461335d83611293565b826133689190614ede565b11156133a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a09061589e565b60405180910390fd5b5b5b5b5b5b6002601a546133bd9190614ede565b431115801561341857507f0000000000000000000000007b0648618cab6a01ea792382df18a8735903f5bf73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134645750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134c2576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006134cd30611293565b9050600060095482101590508080156134f25750600b60029054906101000a900460ff165b801561350b5750600560149054906101000a900460ff16155b80156135615750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135b75750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561360d5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613651576001600560146101000a81548160ff021916908315150217905550613635613d37565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137075750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561371157600090505b6000811561398a57601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561377457506000601354115b15613841576137a160646137936013548861401e90919063ffffffff16565b61409890919063ffffffff16565b9050601354601554826137b49190614daa565b6137be9190614e1b565b601860008282546137cf9190614ede565b92505081905550601354601654826137e79190614daa565b6137f19190614e1b565b601960008282546138029190614ede565b925050819055506013546014548261381a9190614daa565b6138249190614e1b565b601760008282546138359190614ede565b92505081905550613966565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561389c57506000600f54115b15613965576138c960646138bb600f548861401e90919063ffffffff16565b61409890919063ffffffff16565b9050600f54601154826138dc9190614daa565b6138e69190614e1b565b601860008282546138f79190614ede565b92505081905550600f546012548261390f9190614daa565b6139199190614e1b565b6019600082825461392a9190614ede565b92505081905550600f54601054826139429190614daa565b61394c9190614e1b565b6017600082825461395d9190614ede565b925050819055505b5b600081111561397b5761397a873083613aa4565b5b80856139879190615950565b94505b613995878787613aa4565b505050505b505050565b60008383111582906139e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139de919061453b565b60405180910390fd5b50600083856139f69190615950565b9050809150509392505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b0a90615558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b79906155ea565b60405180910390fd5b613b8d8383836140e2565b613bf881604051806060016040528060268152602001615cf2602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461399f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c8b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d2a91906146b7565b60405180910390a3505050565b6000613d4230611293565b90506000601954601754601854613d599190614ede565b613d639190614ede565b9050600080831480613d755750600082145b15613d825750505061401c565b6014600954613d919190614daa565b831115613daa576014600954613da79190614daa565b92505b600060028360185486613dbd9190614daa565b613dc79190614e1b565b613dd19190614e1b565b90506000613de882866140e790919063ffffffff16565b90506000479050613df882614131565b6000613e0d82476140e790919063ffffffff16565b90506000613e3887613e2a6017548561401e90919063ffffffff16565b61409890919063ffffffff16565b90506000613e6388613e556019548661401e90919063ffffffff16565b61409890919063ffffffff16565b90506000818385613e749190615950565b613e7e9190615950565b9050600060188190555060006017819055506000601981905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613ede906159b5565b60006040518083038185875af1925050503d8060008114613f1b576040519150601f19603f3d011682016040523d82523d6000602084013e613f20565b606091505b505080985050600087118015613f365750600081115b15613f8357613f45878261436e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613f7a939291906159ca565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613fc9906159b5565b60006040518083038185875af1925050503d8060008114614006576040519150601f19603f3d011682016040523d82523d6000602084013e61400b565b606091505b505080985050505050505050505050505b565b60008083036140305760009050614092565b6000828461403e9190614daa565b905082848261404d9190614e1b565b1461408d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161408490615a73565b60405180910390fd5b809150505b92915050565b60006140da83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614448565b905092915050565b505050565b600061412983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061399f565b905092915050565b6000600267ffffffffffffffff81111561414e5761414d6146d7565b5b60405190808252806020026020018201604052801561417c5781602001602082028036833780820191505090505b509050308160008151811061419457614193614d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061425d9190615aa8565b8160018151811061427157614270614d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506142d6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612948565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614338959493929190615bce565b600060405180830381600087803b15801561435257600080fd5b505af1158015614366573d6000803e3d6000fd5b505050505050565b614399307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612948565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016143fe96959493929190615c28565b60606040518083038185885af115801561441c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144419190615c9e565b5050505050565b6000808311829061448f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614486919061453b565b60405180910390fd5b506000838561449e9190614e1b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144e55780820151818401526020810190506144ca565b60008484015250505050565b6000601f19601f8301169050919050565b600061450d826144ab565b61451781856144b6565b93506145278185602086016144c7565b614530816144f1565b840191505092915050565b600060208201905081810360008301526145558184614502565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061459c82614571565b9050919050565b6145ac81614591565b81146145b757600080fd5b50565b6000813590506145c9816145a3565b92915050565b6000819050919050565b6145e2816145cf565b81146145ed57600080fd5b50565b6000813590506145ff816145d9565b92915050565b6000806040838503121561461c5761461b614567565b5b600061462a858286016145ba565b925050602061463b858286016145f0565b9150509250929050565b60008115159050919050565b61465a81614645565b82525050565b60006020820190506146756000830184614651565b92915050565b60006020828403121561469157614690614567565b5b600061469f848285016145ba565b91505092915050565b6146b1816145cf565b82525050565b60006020820190506146cc60008301846146a8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61470f826144f1565b810181811067ffffffffffffffff8211171561472e5761472d6146d7565b5b80604052505050565b600061474161455d565b905061474d8282614706565b919050565b600067ffffffffffffffff82111561476d5761476c6146d7565b5b602082029050602081019050919050565b600080fd5b600061479661479184614752565b614737565b905080838252602082019050602084028301858111156147b9576147b861477e565b5b835b818110156147e257806147ce88826145ba565b8452602084019350506020810190506147bb565b5050509392505050565b600082601f830112614801576148006146d2565b5b8135614811848260208601614783565b91505092915050565b6000602082840312156148305761482f614567565b5b600082013567ffffffffffffffff81111561484e5761484d61456c565b5b61485a848285016147ec565b91505092915050565b6000819050919050565b600061488861488361487e84614571565b614863565b614571565b9050919050565b600061489a8261486d565b9050919050565b60006148ac8261488f565b9050919050565b6148bc816148a1565b82525050565b60006020820190506148d760008301846148b3565b92915050565b6000602082840312156148f3576148f2614567565b5b6000614901848285016145f0565b91505092915050565b60008060006060848603121561492357614922614567565b5b6000614931868287016145ba565b9350506020614942868287016145ba565b9250506040614953868287016145f0565b9150509250925092565b600060ff82169050919050565b6149738161495d565b82525050565b600060208201905061498e600083018461496a565b92915050565b61499d81614591565b82525050565b60006020820190506149b86000830184614994565b92915050565b6149c781614645565b81146149d257600080fd5b50565b6000813590506149e4816149be565b92915050565b60008060408385031215614a0157614a00614567565b5b6000614a0f858286016145ba565b9250506020614a20858286016149d5565b9150509250929050565b600080600060608486031215614a4357614a42614567565b5b6000614a51868287016145f0565b9350506020614a62868287016145f0565b9250506040614a73868287016145f0565b9150509250925092565b600067ffffffffffffffff821115614a9857614a976146d7565b5b602082029050602081019050919050565b6000614abc614ab784614a7d565b614737565b90508083825260208201905060208402830185811115614adf57614ade61477e565b5b835b81811015614b085780614af488826145f0565b845260208401935050602081019050614ae1565b5050509392505050565b600082601f830112614b2757614b266146d2565b5b8135614b37848260208601614aa9565b91505092915050565b60008060408385031215614b5757614b56614567565b5b600083013567ffffffffffffffff811115614b7557614b7461456c565b5b614b81858286016147ec565b925050602083013567ffffffffffffffff811115614ba257614ba161456c565b5b614bae85828601614b12565b9150509250929050565b60008060408385031215614bcf57614bce614567565b5b6000614bdd858286016145ba565b9250506020614bee858286016145ba565b9150509250929050565b60008060408385031215614c0f57614c0e614567565b5b6000614c1d858286016149d5565b9250506020614c2e858286016149d5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7f57607f821691505b602082108103614c9257614c91614c38565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614cce6020836144b6565b9150614cd982614c98565b602082019050919050565b60006020820190508181036000830152614cfd81614cc1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d6d826145cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d9f57614d9e614d33565b5b600182019050919050565b6000614db5826145cf565b9150614dc0836145cf565b9250828202614dce816145cf565b91508282048414831517614de557614de4614d33565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e26826145cf565b9150614e31836145cf565b925082614e4157614e40614dec565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ea8602f836144b6565b9150614eb382614e4c565b604082019050919050565b60006020820190508181036000830152614ed781614e9b565b9050919050565b6000614ee9826145cf565b9150614ef4836145cf565b9250828201905080821115614f0c57614f0b614d33565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614f48601d836144b6565b9150614f5382614f12565b602082019050919050565b60006020820190508181036000830152614f7781614f3b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614fda6039836144b6565b9150614fe582614f7e565b604082019050919050565b6000602082019050818103600083015261500981614fcd565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f77657260008201527f207468616e20302e352500000000000000000000000000000000000000000000602082015250565b600061506c602a836144b6565b915061507782615010565b604082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006150d8601e836144b6565b91506150e3826150a2565b602082019050919050565b60006020820190508181036000830152615107816150cb565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030300000000000000000000000000000000000000000000000000000000000602082015250565b600061516a6023836144b6565b91506151758261510e565b604082019050919050565b600060208201905081810360008301526151998161515d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006151fc6035836144b6565b9150615207826151a0565b604082019050919050565b6000602082019050818103600083015261522b816151ef565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061528e6034836144b6565b915061529982615232565b604082019050919050565b600060208201905081810360008301526152bd81615281565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153206026836144b6565b915061532b826152c4565b604082019050919050565b6000602082019050818103600083015261534f81615313565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061538c601b836144b6565b915061539782615356565b602082019050919050565b600060208201905081810360008301526153bb8161537f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061541e6024836144b6565b9150615429826153c2565b604082019050919050565b6000602082019050818103600083015261544d81615411565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154b06022836144b6565b91506154bb82615454565b604082019050919050565b600060208201905081810360008301526154df816154a3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006155426025836144b6565b915061554d826154e6565b604082019050919050565b6000602082019050818103600083015261557181615535565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155d46023836144b6565b91506155df82615578565b604082019050919050565b60006020820190508181036000830152615603816155c7565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006156666031836144b6565b91506156718261560a565b604082019050919050565b6000602082019050818103600083015261569581615659565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006156d26016836144b6565b91506156dd8261569c565b602082019050919050565b60006020820190508181036000830152615701816156c5565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061578a6049836144b6565b915061579582615708565b606082019050919050565b600060208201905081810360008301526157b98161577d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061581c6035836144b6565b9150615827826157c0565b604082019050919050565b6000602082019050818103600083015261584b8161580f565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006158886013836144b6565b915061589382615852565b602082019050919050565b600060208201905081810360008301526158b78161587b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061591a6036836144b6565b9150615925826158be565b604082019050919050565b600060208201905081810360008301526159498161590d565b9050919050565b600061595b826145cf565b9150615966836145cf565b925082820390508181111561597e5761597d614d33565b5b92915050565b600081905092915050565b50565b600061599f600083615984565b91506159aa8261598f565b600082019050919050565b60006159c082615992565b9150819050919050565b60006060820190506159df60008301866146a8565b6159ec60208301856146a8565b6159f960408301846146a8565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615a5d6021836144b6565b9150615a6882615a01565b604082019050919050565b60006020820190508181036000830152615a8c81615a50565b9050919050565b600081519050615aa2816145a3565b92915050565b600060208284031215615abe57615abd614567565b5b6000615acc84828501615a93565b91505092915050565b6000819050919050565b6000615afa615af5615af084615ad5565b614863565b6145cf565b9050919050565b615b0a81615adf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615b4581614591565b82525050565b6000615b578383615b3c565b60208301905092915050565b6000602082019050919050565b6000615b7b82615b10565b615b858185615b1b565b9350615b9083615b2c565b8060005b83811015615bc1578151615ba88882615b4b565b9750615bb383615b63565b925050600181019050615b94565b5085935050505092915050565b600060a082019050615be360008301886146a8565b615bf06020830187615b01565b8181036040830152615c028186615b70565b9050615c116060830185614994565b615c1e60808301846146a8565b9695505050505050565b600060c082019050615c3d6000830189614994565b615c4a60208301886146a8565b615c576040830187615b01565b615c646060830186615b01565b615c716080830185614994565b615c7e60a08301846146a8565b979650505050505050565b600081519050615c98816145d9565b92915050565b600080600060608486031215615cb757615cb6614567565b5b6000615cc586828701615c89565b9350506020615cd686828701615c89565b9250506040615ce786828701615c89565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b67d6ca3e817248aefd7027090081c4acf664172c35af5eae7ab2f791176316364736f6c63430008110033

Deployed Bytecode Sourcemap

29364:16328:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7446:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9620:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30919:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30672:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36994:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29451:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8569:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30632:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30410:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30592:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34954:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10272:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8410:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11037:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29509:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29870:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37835:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30445:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29950:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8741:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21950:148;;;;;;;;;;;;;:::i;:::-;;34171:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35411:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30336:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35962:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37665:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21306:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30480:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7666:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36539:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11759:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9082:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37162:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29830:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37448:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31142:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29910:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36348:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35569:384;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35186:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37334:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37970:554;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30556:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30253:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29748:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34559:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30302:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9321:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29790:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34353:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33937:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30373:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22254:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30518:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7446:100;7500:13;7533:5;7526:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7446:100;:::o;9620:169::-;9703:4;9720:39;9729:12;:10;:12::i;:::-;9743:7;9752:6;9720:8;:39::i;:::-;9777:4;9770:11;;9620:169;;;;:::o;30919:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;30672:28::-;;;;:::o;36994:164::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37060:6:::1;37055:96;37076:5;:12;37072:1;:16;37055:96;;;37133:4;37110:10;:20;37121:5;37127:1;37121:8;;;;;;;;:::i;:::-;;;;;;;;37110:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;37090:3;;;;;:::i;:::-;;;;37055:96;;;;36994:164:::0;:::o;29451:51::-;;;:::o;8569:108::-;8630:7;8657:12;;8650:19;;8569:108;:::o;30632:33::-;;;;:::o;30410:25::-;;;;:::o;30592:33::-;;;;:::o;34954:223::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35073:4:::1;35067;35063:1;35047:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35046:31;;;;:::i;:::-;35036:6;:41;;35028:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35163:6;35140:20;:29;;;;34954:223:::0;:::o;10272:355::-;10412:4;10429:36;10439:6;10447:9;10458:6;10429:9;:36::i;:::-;10476:121;10485:6;10493:12;:10;:12::i;:::-;10507:89;10545:6;10507:89;;;;;;;;;;;;;;;;;:11;:19;10519:6;10507:19;;;;;;;;;;;;;;;:33;10527:12;:10;:12::i;:::-;10507:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10476:8;:121::i;:::-;10615:4;10608:11;;10272:355;;;;;:::o;8410:93::-;8468:5;8493:2;8486:9;;8410:93;:::o;11037:218::-;11125:4;11142:83;11151:12;:10;:12::i;:::-;11165:7;11174:50;11213:10;11174:11;:25;11186:12;:10;:12::i;:::-;11174:25;;;;;;;;;;;;;;;:34;11200:7;11174:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11142:8;:83::i;:::-;11243:4;11236:11;;11037:218;;;;:::o;29509:38::-;;;:::o;29870:33::-;;;;;;;;;;;;;:::o;37835:125::-;37900:4;37924:19;:28;37944:7;37924:28;;;;;;;;;;;;;;;;;;;;;;;;;37917:35;;37835:125;;;:::o;30445:28::-;;;;:::o;29950:30::-;;;;;;;;;;;;;:::o;8741:127::-;8815:7;8842:9;:18;8852:7;8842:18;;;;;;;;;;;;;;;;8835:25;;8741:127;;;:::o;21950:148::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22057:1:::1;22020:40;;22041:6;;;;;;;;;;;22020:40;;;;;;;;;;;;22088:1;22071:6;;:19;;;;;;;;;;;;;;;;;;21950:148::o:0;34171:120::-;34223:4;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34256:5:::1;34239:14;;:22;;;;;;;;;;;;;;;;;;34279:4;34272:11;;34171:120:::0;:::o;35411:144::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35543:4:::1;35501:31;:39;35533:6;35501:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35411:144:::0;;:::o;30336:30::-;;;;:::o;35962:376::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36098:13:::1;36080:15;:31;;;;36140:13;36122:15;:31;;;;36177:9;36164:10;:22;;;;36248:10;;36230:15;;36212;;:33;;;;:::i;:::-;:46;;;;:::i;:::-;36197:12;:61;;;;36294:2;36277:13;;:19;;36269:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35962:376:::0;;;:::o;37665:161::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37774:10:::1;;;;;;;;;;;37745:40;;37763:9;37745:40;;;;;;;;;;;;37809:9;37796:10;;:22;;;;;;;;;;;;;;;;;;37665:161:::0;:::o;21306:79::-;21344:7;21371:6;;;;;;;;;;;21364:13;;21306:79;:::o;30480:31::-;;;;:::o;7666:104::-;7722:13;7755:7;7748:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7666:104;:::o;36539:245::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36646:13:::1;36638:21;;:4;:21;;::::0;36630:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36735:41;36764:4;36770:5;36735:28;:41::i;:::-;36539:245:::0;;:::o;11759:269::-;11852:4;11869:129;11878:12;:10;:12::i;:::-;11892:7;11901:96;11940:15;11901:96;;;;;;;;;;;;;;;;;:11;:25;11913:12;:10;:12::i;:::-;11901:25;;;;;;;;;;;;;;;:34;11927:7;11901:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11869:8;:129::i;:::-;12016:4;12009:11;;11759:269;;;;:::o;9082:175::-;9168:4;9185:42;9195:12;:10;:12::i;:::-;9209:9;9220:6;9185:9;:42::i;:::-;9245:4;9238:11;;9082:175;;;;:::o;37162:164::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37231:6:::1;37226:93;37247:6;:13;37243:1;:17;37226:93;;;37304:5;37280:10;:21;37291:6;37298:1;37291:9;;;;;;;;:::i;:::-;;;;;;;;37280:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;37262:3;;;;;:::i;:::-;;;;37226:93;;;;37162:164:::0;:::o;29830:30::-;;;;:::o;37448:208::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37585:15:::1;;;;;;;;;;;37542:59;;37565:18;37542:59;;;;;;;;;;;;37630:18;37612:15;;:36;;;;;;;;;;;;;;;;;;37448:208:::0;:::o;31142:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29910:33::-;;;;;;;;;;;;;:::o;36348:182::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36464:8:::1;36433:19;:28;36453:7;36433:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36504:7;36488:34;;;36513:8;36488:34;;;;;;:::i;:::-;;;;;;;;36348:182:::0;;:::o;35569:384::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35707:13:::1;35688:16;:32;;;;35750:13;35731:16;:32;;;;35788:9;35774:11;:23;;;;35862:11;;35843:16;;35824;;:35;;;;:::i;:::-;:49;;;;:::i;:::-;35808:13;:65;;;;35909:2;35892:13;;:19;;35884:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35569:384:::0;;;:::o;35186:216::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35308:4:::1;35302;35298:1;35282:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35281:31;;;;:::i;:::-;35271:6;:41;;35263:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;35388:6;35370:15;:24;;;;35186:216:::0;:::o;37334:99::-;37386:4;37407:10;:18;37418:6;37407:18;;;;;;;;;;;;;;;;;;;;;;;;;37400:25;;37334:99;;;:::o;37970:554::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38133:6:::1;:13;38108:14;:21;:38;38100:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;38225:4;38200:14;:21;:29;;38192:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;38285:9;38280:237;38304:14;:21;38300:1;:25;38280:237;;;38347:14;38364;38379:1;38364:17;;;;;;;;:::i;:::-;;;;;;;;38347:34;;38396:21;38433:6;38420;38427:1;38420:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;38396:44;;38455:50;38471:10;38483:6;38491:13;38455:15;:50::i;:::-;38332:185;;38327:3;;;;;:::i;:::-;;;;38280:237;;;;37970:554:::0;;:::o;30556:26::-;;;;:::o;30253:39::-;;;;;;;;;;;;;:::o;29748:35::-;;;;:::o;34559:386::-;34640:4;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34697:6:::1;34693:1;34677:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34664:9;:39;;34656:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34813:4;34809:1;34793:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34780:9;:37;;34772:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;34906:9;34885:18;:30;;;;34933:4;34926:11;;34559:386:::0;;;:::o;30302:27::-;;;;:::o;9321:151::-;9410:7;9437:11;:18;9449:5;9437:18;;;;;;;;;;;;;;;:27;9456:7;9437:27;;;;;;;;;;;;;;;;9430:34;;9321:151;;;;:::o;29790:33::-;;;;:::o;34353:134::-;34413:4;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34452:5:::1;34429:20;;:28;;;;;;;;;;;;;;;;;;34475:4;34468:11;;34353:134:::0;:::o;33937:181::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34033:11:::1;34017:13;;:27;;;;;;;;;;;;;;;;;;34069:5;34055:11;;:19;;;;;;;;;;;;;;;;;;34098:12;34085:10;:25;;;;33937:181:::0;;:::o;30373:30::-;;;;:::o;22254:244::-;21529:12;:10;:12::i;:::-;21519:22;;:6;;;;;;;;;;;:22;;;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22363:1:::1;22343:22;;:8;:22;;::::0;22335:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22453:8;22424:38;;22445:6;;;;;;;;;;;22424:38;;;;;;;;;;;;22482:8;22473:6;;:17;;;;;;;;;;;;;;;;;;22254:244:::0;:::o;30518:31::-;;;;:::o;16336:182::-;16394:7;16414:9;16430:1;16426;:5;;;;:::i;:::-;16414:17;;16455:1;16450;:6;;16442:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16509:1;16502:8;;;16336:182;;;;:::o;138:98::-;191:7;218:10;211:17;;138:98;:::o;14955:381::-;15108:1;15091:19;;:5;:19;;;15083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15189:1;15170:21;;:7;:21;;;15162:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15274:6;15244:11;:18;15256:5;15244:18;;;;;;;;;;;;;;;:27;15263:7;15244:27;;;;;;;;;;;;;;;:36;;;;15312:7;15296:32;;15305:5;15296:32;;;15321:6;15296:32;;;;;;:::i;:::-;;;;;;;;14955:381;;;:::o;38538:4422::-;38686:1;38670:18;;:4;:18;;;38662:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38763:1;38749:16;;:2;:16;;;38741:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38825:10;:14;38836:2;38825:14;;;;;;;;;;;;;;;;;;;;;;;;;38824:15;:36;;;;;38844:10;:16;38855:4;38844:16;;;;;;;;;;;;;;;;;;;;;;;;;38843:17;38824:36;38816:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;38939:1;38929:6;:11;38926:92;;38957:28;38973:4;38979:2;38983:1;38957:15;:28::i;:::-;39000:7;;38926:92;39034:14;;;;;;;;;;;39031:1823;;;39094:7;:5;:7::i;:::-;39086:15;;:4;:15;;;;:49;;;;;39128:7;:5;:7::i;:::-;39122:13;;:2;:13;;;;39086:49;:86;;;;;39170:1;39156:16;;:2;:16;;;;39086:86;:128;;;;;39207:6;39193:21;;:2;:21;;;;39086:128;:158;;;;;39236:8;;;;;;;;;;;39235:9;39086:158;39064:1779;;;39282:13;;;;;;;;;;;39278:148;;39327:19;:25;39347:4;39327:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39356:19;:23;39376:2;39356:23;;;;;;;;;;;;;;;;;;;;;;;;;39327:52;39319:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;39278:148;39585:20;;;;;;;;;;;39581:423;;;39639:7;:5;:7::i;:::-;39633:13;;:2;:13;;;;:47;;;;;39664:15;39650:30;;:2;:30;;;;39633:47;:79;;;;;39698:13;39684:28;;:2;:28;;;;39633:79;39629:356;;;39790:12;39748:28;:39;39777:9;39748:39;;;;;;;;;;;;;;;;:54;39740:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39949:12;39907:28;:39;39936:9;39907:39;;;;;;;;;;;;;;;:54;;;;39629:356;39581:423;40057:25;:31;40083:4;40057:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40093:31;:35;40125:2;40093:35;;;;;;;;;;;;;;;;;;;;;;;;;40092:36;40057:71;40053:775;;;40175:20;;40165:6;:30;;40157:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;40314:15;;40297:13;40307:2;40297:9;:13::i;:::-;40288:6;:22;;;;:::i;:::-;:41;;40280:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;40053:775;;;40432:25;:29;40458:2;40432:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40466:31;:37;40498:4;40466:37;;;;;;;;;;;;;;;;;;;;;;;;;40465:38;40432:71;40428:400;;;40550:20;;40540:6;:30;;40532:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40428:400;;;40676:31;:35;40708:2;40676:35;;;;;;;;;;;;;;;;;;;;;;;;;40672:156;;40769:15;;40752:13;40762:2;40752:9;:13::i;:::-;40743:6;:22;;;;:::i;:::-;:41;;40735:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;40672:156;40428:400;40053:775;39064:1779;39031:1823;40928:1;40915:10;;:14;;;;:::i;:::-;40898:12;:32;;:73;;;;;40958:13;40952:19;;:2;:19;;;;40898:73;:152;;;;;41007:42;40993:57;;:2;:57;;;;40898:152;40894:221;;;41099:4;41082:10;:14;41093:2;41082:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;40894:221;41128:28;41159:24;41177:4;41159:9;:24::i;:::-;41128:55;;41197:12;41236:18;;41212:20;:42;;41197:57;;41286:7;:35;;;;;41310:11;;;;;;;;;;;41286:35;:61;;;;;41339:8;;;;;;;;;;;41338:9;41286:61;:110;;;;;41365:25;:31;41391:4;41365:31;;;;;;;;;;;;;;;;;;;;;;;;;41364:32;41286:110;:153;;;;;41414:19;:25;41434:4;41414:25;;;;;;;;;;;;;;;;;;;;;;;;;41413:26;41286:153;:194;;;;;41457:19;:23;41477:2;41457:23;;;;;;;;;;;;;;;;;;;;;;;;;41456:24;41286:194;41268:328;;;41518:4;41507:8;;:15;;;;;;;;;;;;;;;;;;41540:10;:8;:10::i;:::-;41579:5;41568:8;;:16;;;;;;;;;;;;;;;;;;41268:328;41609:12;41625:8;;;;;;;;;;;41624:9;41609:24;;41735:19;:25;41755:4;41735:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41764:19;:23;41784:2;41764:23;;;;;;;;;;;;;;;;;;;;;;;;;41735:52;41732:99;;;41814:5;41804:15;;41732:99;41844:12;41948:7;41945:961;;;41999:25;:29;42025:2;41999:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;42048:1;42032:13;;:17;41999:50;41995:758;;;42076:34;42106:3;42076:25;42087:13;;42076:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;42069:41;;42177:13;;42158:16;;42151:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;42129:18;;:61;;;;;;;:::i;:::-;;;;;;;;42247:13;;42233:11;;42226:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;42209:13;;:51;;;;;;;:::i;:::-;;;;;;;;42327:13;;42308:16;;42301:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;42279:18;;:61;;;;;;;:::i;:::-;;;;;;;;41995:758;;;42401:25;:31;42427:4;42401:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;42451:1;42436:12;;:16;42401:51;42398:355;;;42480:33;42509:3;42480:24;42491:12;;42480:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42473:40;;42579:12;;42561:15;;42554:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42532:18;;:59;;;;;;;:::i;:::-;;;;;;;;42647:12;;42634:10;;42627:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;42610:13;;:49;;;;;;;:::i;:::-;;;;;;;;42725:12;;42707:15;;42700:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42678:18;;:59;;;;;;;:::i;:::-;;;;;;;;42398:355;41995:758;42780:1;42773:4;:8;42770:93;;;42805:42;42821:4;42835;42842;42805:15;:42::i;:::-;42770:93;42890:4;42880:14;;;;;:::i;:::-;;;41945:961;42919:33;42935:4;42941:2;42945:6;42919:15;:33::i;:::-;38651:4309;;;;38538:4422;;;;:::o;17242:193::-;17328:7;17361:1;17356;:6;;17364:12;17348:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17388:9;17404:1;17400;:5;;;;:::i;:::-;17388:17;;17426:1;17419:8;;;17242:193;;;;;:::o;36793:189::-;36910:5;36876:25;:31;36902:4;36876:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36968:5;36934:40;;36962:4;36934:40;;;;;;;;;;;;36793:189;;:::o;12519:575::-;12677:1;12659:20;;:6;:20;;;12651:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12761:1;12740:23;;:9;:23;;;12732:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12817:47;12838:6;12846:9;12857:6;12817:20;:47::i;:::-;12898:71;12920:6;12898:71;;;;;;;;;;;;;;;;;:9;:17;12908:6;12898:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12878:9;:17;12888:6;12878:17;;;;;;;;;;;;;;;:91;;;;13003:32;13028:6;13003:9;:20;13013:9;13003:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12980:9;:20;12990:9;12980:20;;;;;;;;;;;;;;;:55;;;;13068:9;13051:35;;13060:6;13051:35;;;13079:6;13051:35;;;;;;:::i;:::-;;;;;;;;12519:575;;;:::o;44104:1575::-;44143:23;44169:24;44187:4;44169:9;:24::i;:::-;44143:50;;44204:25;44274:13;;44253:18;;44232;;:39;;;;:::i;:::-;:55;;;;:::i;:::-;44204:83;;44298:12;44346:1;44327:15;:20;:46;;;;44372:1;44351:17;:22;44327:46;44324:60;;;44376:7;;;;;44324:60;44439:2;44418:18;;:23;;;;:::i;:::-;44400:15;:41;44397:111;;;44494:2;44473:18;;:23;;;;:::i;:::-;44455:41;;44397:111;44570:23;44655:1;44635:17;44614:18;;44596:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44570:86;;44667:26;44696:36;44716:15;44696;:19;;:36;;;;:::i;:::-;44667:65;;44746:25;44774:21;44746:49;;44809:36;44826:18;44809:16;:36::i;:::-;44860:18;44881:44;44907:17;44881:21;:25;;:44;;;;:::i;:::-;44860:65;;44939:23;44965:57;45004:17;44965:34;44980:18;;44965:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;44939:83;;45033:18;45054:52;45088:17;45054:29;45069:13;;45054:10;:14;;:29;;;;:::i;:::-;:33;;:52;;;;:::i;:::-;45033:73;;45117:23;45174:10;45156:15;45143:10;:28;;;;:::i;:::-;:41;;;;:::i;:::-;45117:67;;45222:1;45201:18;:22;;;;45255:1;45234:18;:22;;;;45283:1;45267:13;:17;;;;45319:10;;;;;;;;;;;45311:24;;45343:10;45311:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45298:60;;;;;45393:1;45375:15;:19;:42;;;;;45416:1;45398:15;:19;45375:42;45372:210;;;45433:46;45446:15;45463;45433:12;:46::i;:::-;45499:71;45514:18;45534:15;45551:18;;45499:71;;;;;;;;:::i;:::-;;;;;;;;45372:210;45616:15;;;;;;;;;;;45608:29;;45645:21;45608:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45595:76;;;;;44132:1547;;;;;;;;;;44104:1575;:::o;17695:473::-;17753:7;18003:1;17998;:6;17994:47;;18028:1;18021:8;;;;17994:47;18054:9;18070:1;18066;:5;;;;:::i;:::-;18054:17;;18099:1;18094;18090;:5;;;;:::i;:::-;:10;18082:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18159:1;18152:8;;;17695:473;;;;;:::o;18645:132::-;18703:7;18730:39;18734:1;18737;18730:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18723:46;;18645:132;;;;:::o;15940:125::-;;;;:::o;16802:136::-;16860:7;16887:43;16891:1;16894;16887:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16880:50;;16802:136;;;;:::o;42969:597::-;43098:21;43136:1;43122:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43098:40;;43167:4;43149;43154:1;43149:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43193:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43183:4;43188:1;43183:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;43229:62;43246:4;43261:15;43279:11;43229:8;:62::i;:::-;43331:15;:66;;;43412:11;43438:1;43482:4;43509;43529:15;43331:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43024:542;42969:597;:::o;43575:520::-;43723:62;43740:4;43755:15;43773:11;43723:8;:62::i;:::-;43829:15;:31;;;43868:9;43901:4;43921:11;43947:1;43990;44041:4;44061:15;43829:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43575:520;;:::o;19274:279::-;19360:7;19392:1;19388;:5;19395:12;19380:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19419:9;19435:1;19431;:5;;;;:::i;:::-;19419:17;;19544:1;19537:8;;;19274:279;;;;;:::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:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:117::-;4242:1;4239;4232:12;4256:180;4304:77;4301:1;4294:88;4401:4;4398:1;4391:15;4425:4;4422:1;4415:15;4442:281;4525:27;4547:4;4525:27;:::i;:::-;4517:6;4513:40;4655:6;4643:10;4640:22;4619:18;4607:10;4604:34;4601:62;4598:88;;;4666:18;;:::i;:::-;4598:88;4706:10;4702:2;4695:22;4485:238;4442:281;;:::o;4729:129::-;4763:6;4790:20;;:::i;:::-;4780:30;;4819:33;4847:4;4839:6;4819:33;:::i;:::-;4729:129;;;:::o;4864:311::-;4941:4;5031:18;5023:6;5020:30;5017:56;;;5053:18;;:::i;:::-;5017:56;5103:4;5095:6;5091:17;5083:25;;5163:4;5157;5153:15;5145:23;;4864:311;;;:::o;5181:117::-;5290:1;5287;5280:12;5321:710;5417:5;5442:81;5458:64;5515:6;5458:64;:::i;:::-;5442:81;:::i;:::-;5433:90;;5543:5;5572:6;5565:5;5558:21;5606:4;5599:5;5595:16;5588:23;;5659:4;5651:6;5647:17;5639:6;5635:30;5688:3;5680:6;5677:15;5674:122;;;5707:79;;:::i;:::-;5674:122;5822:6;5805:220;5839:6;5834:3;5831:15;5805:220;;;5914:3;5943:37;5976:3;5964:10;5943:37;:::i;:::-;5938:3;5931:50;6010:4;6005:3;6001:14;5994:21;;5881:144;5865:4;5860:3;5856:14;5849:21;;5805:220;;;5809:21;5423:608;;5321:710;;;;;:::o;6054:370::-;6125:5;6174:3;6167:4;6159:6;6155:17;6151:27;6141:122;;6182:79;;:::i;:::-;6141:122;6299:6;6286:20;6324:94;6414:3;6406:6;6399:4;6391:6;6387:17;6324:94;:::i;:::-;6315:103;;6131:293;6054:370;;;;:::o;6430:539::-;6514:6;6563:2;6551:9;6542:7;6538:23;6534:32;6531:119;;;6569:79;;:::i;:::-;6531:119;6717:1;6706:9;6702:17;6689:31;6747:18;6739:6;6736:30;6733:117;;;6769:79;;:::i;:::-;6733:117;6874:78;6944:7;6935:6;6924:9;6920:22;6874:78;:::i;:::-;6864:88;;6660:302;6430:539;;;;:::o;6975:60::-;7003:3;7024:5;7017:12;;6975:60;;;:::o;7041:142::-;7091:9;7124:53;7142:34;7151:24;7169:5;7151:24;:::i;:::-;7142:34;:::i;:::-;7124:53;:::i;:::-;7111:66;;7041:142;;;:::o;7189:126::-;7239:9;7272:37;7303:5;7272:37;:::i;:::-;7259:50;;7189:126;;;:::o;7321:153::-;7398:9;7431:37;7462:5;7431:37;:::i;:::-;7418:50;;7321:153;;;:::o;7480:185::-;7594:64;7652:5;7594:64;:::i;:::-;7589:3;7582:77;7480:185;;:::o;7671:276::-;7791:4;7829:2;7818:9;7814:18;7806:26;;7842:98;7937:1;7926:9;7922:17;7913:6;7842:98;:::i;:::-;7671:276;;;;:::o;7953:329::-;8012:6;8061:2;8049:9;8040:7;8036:23;8032:32;8029:119;;;8067:79;;:::i;:::-;8029:119;8187:1;8212:53;8257:7;8248:6;8237:9;8233:22;8212:53;:::i;:::-;8202:63;;8158:117;7953:329;;;;:::o;8288:619::-;8365:6;8373;8381;8430:2;8418:9;8409:7;8405:23;8401:32;8398:119;;;8436:79;;:::i;:::-;8398:119;8556:1;8581:53;8626:7;8617:6;8606:9;8602:22;8581:53;:::i;:::-;8571:63;;8527:117;8683:2;8709:53;8754:7;8745:6;8734:9;8730:22;8709:53;:::i;:::-;8699:63;;8654:118;8811:2;8837:53;8882:7;8873:6;8862:9;8858:22;8837:53;:::i;:::-;8827:63;;8782:118;8288:619;;;;;:::o;8913:86::-;8948:7;8988:4;8981:5;8977:16;8966:27;;8913:86;;;:::o;9005:112::-;9088:22;9104:5;9088:22;:::i;:::-;9083:3;9076:35;9005:112;;:::o;9123:214::-;9212:4;9250:2;9239:9;9235:18;9227:26;;9263:67;9327:1;9316:9;9312:17;9303:6;9263:67;:::i;:::-;9123:214;;;;:::o;9343:118::-;9430:24;9448:5;9430:24;:::i;:::-;9425:3;9418:37;9343:118;;:::o;9467:222::-;9560:4;9598:2;9587:9;9583:18;9575:26;;9611:71;9679:1;9668:9;9664:17;9655:6;9611:71;:::i;:::-;9467:222;;;;:::o;9695:116::-;9765:21;9780:5;9765:21;:::i;:::-;9758:5;9755:32;9745:60;;9801:1;9798;9791:12;9745:60;9695:116;:::o;9817:133::-;9860:5;9898:6;9885:20;9876:29;;9914:30;9938:5;9914:30;:::i;:::-;9817:133;;;;:::o;9956:468::-;10021:6;10029;10078:2;10066:9;10057:7;10053:23;10049:32;10046:119;;;10084:79;;:::i;:::-;10046:119;10204:1;10229:53;10274:7;10265:6;10254:9;10250:22;10229:53;:::i;:::-;10219:63;;10175:117;10331:2;10357:50;10399:7;10390:6;10379:9;10375:22;10357:50;:::i;:::-;10347:60;;10302:115;9956:468;;;;;:::o;10430:619::-;10507:6;10515;10523;10572:2;10560:9;10551:7;10547:23;10543:32;10540:119;;;10578:79;;:::i;:::-;10540:119;10698:1;10723:53;10768:7;10759:6;10748:9;10744:22;10723:53;:::i;:::-;10713:63;;10669:117;10825:2;10851:53;10896:7;10887:6;10876:9;10872:22;10851:53;:::i;:::-;10841:63;;10796:118;10953:2;10979:53;11024:7;11015:6;11004:9;11000:22;10979:53;:::i;:::-;10969:63;;10924:118;10430:619;;;;;:::o;11055:311::-;11132:4;11222:18;11214:6;11211:30;11208:56;;;11244:18;;:::i;:::-;11208:56;11294:4;11286:6;11282:17;11274:25;;11354:4;11348;11344:15;11336:23;;11055:311;;;:::o;11389:710::-;11485:5;11510:81;11526:64;11583:6;11526:64;:::i;:::-;11510:81;:::i;:::-;11501:90;;11611:5;11640:6;11633:5;11626:21;11674:4;11667:5;11663:16;11656:23;;11727:4;11719:6;11715:17;11707:6;11703:30;11756:3;11748:6;11745:15;11742:122;;;11775:79;;:::i;:::-;11742:122;11890:6;11873:220;11907:6;11902:3;11899:15;11873:220;;;11982:3;12011:37;12044:3;12032:10;12011:37;:::i;:::-;12006:3;11999:50;12078:4;12073:3;12069:14;12062:21;;11949:144;11933:4;11928:3;11924:14;11917:21;;11873:220;;;11877:21;11491:608;;11389:710;;;;;:::o;12122:370::-;12193:5;12242:3;12235:4;12227:6;12223:17;12219:27;12209:122;;12250:79;;:::i;:::-;12209:122;12367:6;12354:20;12392:94;12482:3;12474:6;12467:4;12459:6;12455:17;12392:94;:::i;:::-;12383:103;;12199:293;12122:370;;;;:::o;12498:894::-;12616:6;12624;12673:2;12661:9;12652:7;12648:23;12644:32;12641:119;;;12679:79;;:::i;:::-;12641:119;12827:1;12816:9;12812:17;12799:31;12857:18;12849:6;12846:30;12843:117;;;12879:79;;:::i;:::-;12843:117;12984:78;13054:7;13045:6;13034:9;13030:22;12984:78;:::i;:::-;12974:88;;12770:302;13139:2;13128:9;13124:18;13111:32;13170:18;13162:6;13159:30;13156:117;;;13192:79;;:::i;:::-;13156:117;13297:78;13367:7;13358:6;13347:9;13343:22;13297:78;:::i;:::-;13287:88;;13082:303;12498:894;;;;;:::o;13398:474::-;13466:6;13474;13523:2;13511:9;13502:7;13498:23;13494:32;13491:119;;;13529:79;;:::i;:::-;13491:119;13649:1;13674:53;13719:7;13710:6;13699:9;13695:22;13674:53;:::i;:::-;13664:63;;13620:117;13776:2;13802:53;13847:7;13838:6;13827:9;13823:22;13802:53;:::i;:::-;13792:63;;13747:118;13398:474;;;;;:::o;13878:462::-;13940:6;13948;13997:2;13985:9;13976:7;13972:23;13968:32;13965:119;;;14003:79;;:::i;:::-;13965:119;14123:1;14148:50;14190:7;14181:6;14170:9;14166:22;14148:50;:::i;:::-;14138:60;;14094:114;14247:2;14273:50;14315:7;14306:6;14295:9;14291:22;14273:50;:::i;:::-;14263:60;;14218:115;13878:462;;;;;:::o;14346:180::-;14394:77;14391:1;14384:88;14491:4;14488:1;14481:15;14515:4;14512:1;14505:15;14532:320;14576:6;14613:1;14607:4;14603:12;14593:22;;14660:1;14654:4;14650:12;14681:18;14671:81;;14737:4;14729:6;14725:17;14715:27;;14671:81;14799:2;14791:6;14788:14;14768:18;14765:38;14762:84;;14818:18;;:::i;:::-;14762:84;14583:269;14532:320;;;:::o;14858:182::-;14998:34;14994:1;14986:6;14982:14;14975:58;14858:182;:::o;15046:366::-;15188:3;15209:67;15273:2;15268:3;15209:67;:::i;:::-;15202:74;;15285:93;15374:3;15285:93;:::i;:::-;15403:2;15398:3;15394:12;15387:19;;15046:366;;;:::o;15418:419::-;15584:4;15622:2;15611:9;15607:18;15599:26;;15671:9;15665:4;15661:20;15657:1;15646:9;15642:17;15635:47;15699:131;15825:4;15699:131;:::i;:::-;15691:139;;15418:419;;;:::o;15843:180::-;15891:77;15888:1;15881:88;15988:4;15985:1;15978:15;16012:4;16009:1;16002:15;16029:180;16077:77;16074:1;16067:88;16174:4;16171:1;16164:15;16198:4;16195:1;16188:15;16215:233;16254:3;16277:24;16295:5;16277:24;:::i;:::-;16268:33;;16323:66;16316:5;16313:77;16310:103;;16393:18;;:::i;:::-;16310:103;16440:1;16433:5;16429:13;16422:20;;16215:233;;;:::o;16454:410::-;16494:7;16517:20;16535:1;16517:20;:::i;:::-;16512:25;;16551:20;16569:1;16551:20;:::i;:::-;16546:25;;16606:1;16603;16599:9;16628:30;16646:11;16628:30;:::i;:::-;16617:41;;16807:1;16798:7;16794:15;16791:1;16788:22;16768:1;16761:9;16741:83;16718:139;;16837:18;;:::i;:::-;16718:139;16502:362;16454:410;;;;:::o;16870:180::-;16918:77;16915:1;16908:88;17015:4;17012:1;17005:15;17039:4;17036:1;17029:15;17056:185;17096:1;17113:20;17131:1;17113:20;:::i;:::-;17108:25;;17147:20;17165:1;17147:20;:::i;:::-;17142:25;;17186:1;17176:35;;17191:18;;:::i;:::-;17176:35;17233:1;17230;17226:9;17221:14;;17056:185;;;;:::o;17247:234::-;17387:34;17383:1;17375:6;17371:14;17364:58;17456:17;17451:2;17443:6;17439:15;17432:42;17247:234;:::o;17487:366::-;17629:3;17650:67;17714:2;17709:3;17650:67;:::i;:::-;17643:74;;17726:93;17815:3;17726:93;:::i;:::-;17844:2;17839:3;17835:12;17828:19;;17487:366;;;:::o;17859:419::-;18025:4;18063:2;18052:9;18048:18;18040:26;;18112:9;18106:4;18102:20;18098:1;18087:9;18083:17;18076:47;18140:131;18266:4;18140:131;:::i;:::-;18132:139;;17859:419;;;:::o;18284:191::-;18324:3;18343:20;18361:1;18343:20;:::i;:::-;18338:25;;18377:20;18395:1;18377:20;:::i;:::-;18372:25;;18420:1;18417;18413:9;18406:16;;18441:3;18438:1;18435:10;18432:36;;;18448:18;;:::i;:::-;18432:36;18284:191;;;;:::o;18481:179::-;18621:31;18617:1;18609:6;18605:14;18598:55;18481:179;:::o;18666:366::-;18808:3;18829:67;18893:2;18888:3;18829:67;:::i;:::-;18822:74;;18905:93;18994:3;18905:93;:::i;:::-;19023:2;19018:3;19014:12;19007:19;;18666:366;;;:::o;19038:419::-;19204:4;19242:2;19231:9;19227:18;19219:26;;19291:9;19285:4;19281:20;19277:1;19266:9;19262:17;19255:47;19319:131;19445:4;19319:131;:::i;:::-;19311:139;;19038:419;;;:::o;19463:244::-;19603:34;19599:1;19591:6;19587:14;19580:58;19672:27;19667:2;19659:6;19655:15;19648:52;19463:244;:::o;19713:366::-;19855:3;19876:67;19940:2;19935:3;19876:67;:::i;:::-;19869:74;;19952:93;20041:3;19952:93;:::i;:::-;20070:2;20065:3;20061:12;20054:19;;19713:366;;;:::o;20085:419::-;20251:4;20289:2;20278:9;20274:18;20266:26;;20338:9;20332:4;20328:20;20324:1;20313:9;20309:17;20302:47;20366:131;20492:4;20366:131;:::i;:::-;20358:139;;20085:419;;;:::o;20510:229::-;20650:34;20646:1;20638:6;20634:14;20627:58;20719:12;20714:2;20706:6;20702:15;20695:37;20510:229;:::o;20745:366::-;20887:3;20908:67;20972:2;20967:3;20908:67;:::i;:::-;20901:74;;20984:93;21073:3;20984:93;:::i;:::-;21102:2;21097:3;21093:12;21086:19;;20745:366;;;:::o;21117:419::-;21283:4;21321:2;21310:9;21306:18;21298:26;;21370:9;21364:4;21360:20;21356:1;21345:9;21341:17;21334:47;21398:131;21524:4;21398:131;:::i;:::-;21390:139;;21117:419;;;:::o;21542:180::-;21682:32;21678:1;21670:6;21666:14;21659:56;21542:180;:::o;21728:366::-;21870:3;21891:67;21955:2;21950:3;21891:67;:::i;:::-;21884:74;;21967:93;22056:3;21967:93;:::i;:::-;22085:2;22080:3;22076:12;22069:19;;21728:366;;;:::o;22100:419::-;22266:4;22304:2;22293:9;22289:18;22281:26;;22353:9;22347:4;22343:20;22339:1;22328:9;22324:17;22317:47;22381:131;22507:4;22381:131;:::i;:::-;22373:139;;22100:419;;;:::o;22525:222::-;22665:34;22661:1;22653:6;22649:14;22642:58;22734:5;22729:2;22721:6;22717:15;22710:30;22525:222;:::o;22753:366::-;22895:3;22916:67;22980:2;22975:3;22916:67;:::i;:::-;22909:74;;22992:93;23081:3;22992:93;:::i;:::-;23110:2;23105:3;23101:12;23094:19;;22753:366;;;:::o;23125:419::-;23291:4;23329:2;23318:9;23314:18;23306:26;;23378:9;23372:4;23368:20;23364:1;23353:9;23349:17;23342:47;23406:131;23532:4;23406:131;:::i;:::-;23398:139;;23125:419;;;:::o;23550:240::-;23690:34;23686:1;23678:6;23674:14;23667:58;23759:23;23754:2;23746:6;23742:15;23735:48;23550:240;:::o;23796:366::-;23938:3;23959:67;24023:2;24018:3;23959:67;:::i;:::-;23952:74;;24035:93;24124:3;24035:93;:::i;:::-;24153:2;24148:3;24144:12;24137:19;;23796:366;;;:::o;24168:419::-;24334:4;24372:2;24361:9;24357:18;24349:26;;24421:9;24415:4;24411:20;24407:1;24396:9;24392:17;24385:47;24449:131;24575:4;24449:131;:::i;:::-;24441:139;;24168:419;;;:::o;24593:239::-;24733:34;24729:1;24721:6;24717:14;24710:58;24802:22;24797:2;24789:6;24785:15;24778:47;24593:239;:::o;24838:366::-;24980:3;25001:67;25065:2;25060:3;25001:67;:::i;:::-;24994:74;;25077:93;25166:3;25077:93;:::i;:::-;25195:2;25190:3;25186:12;25179:19;;24838:366;;;:::o;25210:419::-;25376:4;25414:2;25403:9;25399:18;25391:26;;25463:9;25457:4;25453:20;25449:1;25438:9;25434:17;25427:47;25491:131;25617:4;25491:131;:::i;:::-;25483:139;;25210:419;;;:::o;25635:225::-;25775:34;25771:1;25763:6;25759:14;25752:58;25844:8;25839:2;25831:6;25827:15;25820:33;25635:225;:::o;25866:366::-;26008:3;26029:67;26093:2;26088:3;26029:67;:::i;:::-;26022:74;;26105:93;26194:3;26105:93;:::i;:::-;26223:2;26218:3;26214:12;26207:19;;25866:366;;;:::o;26238:419::-;26404:4;26442:2;26431:9;26427:18;26419:26;;26491:9;26485:4;26481:20;26477:1;26466:9;26462:17;26455:47;26519:131;26645:4;26519:131;:::i;:::-;26511:139;;26238:419;;;:::o;26663:177::-;26803:29;26799:1;26791:6;26787:14;26780:53;26663:177;:::o;26846:366::-;26988:3;27009:67;27073:2;27068:3;27009:67;:::i;:::-;27002:74;;27085:93;27174:3;27085:93;:::i;:::-;27203:2;27198:3;27194:12;27187:19;;26846:366;;;:::o;27218:419::-;27384:4;27422:2;27411:9;27407:18;27399:26;;27471:9;27465:4;27461:20;27457:1;27446:9;27442:17;27435:47;27499:131;27625:4;27499:131;:::i;:::-;27491:139;;27218:419;;;:::o;27643:223::-;27783:34;27779:1;27771:6;27767:14;27760:58;27852:6;27847:2;27839:6;27835:15;27828:31;27643:223;:::o;27872:366::-;28014:3;28035:67;28099:2;28094:3;28035:67;:::i;:::-;28028:74;;28111:93;28200:3;28111:93;:::i;:::-;28229:2;28224:3;28220:12;28213:19;;27872:366;;;:::o;28244:419::-;28410:4;28448:2;28437:9;28433:18;28425:26;;28497:9;28491:4;28487:20;28483:1;28472:9;28468:17;28461:47;28525:131;28651:4;28525:131;:::i;:::-;28517:139;;28244:419;;;:::o;28669:221::-;28809:34;28805:1;28797:6;28793:14;28786:58;28878:4;28873:2;28865:6;28861:15;28854:29;28669:221;:::o;28896:366::-;29038:3;29059:67;29123:2;29118:3;29059:67;:::i;:::-;29052:74;;29135:93;29224:3;29135:93;:::i;:::-;29253:2;29248:3;29244:12;29237:19;;28896:366;;;:::o;29268:419::-;29434:4;29472:2;29461:9;29457:18;29449:26;;29521:9;29515:4;29511:20;29507:1;29496:9;29492:17;29485:47;29549:131;29675:4;29549:131;:::i;:::-;29541:139;;29268:419;;;:::o;29693:224::-;29833:34;29829:1;29821:6;29817:14;29810:58;29902:7;29897:2;29889:6;29885:15;29878:32;29693:224;:::o;29923:366::-;30065:3;30086:67;30150:2;30145:3;30086:67;:::i;:::-;30079:74;;30162:93;30251:3;30162:93;:::i;:::-;30280:2;30275:3;30271:12;30264:19;;29923:366;;;:::o;30295:419::-;30461:4;30499:2;30488:9;30484:18;30476:26;;30548:9;30542:4;30538:20;30534:1;30523:9;30519:17;30512:47;30576:131;30702:4;30576:131;:::i;:::-;30568:139;;30295:419;;;:::o;30720:222::-;30860:34;30856:1;30848:6;30844:14;30837:58;30929:5;30924:2;30916:6;30912:15;30905:30;30720:222;:::o;30948:366::-;31090:3;31111:67;31175:2;31170:3;31111:67;:::i;:::-;31104:74;;31187:93;31276:3;31187:93;:::i;:::-;31305:2;31300:3;31296:12;31289:19;;30948:366;;;:::o;31320:419::-;31486:4;31524:2;31513:9;31509:18;31501:26;;31573:9;31567:4;31563:20;31559:1;31548:9;31544:17;31537:47;31601:131;31727:4;31601:131;:::i;:::-;31593:139;;31320:419;;;:::o;31745:236::-;31885:34;31881:1;31873:6;31869:14;31862:58;31954:19;31949:2;31941:6;31937:15;31930:44;31745:236;:::o;31987:366::-;32129:3;32150:67;32214:2;32209:3;32150:67;:::i;:::-;32143:74;;32226:93;32315:3;32226:93;:::i;:::-;32344:2;32339:3;32335:12;32328:19;;31987:366;;;:::o;32359:419::-;32525:4;32563:2;32552:9;32548:18;32540:26;;32612:9;32606:4;32602:20;32598:1;32587:9;32583:17;32576:47;32640:131;32766:4;32640:131;:::i;:::-;32632:139;;32359:419;;;:::o;32784:172::-;32924:24;32920:1;32912:6;32908:14;32901:48;32784:172;:::o;32962:366::-;33104:3;33125:67;33189:2;33184:3;33125:67;:::i;:::-;33118:74;;33201:93;33290:3;33201:93;:::i;:::-;33319:2;33314:3;33310:12;33303:19;;32962:366;;;:::o;33334:419::-;33500:4;33538:2;33527:9;33523:18;33515:26;;33587:9;33581:4;33577:20;33573:1;33562:9;33558:17;33551:47;33615:131;33741:4;33615:131;:::i;:::-;33607:139;;33334:419;;;:::o;33759:297::-;33899:34;33895:1;33887:6;33883:14;33876:58;33968:34;33963:2;33955:6;33951:15;33944:59;34037:11;34032:2;34024:6;34020:15;34013:36;33759:297;:::o;34062:366::-;34204:3;34225:67;34289:2;34284:3;34225:67;:::i;:::-;34218:74;;34301:93;34390:3;34301:93;:::i;:::-;34419:2;34414:3;34410:12;34403:19;;34062:366;;;:::o;34434:419::-;34600:4;34638:2;34627:9;34623:18;34615:26;;34687:9;34681:4;34677:20;34673:1;34662:9;34658:17;34651:47;34715:131;34841:4;34715:131;:::i;:::-;34707:139;;34434:419;;;:::o;34859:240::-;34999:34;34995:1;34987:6;34983:14;34976:58;35068:23;35063:2;35055:6;35051:15;35044:48;34859:240;:::o;35105:366::-;35247:3;35268:67;35332:2;35327:3;35268:67;:::i;:::-;35261:74;;35344:93;35433:3;35344:93;:::i;:::-;35462:2;35457:3;35453:12;35446:19;;35105:366;;;:::o;35477:419::-;35643:4;35681:2;35670:9;35666:18;35658:26;;35730:9;35724:4;35720:20;35716:1;35705:9;35701:17;35694:47;35758:131;35884:4;35758:131;:::i;:::-;35750:139;;35477:419;;;:::o;35902:169::-;36042:21;36038:1;36030:6;36026:14;36019:45;35902:169;:::o;36077:366::-;36219:3;36240:67;36304:2;36299:3;36240:67;:::i;:::-;36233:74;;36316:93;36405:3;36316:93;:::i;:::-;36434:2;36429:3;36425:12;36418:19;;36077:366;;;:::o;36449:419::-;36615:4;36653:2;36642:9;36638:18;36630:26;;36702:9;36696:4;36692:20;36688:1;36677:9;36673:17;36666:47;36730:131;36856:4;36730:131;:::i;:::-;36722:139;;36449:419;;;:::o;36874:241::-;37014:34;37010:1;37002:6;36998:14;36991:58;37083:24;37078:2;37070:6;37066:15;37059:49;36874:241;:::o;37121:366::-;37263:3;37284:67;37348:2;37343:3;37284:67;:::i;:::-;37277:74;;37360:93;37449:3;37360:93;:::i;:::-;37478:2;37473:3;37469:12;37462:19;;37121:366;;;:::o;37493:419::-;37659:4;37697:2;37686:9;37682:18;37674:26;;37746:9;37740:4;37736:20;37732:1;37721:9;37717:17;37710:47;37774:131;37900:4;37774:131;:::i;:::-;37766:139;;37493:419;;;:::o;37918:194::-;37958:4;37978:20;37996:1;37978:20;:::i;:::-;37973:25;;38012:20;38030:1;38012:20;:::i;:::-;38007:25;;38056:1;38053;38049:9;38041:17;;38080:1;38074:4;38071:11;38068:37;;;38085:18;;:::i;:::-;38068:37;37918:194;;;;:::o;38118:147::-;38219:11;38256:3;38241:18;;38118:147;;;;:::o;38271:114::-;;:::o;38391:398::-;38550:3;38571:83;38652:1;38647:3;38571:83;:::i;:::-;38564:90;;38663:93;38752:3;38663:93;:::i;:::-;38781:1;38776:3;38772:11;38765:18;;38391:398;;;:::o;38795:379::-;38979:3;39001:147;39144:3;39001:147;:::i;:::-;38994:154;;39165:3;39158:10;;38795:379;;;:::o;39180:442::-;39329:4;39367:2;39356:9;39352:18;39344:26;;39380:71;39448:1;39437:9;39433:17;39424:6;39380:71;:::i;:::-;39461:72;39529:2;39518:9;39514:18;39505:6;39461:72;:::i;:::-;39543;39611:2;39600:9;39596:18;39587:6;39543:72;:::i;:::-;39180:442;;;;;;:::o;39628:220::-;39768:34;39764:1;39756:6;39752:14;39745:58;39837:3;39832:2;39824:6;39820:15;39813:28;39628:220;:::o;39854:366::-;39996:3;40017:67;40081:2;40076:3;40017:67;:::i;:::-;40010:74;;40093:93;40182:3;40093:93;:::i;:::-;40211:2;40206:3;40202:12;40195:19;;39854:366;;;:::o;40226:419::-;40392:4;40430:2;40419:9;40415:18;40407:26;;40479:9;40473:4;40469:20;40465:1;40454:9;40450:17;40443:47;40507:131;40633:4;40507:131;:::i;:::-;40499:139;;40226:419;;;:::o;40651:143::-;40708:5;40739:6;40733:13;40724:22;;40755:33;40782:5;40755:33;:::i;:::-;40651:143;;;;:::o;40800:351::-;40870:6;40919:2;40907:9;40898:7;40894:23;40890:32;40887:119;;;40925:79;;:::i;:::-;40887:119;41045:1;41070:64;41126:7;41117:6;41106:9;41102:22;41070:64;:::i;:::-;41060:74;;41016:128;40800:351;;;;:::o;41157:85::-;41202:7;41231:5;41220:16;;41157:85;;;:::o;41248:158::-;41306:9;41339:61;41357:42;41366:32;41392:5;41366:32;:::i;:::-;41357:42;:::i;:::-;41339:61;:::i;:::-;41326:74;;41248:158;;;:::o;41412:147::-;41507:45;41546:5;41507:45;:::i;:::-;41502:3;41495:58;41412:147;;:::o;41565:114::-;41632:6;41666:5;41660:12;41650:22;;41565:114;;;:::o;41685:184::-;41784:11;41818:6;41813:3;41806:19;41858:4;41853:3;41849:14;41834:29;;41685:184;;;;:::o;41875:132::-;41942:4;41965:3;41957:11;;41995:4;41990:3;41986:14;41978:22;;41875:132;;;:::o;42013:108::-;42090:24;42108:5;42090:24;:::i;:::-;42085:3;42078:37;42013:108;;:::o;42127:179::-;42196:10;42217:46;42259:3;42251:6;42217:46;:::i;:::-;42295:4;42290:3;42286:14;42272:28;;42127:179;;;;:::o;42312:113::-;42382:4;42414;42409:3;42405:14;42397:22;;42312:113;;;:::o;42461:732::-;42580:3;42609:54;42657:5;42609:54;:::i;:::-;42679:86;42758:6;42753:3;42679:86;:::i;:::-;42672:93;;42789:56;42839:5;42789:56;:::i;:::-;42868:7;42899:1;42884:284;42909:6;42906:1;42903:13;42884:284;;;42985:6;42979:13;43012:63;43071:3;43056:13;43012:63;:::i;:::-;43005:70;;43098:60;43151:6;43098:60;:::i;:::-;43088:70;;42944:224;42931:1;42928;42924:9;42919:14;;42884:284;;;42888:14;43184:3;43177:10;;42585:608;;;42461:732;;;;:::o;43199:831::-;43462:4;43500:3;43489:9;43485:19;43477:27;;43514:71;43582:1;43571:9;43567:17;43558:6;43514:71;:::i;:::-;43595:80;43671:2;43660:9;43656:18;43647:6;43595:80;:::i;:::-;43722:9;43716:4;43712:20;43707:2;43696:9;43692:18;43685:48;43750:108;43853:4;43844:6;43750:108;:::i;:::-;43742:116;;43868:72;43936:2;43925:9;43921:18;43912:6;43868:72;:::i;:::-;43950:73;44018:3;44007:9;44003:19;43994:6;43950:73;:::i;:::-;43199:831;;;;;;;;:::o;44036:807::-;44285:4;44323:3;44312:9;44308:19;44300:27;;44337:71;44405:1;44394:9;44390:17;44381:6;44337:71;:::i;:::-;44418:72;44486:2;44475:9;44471:18;44462:6;44418:72;:::i;:::-;44500:80;44576:2;44565:9;44561:18;44552:6;44500:80;:::i;:::-;44590;44666:2;44655:9;44651:18;44642:6;44590:80;:::i;:::-;44680:73;44748:3;44737:9;44733:19;44724:6;44680:73;:::i;:::-;44763;44831:3;44820:9;44816:19;44807:6;44763:73;:::i;:::-;44036:807;;;;;;;;;:::o;44849:143::-;44906:5;44937:6;44931:13;44922:22;;44953:33;44980:5;44953:33;:::i;:::-;44849:143;;;;:::o;44998:663::-;45086:6;45094;45102;45151:2;45139:9;45130:7;45126:23;45122:32;45119:119;;;45157:79;;:::i;:::-;45119:119;45277:1;45302:64;45358:7;45349:6;45338:9;45334:22;45302:64;:::i;:::-;45292:74;;45248:128;45415:2;45441:64;45497:7;45488:6;45477:9;45473:22;45441:64;:::i;:::-;45431:74;;45386:129;45554:2;45580:64;45636:7;45627:6;45616:9;45612:22;45580:64;:::i;:::-;45570:74;;45525:129;44998:663;;;;;:::o

Swarm Source

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