BNB Price: $625.57 (+1.52%)
 

Overview

Max Total Supply

987,609,643,366,377.591746ANTF

Holders

28,284

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
712,279,442.663058972402563714 ANTF

Value
$0.00
0x98e443df47e2612d62525feaa8206577bfb4403e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
AntfToken

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2021-06-15
*/

pragma solidity ^0.8.0;

/*
    GMEB
*/

// SPDX-License-Identifier: MIT
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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);
}


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
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;
    }
}


/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        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] + 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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += 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 += amount;
        _balances[account] += 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);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= 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 { }
}


contract Tax {

    event SetBurnRatio(uint _newBurnRatio);
    event SetLiquidRatio(uint _newLiquidRatio);
    event SetCharityRatio(uint _newCharityRatio);
    event SetCharityAddress(address _newCharityAddress);

    event SetMinAutoLiquid(uint _newMinAutoLiquid);

    uint private _burnRatio;
    uint private _liquidRatio;
    uint private _charityRatio;

    uint constant denominator = 10000;

    uint private _minAutoLiquid;

    address private _charityAddress;

    uint internal _totalTax;

    function _setBurnRatio(
        uint _newBurnRatio
    )
        internal
    {
        _burnRatio = _newBurnRatio;
        emit SetBurnRatio(_newBurnRatio);
    }

    function _setLiquidRatio(
        uint _newLiquidRatio
    )
        internal
    {
        _liquidRatio = _newLiquidRatio;
        emit SetLiquidRatio(_newLiquidRatio);
    }

    function _setCharityRatio(
        uint _newCharityRatio
    )
        internal
    {
        _charityRatio = _newCharityRatio;
        emit SetCharityRatio(_newCharityRatio);
    }

    function _setCharityAddress(
        address _newCharityAddress
    )
        internal
    {
        _charityAddress = _newCharityAddress;
        emit SetCharityAddress(_newCharityAddress);
    }

    function _setMinAutoLiquid(
        uint _newMinAutoLiquid
    )
        internal
    {
        _minAutoLiquid = _newMinAutoLiquid;
        emit SetMinAutoLiquid(_newMinAutoLiquid);
    }

    function burnRatio()
        public
        view
        returns(uint)
    {
        return _burnRatio;
    }

    function liquidRatio()
        public
        view
        returns(uint)
    {
        return _liquidRatio;
    }

    function charityRatio()
        public
        view
        returns(uint)
    {
        return _charityRatio;
    }

    function charityAddress()
        public
        view
        returns(address)
    {
        return _charityAddress;
    }

    function minAutoLiquid()
        public
        view
        returns(uint)
    {
        return _minAutoLiquid;
    }

    function getFeeAmounts(
        uint _amount
    )
        public
        view
        returns(uint burnA, uint taxA)
    {
        uint tmp = _amount / denominator;
        burnA = tmp * _burnRatio;
        taxA = tmp * (_liquidRatio + _charityRatio);
    }

    function _splitLiquidCharityFromTax(
        uint _maxAmount
    )
        internal
        returns(uint liquidA, uint charityA)
    {
        uint _amount = _maxAmount > _totalTax ? _totalTax : _maxAmount;
        uint tmp = _amount / (_liquidRatio + _charityRatio);
        liquidA = tmp * _liquidRatio;
        charityA = _amount - liquidA;
        // reset
        _totalTax -= _amount;
    }
}


// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

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

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


contract Sale {
    using SafeMath for uint;

    event SetPrice(uint _newPrice);
    event SetSaleAmount(uint _oldSaleAmount, uint _newSaleAmount);
    event SetSaleOwner(address payable _newSaleOwner);

    event Buy(uint _tokenAmount);

    uint private _price;
    uint private _saleAmount;

    address payable private _saleOwner;

    function _setPrice(
        uint _newPrice
    )
        internal
    {
        _price = _newPrice;
        emit SetPrice(_newPrice);
    }

    function _setSaleAmount(
        uint _newSaleAmount
    )
        internal
    {
        emit SetSaleAmount(_saleAmount, _newSaleAmount);
        _saleAmount = _newSaleAmount;
    }

    function _setSaleOwner(
        address payable _newSaleOwner
    )
        internal
    {
        _saleOwner = _newSaleOwner;
        emit SetSaleOwner(_newSaleOwner);
    }

    function _saleStop()
        internal
    {
        _setSaleAmount(0);
    }

    function _buy(
        uint value
    )
        internal
        returns(uint)
    {
        uint tokenAmount = value.mul(1 ether).div(_price);
        _saleAmount = _saleAmount.sub(tokenAmount);
        emit Buy(tokenAmount);
        _saleOwner.transfer(value);
        return tokenAmount;
    }

    function saleOwner()
        public
        view
        returns(address payable)
    {
        return _saleOwner;
    }

    function price()
        public
        view
        returns(uint)
    {
        return _price;
    }

    function saleAmount()
        public
        view
        returns(uint)
    {
        return _saleAmount;
    }
}


contract Referral {
    event AddRef(address _address, address _ref);
    event SetRefPercents(uint _newF1Percent, uint _newF2Percent, uint _newF3Percent);

    mapping(address => address) private _refOf;

    uint private _f1Percent;
    uint private _f2Percent;
    uint private _f3Percent;

    function _setRefPercents(
        uint _newF1Percent,
        uint _newF2Percent,
        uint _newF3Percent
    )
        internal
    {
        _f1Percent = _newF1Percent;
        _f2Percent = _newF2Percent;
        _f3Percent = _newF3Percent;
        emit SetRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
    }

    function _addRef(
        address _address,
        address _ref
    )
        internal
    {
        if (_refOf[_address] == address(0x0) && _address != _ref) {
            _refOf[_address] = _ref;
            emit AddRef(_address, _ref);
        }
    }

    function refOf(
        address _address
    )
        public
        view
        returns(address)
    {
        return _refOf[_address];
    }

    function f1Percent()
        public
        view
        returns(uint)
    {
        return _f1Percent;
    }

    function f2Percent()
        public
        view
        returns(uint)
    {
        return _f2Percent;
    }

    function f3Percent()
        public
        view
        returns(uint)
    {
        return _f3Percent;
    }
}


contract Claim {
    modifier onlyNotClaimed(address _claimer) {
        require(!_isClaimed[_claimer], "already claimed!");
        _;
    }

    mapping(address => bool) private _isClaimed;

    uint private _claimCost;
    uint private _claimAmount;
    uint private _refClaimAmount;

    bool private _isClaimStopped;

    function _stopClaim()
        internal
    {
        _isClaimStopped = true;
    }

    function _startClaim()
        internal
    {
        _isClaimStopped = false;
    }

    function _setClaimCost(
        uint _newClaimCost
    )
        internal
    {
        _claimCost = _newClaimCost;
    }

    function _setClaimAmount(
        uint _newClaimAmount
    )
        internal
    {
        _claimAmount = _newClaimAmount;
    }

    function _setRefClaimAmount(
        uint _newRefClaimAmount
    )
        internal
    {
        _refClaimAmount = _newRefClaimAmount;
    }

    function _claim(
        address _claimer
    )
        internal
        onlyNotClaimed(_claimer)
        returns(uint, uint)
    {
        require(!_isClaimStopped, "Claimming programm has been stopped!");
        _isClaimed[_claimer] = true;
        if (_claimCost > 0) {
            require(msg.value >= _claimCost, "claim cost a bit bnb!");
        }
        return (_claimAmount, _refClaimAmount);
    }

    function isClaimed(
        address _claimer
    )
        public
        view
        returns(bool)
    {
        return _isClaimed[_claimer];
    }

    function isClaimStopped()
        public
        view
        returns(bool)
    {
        return _isClaimStopped;
    }

    function claimCost()
        public
        view
        returns(uint)
    {
        return _claimCost;
    }

    function claimAmount()
        public
        view
        returns(uint)
    {
        return _claimAmount;
    }

    function refClaimAmount()
        public
        view
        returns(uint)
    {
        return _refClaimAmount;
    }
}


contract Admin {
    modifier onlyAdmin() {
        require(msg.sender == _admin, "is not admin!");
        _;
    }

    address private _admin;

    constructor (
        address _initAdmin
    )
    {
        _admin = _initAdmin;
    }

    function setAdmin(
        address _newAdmin
    )
        public
        onlyAdmin
    {
        _admin = _newAdmin;
    }

    function admin()
        public
        view
        returns(address)
    {
        return _admin;
    }
}


contract Whitelist {
    event AddToWhitelist(address _address);
    event RemoveFromWhitelist(address _address);

    mapping(address => bool) private _isWhitelisted;

    function _addToWhitelist(
        address _address
    )
        internal
    {
        if (_isWhitelisted[_address]) {
            return;
        }
        _isWhitelisted[_address] = true;
        emit AddToWhitelist(_address);
    }

    function _removeFromWhitelist(
        address _address
    )
        internal
    {
        if (!_isWhitelisted[_address]) {
            return;
        }
        _isWhitelisted[_address] = false;
        emit RemoveFromWhitelist(_address);
    }

    function isWhitelisted(
        address _address
    )
        public
        view
        returns(bool)
    {
        return _isWhitelisted[_address];
    }
}


contract Settings is Admin, Tax, Sale, Referral, Claim, Whitelist {
    constructor (
        address _initAdmin
    )
        Admin(_initAdmin)
    {
    }

    /*
        REFERRAL
    */

    function setRefPercents(
        uint _newF1Percent,
        uint _newF2Percent,
        uint _newF3Percent
    )
        public
        onlyAdmin
    {
        _setRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
    }

    /*
        SALE
    */

    function setPrice(
        uint _newPrice
    )
        public
        onlyAdmin
    {
        _setPrice(_newPrice);
    }

    function setSaleAmount(
        uint _newSaleAmount
    )
        public
        onlyAdmin
    {
        _setSaleAmount(_newSaleAmount);
    }

    function setSaleOwner(
        address payable _newSaleOwner
    )
        public
        onlyAdmin
    {
        _setSaleOwner(_newSaleOwner);
    }

    function saleStop()
        public
        onlyAdmin
    {
        _saleStop();
    }

    /*
        TAX
    */

    function setBurnRatio(
        uint _newBurnRatio
    )
        public
        onlyAdmin
    {
        _setBurnRatio(_newBurnRatio);
    }

    function setLiquidRatio(
        uint _newLiquidRatio
    )
        public
        onlyAdmin
    {
        _setLiquidRatio(_newLiquidRatio);
    }

    function setCharityRatio(
        uint _newCharityRatio
    )
        public
        onlyAdmin
    {
        _setCharityRatio(_newCharityRatio);
    }

    function setCharityAddress(
        address _newCharityAddress
    )
        public
        onlyAdmin
    {
        _setCharityAddress(_newCharityAddress);
    }

    function setMinAutoLiquid(
        uint _newMinAutoLiquid
    )
        public
        onlyAdmin
    {
        _setMinAutoLiquid(_newMinAutoLiquid);
    }

    /*
        WHITELIST
    */

    function addToWhitelist(
        address _address
    )
        public
        onlyAdmin
    {
        _addToWhitelist(_address);
    }

    function removeFromWhitelist(
        address _address
    )
        public
        onlyAdmin
    {
        _removeFromWhitelist(_address);
    }

    /*
        CLAIM
    */
    function setClaimCost(
        uint _newClaimCost
    )
        public
        onlyAdmin
    {
        _setClaimCost(_newClaimCost);
    }

    function setClaimAmount(
        uint _newClaimAmount
    )
        public
        onlyAdmin
    {
        _setClaimAmount(_newClaimAmount);
    }

    function setRefClaimAmount(
        uint _newRefClaimAmount
    )
        public
        onlyAdmin
    {
        _setRefClaimAmount(_newRefClaimAmount);
    }

    function stopClaim()
        public
        onlyAdmin
    {
        _stopClaim();
    }

    function startClaim()
        public
        onlyAdmin
    {
        _startClaim();
    }
}


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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

contract AntfToken is ERC20, Settings {
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    address constant public uniswapV2FactoryAddr = address(0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73);
    address constant public uniswapV2RouterAddr = address(0x10ED43C718714eb63d5aA57B78B54704E256024E);
    address constant public WBNBAddr = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    address constant private ZERO_ADDRESS = address(0x0);

    uint private _lastAutoSwapLiquidBlock;

    constructor (string memory name, string memory symbol, address _initAdmin)
        ERC20(name, symbol)
        Settings(_initAdmin)
    {
        uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAddr);
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2FactoryAddr)
            .createPair(address(this), WBNBAddr);
        uniswapV2Pair = _uniswapV2Pair;

        _addToWhitelist(address(this));

        uint initTotal = 1e6 * 1e9 ether;
        uint initContractBalance = 275000 * 1e9 ether;
        _mint(address(this), initContractBalance);
        _mint(_initAdmin, initTotal - initContractBalance);
        // Init
        _setSaleAmount(initTotal);
        _setMinAutoLiquid(totalSupply() * 5 / 10000);

        _setSaleOwner(payable(0x5eD06B57A82dDdf9A5328e5035253EDb247d65ff));
        _setCharityAddress(payable(0xDf2dF79841a1cc0eddA5fd20C5a2fd67406d6cBf));

        // denominator = 10000
        _setBurnRatio(200);
        _setLiquidRatio(300);
        _setCharityRatio(300);

        _setClaimAmount(100 * 1e6 ether);
        _setRefClaimAmount(50 * 1e6 ether);

        // 1 bnb = 300 bil tokens
        uint oneBnb = 320 * 1e9;
        _setPrice(1 ether / oneBnb);

        _setRefPercents(30, 15, 5);
    }

    receive() external payable {}

    function _autoSwapAndLiquify(address _from) internal {
        if (_totalTax >= minAutoLiquid() && _from != uniswapV2Pair) {
            if (block.number != _lastAutoSwapLiquidBlock) {
                _lastAutoSwapLiquidBlock = block.number;
                swapAndLiquify();
            }
        }
    }

    function swapAndLiquify() public {
        (uint liquidA, uint charityA) = _splitLiquidCharityFromTax(minAutoLiquid());
        swapTokensForEth(charityA, charityAddress());
        // split the contract balance into halves
        uint256 half = liquidA / 2;
        uint256 otherHalf = liquidA - half;
        // swap tokens for ETH
        uint initCoinBalance = address(this).balance;
        swapTokensForEth(half, address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 addedCoinBalance = address(this).balance - initCoinBalance;

        // add liquidity to uniswap
        addLiquidity(otherHalf, addedCoinBalance, charityAddress());
        
        emit SwapAndLiquify(half, addedCoinBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount, address to) 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,
            to,
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount, address lpOwner) 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
            lpOwner,
            block.timestamp
        );
    }

    function _tax(
        address sender,
        address recipient,
        uint amount
    )
        internal
        returns(uint)
    {
        if (isWhitelisted(sender) || isWhitelisted(recipient)) {
            return amount;
        }
        (uint burnA, uint taxA) = getFeeAmounts(amount);
        _burn(sender, burnA);
        _transfer(sender, address(this), taxA);
        _totalTax += taxA;

        require(taxA + burnA < amount, "invalid tax amount");
        return amount - taxA - burnA;
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _autoSwapAndLiquify(_msgSender());
        uint afterTaxAmount = _tax(_msgSender(), recipient, amount);
        _transfer(_msgSender(), recipient, afterTaxAmount);

        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _autoSwapAndLiquify(sender);
        uint afterTaxAmount = _tax(sender, recipient, amount);
        _transfer(sender, recipient, afterTaxAmount);

        uint256 currentAllowance = allowance(sender, _msgSender());
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /*
        Sale
    */

    function buy(
        address _ref
    )
        public
        payable
    {
        uint tokenAmount = _buy(msg.value);
        _transfer(address(this), _msgSender(), tokenAmount);
        _addRef(_msgSender(), _ref);

        address f1 = refOf(_msgSender());
        // stop if F1 not found
        if (f1 == ZERO_ADDRESS) {
            return;
        }
        uint onePercent = tokenAmount / 100;
        _transfer(address(this), f1, onePercent * f1Percent());

        address f2 = refOf(f1);
        // stop if F2 not found
        if (f2 == ZERO_ADDRESS) {
            return;
        }
        _transfer(address(this), f2, onePercent * f2Percent());

        address f3 = refOf(f2);
        // stop if F3 not found
        if (f3 == ZERO_ADDRESS) {
            return;
        }
        _transfer(address(this), f3, onePercent * f3Percent());
    }

    /*
        CLAIM
    */

    function claim(
        address _ref
    )
        public
        payable
    {
        require(tx.origin == msg.sender, "spammer go away!");
        (uint claimAmount, uint refClaimAmount) = _claim(msg.sender);
        _transfer(address(this), _msgSender(), claimAmount);
        _transfer(address(this), _ref, refClaimAmount);
    }

    /*
        SaleOwner
    */

    function withdraw(
        uint _amount
    )
        public
        onlyAdmin
    {
        _transfer(address(this), saleOwner(), _amount);
        require(balanceOf(address(this)) >= _totalTax, "withdraw too much!");
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_initAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"address","name":"_ref","type":"address"}],"name":"AddRef","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"RemoveFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"SetBurnRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"SetCharityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"SetCharityRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"SetLiquidRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"SetMinAutoLiquid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"SetPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"SetRefPercents","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_oldSaleAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"SetSaleAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"SetSaleOwner","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WBNBAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"f1Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f2Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f3Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getFeeAmounts","outputs":[{"internalType":"uint256","name":"burnA","type":"uint256"},{"internalType":"uint256","name":"taxA","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isClaimStopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_claimer","type":"address"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAutoLiquid","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":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"refOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"setBurnRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"setCharityRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimAmount","type":"uint256"}],"name":"setClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimCost","type":"uint256"}],"name":"setClaimCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"setLiquidRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"setMinAutoLiquid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRefClaimAmount","type":"uint256"}],"name":"setRefClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"setRefPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"setSaleAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"setSaleOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2FactoryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"uniswapV2RouterAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b5060405162005aea38038062005aea833981810160405281019062000037919062000a78565b8080848481600390805190602001906200005392919062000913565b5080600490805190602001906200006c92919062000913565b50505080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050507310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600073ca143ce32fe78f1f7019d7d551a6402fc5350c7373ffffffffffffffffffffffffffffffffffffffff1663c9c653963073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6040518363ffffffff1660e01b81526004016200016492919062000b94565b602060405180830381600087803b1580156200017f57600080fd5b505af115801562000194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000a4c565b90508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200020430620003b660201b60201c565b60006d314dc6448d9338c15b0a00000000905060006d0d8efcec73bbaf9b92a2c000000090506200023c3082620004a460201b60201c565b6200025b8482846200024f919062000dd0565b620004a460201b60201c565b6200026c826200060960201b60201c565b620002a96127106005620002856200065060201b60201c565b62000291919062000d6f565b6200029d919062000d37565b6200065a60201b60201c565b620002ce735ed06b57a82dddf9a5328e5035253edb247d65ff6200069d60201b60201c565b620002f373df2df79841a1cc0edda5fd20c5a2fd67406d6cbf6200071a60201b60201c565b6200030560c86200079760201b60201c565b6200031861012c620007da60201b60201c565b6200032b61012c6200081d60201b60201c565b620003476a52b7d2dcc80cd2e40000006200086060201b60201c565b620003636a295be96e640669720000006200086a60201b60201c565b6000644a817c800090506200039381670de0b6b3a764000062000387919062000d37565b6200087460201b60201c565b620003a9601e600f6005620008b760201b60201c565b505050505050506200100f565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200040f57620004a1565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405162000498919062000b5a565b60405180910390a15b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200050e9062000bc1565b60405180910390fd5b6200052b600083836200090e60201b60201c565b80600260008282546200053f919062000cda565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000596919062000cda565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005fd919062000be3565b60405180910390a35050565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d54826040516200063e92919062000c00565b60405180910390a180600d8190555050565b6000600254905090565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd8160405162000692919062000be3565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd816040516200070f919062000b77565b60405180910390a150565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516200078c919062000b5a565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051620007cf919062000be3565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c28160405162000812919062000be3565b60405180910390a150565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405162000855919062000be3565b60405180910390a150565b8060158190555050565b8060168190555050565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051620008ac919062000be3565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051620009019392919062000c2d565b60405180910390a1505050565b505050565b828054620009219062000e93565b90600052602060002090601f01602090048101928262000945576000855562000991565b82601f106200096057805160ff191683800117855562000991565b8280016001018555821562000991579182015b828111156200099057825182559160200191906001019062000973565b5b509050620009a09190620009a4565b5090565b5b80821115620009bf576000816000905550600101620009a5565b5090565b6000620009da620009d48462000c93565b62000c6a565b905082815260208101848484011115620009f357600080fd5b62000a0084828562000e5d565b509392505050565b60008151905062000a198162000ff5565b92915050565b600082601f83011262000a3157600080fd5b815162000a43848260208601620009c3565b91505092915050565b60006020828403121562000a5f57600080fd5b600062000a6f8482850162000a08565b91505092915050565b60008060006060848603121562000a8e57600080fd5b600084015167ffffffffffffffff81111562000aa957600080fd5b62000ab78682870162000a1f565b935050602084015167ffffffffffffffff81111562000ad557600080fd5b62000ae38682870162000a1f565b925050604062000af68682870162000a08565b9150509250925092565b62000b0b8162000e1f565b82525050565b62000b1c8162000e0b565b82525050565b600062000b31601f8362000cc9565b915062000b3e8262000fcc565b602082019050919050565b62000b548162000e53565b82525050565b600060208201905062000b71600083018462000b11565b92915050565b600060208201905062000b8e600083018462000b00565b92915050565b600060408201905062000bab600083018562000b11565b62000bba602083018462000b11565b9392505050565b6000602082019050818103600083015262000bdc8162000b22565b9050919050565b600060208201905062000bfa600083018462000b49565b92915050565b600060408201905062000c17600083018562000b49565b62000c26602083018462000b49565b9392505050565b600060608201905062000c44600083018662000b49565b62000c53602083018562000b49565b62000c62604083018462000b49565b949350505050565b600062000c7662000c89565b905062000c84828262000ec9565b919050565b6000604051905090565b600067ffffffffffffffff82111562000cb15762000cb062000f8c565b5b62000cbc8262000fbb565b9050602081019050919050565b600082825260208201905092915050565b600062000ce78262000e53565b915062000cf48362000e53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d2c5762000d2b62000eff565b5b828201905092915050565b600062000d448262000e53565b915062000d518362000e53565b92508262000d645762000d6362000f2e565b5b828204905092915050565b600062000d7c8262000e53565b915062000d898362000e53565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dc55762000dc462000eff565b5b828202905092915050565b600062000ddd8262000e53565b915062000dea8362000e53565b92508282101562000e005762000dff62000eff565b5b828203905092915050565b600062000e188262000e33565b9050919050565b600062000e2c8262000e33565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e7d57808201518184015260208101905062000e60565b8381111562000e8d576000848401525b50505050565b6000600282049050600182168062000eac57607f821691505b6020821081141562000ec35762000ec262000f5d565b5b50919050565b62000ed48262000fbb565b810181811067ffffffffffffffff8211171562000ef65762000ef562000f8c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620010008162000e0b565b81146200100c57600080fd5b50565b60805160601c60a05160601c614a8562001065600039600081816113950152612ada015260008181610eea015281816130640152818161317a015281816131a10152818161323e01526132650152614a856000f3fe6080604052600436106103855760003560e01c806391b7f5ed116101d1578063bbf1746111610102578063e43252d7116100a0578063f088d5471161006f578063f088d54714610cff578063f851a44014610d1b578063ff142f9714610d46578063ff6c9bc914610d715761038c565b8063e43252d714610c6b578063e7847a4b14610c94578063e7cbbe7314610cbf578063ecbfc07714610ce85761038c565b8063cedfe42f116100dc578063cedfe42f14610bad578063d4e66bef14610bd8578063dd62ed3e14610c03578063e416d63214610c405761038c565b8063bbf1746114610b1a578063c6c28fd014610b45578063cea2085114610b825761038c565b8063a6cee3ae1161016f578063b1c7ef0c11610149578063b1c7ef0c14610a86578063b29ad50a14610aaf578063b3890faf14610ac6578063bbe15f8214610af15761038c565b8063a6cee3ae146109f5578063a9059cbb14610a1e578063afcf2fc414610a5b5761038c565b80639a18553b116101ab5780639a18553b146109395780639a2bcd2714610964578063a035b1fe1461098d578063a457c2d7146109b85761038c565b806391b7f5ed146108bc5780639370131f146108e557806395d89b411461090e5761038c565b80633af32abf116102b657806370a0823111610254578063882f414d11610223578063882f414d146108005780638aae995a1461082b5780638ab1d681146108565780638cc080251461087f5761038c565b806370a0823114610758578063729d5591146107955780638078059c146107be578063830953ab146107d55761038c565b8063510db7ca11610290578063510db7ca1461069d5780635192c82c146106db5780635294d01114610706578063704b6c021461072f5761038c565b80633af32abf1461060c5780634974c1db1461064957806349bd5a5e146106725761038c565b80631a7140631161032357806323b872dd116102fd57806323b872dd1461053e5780632e1a7d4d1461057b578063313ce567146105a457806339509351146105cf5761038c565b80631a714063146104ce5780631e83409a146104f7578063216eff87146105135761038c565b80630c9be46d1161035f5780630c9be46d146104245780630fb8184b1461044d5780631694505e1461047857806318160ddd146104a35761038c565b806306fdde03146103915780630880f58b146103bc578063095ea7b3146103e75761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d88565b6040516103b39190613fe2565b60405180910390f35b3480156103c857600080fd5b506103d1610e1a565b6040516103de9190614204565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190613a92565b610e24565b60405161041b9190613fac565b60405180910390f35b34801561043057600080fd5b5061044b6004803603810190610446919061398c565b610e42565b005b34801561045957600080fd5b50610462610ede565b60405161046f9190614204565b60405180910390f35b34801561048457600080fd5b5061048d610ee8565b60405161049a9190613fc7565b60405180910390f35b3480156104af57600080fd5b506104b8610f0c565b6040516104c59190614204565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ace565b610f16565b005b610511600480360381019061050c919061398c565b610fb2565b005b34801561051f57600080fd5b50610528611052565b6040516105359190614204565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a43565b61105c565b6040516105729190613fac565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613ace565b6110fa565b005b3480156105b057600080fd5b506105b96111ec565b6040516105c691906142d9565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190613a92565b6111f5565b6040516106039190613fac565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061398c565b6112a1565b6040516106409190613fac565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613ace565b6112f7565b005b34801561067e57600080fd5b50610687611393565b6040516106949190613eec565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613ace565b6113b7565b6040516106d2929190614279565b60405180910390f35b3480156106e757600080fd5b506106f06113ff565b6040516106fd9190614204565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906139de565b611409565b005b34801561073b57600080fd5b506107566004803603810190610751919061398c565b6114a5565b005b34801561076457600080fd5b5061077f600480360381019061077a919061398c565b611579565b60405161078c9190614204565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613af7565b6115c1565b005b3480156107ca57600080fd5b506107d3611661565b005b3480156107e157600080fd5b506107ea6116fb565b6040516107f79190614204565b60405180910390f35b34801561080c57600080fd5b50610815611705565b6040516108229190614204565b60405180910390f35b34801561083757600080fd5b5061084061170f565b60405161084d9190614204565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061398c565b611719565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061398c565b6117b5565b6040516108b39190613fac565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613ace565b61180b565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613ace565b6118a7565b005b34801561091a57600080fd5b50610923611943565b6040516109309190613fe2565b60405180910390f35b34801561094557600080fd5b5061094e6119d5565b60405161095b9190614204565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613ace565b6119df565b005b34801561099957600080fd5b506109a2611a7b565b6040516109af9190614204565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190613a92565b611a85565b6040516109ec9190613fac565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190613ace565b611b70565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613a92565b611c0c565b604051610a529190613fac565b60405180910390f35b348015610a6757600080fd5b50610a70611c51565b604051610a7d9190613eec565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa89190613ace565b611c7b565b005b348015610abb57600080fd5b50610ac4611d17565b005b348015610ad257600080fd5b50610adb611dd4565b604051610ae89190613f07565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190613ace565b611dfe565b005b348015610b2657600080fd5b50610b2f611e9a565b604051610b3c9190614204565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061398c565b611ea4565b604051610b799190613eec565b60405180910390f35b348015610b8e57600080fd5b50610b97611f0d565b604051610ba49190613eec565b60405180910390f35b348015610bb957600080fd5b50610bc2611f25565b604051610bcf9190613eec565b60405180910390f35b348015610be457600080fd5b50610bed611f3d565b604051610bfa9190613fac565b60405180910390f35b348015610c0f57600080fd5b50610c2a6004803603810190610c259190613a07565b611f54565b604051610c379190614204565b60405180910390f35b348015610c4c57600080fd5b50610c55611fdb565b604051610c629190614204565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d919061398c565b611fe5565b005b348015610ca057600080fd5b50610ca9612081565b604051610cb69190614204565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190613ace565b61208b565b005b348015610cf457600080fd5b50610cfd612127565b005b610d196004803603810190610d14919061398c565b6121c1565b005b348015610d2757600080fd5b50610d30612349565b604051610d3d9190613eec565b60405180910390f35b348015610d5257600080fd5b50610d5b612373565b604051610d689190613eec565b60405180910390f35b348015610d7d57600080fd5b50610d8661238b565b005b606060038054610d979061452e565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc39061452e565b8015610e105780601f10610de557610100808354040283529160200191610e10565b820191906000526020600020905b815481529060010190602001808311610df357829003601f168201915b5050505050905090565b6000601154905090565b6000610e38610e31612425565b848461242d565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906140c4565b60405180910390fd5b610edb816125f8565b50565b6000601454905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906140c4565b60405180910390fd5b610faf81612673565b50565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790614124565b60405180910390fd5b60008061102c336126b4565b915091506110423061103c612425565b8461284e565b61104d30848361284e565b505050565b6000600854905090565b600061106784612ac4565b6000611074858585612b4b565b905061108185858361284e565b60006110948661108f612425565b611f54565b9050838110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614104565b60405180910390fd5b6110ed866110e5612425565b86840361242d565b6001925050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906140c4565b60405180910390fd5b61119c30611196611dd4565b8361284e565b600b546111a830611579565b10156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090614044565b60405180910390fd5b50565b60006012905090565b6000611297611202612425565b848460016000611210612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112929190614349565b61242d565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906140c4565b60405180910390fd5b61139081612c21565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000612710846113ca919061439f565b9050600654816113da91906143d0565b92506008546007546113ec9190614349565b816113f791906143d0565b915050915091565b6000600654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611490906140c4565b60405180910390fd5b6114a281612c62565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906140c4565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906140c4565b60405180910390fd5b61165c838383612cdd565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906140c4565b60405180910390fd5b6116f9612d32565b565b6000601554905090565b6000600954905090565b6000600d54905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906140c4565b60405180910390fd5b6117b281612d3e565b50565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906140c4565b60405180910390fd5b6118a481612e27565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906140c4565b60405180910390fd5b61194081612e68565b50565b6060600480546119529061452e565b80601f016020809104026020016040519081016040528092919081815260200182805461197e9061452e565b80156119cb5780601f106119a0576101008083540402835291602001916119cb565b820191906000526020600020905b8154815290600101906020018083116119ae57829003601f168201915b5050505050905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a66906140c4565b60405180910390fd5b611a7881612ea9565b50565b6000600c54905090565b60008060016000611a94612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b48906141e4565b60405180910390fd5b611b65611b5c612425565b8585840361242d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906140c4565b60405180910390fd5b611c0981612eee565b50565b6000611c1e611c19612425565b612ac4565b6000611c32611c2b612425565b8585612b4b565b9050611c46611c3f612425565b858361284e565b600191505092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906140c4565b60405180910390fd5b611d1481612ef8565b50565b600080611d2a611d25611705565b612f02565b91509150611d3f81611d3a611c51565b612f79565b6000600283611d4e919061439f565b905060008184611d5e919061442a565b90506000479050611d6f8330612f79565b60008147611d7d919061442a565b9050611d918382611d8c611c51565b613238565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611dc4939291906142a2565b60405180910390a1505050505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e85906140c4565b60405180910390fd5b611e9781613322565b50565b6000601254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b73bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6000601760009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140c4565b60405180910390fd5b61207e8161332c565b50565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612112906140c4565b60405180910390fd5b61212481613416565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ae906140c4565b60405180910390fd5b6121bf613457565b565b60006121cc34613474565b90506121e0306121da612425565b8361284e565b6121f16121eb612425565b8361356c565b60006122036121fe612425565b611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612241575050612346565b6000606483612250919061439f565b905061226f308361225f6119d5565b8461226a91906143d0565b61284e565b600061227a83611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ba5750505050612346565b6122d730826122c7610e1a565b856122d291906143d0565b61284e565b60006122e282611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612323575050505050612346565b6123403082612330611e9a565b8661233b91906143d0565b61284e565b50505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73ca143ce32fe78f1f7019d7d551a6402fc5350c7381565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906140c4565b60405180910390fd5b6124236136f4565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906141a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614084565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125eb9190614204565b60405180910390a3505050565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516126689190613eec565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c2816040516126a99190614204565b60405180910390a150565b60008082601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614024565b60405180910390fd5b601760009054906101000a900460ff1615612795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278c906140e4565b60405180910390fd5b6001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601454111561283e5760145434101561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614164565b60405180910390fd5b5b6015546016549250925050915091565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292590614004565b60405180910390fd5b612939838383613711565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b6906140a4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a529190614349565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab69190614204565b60405180910390a350505050565b612acc611705565b600b5410158015612b2957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612b48576019544314612b475743601981905550612b46611d17565b5b5b50565b6000612b56846112a1565b80612b665750612b65836112a1565b5b15612b7357819050612c1a565b600080612b7f846113b7565b91509150612b8d8683613716565b612b9886308361284e565b80600b6000828254612baa9190614349565b92505081905550838282612bbe9190614349565b10612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906141c4565b60405180910390fd5b818185612c0b919061442a565b612c15919061442a565b925050505b9392505050565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd81604051612c579190614204565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd81604051612cd29190613f07565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051612d25939291906142a2565b60405180910390a1505050565b612d3c6000612ea9565b565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9457612e24565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c281604051612e1b9190613eec565b60405180910390a15b50565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051612e5d9190614204565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051612e9e9190614204565b60405180910390a150565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d5482604051612edc929190614279565b60405180910390a180600d8190555050565b8060168190555050565b8060158190555050565b6000806000600b548411612f165783612f1a565b600b545b90506000600854600754612f2e9190614349565b82612f39919061439f565b905060075481612f4991906143d0565b93508382612f57919061442a565b925081600b6000828254612f6b919061442a565b925050819055505050915091565b6000600267ffffffffffffffff811115612fbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fea5781602001602082028036833780820191505090505b5090503081600081518110613028577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c857600080fd5b505afa1580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906139b5565b8160018151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319f307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b815260040161320195949392919061421f565b600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b613263307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016132c896959493929190613f4b565b6060604051808303818588803b1580156132e157600080fd5b505af11580156132f5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061331a9190613b46565b505050505050565b8060148190555050565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338357613413565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405161340a9190613eec565b60405180910390a15b50565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405161344c9190614204565b60405180910390a150565b6000601760006101000a81548160ff021916908315150217905550565b6000806134a6600c54613498670de0b6b3a7640000866138e190919063ffffffff16565b6138f790919063ffffffff16565b90506134bd81600d5461390d90919063ffffffff16565b600d819055507f3e32821836f4caf5b64b2c8c6b460049a9797526960d31502f7575b8da39d5ae816040516134f29190614204565b60405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613562573d6000803e3d6000fd5b5080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561363357508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136f05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4b5a65160b65ceef3b5428df4099f8a83aa7b36ca454012f42958b372510d9f782826040516136e7929190613f22565b60405180910390a15b5050565b6001601760006101000a81548160ff021916908315150217905550565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d90614144565b60405180910390fd5b61379282600083613711565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90614064565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461386f919061442a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d49190614204565b60405180910390a3505050565b600081836138ef91906143d0565b905092915050565b60008183613905919061439f565b905092915050565b6000818361391b919061442a565b905092915050565b60008135905061393281614a0a565b92915050565b60008151905061394781614a0a565b92915050565b60008135905061395c81614a21565b92915050565b60008135905061397181614a38565b92915050565b60008151905061398681614a38565b92915050565b60006020828403121561399e57600080fd5b60006139ac84828501613923565b91505092915050565b6000602082840312156139c757600080fd5b60006139d584828501613938565b91505092915050565b6000602082840312156139f057600080fd5b60006139fe8482850161394d565b91505092915050565b60008060408385031215613a1a57600080fd5b6000613a2885828601613923565b9250506020613a3985828601613923565b9150509250929050565b600080600060608486031215613a5857600080fd5b6000613a6686828701613923565b9350506020613a7786828701613923565b9250506040613a8886828701613962565b9150509250925092565b60008060408385031215613aa557600080fd5b6000613ab385828601613923565b9250506020613ac485828601613962565b9150509250929050565b600060208284031215613ae057600080fd5b6000613aee84828501613962565b91505092915050565b600080600060608486031215613b0c57600080fd5b6000613b1a86828701613962565b9350506020613b2b86828701613962565b9250506040613b3c86828701613962565b9150509250925092565b600080600060608486031215613b5b57600080fd5b6000613b6986828701613977565b9350506020613b7a86828701613977565b9250506040613b8b86828701613977565b9150509250925092565b6000613ba18383613bbc565b60208301905092915050565b613bb681614470565b82525050565b613bc58161445e565b82525050565b613bd48161445e565b82525050565b6000613be582614304565b613bef8185614327565b9350613bfa836142f4565b8060005b83811015613c2b578151613c128882613b95565b9750613c1d8361431a565b925050600181019050613bfe565b5085935050505092915050565b613c4181614482565b82525050565b613c50816144c5565b82525050565b613c5f816144e9565b82525050565b6000613c708261430f565b613c7a8185614338565b9350613c8a8185602086016144fb565b613c93816145ed565b840191505092915050565b6000613cab602383614338565b9150613cb6826145fe565b604082019050919050565b6000613cce601083614338565b9150613cd98261464d565b602082019050919050565b6000613cf1601283614338565b9150613cfc82614676565b602082019050919050565b6000613d14602283614338565b9150613d1f8261469f565b604082019050919050565b6000613d37602283614338565b9150613d42826146ee565b604082019050919050565b6000613d5a602683614338565b9150613d658261473d565b604082019050919050565b6000613d7d600d83614338565b9150613d888261478c565b602082019050919050565b6000613da0602483614338565b9150613dab826147b5565b604082019050919050565b6000613dc3602883614338565b9150613dce82614804565b604082019050919050565b6000613de6601083614338565b9150613df182614853565b602082019050919050565b6000613e09602183614338565b9150613e148261487c565b604082019050919050565b6000613e2c601583614338565b9150613e37826148cb565b602082019050919050565b6000613e4f602583614338565b9150613e5a826148f4565b604082019050919050565b6000613e72602483614338565b9150613e7d82614943565b604082019050919050565b6000613e95601283614338565b9150613ea082614992565b602082019050919050565b6000613eb8602583614338565b9150613ec3826149bb565b604082019050919050565b613ed7816144ae565b82525050565b613ee6816144b8565b82525050565b6000602082019050613f016000830184613bcb565b92915050565b6000602082019050613f1c6000830184613bad565b92915050565b6000604082019050613f376000830185613bcb565b613f446020830184613bcb565b9392505050565b600060c082019050613f606000830189613bcb565b613f6d6020830188613ece565b613f7a6040830187613c56565b613f876060830186613c56565b613f946080830185613bcb565b613fa160a0830184613ece565b979650505050505050565b6000602082019050613fc16000830184613c38565b92915050565b6000602082019050613fdc6000830184613c47565b92915050565b60006020820190508181036000830152613ffc8184613c65565b905092915050565b6000602082019050818103600083015261401d81613c9e565b9050919050565b6000602082019050818103600083015261403d81613cc1565b9050919050565b6000602082019050818103600083015261405d81613ce4565b9050919050565b6000602082019050818103600083015261407d81613d07565b9050919050565b6000602082019050818103600083015261409d81613d2a565b9050919050565b600060208201905081810360008301526140bd81613d4d565b9050919050565b600060208201905081810360008301526140dd81613d70565b9050919050565b600060208201905081810360008301526140fd81613d93565b9050919050565b6000602082019050818103600083015261411d81613db6565b9050919050565b6000602082019050818103600083015261413d81613dd9565b9050919050565b6000602082019050818103600083015261415d81613dfc565b9050919050565b6000602082019050818103600083015261417d81613e1f565b9050919050565b6000602082019050818103600083015261419d81613e42565b9050919050565b600060208201905081810360008301526141bd81613e65565b9050919050565b600060208201905081810360008301526141dd81613e88565b9050919050565b600060208201905081810360008301526141fd81613eab565b9050919050565b60006020820190506142196000830184613ece565b92915050565b600060a0820190506142346000830188613ece565b6142416020830187613c56565b81810360408301526142538186613bda565b90506142626060830185613bcb565b61426f6080830184613ece565b9695505050505050565b600060408201905061428e6000830185613ece565b61429b6020830184613ece565b9392505050565b60006060820190506142b76000830186613ece565b6142c46020830185613ece565b6142d16040830184613ece565b949350505050565b60006020820190506142ee6000830184613edd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614354826144ae565b915061435f836144ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561439457614393614560565b5b828201905092915050565b60006143aa826144ae565b91506143b5836144ae565b9250826143c5576143c461458f565b5b828204905092915050565b60006143db826144ae565b91506143e6836144ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561441f5761441e614560565b5b828202905092915050565b6000614435826144ae565b9150614440836144ae565b92508282101561445357614452614560565b5b828203905092915050565b60006144698261448e565b9050919050565b600061447b8261448e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006144d0826144d7565b9050919050565b60006144e28261448e565b9050919050565b60006144f4826144ae565b9050919050565b60005b838110156145195780820151818401526020810190506144fe565b83811115614528576000848401525b50505050565b6000600282049050600182168061454657607f821691505b6020821081141561455a576145596145be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f616c726561647920636c61696d65642100000000000000000000000000000000600082015250565b7f776974686472617720746f6f206d756368210000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f6973206e6f742061646d696e2100000000000000000000000000000000000000600082015250565b7f436c61696d6d696e672070726f6772616d6d20686173206265656e2073746f7060008201527f7065642100000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f7370616d6d657220676f20617761792100000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f636c61696d20636f737420612062697420626e62210000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f696e76616c69642074617820616d6f756e740000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614a138161445e565b8114614a1e57600080fd5b50565b614a2a81614470565b8114614a3557600080fd5b50565b614a41816144ae565b8114614a4c57600080fd5b5056fea2646970667358221220f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a64736f6c63430008010033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106103855760003560e01c806391b7f5ed116101d1578063bbf1746111610102578063e43252d7116100a0578063f088d5471161006f578063f088d54714610cff578063f851a44014610d1b578063ff142f9714610d46578063ff6c9bc914610d715761038c565b8063e43252d714610c6b578063e7847a4b14610c94578063e7cbbe7314610cbf578063ecbfc07714610ce85761038c565b8063cedfe42f116100dc578063cedfe42f14610bad578063d4e66bef14610bd8578063dd62ed3e14610c03578063e416d63214610c405761038c565b8063bbf1746114610b1a578063c6c28fd014610b45578063cea2085114610b825761038c565b8063a6cee3ae1161016f578063b1c7ef0c11610149578063b1c7ef0c14610a86578063b29ad50a14610aaf578063b3890faf14610ac6578063bbe15f8214610af15761038c565b8063a6cee3ae146109f5578063a9059cbb14610a1e578063afcf2fc414610a5b5761038c565b80639a18553b116101ab5780639a18553b146109395780639a2bcd2714610964578063a035b1fe1461098d578063a457c2d7146109b85761038c565b806391b7f5ed146108bc5780639370131f146108e557806395d89b411461090e5761038c565b80633af32abf116102b657806370a0823111610254578063882f414d11610223578063882f414d146108005780638aae995a1461082b5780638ab1d681146108565780638cc080251461087f5761038c565b806370a0823114610758578063729d5591146107955780638078059c146107be578063830953ab146107d55761038c565b8063510db7ca11610290578063510db7ca1461069d5780635192c82c146106db5780635294d01114610706578063704b6c021461072f5761038c565b80633af32abf1461060c5780634974c1db1461064957806349bd5a5e146106725761038c565b80631a7140631161032357806323b872dd116102fd57806323b872dd1461053e5780632e1a7d4d1461057b578063313ce567146105a457806339509351146105cf5761038c565b80631a714063146104ce5780631e83409a146104f7578063216eff87146105135761038c565b80630c9be46d1161035f5780630c9be46d146104245780630fb8184b1461044d5780631694505e1461047857806318160ddd146104a35761038c565b806306fdde03146103915780630880f58b146103bc578063095ea7b3146103e75761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d88565b6040516103b39190613fe2565b60405180910390f35b3480156103c857600080fd5b506103d1610e1a565b6040516103de9190614204565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190613a92565b610e24565b60405161041b9190613fac565b60405180910390f35b34801561043057600080fd5b5061044b6004803603810190610446919061398c565b610e42565b005b34801561045957600080fd5b50610462610ede565b60405161046f9190614204565b60405180910390f35b34801561048457600080fd5b5061048d610ee8565b60405161049a9190613fc7565b60405180910390f35b3480156104af57600080fd5b506104b8610f0c565b6040516104c59190614204565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ace565b610f16565b005b610511600480360381019061050c919061398c565b610fb2565b005b34801561051f57600080fd5b50610528611052565b6040516105359190614204565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a43565b61105c565b6040516105729190613fac565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613ace565b6110fa565b005b3480156105b057600080fd5b506105b96111ec565b6040516105c691906142d9565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190613a92565b6111f5565b6040516106039190613fac565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061398c565b6112a1565b6040516106409190613fac565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613ace565b6112f7565b005b34801561067e57600080fd5b50610687611393565b6040516106949190613eec565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613ace565b6113b7565b6040516106d2929190614279565b60405180910390f35b3480156106e757600080fd5b506106f06113ff565b6040516106fd9190614204565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906139de565b611409565b005b34801561073b57600080fd5b506107566004803603810190610751919061398c565b6114a5565b005b34801561076457600080fd5b5061077f600480360381019061077a919061398c565b611579565b60405161078c9190614204565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613af7565b6115c1565b005b3480156107ca57600080fd5b506107d3611661565b005b3480156107e157600080fd5b506107ea6116fb565b6040516107f79190614204565b60405180910390f35b34801561080c57600080fd5b50610815611705565b6040516108229190614204565b60405180910390f35b34801561083757600080fd5b5061084061170f565b60405161084d9190614204565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061398c565b611719565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061398c565b6117b5565b6040516108b39190613fac565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613ace565b61180b565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613ace565b6118a7565b005b34801561091a57600080fd5b50610923611943565b6040516109309190613fe2565b60405180910390f35b34801561094557600080fd5b5061094e6119d5565b60405161095b9190614204565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613ace565b6119df565b005b34801561099957600080fd5b506109a2611a7b565b6040516109af9190614204565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190613a92565b611a85565b6040516109ec9190613fac565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190613ace565b611b70565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613a92565b611c0c565b604051610a529190613fac565b60405180910390f35b348015610a6757600080fd5b50610a70611c51565b604051610a7d9190613eec565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa89190613ace565b611c7b565b005b348015610abb57600080fd5b50610ac4611d17565b005b348015610ad257600080fd5b50610adb611dd4565b604051610ae89190613f07565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190613ace565b611dfe565b005b348015610b2657600080fd5b50610b2f611e9a565b604051610b3c9190614204565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061398c565b611ea4565b604051610b799190613eec565b60405180910390f35b348015610b8e57600080fd5b50610b97611f0d565b604051610ba49190613eec565b60405180910390f35b348015610bb957600080fd5b50610bc2611f25565b604051610bcf9190613eec565b60405180910390f35b348015610be457600080fd5b50610bed611f3d565b604051610bfa9190613fac565b60405180910390f35b348015610c0f57600080fd5b50610c2a6004803603810190610c259190613a07565b611f54565b604051610c379190614204565b60405180910390f35b348015610c4c57600080fd5b50610c55611fdb565b604051610c629190614204565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d919061398c565b611fe5565b005b348015610ca057600080fd5b50610ca9612081565b604051610cb69190614204565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190613ace565b61208b565b005b348015610cf457600080fd5b50610cfd612127565b005b610d196004803603810190610d14919061398c565b6121c1565b005b348015610d2757600080fd5b50610d30612349565b604051610d3d9190613eec565b60405180910390f35b348015610d5257600080fd5b50610d5b612373565b604051610d689190613eec565b60405180910390f35b348015610d7d57600080fd5b50610d8661238b565b005b606060038054610d979061452e565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc39061452e565b8015610e105780601f10610de557610100808354040283529160200191610e10565b820191906000526020600020905b815481529060010190602001808311610df357829003601f168201915b5050505050905090565b6000601154905090565b6000610e38610e31612425565b848461242d565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906140c4565b60405180910390fd5b610edb816125f8565b50565b6000601454905090565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e81565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906140c4565b60405180910390fd5b610faf81612673565b50565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790614124565b60405180910390fd5b60008061102c336126b4565b915091506110423061103c612425565b8461284e565b61104d30848361284e565b505050565b6000600854905090565b600061106784612ac4565b6000611074858585612b4b565b905061108185858361284e565b60006110948661108f612425565b611f54565b9050838110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614104565b60405180910390fd5b6110ed866110e5612425565b86840361242d565b6001925050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906140c4565b60405180910390fd5b61119c30611196611dd4565b8361284e565b600b546111a830611579565b10156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090614044565b60405180910390fd5b50565b60006012905090565b6000611297611202612425565b848460016000611210612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112929190614349565b61242d565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906140c4565b60405180910390fd5b61139081612c21565b50565b7f0000000000000000000000001fa86b51e923501142d54a68ceba8eae219d18fa81565b6000806000612710846113ca919061439f565b9050600654816113da91906143d0565b92506008546007546113ec9190614349565b816113f791906143d0565b915050915091565b6000600654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611490906140c4565b60405180910390fd5b6114a281612c62565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906140c4565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906140c4565b60405180910390fd5b61165c838383612cdd565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906140c4565b60405180910390fd5b6116f9612d32565b565b6000601554905090565b6000600954905090565b6000600d54905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906140c4565b60405180910390fd5b6117b281612d3e565b50565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906140c4565b60405180910390fd5b6118a481612e27565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906140c4565b60405180910390fd5b61194081612e68565b50565b6060600480546119529061452e565b80601f016020809104026020016040519081016040528092919081815260200182805461197e9061452e565b80156119cb5780601f106119a0576101008083540402835291602001916119cb565b820191906000526020600020905b8154815290600101906020018083116119ae57829003601f168201915b5050505050905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a66906140c4565b60405180910390fd5b611a7881612ea9565b50565b6000600c54905090565b60008060016000611a94612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b48906141e4565b60405180910390fd5b611b65611b5c612425565b8585840361242d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906140c4565b60405180910390fd5b611c0981612eee565b50565b6000611c1e611c19612425565b612ac4565b6000611c32611c2b612425565b8585612b4b565b9050611c46611c3f612425565b858361284e565b600191505092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906140c4565b60405180910390fd5b611d1481612ef8565b50565b600080611d2a611d25611705565b612f02565b91509150611d3f81611d3a611c51565b612f79565b6000600283611d4e919061439f565b905060008184611d5e919061442a565b90506000479050611d6f8330612f79565b60008147611d7d919061442a565b9050611d918382611d8c611c51565b613238565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611dc4939291906142a2565b60405180910390a1505050505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e85906140c4565b60405180910390fd5b611e9781613322565b50565b6000601254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b73bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6000601760009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140c4565b60405180910390fd5b61207e8161332c565b50565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612112906140c4565b60405180910390fd5b61212481613416565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ae906140c4565b60405180910390fd5b6121bf613457565b565b60006121cc34613474565b90506121e0306121da612425565b8361284e565b6121f16121eb612425565b8361356c565b60006122036121fe612425565b611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612241575050612346565b6000606483612250919061439f565b905061226f308361225f6119d5565b8461226a91906143d0565b61284e565b600061227a83611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ba5750505050612346565b6122d730826122c7610e1a565b856122d291906143d0565b61284e565b60006122e282611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612323575050505050612346565b6123403082612330611e9a565b8661233b91906143d0565b61284e565b50505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73ca143ce32fe78f1f7019d7d551a6402fc5350c7381565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906140c4565b60405180910390fd5b6124236136f4565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906141a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614084565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125eb9190614204565b60405180910390a3505050565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516126689190613eec565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c2816040516126a99190614204565b60405180910390a150565b60008082601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614024565b60405180910390fd5b601760009054906101000a900460ff1615612795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278c906140e4565b60405180910390fd5b6001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601454111561283e5760145434101561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614164565b60405180910390fd5b5b6015546016549250925050915091565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292590614004565b60405180910390fd5b612939838383613711565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b6906140a4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a529190614349565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab69190614204565b60405180910390a350505050565b612acc611705565b600b5410158015612b2957507f0000000000000000000000001fa86b51e923501142d54a68ceba8eae219d18fa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612b48576019544314612b475743601981905550612b46611d17565b5b5b50565b6000612b56846112a1565b80612b665750612b65836112a1565b5b15612b7357819050612c1a565b600080612b7f846113b7565b91509150612b8d8683613716565b612b9886308361284e565b80600b6000828254612baa9190614349565b92505081905550838282612bbe9190614349565b10612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906141c4565b60405180910390fd5b818185612c0b919061442a565b612c15919061442a565b925050505b9392505050565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd81604051612c579190614204565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd81604051612cd29190613f07565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051612d25939291906142a2565b60405180910390a1505050565b612d3c6000612ea9565b565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9457612e24565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c281604051612e1b9190613eec565b60405180910390a15b50565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051612e5d9190614204565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051612e9e9190614204565b60405180910390a150565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d5482604051612edc929190614279565b60405180910390a180600d8190555050565b8060168190555050565b8060158190555050565b6000806000600b548411612f165783612f1a565b600b545b90506000600854600754612f2e9190614349565b82612f39919061439f565b905060075481612f4991906143d0565b93508382612f57919061442a565b925081600b6000828254612f6b919061442a565b925050819055505050915091565b6000600267ffffffffffffffff811115612fbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fea5781602001602082028036833780820191505090505b5090503081600081518110613028577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c857600080fd5b505afa1580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906139b5565b8160018151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319f307f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e8561242d565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b815260040161320195949392919061421f565b600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b613263307f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e8561242d565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016132c896959493929190613f4b565b6060604051808303818588803b1580156132e157600080fd5b505af11580156132f5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061331a9190613b46565b505050505050565b8060148190555050565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338357613413565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405161340a9190613eec565b60405180910390a15b50565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405161344c9190614204565b60405180910390a150565b6000601760006101000a81548160ff021916908315150217905550565b6000806134a6600c54613498670de0b6b3a7640000866138e190919063ffffffff16565b6138f790919063ffffffff16565b90506134bd81600d5461390d90919063ffffffff16565b600d819055507f3e32821836f4caf5b64b2c8c6b460049a9797526960d31502f7575b8da39d5ae816040516134f29190614204565b60405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613562573d6000803e3d6000fd5b5080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561363357508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136f05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4b5a65160b65ceef3b5428df4099f8a83aa7b36ca454012f42958b372510d9f782826040516136e7929190613f22565b60405180910390a15b5050565b6001601760006101000a81548160ff021916908315150217905550565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d90614144565b60405180910390fd5b61379282600083613711565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90614064565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461386f919061442a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d49190614204565b60405180910390a3505050565b600081836138ef91906143d0565b905092915050565b60008183613905919061439f565b905092915050565b6000818361391b919061442a565b905092915050565b60008135905061393281614a0a565b92915050565b60008151905061394781614a0a565b92915050565b60008135905061395c81614a21565b92915050565b60008135905061397181614a38565b92915050565b60008151905061398681614a38565b92915050565b60006020828403121561399e57600080fd5b60006139ac84828501613923565b91505092915050565b6000602082840312156139c757600080fd5b60006139d584828501613938565b91505092915050565b6000602082840312156139f057600080fd5b60006139fe8482850161394d565b91505092915050565b60008060408385031215613a1a57600080fd5b6000613a2885828601613923565b9250506020613a3985828601613923565b9150509250929050565b600080600060608486031215613a5857600080fd5b6000613a6686828701613923565b9350506020613a7786828701613923565b9250506040613a8886828701613962565b9150509250925092565b60008060408385031215613aa557600080fd5b6000613ab385828601613923565b9250506020613ac485828601613962565b9150509250929050565b600060208284031215613ae057600080fd5b6000613aee84828501613962565b91505092915050565b600080600060608486031215613b0c57600080fd5b6000613b1a86828701613962565b9350506020613b2b86828701613962565b9250506040613b3c86828701613962565b9150509250925092565b600080600060608486031215613b5b57600080fd5b6000613b6986828701613977565b9350506020613b7a86828701613977565b9250506040613b8b86828701613977565b9150509250925092565b6000613ba18383613bbc565b60208301905092915050565b613bb681614470565b82525050565b613bc58161445e565b82525050565b613bd48161445e565b82525050565b6000613be582614304565b613bef8185614327565b9350613bfa836142f4565b8060005b83811015613c2b578151613c128882613b95565b9750613c1d8361431a565b925050600181019050613bfe565b5085935050505092915050565b613c4181614482565b82525050565b613c50816144c5565b82525050565b613c5f816144e9565b82525050565b6000613c708261430f565b613c7a8185614338565b9350613c8a8185602086016144fb565b613c93816145ed565b840191505092915050565b6000613cab602383614338565b9150613cb6826145fe565b604082019050919050565b6000613cce601083614338565b9150613cd98261464d565b602082019050919050565b6000613cf1601283614338565b9150613cfc82614676565b602082019050919050565b6000613d14602283614338565b9150613d1f8261469f565b604082019050919050565b6000613d37602283614338565b9150613d42826146ee565b604082019050919050565b6000613d5a602683614338565b9150613d658261473d565b604082019050919050565b6000613d7d600d83614338565b9150613d888261478c565b602082019050919050565b6000613da0602483614338565b9150613dab826147b5565b604082019050919050565b6000613dc3602883614338565b9150613dce82614804565b604082019050919050565b6000613de6601083614338565b9150613df182614853565b602082019050919050565b6000613e09602183614338565b9150613e148261487c565b604082019050919050565b6000613e2c601583614338565b9150613e37826148cb565b602082019050919050565b6000613e4f602583614338565b9150613e5a826148f4565b604082019050919050565b6000613e72602483614338565b9150613e7d82614943565b604082019050919050565b6000613e95601283614338565b9150613ea082614992565b602082019050919050565b6000613eb8602583614338565b9150613ec3826149bb565b604082019050919050565b613ed7816144ae565b82525050565b613ee6816144b8565b82525050565b6000602082019050613f016000830184613bcb565b92915050565b6000602082019050613f1c6000830184613bad565b92915050565b6000604082019050613f376000830185613bcb565b613f446020830184613bcb565b9392505050565b600060c082019050613f606000830189613bcb565b613f6d6020830188613ece565b613f7a6040830187613c56565b613f876060830186613c56565b613f946080830185613bcb565b613fa160a0830184613ece565b979650505050505050565b6000602082019050613fc16000830184613c38565b92915050565b6000602082019050613fdc6000830184613c47565b92915050565b60006020820190508181036000830152613ffc8184613c65565b905092915050565b6000602082019050818103600083015261401d81613c9e565b9050919050565b6000602082019050818103600083015261403d81613cc1565b9050919050565b6000602082019050818103600083015261405d81613ce4565b9050919050565b6000602082019050818103600083015261407d81613d07565b9050919050565b6000602082019050818103600083015261409d81613d2a565b9050919050565b600060208201905081810360008301526140bd81613d4d565b9050919050565b600060208201905081810360008301526140dd81613d70565b9050919050565b600060208201905081810360008301526140fd81613d93565b9050919050565b6000602082019050818103600083015261411d81613db6565b9050919050565b6000602082019050818103600083015261413d81613dd9565b9050919050565b6000602082019050818103600083015261415d81613dfc565b9050919050565b6000602082019050818103600083015261417d81613e1f565b9050919050565b6000602082019050818103600083015261419d81613e42565b9050919050565b600060208201905081810360008301526141bd81613e65565b9050919050565b600060208201905081810360008301526141dd81613e88565b9050919050565b600060208201905081810360008301526141fd81613eab565b9050919050565b60006020820190506142196000830184613ece565b92915050565b600060a0820190506142346000830188613ece565b6142416020830187613c56565b81810360408301526142538186613bda565b90506142626060830185613bcb565b61426f6080830184613ece565b9695505050505050565b600060408201905061428e6000830185613ece565b61429b6020830184613ece565b9392505050565b60006060820190506142b76000830186613ece565b6142c46020830185613ece565b6142d16040830184613ece565b949350505050565b60006020820190506142ee6000830184613edd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614354826144ae565b915061435f836144ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561439457614393614560565b5b828201905092915050565b60006143aa826144ae565b91506143b5836144ae565b9250826143c5576143c461458f565b5b828204905092915050565b60006143db826144ae565b91506143e6836144ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561441f5761441e614560565b5b828202905092915050565b6000614435826144ae565b9150614440836144ae565b92508282101561445357614452614560565b5b828203905092915050565b60006144698261448e565b9050919050565b600061447b8261448e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006144d0826144d7565b9050919050565b60006144e28261448e565b9050919050565b60006144f4826144ae565b9050919050565b60005b838110156145195780820151818401526020810190506144fe565b83811115614528576000848401525b50505050565b6000600282049050600182168061454657607f821691505b6020821081141561455a576145596145be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f616c726561647920636c61696d65642100000000000000000000000000000000600082015250565b7f776974686472617720746f6f206d756368210000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f6973206e6f742061646d696e2100000000000000000000000000000000000000600082015250565b7f436c61696d6d696e672070726f6772616d6d20686173206265656e2073746f7060008201527f7065642100000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f7370616d6d657220676f20617761792100000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f636c61696d20636f737420612062697420626e62210000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f696e76616c69642074617820616d6f756e740000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614a138161445e565b8114614a1e57600080fd5b50565b614a2a81614470565b8114614a3557600080fd5b50565b614a41816144ae565b8114614a4c57600080fd5b5056fea2646970667358221220f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a64736f6c63430008010033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): ants.finance
Arg [1] : symbol (string): ANTF
Arg [2] : _initAdmin (address): 0xB8AB670d6F527DD70785320292142d85fA7E0da7

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [4] : 616e74732e66696e616e63650000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 414e544600000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

35052:7362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27615:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8370:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32873:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29553:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35536:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7323:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32547:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41790:344;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16881:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40253:566;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42179:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7165:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9888:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31150:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33049:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35594:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17277:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16631:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32101:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30196:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7494:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31530:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32265:90;;;;;;;;;;;;;:::i;:::-;;29676:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17146:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26281:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33405:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29255:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31807:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32394:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6422:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27492:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31944:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26166:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10606:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33910:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39946:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17010:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33749:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37438:831;;;;;;;;;;;;;:::i;:::-;;26032:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33596:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27738:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27332:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35337:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35441:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29420:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8072:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29803:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33255:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16754:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32708:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34183:94;;;;;;;;;;;;;:::i;:::-;;40859:890;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30334:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35232:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34083:92;;;;;;;;;;;;;:::i;:::-;;6203:100;6257:13;6290:5;6283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;:::o;27615:115::-;27683:4;27712:10;;27705:17;;27615:115;:::o;8370:169::-;8453:4;8470:39;8479:12;:10;:12::i;:::-;8493:7;8502:6;8470:8;:39::i;:::-;8527:4;8520:11;;8370:169;;;;:::o;32873:168::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32995:38:::1;33014:18;32995;:38::i;:::-;32873:168:::0;:::o;29553:115::-;29621:4;29650:10;;29643:17;;29553:115;:::o;35536:51::-;;;:::o;7323:108::-;7384:7;7411:12;;7404:19;;7323:108;:::o;32547:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32660:32:::1;32676:15;32660;:32::i;:::-;32547:153:::0;:::o;41790:344::-;41905:10;41892:23;;:9;:23;;;41884:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;41948:16;41966:19;41989:18;41996:10;41989:6;:18::i;:::-;41947:60;;;;42018:51;42036:4;42043:12;:10;:12::i;:::-;42057:11;42018:9;:51::i;:::-;42080:46;42098:4;42105;42111:14;42080:9;:46::i;:::-;41790:344;;;:::o;16881:121::-;16952:4;16981:13;;16974:20;;16881:121;:::o;40253:566::-;40359:4;40376:27;40396:6;40376:19;:27::i;:::-;40414:19;40436:31;40441:6;40449:9;40460:6;40436:4;:31::i;:::-;40414:53;;40478:44;40488:6;40496:9;40507:14;40478:9;:44::i;:::-;40535:24;40562:31;40572:6;40580:12;:10;:12::i;:::-;40562:9;:31::i;:::-;40535:58;;40632:6;40612:16;:26;;40604:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;40719:57;40728:6;40736:12;:10;:12::i;:::-;40769:6;40750:16;:25;40719:8;:57::i;:::-;40807:4;40800:11;;;;40253:566;;;;;:::o;42179:232::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;42278::::1;42296:4;42303:11;:9;:11::i;:::-;42316:7;42278:9;:46::i;:::-;42371:9;;42343:24;42361:4;42343:9;:24::i;:::-;:37;;42335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42179:232:::0;:::o;7165:93::-;7223:5;7248:2;7241:9;;7165:93;:::o;9888:215::-;9976:4;9993:80;10002:12;:10;:12::i;:::-;10016:7;10062:10;10025:11;:25;10037:12;:10;:12::i;:::-;10025:25;;;;;;;;;;;;;;;:34;10051:7;10025:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9993:8;:80::i;:::-;10091:4;10084:11;;9888:215;;;;:::o;31150:165::-;31254:4;31283:14;:24;31298:8;31283:24;;;;;;;;;;;;;;;;;;;;;;;;;31276:31;;31150:165;;;:::o;33049:161::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33166:36:::1;33184:17;33166;:36::i;:::-;33049:161:::0;:::o;35594:38::-;;;:::o;17277:268::-;17377:10;17389:9;17416:8;15532:5;17427:7;:21;;;;:::i;:::-;17416:32;;17473:10;;17467:3;:16;;;;:::i;:::-;17459:24;;17523:13;;17508:12;;:28;;;;:::i;:::-;17501:3;:36;;;;:::i;:::-;17494:43;;17277:268;;;;:::o;16631:115::-;16699:4;16728:10;;16721:17;;16631:115;:::o;32101:156::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32221:28:::1;32235:13;32221;:28::i;:::-;32101:156:::0;:::o;30196:130::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;30309:9:::1;30300:6;;:18;;;;;;;;;;;;;;;;;;30196:130:::0;:::o;7494:127::-;7568:7;7595:9;:18;7605:7;7595:18;;;;;;;;;;;;;;;;7588:25;;7494:127;;;:::o;31530:237::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31699:60:::1;31715:13;31730;31745;31699:15;:60::i;:::-;31530:237:::0;;;:::o;32265:90::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32336:11:::1;:9;:11::i;:::-;32265:90::o:0;29676:119::-;29746:4;29775:12;;29768:19;;29676:119;:::o;17146:123::-;17218:4;17247:14;;17240:21;;17146:123;:::o;26281:117::-;26350:4;26379:11;;26372:18;;26281:117;:::o;33405:152::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33519:30:::1;33540:8;33519:20;:30::i;:::-;33405:152:::0;:::o;29255:157::-;29355:4;29384:10;:20;29395:8;29384:20;;;;;;;;;;;;;;;;;;;;;;;;;29377:27;;29255:157;;;:::o;31807:129::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31908:20:::1;31918:9;31908;:20::i;:::-;31807:129:::0;:::o;32394:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32503:28:::1;32517:13;32503;:28::i;:::-;32394:145:::0;:::o;6422:104::-;6478:13;6511:7;6504:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:104;:::o;27492:115::-;27560:4;27589:10;;27582:17;;27492:115;:::o;31944:149::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32055:30:::1;32070:14;32055;:30::i;:::-;31944:149:::0;:::o;26166:107::-;26230:4;26259:6;;26252:13;;26166:107;:::o;10606:413::-;10699:4;10716:24;10743:11;:25;10755:12;:10;:12::i;:::-;10743:25;;;;;;;;;;;;;;;:34;10769:7;10743:34;;;;;;;;;;;;;;;;10716:61;;10816:15;10796:16;:35;;10788:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10909:67;10918:12;:10;:12::i;:::-;10932:7;10960:15;10941:16;:34;10909:8;:67::i;:::-;11007:4;11000:11;;;10606:413;;;;:::o;33910:165::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34029:38:::1;34048:18;34029;:38::i;:::-;33910:165:::0;:::o;39946:299::-;40032:4;40049:33;40069:12;:10;:12::i;:::-;40049:19;:33::i;:::-;40093:19;40115:37;40120:12;:10;:12::i;:::-;40134:9;40145:6;40115:4;:37::i;:::-;40093:59;;40163:50;40173:12;:10;:12::i;:::-;40187:9;40198:14;40163:9;:50::i;:::-;40233:4;40226:11;;;39946:299;;;;:::o;17010:128::-;17083:7;17115:15;;;;;;;;;;;17108:22;;17010:128;:::o;33749:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33862:32:::1;33878:15;33862;:32::i;:::-;33749:153:::0;:::o;37438:831::-;37483:12;37497:13;37514:43;37541:15;:13;:15::i;:::-;37514:26;:43::i;:::-;37482:75;;;;37568:44;37585:8;37595:16;:14;:16::i;:::-;37568;:44::i;:::-;37674:12;37699:1;37689:7;:11;;;;:::i;:::-;37674:26;;37711:17;37741:4;37731:7;:14;;;;:::i;:::-;37711:34;;37788:20;37811:21;37788:44;;37843:37;37860:4;37874;37843:16;:37::i;:::-;38011:24;38062:15;38038:21;:39;;;;:::i;:::-;38011:66;;38127:59;38140:9;38151:16;38169;:14;:16::i;:::-;38127:12;:59::i;:::-;38212:49;38227:4;38233:16;38251:9;38212:49;;;;;;;;:::i;:::-;;;;;;;;37438:831;;;;;;:::o;26032:126::-;26100:15;26140:10;;;;;;;;;;;26133:17;;26032:126;:::o;33596:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33705:28:::1;33719:13;33705;:28::i;:::-;33596:145:::0;:::o;27738:115::-;27806:4;27835:10;;27828:17;;27738:115;:::o;27332:152::-;27428:7;27460:6;:16;27467:8;27460:16;;;;;;;;;;;;;;;;;;;;;;;;;27453:23;;27332:152;;;:::o;35337:97::-;35391:42;35337:97;:::o;35441:86::-;35484:42;35441:86;:::o;29420:125::-;29493:4;29522:15;;;;;;;;;;;29515:22;;29420:125;:::o;8072:151::-;8161:7;8188:11;:18;8200:5;8188:18;;;;;;;;;;;;;;;:27;8207:7;8188:27;;;;;;;;;;;;;;;;8181:34;;8072:151;;;;:::o;29803:125::-;29876:4;29905:15;;29898:22;;29803:125;:::o;33255:142::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33364:25:::1;33380:8;33364:15;:25::i;:::-;33255:142:::0;:::o;16754:119::-;16824:4;16853:12;;16846:19;;16754:119;:::o;32708:157::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32823:34:::1;32840:16;32823;:34::i;:::-;32708:157:::0;:::o;34183:94::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34256:13:::1;:11;:13::i;:::-;34183:94::o:0;40859:890::-;40951:16;40970:15;40975:9;40970:4;:15::i;:::-;40951:34;;40996:51;41014:4;41021:12;:10;:12::i;:::-;41035:11;40996:9;:51::i;:::-;41058:27;41066:12;:10;:12::i;:::-;41080:4;41058:7;:27::i;:::-;41098:10;41111:19;41117:12;:10;:12::i;:::-;41111:5;:19::i;:::-;41098:32;;35689:3;41178:18;;:2;:18;;;41174:57;;;41213:7;;;;41174:57;41241:15;41273:3;41259:11;:17;;;;:::i;:::-;41241:35;;41287:54;41305:4;41312:2;41329:11;:9;:11::i;:::-;41316:10;:24;;;;:::i;:::-;41287:9;:54::i;:::-;41354:10;41367:9;41373:2;41367:5;:9::i;:::-;41354:22;;35689:3;41424:18;;:2;:18;;;41420:57;;;41459:7;;;;;;41420:57;41487:54;41505:4;41512:2;41529:11;:9;:11::i;:::-;41516:10;:24;;;;:::i;:::-;41487:9;:54::i;:::-;41554:10;41567:9;41573:2;41567:5;:9::i;:::-;41554:22;;35689:3;41624:18;;:2;:18;;;41620:57;;;41659:7;;;;;;;41620:57;41687:54;41705:4;41712:2;41729:11;:9;:11::i;:::-;41716:10;:24;;;;:::i;:::-;41687:9;:54::i;:::-;40859:890;;;;;;;:::o;30334:110::-;30398:7;30430:6;;;;;;;;;;;30423:13;;30334:110;:::o;35232:98::-;35287:42;35232:98;:::o;34083:92::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34155:12:::1;:10;:12::i;:::-;34083:92::o:0;3882:98::-;3935:7;3962:10;3955:17;;3882:98;:::o;14075:346::-;14194:1;14177:19;;:5;:19;;;;14169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14275:1;14256:21;;:7;:21;;;;14248:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14359:6;14329:11;:18;14341:5;14329:18;;;;;;;;;;;;;;;:27;14348:7;14329:27;;;;;;;;;;;;;;;:36;;;;14397:7;14381:32;;14390:5;14381:32;;;14406:6;14381:32;;;;;;:::i;:::-;;;;;;;;14075:346;;;:::o;16218:203::-;16342:18;16324:15;;:36;;;;;;;;;;;;;;;;;;16376:37;16394:18;16376:37;;;;;;:::i;:::-;;;;;;;;16218:203;:::o;15832:182::-;15944:15;15929:12;:30;;;;15975:31;15990:15;15975:31;;;;;;:::i;:::-;;;;;;;;15832:182;:::o;28826:421::-;28945:4;28951;28918:8;27946:10;:20;27957:8;27946:20;;;;;;;;;;;;;;;;;;;;;;;;;27945:21;27937:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28982:15:::1;;;;;;;;;;;28981:16;28973:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29072:4;29049:10;:20;29060:8;29049:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;29104:1;29091:10;;:14;29087:104;;;29143:10;;29130:9;:23;;29122:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29087:104;29209:12;;29223:15;;29201:38;;;;28826:421:::0;;;;:::o;11509:640::-;11633:1;11615:20;;:6;:20;;;;11607:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11717:1;11696:23;;:9;:23;;;;11688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11772:47;11793:6;11801:9;11812:6;11772:20;:47::i;:::-;11832:21;11856:9;:17;11866:6;11856:17;;;;;;;;;;;;;;;;11832:41;;11909:6;11892:13;:23;;11884:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12030:6;12014:13;:22;11994:9;:17;12004:6;11994:17;;;;;;;;;;;;;;;:42;;;;12082:6;12058:9;:20;12068:9;12058:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12123:9;12106:35;;12115:6;12106:35;;;12134:6;12106:35;;;;;;:::i;:::-;;;;;;;;11509:640;;;;:::o;37118:312::-;37199:15;:13;:15::i;:::-;37186:9;;:28;;:54;;;;;37227:13;37218:22;;:5;:22;;;;37186:54;37182:241;;;37277:24;;37261:12;:40;37257:155;;37349:12;37322:24;:39;;;;37380:16;:14;:16::i;:::-;37257:155;37182:241;37118:312;:::o;39413:525::-;39544:4;39570:21;39584:6;39570:13;:21::i;:::-;:49;;;;39595:24;39609:9;39595:13;:24::i;:::-;39570:49;39566:95;;;39643:6;39636:13;;;;39566:95;39672:10;39684:9;39697:21;39711:6;39697:13;:21::i;:::-;39671:47;;;;39729:20;39735:6;39743:5;39729;:20::i;:::-;39760:38;39770:6;39786:4;39793;39760:9;:38::i;:::-;39822:4;39809:9;;:17;;;;;;;:::i;:::-;;;;;;;;39862:6;39854:5;39847:4;:12;;;;:::i;:::-;:21;39839:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;39925:5;39918:4;39909:6;:13;;;;:::i;:::-;:21;;;;:::i;:::-;39902:28;;;;39413:525;;;;;;:::o;16429:194::-;16547:17;16530:14;:34;;;;16580:35;16597:17;16580:35;;;;;;:::i;:::-;;;;;;;;16429:194;:::o;25440:181::-;25557:13;25544:10;;:26;;;;;;;;;;;;;;;;;;25586:27;25599:13;25586:27;;;;;;:::i;:::-;;;;;;;;25440:181;:::o;26715:336::-;26881:13;26868:10;:26;;;;26918:13;26905:10;:26;;;;26955:13;26942:10;:26;;;;26984:59;26999:13;27014;27029;26984:59;;;;;;;;:::i;:::-;;;;;;;;26715:336;;;:::o;25629:80::-;25684:17;25699:1;25684:14;:17::i;:::-;25629:80::o;30885:257::-;30988:14;:24;31003:8;30988:24;;;;;;;;;;;;;;;;;;;;;;;;;30983:64;;31029:7;;30983:64;31084:5;31057:14;:24;31072:8;31057:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;31105:29;31125:8;31105:29;;;;;;:::i;:::-;;;;;;;;30885:257;;:::o;25089:146::-;25183:9;25174:6;:18;;;;25208:19;25217:9;25208:19;;;;;;:::i;:::-;;;;;;;;25089:146;:::o;15654:170::-;15760:13;15747:10;:26;;;;15789:27;15802:13;15789:27;;;;;;:::i;:::-;;;;;;;;15654:170;:::o;25243:189::-;25343:42;25357:11;;25370:14;25343:42;;;;;;;:::i;:::-;;;;;;;;25410:14;25396:11;:28;;;;25243:189;:::o;28671:147::-;28792:18;28774:15;:36;;;;28671:147;:::o;28528:135::-;28640:15;28625:12;:30;;;;28528:135;:::o;17553:408::-;17657:12;17671:13;17702:12;17730:9;;17717:10;:22;:47;;17754:10;17717:47;;;17742:9;;17717:47;17702:62;;17775:8;17812:13;;17797:12;;:28;;;;:::i;:::-;17786:7;:40;;;;:::i;:::-;17775:51;;17853:12;;17847:3;:18;;;;:::i;:::-;17837:28;;17897:7;17887;:17;;;;:::i;:::-;17876:28;;17946:7;17933:9;;:20;;;;;;;:::i;:::-;;;;;;;;17553:408;;;;;:::o;38277:590::-;38415:21;38453:1;38439:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38415:40;;38484:4;38466;38471:1;38466:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;38510:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38500:4;38505:1;38500:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;38545:62;38562:4;38577:15;38595:11;38545:8;:62::i;:::-;38646:15;:66;;;38727:11;38753:1;38797:4;38816:2;38833:15;38646:213;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38277:590;;;:::o;38875:530::-;39040:62;39057:4;39072:15;39090:11;39040:8;:62::i;:::-;39145:15;:31;;;39184:9;39217:4;39237:11;39263:1;39306;39349:7;39371:15;39145:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38875:530;;;:::o;28393:127::-;28499:13;28486:10;:26;;;;28393:127;:::o;30632:245::-;30729:14;:24;30744:8;30729:24;;;;;;;;;;;;;;;;;;;;;;;;;30725:63;;;30770:7;;30725:63;30825:4;30798:14;:24;30813:8;30798:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;30845:24;30860:8;30845:24;;;;;;:::i;:::-;;;;;;;;30632:245;;:::o;16022:188::-;16137:16;16121:13;:32;;;;16169:33;16185:16;16169:33;;;;;;:::i;:::-;;;;;;;;16022:188;:::o;28297:88::-;28372:5;28354:15;;:23;;;;;;;;;;;;;;;;;;28297:88::o;25717:307::-;25794:4;25816:16;25835:30;25858:6;;25835:18;25845:7;25835:5;:9;;:18;;;;:::i;:::-;:22;;:30;;;;:::i;:::-;25816:49;;25890:28;25906:11;25890;;:15;;:28;;;;:::i;:::-;25876:11;:42;;;;25934:16;25938:11;25934:16;;;;;;:::i;:::-;;;;;;;;25961:10;;;;;;;;;;;:19;;:26;25981:5;25961:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26005:11;25998:18;;;25717:307;;;:::o;27059:265::-;27199:3;27171:32;;:6;:16;27178:8;27171:16;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:52;;;;;27219:4;27207:16;;:8;:16;;;;27171:52;27167:150;;;27259:4;27240:6;:16;27247:8;27240:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;27283:22;27290:8;27300:4;27283:22;;;;;;;:::i;:::-;;;;;;;;27167:150;27059:265;;:::o;28203:86::-;28277:4;28259:15;;:22;;;;;;;;;;;;;;;;;;28203:86::o;15024:92::-;;;;:::o;13107:530::-;13210:1;13191:21;;:7;:21;;;;13183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13263:49;13284:7;13301:1;13305:6;13263:20;:49::i;:::-;13325:22;13350:9;:18;13360:7;13350:18;;;;;;;;;;;;;;;;13325:43;;13405:6;13387:14;:24;;13379:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13524:6;13507:14;:23;13486:9;:18;13496:7;13486:18;;;;;;;;;;;;;;;:44;;;;13568:6;13552:12;;:22;;;;;;;:::i;:::-;;;;;;;;13618:1;13592:37;;13601:7;13592:37;;;13622:6;13592:37;;;;;;:::i;:::-;;;;;;;;13107:530;;;:::o;21407:98::-;21465:7;21496:1;21492;:5;;;;:::i;:::-;21485:12;;21407:98;;;;:::o;21806:::-;21864:7;21895:1;21891;:5;;;;:::i;:::-;21884:12;;21806:98;;;;:::o;21050:::-;21108:7;21139:1;21135;:5;;;;:::i;:::-;21128:12;;21050:98;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:139::-;;546:6;533:20;524:29;;562:33;589:5;562:33;:::i;:::-;514:87;;;;:::o;607:143::-;;695:6;689:13;680:22;;711:33;738:5;711:33;:::i;:::-;670:80;;;;:::o;756:262::-;;864:2;852:9;843:7;839:23;835:32;832:2;;;880:1;877;870:12;832:2;923:1;948:53;993:7;984:6;973:9;969:22;948:53;:::i;:::-;938:63;;894:117;822:196;;;;:::o;1024:284::-;;1143:2;1131:9;1122:7;1118:23;1114:32;1111:2;;;1159:1;1156;1149:12;1111:2;1202:1;1227:64;1283:7;1274:6;1263:9;1259:22;1227:64;:::i;:::-;1217:74;;1173:128;1101:207;;;;:::o;1314:278::-;;1430:2;1418:9;1409:7;1405:23;1401:32;1398:2;;;1446:1;1443;1436:12;1398:2;1489:1;1514:61;1567:7;1558:6;1547:9;1543:22;1514:61;:::i;:::-;1504:71;;1460:125;1388:204;;;;:::o;1598:407::-;;;1723:2;1711:9;1702:7;1698:23;1694:32;1691:2;;;1739:1;1736;1729:12;1691:2;1782:1;1807:53;1852:7;1843:6;1832:9;1828:22;1807:53;:::i;:::-;1797:63;;1753:117;1909:2;1935:53;1980:7;1971:6;1960:9;1956:22;1935:53;:::i;:::-;1925:63;;1880:118;1681:324;;;;;:::o;2011:552::-;;;;2153:2;2141:9;2132:7;2128:23;2124:32;2121:2;;;2169:1;2166;2159:12;2121:2;2212:1;2237:53;2282:7;2273:6;2262:9;2258:22;2237:53;:::i;:::-;2227:63;;2183:117;2339:2;2365:53;2410:7;2401:6;2390:9;2386:22;2365:53;:::i;:::-;2355:63;;2310:118;2467:2;2493:53;2538:7;2529:6;2518:9;2514:22;2493:53;:::i;:::-;2483:63;;2438:118;2111:452;;;;;:::o;2569:407::-;;;2694:2;2682:9;2673:7;2669:23;2665:32;2662:2;;;2710:1;2707;2700:12;2662:2;2753:1;2778:53;2823:7;2814:6;2803:9;2799:22;2778:53;:::i;:::-;2768:63;;2724:117;2880:2;2906:53;2951:7;2942:6;2931:9;2927:22;2906:53;:::i;:::-;2896:63;;2851:118;2652:324;;;;;:::o;2982:262::-;;3090:2;3078:9;3069:7;3065:23;3061:32;3058:2;;;3106:1;3103;3096:12;3058:2;3149:1;3174:53;3219:7;3210:6;3199:9;3195:22;3174:53;:::i;:::-;3164:63;;3120:117;3048:196;;;;:::o;3250:552::-;;;;3392:2;3380:9;3371:7;3367:23;3363:32;3360:2;;;3408:1;3405;3398:12;3360:2;3451:1;3476:53;3521:7;3512:6;3501:9;3497:22;3476:53;:::i;:::-;3466:63;;3422:117;3578:2;3604:53;3649:7;3640:6;3629:9;3625:22;3604:53;:::i;:::-;3594:63;;3549:118;3706:2;3732:53;3777:7;3768:6;3757:9;3753:22;3732:53;:::i;:::-;3722:63;;3677:118;3350:452;;;;;:::o;3808:596::-;;;;3961:2;3949:9;3940:7;3936:23;3932:32;3929:2;;;3977:1;3974;3967:12;3929:2;4020:1;4045:64;4101:7;4092:6;4081:9;4077:22;4045:64;:::i;:::-;4035:74;;3991:128;4158:2;4184:64;4240:7;4231:6;4220:9;4216:22;4184:64;:::i;:::-;4174:74;;4129:129;4297:2;4323:64;4379:7;4370:6;4359:9;4355:22;4323:64;:::i;:::-;4313:74;;4268:129;3919:485;;;;;:::o;4410:179::-;;4500:46;4542:3;4534:6;4500:46;:::i;:::-;4578:4;4573:3;4569:14;4555:28;;4490:99;;;;:::o;4595:142::-;4698:32;4724:5;4698:32;:::i;:::-;4693:3;4686:45;4676:61;;:::o;4743:108::-;4820:24;4838:5;4820:24;:::i;:::-;4815:3;4808:37;4798:53;;:::o;4857:118::-;4944:24;4962:5;4944:24;:::i;:::-;4939:3;4932:37;4922:53;;:::o;5011:732::-;;5159:54;5207:5;5159:54;:::i;:::-;5229:86;5308:6;5303:3;5229:86;:::i;:::-;5222:93;;5339:56;5389:5;5339:56;:::i;:::-;5418:7;5449:1;5434:284;5459:6;5456:1;5453:13;5434:284;;;5535:6;5529:13;5562:63;5621:3;5606:13;5562:63;:::i;:::-;5555:70;;5648:60;5701:6;5648:60;:::i;:::-;5638:70;;5494:224;5481:1;5478;5474:9;5469:14;;5434:284;;;5438:14;5734:3;5727:10;;5135:608;;;;;;;:::o;5749:109::-;5830:21;5845:5;5830:21;:::i;:::-;5825:3;5818:34;5808:50;;:::o;5864:185::-;5978:64;6036:5;5978:64;:::i;:::-;5973:3;5966:77;5956:93;;:::o;6055:147::-;6150:45;6189:5;6150:45;:::i;:::-;6145:3;6138:58;6128:74;;:::o;6208:364::-;;6324:39;6357:5;6324:39;:::i;:::-;6379:71;6443:6;6438:3;6379:71;:::i;:::-;6372:78;;6459:52;6504:6;6499:3;6492:4;6485:5;6481:16;6459:52;:::i;:::-;6536:29;6558:6;6536:29;:::i;:::-;6531:3;6527:39;6520:46;;6300:272;;;;;:::o;6578:366::-;;6741:67;6805:2;6800:3;6741:67;:::i;:::-;6734:74;;6817:93;6906:3;6817:93;:::i;:::-;6935:2;6930:3;6926:12;6919:19;;6724:220;;;:::o;6950:366::-;;7113:67;7177:2;7172:3;7113:67;:::i;:::-;7106:74;;7189:93;7278:3;7189:93;:::i;:::-;7307:2;7302:3;7298:12;7291:19;;7096:220;;;:::o;7322:366::-;;7485:67;7549:2;7544:3;7485:67;:::i;:::-;7478:74;;7561:93;7650:3;7561:93;:::i;:::-;7679:2;7674:3;7670:12;7663:19;;7468:220;;;:::o;7694:366::-;;7857:67;7921:2;7916:3;7857:67;:::i;:::-;7850:74;;7933:93;8022:3;7933:93;:::i;:::-;8051:2;8046:3;8042:12;8035:19;;7840:220;;;:::o;8066:366::-;;8229:67;8293:2;8288:3;8229:67;:::i;:::-;8222:74;;8305:93;8394:3;8305:93;:::i;:::-;8423:2;8418:3;8414:12;8407:19;;8212:220;;;:::o;8438:366::-;;8601:67;8665:2;8660:3;8601:67;:::i;:::-;8594:74;;8677:93;8766:3;8677:93;:::i;:::-;8795:2;8790:3;8786:12;8779:19;;8584:220;;;:::o;8810:366::-;;8973:67;9037:2;9032:3;8973:67;:::i;:::-;8966:74;;9049:93;9138:3;9049:93;:::i;:::-;9167:2;9162:3;9158:12;9151:19;;8956:220;;;:::o;9182:366::-;;9345:67;9409:2;9404:3;9345:67;:::i;:::-;9338:74;;9421:93;9510:3;9421:93;:::i;:::-;9539:2;9534:3;9530:12;9523:19;;9328:220;;;:::o;9554:366::-;;9717:67;9781:2;9776:3;9717:67;:::i;:::-;9710:74;;9793:93;9882:3;9793:93;:::i;:::-;9911:2;9906:3;9902:12;9895:19;;9700:220;;;:::o;9926:366::-;;10089:67;10153:2;10148:3;10089:67;:::i;:::-;10082:74;;10165:93;10254:3;10165:93;:::i;:::-;10283:2;10278:3;10274:12;10267:19;;10072:220;;;:::o;10298:366::-;;10461:67;10525:2;10520:3;10461:67;:::i;:::-;10454:74;;10537:93;10626:3;10537:93;:::i;:::-;10655:2;10650:3;10646:12;10639:19;;10444:220;;;:::o;10670:366::-;;10833:67;10897:2;10892:3;10833:67;:::i;:::-;10826:74;;10909:93;10998:3;10909:93;:::i;:::-;11027:2;11022:3;11018:12;11011:19;;10816:220;;;:::o;11042:366::-;;11205:67;11269:2;11264:3;11205:67;:::i;:::-;11198:74;;11281:93;11370:3;11281:93;:::i;:::-;11399:2;11394:3;11390:12;11383:19;;11188:220;;;:::o;11414:366::-;;11577:67;11641:2;11636:3;11577:67;:::i;:::-;11570:74;;11653:93;11742:3;11653:93;:::i;:::-;11771:2;11766:3;11762:12;11755:19;;11560:220;;;:::o;11786:366::-;;11949:67;12013:2;12008:3;11949:67;:::i;:::-;11942:74;;12025:93;12114:3;12025:93;:::i;:::-;12143:2;12138:3;12134:12;12127:19;;11932:220;;;:::o;12158:366::-;;12321:67;12385:2;12380:3;12321:67;:::i;:::-;12314:74;;12397:93;12486:3;12397:93;:::i;:::-;12515:2;12510:3;12506:12;12499:19;;12304:220;;;:::o;12530:118::-;12617:24;12635:5;12617:24;:::i;:::-;12612:3;12605:37;12595:53;;:::o;12654:112::-;12737:22;12753:5;12737:22;:::i;:::-;12732:3;12725:35;12715:51;;:::o;12772:222::-;;12903:2;12892:9;12888:18;12880:26;;12916:71;12984:1;12973:9;12969:17;12960:6;12916:71;:::i;:::-;12870:124;;;;:::o;13000:254::-;;13147:2;13136:9;13132:18;13124:26;;13160:87;13244:1;13233:9;13229:17;13220:6;13160:87;:::i;:::-;13114:140;;;;:::o;13260:332::-;;13419:2;13408:9;13404:18;13396:26;;13432:71;13500:1;13489:9;13485:17;13476:6;13432:71;:::i;:::-;13513:72;13581:2;13570:9;13566:18;13557:6;13513:72;:::i;:::-;13386:206;;;;;:::o;13598:807::-;;13885:3;13874:9;13870:19;13862:27;;13899:71;13967:1;13956:9;13952:17;13943:6;13899:71;:::i;:::-;13980:72;14048:2;14037:9;14033:18;14024:6;13980:72;:::i;:::-;14062:80;14138:2;14127:9;14123:18;14114:6;14062:80;:::i;:::-;14152;14228:2;14217:9;14213:18;14204:6;14152:80;:::i;:::-;14242:73;14310:3;14299:9;14295:19;14286:6;14242:73;:::i;:::-;14325;14393:3;14382:9;14378:19;14369:6;14325:73;:::i;:::-;13852:553;;;;;;;;;:::o;14411:210::-;;14536:2;14525:9;14521:18;14513:26;;14549:65;14611:1;14600:9;14596:17;14587:6;14549:65;:::i;:::-;14503:118;;;;:::o;14627:276::-;;14785:2;14774:9;14770:18;14762:26;;14798:98;14893:1;14882:9;14878:17;14869:6;14798:98;:::i;:::-;14752:151;;;;:::o;14909:313::-;;15060:2;15049:9;15045:18;15037:26;;15109:9;15103:4;15099:20;15095:1;15084:9;15080:17;15073:47;15137:78;15210:4;15201:6;15137:78;:::i;:::-;15129:86;;15027:195;;;;:::o;15228:419::-;;15432:2;15421:9;15417:18;15409:26;;15481:9;15475:4;15471:20;15467:1;15456:9;15452:17;15445:47;15509:131;15635:4;15509:131;:::i;:::-;15501:139;;15399:248;;;:::o;15653:419::-;;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:131;16060:4;15934:131;:::i;:::-;15926:139;;15824:248;;;:::o;16078:419::-;;16282:2;16271:9;16267:18;16259:26;;16331:9;16325:4;16321:20;16317:1;16306:9;16302:17;16295:47;16359:131;16485:4;16359:131;:::i;:::-;16351:139;;16249:248;;;:::o;16503:419::-;;16707:2;16696:9;16692:18;16684:26;;16756:9;16750:4;16746:20;16742:1;16731:9;16727:17;16720:47;16784:131;16910:4;16784:131;:::i;:::-;16776:139;;16674:248;;;:::o;16928:419::-;;17132:2;17121:9;17117:18;17109:26;;17181:9;17175:4;17171:20;17167:1;17156:9;17152:17;17145:47;17209:131;17335:4;17209:131;:::i;:::-;17201:139;;17099:248;;;:::o;17353:419::-;;17557:2;17546:9;17542:18;17534:26;;17606:9;17600:4;17596:20;17592:1;17581:9;17577:17;17570:47;17634:131;17760:4;17634:131;:::i;:::-;17626:139;;17524:248;;;:::o;17778:419::-;;17982:2;17971:9;17967:18;17959:26;;18031:9;18025:4;18021:20;18017:1;18006:9;18002:17;17995:47;18059:131;18185:4;18059:131;:::i;:::-;18051:139;;17949:248;;;:::o;18203:419::-;;18407:2;18396:9;18392:18;18384:26;;18456:9;18450:4;18446:20;18442:1;18431:9;18427:17;18420:47;18484:131;18610:4;18484:131;:::i;:::-;18476:139;;18374:248;;;:::o;18628:419::-;;18832:2;18821:9;18817:18;18809:26;;18881:9;18875:4;18871:20;18867:1;18856:9;18852:17;18845:47;18909:131;19035:4;18909:131;:::i;:::-;18901:139;;18799:248;;;:::o;19053:419::-;;19257:2;19246:9;19242:18;19234:26;;19306:9;19300:4;19296:20;19292:1;19281:9;19277:17;19270:47;19334:131;19460:4;19334:131;:::i;:::-;19326:139;;19224:248;;;:::o;19478:419::-;;19682:2;19671:9;19667:18;19659:26;;19731:9;19725:4;19721:20;19717:1;19706:9;19702:17;19695:47;19759:131;19885:4;19759:131;:::i;:::-;19751:139;;19649:248;;;:::o;19903:419::-;;20107:2;20096:9;20092:18;20084:26;;20156:9;20150:4;20146:20;20142:1;20131:9;20127:17;20120:47;20184:131;20310:4;20184:131;:::i;:::-;20176:139;;20074:248;;;:::o;20328:419::-;;20532:2;20521:9;20517:18;20509:26;;20581:9;20575:4;20571:20;20567:1;20556:9;20552:17;20545:47;20609:131;20735:4;20609:131;:::i;:::-;20601:139;;20499:248;;;:::o;20753:419::-;;20957:2;20946:9;20942:18;20934:26;;21006:9;21000:4;20996:20;20992:1;20981:9;20977:17;20970:47;21034:131;21160:4;21034:131;:::i;:::-;21026:139;;20924:248;;;:::o;21178:419::-;;21382:2;21371:9;21367:18;21359:26;;21431:9;21425:4;21421:20;21417:1;21406:9;21402:17;21395:47;21459:131;21585:4;21459:131;:::i;:::-;21451:139;;21349:248;;;:::o;21603:419::-;;21807:2;21796:9;21792:18;21784:26;;21856:9;21850:4;21846:20;21842:1;21831:9;21827:17;21820:47;21884:131;22010:4;21884:131;:::i;:::-;21876:139;;21774:248;;;:::o;22028:222::-;;22159:2;22148:9;22144:18;22136:26;;22172:71;22240:1;22229:9;22225:17;22216:6;22172:71;:::i;:::-;22126:124;;;;:::o;22256:831::-;;22557:3;22546:9;22542:19;22534:27;;22571:71;22639:1;22628:9;22624:17;22615:6;22571:71;:::i;:::-;22652:80;22728:2;22717:9;22713:18;22704:6;22652:80;:::i;:::-;22779:9;22773:4;22769:20;22764:2;22753:9;22749:18;22742:48;22807:108;22910:4;22901:6;22807:108;:::i;:::-;22799:116;;22925:72;22993:2;22982:9;22978:18;22969:6;22925:72;:::i;:::-;23007:73;23075:3;23064:9;23060:19;23051:6;23007:73;:::i;:::-;22524:563;;;;;;;;:::o;23093:332::-;;23252:2;23241:9;23237:18;23229:26;;23265:71;23333:1;23322:9;23318:17;23309:6;23265:71;:::i;:::-;23346:72;23414:2;23403:9;23399:18;23390:6;23346:72;:::i;:::-;23219:206;;;;;:::o;23431:442::-;;23618:2;23607:9;23603:18;23595:26;;23631:71;23699:1;23688:9;23684:17;23675:6;23631:71;:::i;:::-;23712:72;23780:2;23769:9;23765:18;23756:6;23712:72;:::i;:::-;23794;23862:2;23851:9;23847:18;23838:6;23794:72;:::i;:::-;23585:288;;;;;;:::o;23879:214::-;;24006:2;23995:9;23991:18;23983:26;;24019:67;24083:1;24072:9;24068:17;24059:6;24019:67;:::i;:::-;23973:120;;;;:::o;24099:132::-;;24189:3;24181:11;;24219:4;24214:3;24210:14;24202:22;;24171:60;;;:::o;24237:114::-;;24338:5;24332:12;24322:22;;24311:40;;;:::o;24357:99::-;;24443:5;24437:12;24427:22;;24416:40;;;:::o;24462:113::-;;24564:4;24559:3;24555:14;24547:22;;24537:38;;;:::o;24581:184::-;;24714:6;24709:3;24702:19;24754:4;24749:3;24745:14;24730:29;;24692:73;;;;:::o;24771:169::-;;24889:6;24884:3;24877:19;24929:4;24924:3;24920:14;24905:29;;24867:73;;;;:::o;24946:305::-;;25005:20;25023:1;25005:20;:::i;:::-;25000:25;;25039:20;25057:1;25039:20;:::i;:::-;25034:25;;25193:1;25125:66;25121:74;25118:1;25115:81;25112:2;;;25199:18;;:::i;:::-;25112:2;25243:1;25240;25236:9;25229:16;;24990:261;;;;:::o;25257:185::-;;25314:20;25332:1;25314:20;:::i;:::-;25309:25;;25348:20;25366:1;25348:20;:::i;:::-;25343:25;;25387:1;25377:2;;25392:18;;:::i;:::-;25377:2;25434:1;25431;25427:9;25422:14;;25299:143;;;;:::o;25448:348::-;;25511:20;25529:1;25511:20;:::i;:::-;25506:25;;25545:20;25563:1;25545:20;:::i;:::-;25540:25;;25733:1;25665:66;25661:74;25658:1;25655:81;25650:1;25643:9;25636:17;25632:105;25629:2;;;25740:18;;:::i;:::-;25629:2;25788:1;25785;25781:9;25770:20;;25496:300;;;;:::o;25802:191::-;;25862:20;25880:1;25862:20;:::i;:::-;25857:25;;25896:20;25914:1;25896:20;:::i;:::-;25891:25;;25935:1;25932;25929:8;25926:2;;;25940:18;;:::i;:::-;25926:2;25985:1;25982;25978:9;25970:17;;25847:146;;;;:::o;25999:96::-;;26065:24;26083:5;26065:24;:::i;:::-;26054:35;;26044:51;;;:::o;26101:104::-;;26175:24;26193:5;26175:24;:::i;:::-;26164:35;;26154:51;;;:::o;26211:90::-;;26288:5;26281:13;26274:21;26263:32;;26253:48;;;:::o;26307:126::-;;26384:42;26377:5;26373:54;26362:65;;26352:81;;;:::o;26439:77::-;;26505:5;26494:16;;26484:32;;;:::o;26522:86::-;;26597:4;26590:5;26586:16;26575:27;;26565:43;;;:::o;26614:180::-;;26724:64;26782:5;26724:64;:::i;:::-;26711:77;;26701:93;;;:::o;26800:140::-;;26910:24;26928:5;26910:24;:::i;:::-;26897:37;;26887:53;;;:::o;26946:121::-;;27037:24;27055:5;27037:24;:::i;:::-;27024:37;;27014:53;;;:::o;27073:307::-;27141:1;27151:113;27165:6;27162:1;27159:13;27151:113;;;27250:1;27245:3;27241:11;27235:18;27231:1;27226:3;27222:11;27215:39;27187:2;27184:1;27180:10;27175:15;;27151:113;;;27282:6;27279:1;27276:13;27273:2;;;27362:1;27353:6;27348:3;27344:16;27337:27;27273:2;27122:258;;;;:::o;27386:320::-;;27467:1;27461:4;27457:12;27447:22;;27514:1;27508:4;27504:12;27535:18;27525:2;;27591:4;27583:6;27579:17;27569:27;;27525:2;27653;27645:6;27642:14;27622:18;27619:38;27616:2;;;27672:18;;:::i;:::-;27616:2;27437:269;;;;:::o;27712:180::-;27760:77;27757:1;27750:88;27857:4;27854:1;27847:15;27881:4;27878:1;27871:15;27898:180;27946:77;27943:1;27936:88;28043:4;28040:1;28033:15;28067:4;28064:1;28057:15;28084:180;28132:77;28129:1;28122:88;28229:4;28226:1;28219:15;28253:4;28250:1;28243:15;28270:102;;28362:2;28358:7;28353:2;28346:5;28342:14;28338:28;28328:38;;28318:54;;;:::o;28378:222::-;28518:34;28514:1;28506:6;28502:14;28495:58;28587:5;28582:2;28574:6;28570:15;28563:30;28484:116;:::o;28606:166::-;28746:18;28742:1;28734:6;28730:14;28723:42;28712:60;:::o;28778:168::-;28918:20;28914:1;28906:6;28902:14;28895:44;28884:62;:::o;28952:221::-;29092:34;29088:1;29080:6;29076:14;29069:58;29161:4;29156:2;29148:6;29144:15;29137:29;29058:115;:::o;29179:221::-;29319:34;29315:1;29307:6;29303:14;29296:58;29388:4;29383:2;29375:6;29371:15;29364:29;29285:115;:::o;29406:225::-;29546:34;29542:1;29534:6;29530:14;29523:58;29615:8;29610:2;29602:6;29598:15;29591:33;29512:119;:::o;29637:163::-;29777:15;29773:1;29765:6;29761:14;29754:39;29743:57;:::o;29806:223::-;29946:34;29942:1;29934:6;29930:14;29923:58;30015:6;30010:2;30002:6;29998:15;29991:31;29912:117;:::o;30035:227::-;30175:34;30171:1;30163:6;30159:14;30152:58;30244:10;30239:2;30231:6;30227:15;30220:35;30141:121;:::o;30268:166::-;30408:18;30404:1;30396:6;30392:14;30385:42;30374:60;:::o;30440:220::-;30580:34;30576:1;30568:6;30564:14;30557:58;30649:3;30644:2;30636:6;30632:15;30625:28;30546:114;:::o;30666:171::-;30806:23;30802:1;30794:6;30790:14;30783:47;30772:65;:::o;30843:224::-;30983:34;30979:1;30971:6;30967:14;30960:58;31052:7;31047:2;31039:6;31035:15;31028:32;30949:118;:::o;31073:223::-;31213:34;31209:1;31201:6;31197:14;31190:58;31282:6;31277:2;31269:6;31265:15;31258:31;31179:117;:::o;31302:168::-;31442:20;31438:1;31430:6;31426:14;31419:44;31408:62;:::o;31476:224::-;31616:34;31612:1;31604:6;31600:14;31593:58;31685:7;31680:2;31672:6;31668:15;31661:32;31582:118;:::o;31706:122::-;31779:24;31797:5;31779:24;:::i;:::-;31772:5;31769:35;31759:2;;31818:1;31815;31808:12;31759:2;31749:79;:::o;31834:138::-;31915:32;31941:5;31915:32;:::i;:::-;31908:5;31905:43;31895:2;;31962:1;31959;31952:12;31895:2;31885:87;:::o;31978:122::-;32051:24;32069:5;32051:24;:::i;:::-;32044:5;32041:35;32031:2;;32090:1;32087;32080:12;32031:2;32021:79;:::o

Swarm Source

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