ETH Price: $2,826.39 (+7.75%)
 

Overview

Max Total Supply

1,000,000,000 McJeet

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.69489093399273738 McJeet

Value
$0.00
0x7900e6F03e479280095B814716743B027a9D565C
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
McJeet

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-25
*/

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @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) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * 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 `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


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

pragma solidity ^0.8.0;


/**
 * @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);
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


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

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead 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}.
     *
     * 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 default value returned by this function, unless
     * it's 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

    /**
     * @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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

        _afterTokenTransfer(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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @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 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

// File: mcjeet.sol


pragma solidity 0.8.19;


 
interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
 
 
library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
 
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}
 
// website : https://mcjeet.cafe/
// twitter : https://twitter.com/mcjeetecr
// telegram : https://t.me/mcjeetecr
 
contract McJeet is ERC20, Ownable{
    using Address for address payable;
 
    mapping (address user => bool status) public exemptFee;
    mapping (address user => UserInfo) public userInfo;
 
    struct UserInfo {
        uint256 lastSellTimestamp;
        uint256 amountBought;
    }
 
    IRouter public router;
    address public pair;
    address public marketingWallet;
    address public buybackWallet;
 
    bool private swapping;
    bool public swapEnabled = true;
    bool public tradingOpen;
 
    bool public cooldownActive = true;
    uint256 public cooldownPercentage = 50;
    uint256 public cooldownPeriod = 12 hours;
 
    uint256 public swapThreshold = 1_000_000 * 10**18;
    uint256 public maxWallet = 300_000_000 * 10**18;
 
    struct Taxes {
        uint256 lp;
        uint256 marketing;
        uint256 buyback;
    }
 
    Taxes public buyTaxes = Taxes(1,1,1);
    Taxes public sellTaxes = Taxes(1,1,1);
 
    uint256 totalSellTax = 3;
    uint256 totalBuyTax = 3;
 
    modifier mutexLock() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
 
    constructor(address _router) ERC20("ImJeetinIt", "McJeet") {
        _mint(msg.sender, 1_000_000_000 * 10 ** 18);
 
        router = IRouter(_router);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
 
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[buybackWallet] = true;
        exemptFee[marketingWallet] = true;
 
        _approve(address(this), address(router), type(uint256).max);
    }
 
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (swapping || exemptFee[sender] || exemptFee[recipient]){
            super._transfer(sender, recipient, amount);
            return;
        }
 
        require(tradingOpen, "Trading closed!");
        if(recipient != pair) {
            require(balanceOf(recipient) + amount <= maxWallet, "Max wallet reached");
        }
 
        uint256 tax;
        if(pair == recipient) tax = totalSellTax;
        else if(pair == sender) tax = totalBuyTax;
        uint256 taxAmt = amount * tax / 100;
 
        if(recipient != pair) userInfo[recipient].amountBought += (amount - taxAmt);
        if(sender != pair && cooldownActive){
            uint256 lastSellTimestamp = userInfo[sender].lastSellTimestamp;
            uint256 maxAllowedSell = userInfo[sender].amountBought * cooldownPercentage / 100;
            require(block.timestamp - lastSellTimestamp > cooldownPeriod, "You already sold in this round");
            require(amount <= maxAllowedSell, "You are selling too much");
            userInfo[sender].lastSellTimestamp = block.timestamp;
        }
 
        if (tax > 0 && swapEnabled && sender != pair && balanceOf(address(this)) >= swapThreshold) swapFees(swapThreshold);
 
        super._transfer(sender, recipient, amount - taxAmt);
        if(taxAmt > 0){
            super._transfer(sender, address(this), taxAmt);
        }
    }
 
    function swapFees(uint256 tokens) private mutexLock {
        uint256 denominator = totalSellTax * 2;
        uint256 tokensToAddLiquidityWith = tokens * sellTaxes.lp / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;
 
        uint256 initialBalance = address(this).balance;
 
        swapTokensForEth(toSwap);
 
        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - sellTaxes.lp);
        uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.lp;
 
        if(ethToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }
 
        uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
 
        uint256 buybackAmt = unitBalance * 2 * sellTaxes.buyback;
        if(buybackAmt > 0){
            payable(buybackWallet).sendValue(buybackAmt);
        }
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            marketingWallet,
            block.timestamp
        );
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
 
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }
 
 
    function updateSwapEnabled(bool status) external onlyOwner {
        swapEnabled = status;
    }
 
    function updateSwapTreshhold(uint256 amount) external onlyOwner {
        swapThreshold = amount * 10**18;
    }
 
    function updateCooldownSettings(bool status, uint256 periodInHours, uint256 percentage) external onlyOwner{
        require(percentage > 0, "Percentage can't be 0");
        cooldownActive = status;
        cooldownPercentage = percentage;
        cooldownPeriod = periodInHours * 1 hours;
    }
 
    function updateBuyTax(uint256 lp, uint256 marketing, uint256 buyback) external onlyOwner{
        buyTaxes = Taxes(lp, marketing, buyback);
        totalBuyTax = lp + marketing + buyback;
    }
 
    function updateSellTax(uint256 lp, uint256 marketing, uint256 buyback) external onlyOwner{
        sellTaxes = Taxes(lp, marketing, buyback);
        totalSellTax = lp + marketing + buyback;
    }
 
    function updateTradingStatus(bool status) external onlyOwner{
        tradingOpen = status;
    }
 
    function updateMaxWallet(uint256 newMaxWallet) external onlyOwner{
        maxWallet = newMaxWallet * 10**18;
    }
 
    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
        _approve(address(this), address(newRouter), type(uint256).max);
    }
 
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
        exemptFee[newWallet] = true;
    }
 
    function updateBuybackWallet(address newWallet) external onlyOwner{
        buybackWallet = newWallet;
        exemptFee[newWallet] = true;
    }
 
    function removeLimits(address[] memory accounts, bool state) external onlyOwner{
        uint256 size = accounts.length;
        for(uint256 i = 0; i < size;){
            exemptFee[accounts[i]] = state;
            unchecked {
                ++i;
            }
        }
    }
 
    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(msg.sender).sendValue(weiAmount);
    }
 
    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner{
        IERC20(tokenAdd).transfer(msg.sender, amount);
    }
 
    // fallbacks
    receive() external payable {}
 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"buyTaxes","outputs":[{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownPeriod","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":[{"internalType":"address","name":"user","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"periodInHours","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"updateCooldownSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"updateTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"lastSellTimestamp","type":"uint256"},{"internalType":"uint256","name":"amountBought","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600b60156101000a81548160ff0219169083151502179055506001600b60176101000a81548160ff0219169083151502179055506032600c5561a8c0600d5569d3c21bcecceda1000000600e556af8277896582678ac000000600f55604051806060016040528060018152602001600181526020016001815250601060008201518160000155602082015181600101556040820151816002015550506040518060600160405280600181526020016001815260200160018152506013600082015181600001556020820151816001015560408201518160020155505060036016556003601755348015620000f957600080fd5b5060405162004bd738038062004bd783398181016040528101906200011f919062000a99565b6040518060400160405280600a81526020017f496d4a656574696e4974000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4d634a656574000000000000000000000000000000000000000000000000000081525081600390816200019c919062000d45565b508060049081620001ae919062000d45565b505050620001d1620001c56200061960201b60201c565b6200062160201b60201c565b620001ef336b033b2e3c9fd0803ce8000000620006e760201b60201c565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c4919062000a99565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000374919062000a99565b6040518363ffffffff1660e01b81526004016200039392919062000e3d565b6020604051808303816000875af1158015620003b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d9919062000a99565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200061230600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200085460201b60201c565b50620010b5565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007509062000ecb565b60405180910390fd5b6200076d6000838362000a2560201b60201c565b806002600082825462000781919062000f1c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000834919062000f68565b60405180910390a3620008506000838362000a2a60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bd9062000ffb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092f9062001093565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a18919062000f68565b60405180910390a3505050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a618262000a34565b9050919050565b62000a738162000a54565b811462000a7f57600080fd5b50565b60008151905062000a938162000a68565b92915050565b60006020828403121562000ab25762000ab162000a2f565b5b600062000ac28482850162000a82565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b4d57607f821691505b60208210810362000b635762000b6262000b05565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bcd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b8e565b62000bd9868362000b8e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c2662000c2062000c1a8462000bf1565b62000bfb565b62000bf1565b9050919050565b6000819050919050565b62000c428362000c05565b62000c5a62000c518262000c2d565b84845462000b9b565b825550505050565b600090565b62000c7162000c62565b62000c7e81848462000c37565b505050565b5b8181101562000ca65762000c9a60008262000c67565b60018101905062000c84565b5050565b601f82111562000cf55762000cbf8162000b69565b62000cca8462000b7e565b8101602085101562000cda578190505b62000cf262000ce98562000b7e565b83018262000c83565b50505b505050565b600082821c905092915050565b600062000d1a6000198460080262000cfa565b1980831691505092915050565b600062000d35838362000d07565b9150826002028217905092915050565b62000d508262000acb565b67ffffffffffffffff81111562000d6c5762000d6b62000ad6565b5b62000d78825462000b34565b62000d8582828562000caa565b600060209050601f83116001811462000dbd576000841562000da8578287015190505b62000db4858262000d27565b86555062000e24565b601f19841662000dcd8662000b69565b60005b8281101562000df75784890151825560018201915060208501945060208101905062000dd0565b8683101562000e17578489015162000e13601f89168262000d07565b8355505b6001600288020188555050505b505050505050565b62000e378162000a54565b82525050565b600060408201905062000e54600083018562000e2c565b62000e63602083018462000e2c565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000eb3601f8362000e6a565b915062000ec08262000e7b565b602082019050919050565b6000602082019050818103600083015262000ee68162000ea4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f298262000bf1565b915062000f368362000bf1565b925082820190508082111562000f515762000f5062000eed565b5b92915050565b62000f628162000bf1565b82525050565b600060208201905062000f7f600083018462000f57565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000fe360248362000e6a565b915062000ff08262000f85565b604082019050919050565b60006020820190508181036000830152620010168162000fd4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200107b60228362000e6a565b915062001088826200101d565b604082019050919050565b60006020820190508181036000830152620010ae816200106c565b9050919050565b613b1280620010c56000396000f3fe6080604052600436106102555760003560e01c8063870000e111610139578063aacebbe3116100b6578063deab8aea1161007a578063deab8aea146108e4578063f2fde38b1461090f578063f66895a314610938578063f887ea4014610965578063f8b45b0514610990578063ffb54a99146109bb5761025c565b8063aacebbe3146107ef578063ab7f223414610818578063bb09a67514610841578063c5d32bb21461086a578063dd62ed3e146108a75761025c565b80639e252f00116100fd5780639e252f00146106f8578063a0a485ca14610721578063a457c2d71461074a578063a8aa1b3114610787578063a9059cbb146107b25761025c565b8063870000e1146106275780638cd4426d146106505780638da5cb5b14610679578063924de9b7146106a457806395d89b41146106cd5761025c565b806323b872dd116101d25780636ddd1713116101965780636ddd17131461052557806370a0823114610550578063715018a61461058d57806375f0a874146105a457806385672c58146105cf578063864701a5146105fa5761025c565b806323b872dd1461042c578063313ce56714610469578063395093511461049457806340b28c2f146104d15780635aacf969146104fa5761025c565b806306fdde031161021957806306fdde0314610332578063095ea7b31461035d57806318160ddd1461039a5780631959a002146103c55780631c499ab0146104035761025c565b80630445b6671461026157806304646a491461028c57806304dacd50146102b7578063055ea830146102e057806305f93650146103095761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109e6565b60405161028391906126d7565b60405180910390f35b34801561029857600080fd5b506102a16109ec565b6040516102ae91906126d7565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612764565b6109f2565b005b3480156102ec57600080fd5b50610307600480360381019061030291906127bd565b610a96565b005b34801561031557600080fd5b50610330600480360381019061032b91906127ea565b610abb565b005b34801561033e57600080fd5b50610347610b23565b60405161035491906128cd565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f91906128ef565b610bb5565b604051610391919061294a565b60405180910390f35b3480156103a657600080fd5b506103af610bd8565b6040516103bc91906126d7565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612764565b610be2565b6040516103fa929190612965565b60405180910390f35b34801561040f57600080fd5b5061042a600480360381019061042591906127bd565b610c06565b005b34801561043857600080fd5b50610453600480360381019061044e919061298e565b610c2b565b604051610460919061294a565b60405180910390f35b34801561047557600080fd5b5061047e610c5a565b60405161048b91906129fd565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906128ef565b610c63565b6040516104c8919061294a565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190612a18565b610c9a565b005b34801561050657600080fd5b5061050f610d53565b60405161051c919061294a565b60405180910390f35b34801561053157600080fd5b5061053a610d66565b604051610547919061294a565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190612764565b610d79565b60405161058491906126d7565b60405180910390f35b34801561059957600080fd5b506105a2610dc1565b005b3480156105b057600080fd5b506105b9610dd5565b6040516105c69190612a67565b60405180910390f35b3480156105db57600080fd5b506105e4610dfb565b6040516105f191906126d7565b60405180910390f35b34801561060657600080fd5b5061060f610e01565b60405161061e93929190612a82565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190612ae5565b610e19565b005b34801561065c57600080fd5b50610677600480360381019061067291906128ef565b610e3e565b005b34801561068557600080fd5b5061068e610ec9565b60405161069b9190612a67565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612ae5565b610ef3565b005b3480156106d957600080fd5b506106e2610f18565b6040516106ef91906128cd565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a91906127bd565b610faa565b005b34801561072d57600080fd5b50610748600480360381019061074391906127ea565b610fde565b005b34801561075657600080fd5b50610771600480360381019061076c91906128ef565b611046565b60405161077e919061294a565b60405180910390f35b34801561079357600080fd5b5061079c6110bd565b6040516107a99190612a67565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906128ef565b6110e3565b6040516107e6919061294a565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190612764565b611106565b005b34801561082457600080fd5b5061083f600480360381019061083a9190612b12565b6111aa565b005b34801561084d57600080fd5b5061086860048036038101906108639190612cad565b61122f565b005b34801561087657600080fd5b50610891600480360381019061088c9190612764565b6112ca565b60405161089e919061294a565b60405180910390f35b3480156108b357600080fd5b506108ce60048036038101906108c99190612a18565b6112ea565b6040516108db91906126d7565b60405180910390f35b3480156108f057600080fd5b506108f9611371565b6040516109069190612a67565b60405180910390f35b34801561091b57600080fd5b5061093660048036038101906109319190612764565b611397565b005b34801561094457600080fd5b5061094d61141a565b60405161095c93929190612a82565b60405180910390f35b34801561097157600080fd5b5061097a611432565b6040516109879190612d68565b60405180910390f35b34801561099c57600080fd5b506109a5611458565b6040516109b291906126d7565b60405180910390f35b3480156109c757600080fd5b506109d061145e565b6040516109dd919061294a565b60405180910390f35b600e5481565b600d5481565b6109fa611471565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a9e611471565b670de0b6b3a764000081610ab29190612db2565b600e8190555050565b610ac3611471565b6040518060600160405280848152602001838152602001828152506013600082015181600001556020820151816001015560408201518160020155905050808284610b0e9190612df4565b610b189190612df4565b601681905550505050565b606060038054610b3290612e57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5e90612e57565b8015610bab5780601f10610b8057610100808354040283529160200191610bab565b820191906000526020600020905b815481529060010190602001808311610b8e57829003601f168201915b5050505050905090565b600080610bc06114ef565b9050610bcd8185856114f7565b600191505092915050565b6000600254905090565b60076020528060005260406000206000915090508060000154908060010154905082565b610c0e611471565b670de0b6b3a764000081610c229190612db2565b600f8190555050565b600080610c366114ef565b9050610c438582856116c0565b610c4e85858561174c565b60019150509392505050565b60006012905090565b600080610c6e6114ef565b9050610c8f818585610c8085896112ea565b610c8a9190612df4565b6114f7565b600191505092915050565b610ca2611471565b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d4f30837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6114f7565b5050565b600b60179054906101000a900460ff1681565b600b60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc9611471565b610dd36000611dae565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60108060000154908060010154908060020154905083565b610e21611471565b80600b60166101000a81548160ff02191690831515021790555050565b610e46611471565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e81929190612e88565b6020604051808303816000875af1158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190612ec6565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610efb611471565b80600b60156101000a81548160ff02191690831515021790555050565b606060048054610f2790612e57565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5390612e57565b8015610fa05780601f10610f7557610100808354040283529160200191610fa0565b820191906000526020600020905b815481529060010190602001808311610f8357829003601f168201915b5050505050905090565b610fb2611471565b610fdb813373ffffffffffffffffffffffffffffffffffffffff16611e7490919063ffffffff16565b50565b610fe6611471565b60405180606001604052808481526020018381526020018281525060106000820151816000015560208201518160010155604082015181600201559050508082846110319190612df4565b61103b9190612df4565b601781905550505050565b6000806110516114ef565b9050600061105f82866112ea565b9050838110156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90612f65565b60405180910390fd5b6110b182868684036114f7565b60019250505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806110ee6114ef565b90506110fb81858561174c565b600191505092915050565b61110e611471565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6111b2611471565b600081116111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90612fd1565b60405180910390fd5b82600b60176101000a81548160ff02191690831515021790555080600c81905550610e10826112249190612db2565b600d81905550505050565b611237611471565b60008251905060005b818110156112c45782600660008684815181106112605761125f612ff1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050611240565b50505050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61139f611471565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613092565b60405180910390fd5b61141781611dae565b50565b60138060000154908060010154908060020154905083565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600b60169054906101000a900460ff1681565b6114796114ef565b73ffffffffffffffffffffffffffffffffffffffff16611497610ec9565b73ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e4906130fe565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90613190565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90613222565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116b391906126d7565b60405180910390a3505050565b60006116cc84846112ea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117465781811015611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f9061328e565b60405180910390fd5b61174584848484036114f7565b5b50505050565b6000811161178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690613320565b60405180910390fd5b600b60149054906101000a900460ff16806117f35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118475750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561185c57611857838383611f68565b611da9565b600b60169054906101000a900460ff166118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a29061338c565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461195957600f548161190d84610d79565b6119179190612df4565b1115611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f906133f8565b60405180910390fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036119ba576016549050611a16565b8373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a155760175490505b5b600060648284611a269190612db2565b611a309190613447565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611aec578083611a939190613478565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611ae49190612df4565b925050819055505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611b565750600b60179054906101000a900460ff165b15611cde576000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006064600c54600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611bf69190612db2565b611c009190613447565b9050600d548242611c119190613478565b11611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c48906134f8565b60405180910390fd5b80851115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613564565b60405180910390fd5b42600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050505b600082118015611cfa5750600b60159054906101000a900460ff165b8015611d545750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6a5750600e54611d6730610d79565b10155b15611d7b57611d7a600e546121de565b5b611d9185858386611d8c9190613478565b611f68565b6000811115611da657611da5853083611f68565b5b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80471015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906135d0565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611edd90613621565b60006040518083038185875af1925050503d8060008114611f1a576040519150601f19603f3d011682016040523d82523d6000602084013e611f1f565b606091505b5050905080611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906136a8565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce9061373a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906137cc565b60405180910390fd5b6120518383836123cb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce9061385e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121c591906126d7565b60405180910390a36121d88484846123d0565b50505050565b600b60149054906101000a900460ff166123c8576001600b60146101000a81548160ff0219169083151502179055506000600260165461221e9190612db2565b9050600081601360000154846122349190612db2565b61223e9190613447565b90506000818461224e9190613478565b9050600047905061225e826123d5565b6000814761226c9190613478565b90506000601360000154866122819190613478565b8261228c9190613447565b90506000601360000154826122a19190612db2565b905060008111156122b7576122b686826125eb565b5b60006013600101546002846122cc9190612db2565b6122d69190612db2565b9050600081111561232d5761232c81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e7490919063ffffffff16565b5b60006013600201546002856123429190612db2565b61234c9190612db2565b905060008111156123a3576123a281600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e7490919063ffffffff16565b5b5050505050505050506000600b60146101000a81548160ff0219169083151502179055505b50565b505050565b505050565b6000600267ffffffffffffffff8111156123f2576123f1612b6a565b5b6040519080825280602002602001820160405280156124205781602001602082028036833780820191505090505b509050308160008151811061243857612437612ff1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125039190613893565b8160018151811061251757612516612ff1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125b59594939291906139b9565b600060405180830381600087803b1580156125cf57600080fd5b505af11580156125e3573d6000803e3d6000fd5b505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161267496959493929190613a13565b60606040518083038185885af1158015612692573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126b79190613a89565b5050505050565b6000819050919050565b6126d1816126be565b82525050565b60006020820190506126ec60008301846126c8565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061273182612706565b9050919050565b61274181612726565b811461274c57600080fd5b50565b60008135905061275e81612738565b92915050565b60006020828403121561277a576127796126fc565b5b60006127888482850161274f565b91505092915050565b61279a816126be565b81146127a557600080fd5b50565b6000813590506127b781612791565b92915050565b6000602082840312156127d3576127d26126fc565b5b60006127e1848285016127a8565b91505092915050565b600080600060608486031215612803576128026126fc565b5b6000612811868287016127a8565b9350506020612822868287016127a8565b9250506040612833868287016127a8565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b8381101561287757808201518184015260208101905061285c565b60008484015250505050565b6000601f19601f8301169050919050565b600061289f8261283d565b6128a98185612848565b93506128b9818560208601612859565b6128c281612883565b840191505092915050565b600060208201905081810360008301526128e78184612894565b905092915050565b60008060408385031215612906576129056126fc565b5b60006129148582860161274f565b9250506020612925858286016127a8565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b600060408201905061297a60008301856126c8565b61298760208301846126c8565b9392505050565b6000806000606084860312156129a7576129a66126fc565b5b60006129b58682870161274f565b93505060206129c68682870161274f565b92505060406129d7868287016127a8565b9150509250925092565b600060ff82169050919050565b6129f7816129e1565b82525050565b6000602082019050612a1260008301846129ee565b92915050565b60008060408385031215612a2f57612a2e6126fc565b5b6000612a3d8582860161274f565b9250506020612a4e8582860161274f565b9150509250929050565b612a6181612726565b82525050565b6000602082019050612a7c6000830184612a58565b92915050565b6000606082019050612a9760008301866126c8565b612aa460208301856126c8565b612ab160408301846126c8565b949350505050565b612ac28161292f565b8114612acd57600080fd5b50565b600081359050612adf81612ab9565b92915050565b600060208284031215612afb57612afa6126fc565b5b6000612b0984828501612ad0565b91505092915050565b600080600060608486031215612b2b57612b2a6126fc565b5b6000612b3986828701612ad0565b9350506020612b4a868287016127a8565b9250506040612b5b868287016127a8565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ba282612883565b810181811067ffffffffffffffff82111715612bc157612bc0612b6a565b5b80604052505050565b6000612bd46126f2565b9050612be08282612b99565b919050565b600067ffffffffffffffff821115612c0057612bff612b6a565b5b602082029050602081019050919050565b600080fd5b6000612c29612c2484612be5565b612bca565b90508083825260208201905060208402830185811115612c4c57612c4b612c11565b5b835b81811015612c755780612c61888261274f565b845260208401935050602081019050612c4e565b5050509392505050565b600082601f830112612c9457612c93612b65565b5b8135612ca4848260208601612c16565b91505092915050565b60008060408385031215612cc457612cc36126fc565b5b600083013567ffffffffffffffff811115612ce257612ce1612701565b5b612cee85828601612c7f565b9250506020612cff85828601612ad0565b9150509250929050565b6000819050919050565b6000612d2e612d29612d2484612706565b612d09565b612706565b9050919050565b6000612d4082612d13565b9050919050565b6000612d5282612d35565b9050919050565b612d6281612d47565b82525050565b6000602082019050612d7d6000830184612d59565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dbd826126be565b9150612dc8836126be565b9250828202612dd6816126be565b91508282048414831517612ded57612dec612d83565b5b5092915050565b6000612dff826126be565b9150612e0a836126be565b9250828201905080821115612e2257612e21612d83565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e6f57607f821691505b602082108103612e8257612e81612e28565b5b50919050565b6000604082019050612e9d6000830185612a58565b612eaa60208301846126c8565b9392505050565b600081519050612ec081612ab9565b92915050565b600060208284031215612edc57612edb6126fc565b5b6000612eea84828501612eb1565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f4f602583612848565b9150612f5a82612ef3565b604082019050919050565b60006020820190508181036000830152612f7e81612f42565b9050919050565b7f50657263656e746167652063616e277420626520300000000000000000000000600082015250565b6000612fbb601583612848565b9150612fc682612f85565b602082019050919050565b60006020820190508181036000830152612fea81612fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061307c602683612848565b915061308782613020565b604082019050919050565b600060208201905081810360008301526130ab8161306f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130e8602083612848565b91506130f3826130b2565b602082019050919050565b60006020820190508181036000830152613117816130db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061317a602483612848565b91506131858261311e565b604082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061320c602283612848565b9150613217826131b0565b604082019050919050565b6000602082019050818103600083015261323b816131ff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613278601d83612848565b915061328382613242565b602082019050919050565b600060208201905081810360008301526132a78161326b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330a602983612848565b9150613315826132ae565b604082019050919050565b60006020820190508181036000830152613339816132fd565b9050919050565b7f54726164696e6720636c6f736564210000000000000000000000000000000000600082015250565b6000613376600f83612848565b915061338182613340565b602082019050919050565b600060208201905081810360008301526133a581613369565b9050919050565b7f4d61782077616c6c657420726561636865640000000000000000000000000000600082015250565b60006133e2601283612848565b91506133ed826133ac565b602082019050919050565b60006020820190508181036000830152613411816133d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613452826126be565b915061345d836126be565b92508261346d5761346c613418565b5b828204905092915050565b6000613483826126be565b915061348e836126be565b92508282039050818111156134a6576134a5612d83565b5b92915050565b7f596f7520616c726561647920736f6c6420696e207468697320726f756e640000600082015250565b60006134e2601e83612848565b91506134ed826134ac565b602082019050919050565b60006020820190508181036000830152613511816134d5565b9050919050565b7f596f75206172652073656c6c696e6720746f6f206d7563680000000000000000600082015250565b600061354e601883612848565b915061355982613518565b602082019050919050565b6000602082019050818103600083015261357d81613541565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006135ba601d83612848565b91506135c582613584565b602082019050919050565b600060208201905081810360008301526135e9816135ad565b9050919050565b600081905092915050565b50565b600061360b6000836135f0565b9150613616826135fb565b600082019050919050565b600061362c826135fe565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613692603a83612848565b915061369d82613636565b604082019050919050565b600060208201905081810360008301526136c181613685565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613724602583612848565b915061372f826136c8565b604082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137b6602383612848565b91506137c18261375a565b604082019050919050565b600060208201905081810360008301526137e5816137a9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613848602683612848565b9150613853826137ec565b604082019050919050565b600060208201905081810360008301526138778161383b565b9050919050565b60008151905061388d81612738565b92915050565b6000602082840312156138a9576138a86126fc565b5b60006138b78482850161387e565b91505092915050565b6000819050919050565b60006138e56138e06138db846138c0565b612d09565b6126be565b9050919050565b6138f5816138ca565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61393081612726565b82525050565b60006139428383613927565b60208301905092915050565b6000602082019050919050565b6000613966826138fb565b6139708185613906565b935061397b83613917565b8060005b838110156139ac5781516139938882613936565b975061399e8361394e565b92505060018101905061397f565b5085935050505092915050565b600060a0820190506139ce60008301886126c8565b6139db60208301876138ec565b81810360408301526139ed818661395b565b90506139fc6060830185612a58565b613a0960808301846126c8565b9695505050505050565b600060c082019050613a286000830189612a58565b613a3560208301886126c8565b613a4260408301876138ec565b613a4f60608301866138ec565b613a5c6080830185612a58565b613a6960a08301846126c8565b979650505050505050565b600081519050613a8381612791565b92915050565b600080600060608486031215613aa257613aa16126fc565b5b6000613ab086828701613a74565b9350506020613ac186828701613a74565b9250506040613ad286828701613a74565b915050925092509256fea26469706673582212204827c58ceb11bc97c43e7a2542b68a5542238f1ea0def777e89dbb65d2688f6264736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063870000e111610139578063aacebbe3116100b6578063deab8aea1161007a578063deab8aea146108e4578063f2fde38b1461090f578063f66895a314610938578063f887ea4014610965578063f8b45b0514610990578063ffb54a99146109bb5761025c565b8063aacebbe3146107ef578063ab7f223414610818578063bb09a67514610841578063c5d32bb21461086a578063dd62ed3e146108a75761025c565b80639e252f00116100fd5780639e252f00146106f8578063a0a485ca14610721578063a457c2d71461074a578063a8aa1b3114610787578063a9059cbb146107b25761025c565b8063870000e1146106275780638cd4426d146106505780638da5cb5b14610679578063924de9b7146106a457806395d89b41146106cd5761025c565b806323b872dd116101d25780636ddd1713116101965780636ddd17131461052557806370a0823114610550578063715018a61461058d57806375f0a874146105a457806385672c58146105cf578063864701a5146105fa5761025c565b806323b872dd1461042c578063313ce56714610469578063395093511461049457806340b28c2f146104d15780635aacf969146104fa5761025c565b806306fdde031161021957806306fdde0314610332578063095ea7b31461035d57806318160ddd1461039a5780631959a002146103c55780631c499ab0146104035761025c565b80630445b6671461026157806304646a491461028c57806304dacd50146102b7578063055ea830146102e057806305f93650146103095761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109e6565b60405161028391906126d7565b60405180910390f35b34801561029857600080fd5b506102a16109ec565b6040516102ae91906126d7565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612764565b6109f2565b005b3480156102ec57600080fd5b50610307600480360381019061030291906127bd565b610a96565b005b34801561031557600080fd5b50610330600480360381019061032b91906127ea565b610abb565b005b34801561033e57600080fd5b50610347610b23565b60405161035491906128cd565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f91906128ef565b610bb5565b604051610391919061294a565b60405180910390f35b3480156103a657600080fd5b506103af610bd8565b6040516103bc91906126d7565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612764565b610be2565b6040516103fa929190612965565b60405180910390f35b34801561040f57600080fd5b5061042a600480360381019061042591906127bd565b610c06565b005b34801561043857600080fd5b50610453600480360381019061044e919061298e565b610c2b565b604051610460919061294a565b60405180910390f35b34801561047557600080fd5b5061047e610c5a565b60405161048b91906129fd565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906128ef565b610c63565b6040516104c8919061294a565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190612a18565b610c9a565b005b34801561050657600080fd5b5061050f610d53565b60405161051c919061294a565b60405180910390f35b34801561053157600080fd5b5061053a610d66565b604051610547919061294a565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190612764565b610d79565b60405161058491906126d7565b60405180910390f35b34801561059957600080fd5b506105a2610dc1565b005b3480156105b057600080fd5b506105b9610dd5565b6040516105c69190612a67565b60405180910390f35b3480156105db57600080fd5b506105e4610dfb565b6040516105f191906126d7565b60405180910390f35b34801561060657600080fd5b5061060f610e01565b60405161061e93929190612a82565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190612ae5565b610e19565b005b34801561065c57600080fd5b50610677600480360381019061067291906128ef565b610e3e565b005b34801561068557600080fd5b5061068e610ec9565b60405161069b9190612a67565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612ae5565b610ef3565b005b3480156106d957600080fd5b506106e2610f18565b6040516106ef91906128cd565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a91906127bd565b610faa565b005b34801561072d57600080fd5b50610748600480360381019061074391906127ea565b610fde565b005b34801561075657600080fd5b50610771600480360381019061076c91906128ef565b611046565b60405161077e919061294a565b60405180910390f35b34801561079357600080fd5b5061079c6110bd565b6040516107a99190612a67565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906128ef565b6110e3565b6040516107e6919061294a565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190612764565b611106565b005b34801561082457600080fd5b5061083f600480360381019061083a9190612b12565b6111aa565b005b34801561084d57600080fd5b5061086860048036038101906108639190612cad565b61122f565b005b34801561087657600080fd5b50610891600480360381019061088c9190612764565b6112ca565b60405161089e919061294a565b60405180910390f35b3480156108b357600080fd5b506108ce60048036038101906108c99190612a18565b6112ea565b6040516108db91906126d7565b60405180910390f35b3480156108f057600080fd5b506108f9611371565b6040516109069190612a67565b60405180910390f35b34801561091b57600080fd5b5061093660048036038101906109319190612764565b611397565b005b34801561094457600080fd5b5061094d61141a565b60405161095c93929190612a82565b60405180910390f35b34801561097157600080fd5b5061097a611432565b6040516109879190612d68565b60405180910390f35b34801561099c57600080fd5b506109a5611458565b6040516109b291906126d7565b60405180910390f35b3480156109c757600080fd5b506109d061145e565b6040516109dd919061294a565b60405180910390f35b600e5481565b600d5481565b6109fa611471565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a9e611471565b670de0b6b3a764000081610ab29190612db2565b600e8190555050565b610ac3611471565b6040518060600160405280848152602001838152602001828152506013600082015181600001556020820151816001015560408201518160020155905050808284610b0e9190612df4565b610b189190612df4565b601681905550505050565b606060038054610b3290612e57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5e90612e57565b8015610bab5780601f10610b8057610100808354040283529160200191610bab565b820191906000526020600020905b815481529060010190602001808311610b8e57829003601f168201915b5050505050905090565b600080610bc06114ef565b9050610bcd8185856114f7565b600191505092915050565b6000600254905090565b60076020528060005260406000206000915090508060000154908060010154905082565b610c0e611471565b670de0b6b3a764000081610c229190612db2565b600f8190555050565b600080610c366114ef565b9050610c438582856116c0565b610c4e85858561174c565b60019150509392505050565b60006012905090565b600080610c6e6114ef565b9050610c8f818585610c8085896112ea565b610c8a9190612df4565b6114f7565b600191505092915050565b610ca2611471565b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d4f30837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6114f7565b5050565b600b60179054906101000a900460ff1681565b600b60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc9611471565b610dd36000611dae565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60108060000154908060010154908060020154905083565b610e21611471565b80600b60166101000a81548160ff02191690831515021790555050565b610e46611471565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e81929190612e88565b6020604051808303816000875af1158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190612ec6565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610efb611471565b80600b60156101000a81548160ff02191690831515021790555050565b606060048054610f2790612e57565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5390612e57565b8015610fa05780601f10610f7557610100808354040283529160200191610fa0565b820191906000526020600020905b815481529060010190602001808311610f8357829003601f168201915b5050505050905090565b610fb2611471565b610fdb813373ffffffffffffffffffffffffffffffffffffffff16611e7490919063ffffffff16565b50565b610fe6611471565b60405180606001604052808481526020018381526020018281525060106000820151816000015560208201518160010155604082015181600201559050508082846110319190612df4565b61103b9190612df4565b601781905550505050565b6000806110516114ef565b9050600061105f82866112ea565b9050838110156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90612f65565b60405180910390fd5b6110b182868684036114f7565b60019250505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806110ee6114ef565b90506110fb81858561174c565b600191505092915050565b61110e611471565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6111b2611471565b600081116111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90612fd1565b60405180910390fd5b82600b60176101000a81548160ff02191690831515021790555080600c81905550610e10826112249190612db2565b600d81905550505050565b611237611471565b60008251905060005b818110156112c45782600660008684815181106112605761125f612ff1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050611240565b50505050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61139f611471565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613092565b60405180910390fd5b61141781611dae565b50565b60138060000154908060010154908060020154905083565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600b60169054906101000a900460ff1681565b6114796114ef565b73ffffffffffffffffffffffffffffffffffffffff16611497610ec9565b73ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e4906130fe565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90613190565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90613222565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116b391906126d7565b60405180910390a3505050565b60006116cc84846112ea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117465781811015611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f9061328e565b60405180910390fd5b61174584848484036114f7565b5b50505050565b6000811161178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690613320565b60405180910390fd5b600b60149054906101000a900460ff16806117f35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118475750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561185c57611857838383611f68565b611da9565b600b60169054906101000a900460ff166118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a29061338c565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461195957600f548161190d84610d79565b6119179190612df4565b1115611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f906133f8565b60405180910390fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036119ba576016549050611a16565b8373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a155760175490505b5b600060648284611a269190612db2565b611a309190613447565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611aec578083611a939190613478565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611ae49190612df4565b925050819055505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611b565750600b60179054906101000a900460ff165b15611cde576000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006064600c54600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611bf69190612db2565b611c009190613447565b9050600d548242611c119190613478565b11611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c48906134f8565b60405180910390fd5b80851115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613564565b60405180910390fd5b42600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050505b600082118015611cfa5750600b60159054906101000a900460ff165b8015611d545750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6a5750600e54611d6730610d79565b10155b15611d7b57611d7a600e546121de565b5b611d9185858386611d8c9190613478565b611f68565b6000811115611da657611da5853083611f68565b5b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80471015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906135d0565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611edd90613621565b60006040518083038185875af1925050503d8060008114611f1a576040519150601f19603f3d011682016040523d82523d6000602084013e611f1f565b606091505b5050905080611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906136a8565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce9061373a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906137cc565b60405180910390fd5b6120518383836123cb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce9061385e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121c591906126d7565b60405180910390a36121d88484846123d0565b50505050565b600b60149054906101000a900460ff166123c8576001600b60146101000a81548160ff0219169083151502179055506000600260165461221e9190612db2565b9050600081601360000154846122349190612db2565b61223e9190613447565b90506000818461224e9190613478565b9050600047905061225e826123d5565b6000814761226c9190613478565b90506000601360000154866122819190613478565b8261228c9190613447565b90506000601360000154826122a19190612db2565b905060008111156122b7576122b686826125eb565b5b60006013600101546002846122cc9190612db2565b6122d69190612db2565b9050600081111561232d5761232c81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e7490919063ffffffff16565b5b60006013600201546002856123429190612db2565b61234c9190612db2565b905060008111156123a3576123a281600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e7490919063ffffffff16565b5b5050505050505050506000600b60146101000a81548160ff0219169083151502179055505b50565b505050565b505050565b6000600267ffffffffffffffff8111156123f2576123f1612b6a565b5b6040519080825280602002602001820160405280156124205781602001602082028036833780820191505090505b509050308160008151811061243857612437612ff1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125039190613893565b8160018151811061251757612516612ff1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125b59594939291906139b9565b600060405180830381600087803b1580156125cf57600080fd5b505af11580156125e3573d6000803e3d6000fd5b505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161267496959493929190613a13565b60606040518083038185885af1158015612692573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126b79190613a89565b5050505050565b6000819050919050565b6126d1816126be565b82525050565b60006020820190506126ec60008301846126c8565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061273182612706565b9050919050565b61274181612726565b811461274c57600080fd5b50565b60008135905061275e81612738565b92915050565b60006020828403121561277a576127796126fc565b5b60006127888482850161274f565b91505092915050565b61279a816126be565b81146127a557600080fd5b50565b6000813590506127b781612791565b92915050565b6000602082840312156127d3576127d26126fc565b5b60006127e1848285016127a8565b91505092915050565b600080600060608486031215612803576128026126fc565b5b6000612811868287016127a8565b9350506020612822868287016127a8565b9250506040612833868287016127a8565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b8381101561287757808201518184015260208101905061285c565b60008484015250505050565b6000601f19601f8301169050919050565b600061289f8261283d565b6128a98185612848565b93506128b9818560208601612859565b6128c281612883565b840191505092915050565b600060208201905081810360008301526128e78184612894565b905092915050565b60008060408385031215612906576129056126fc565b5b60006129148582860161274f565b9250506020612925858286016127a8565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b600060408201905061297a60008301856126c8565b61298760208301846126c8565b9392505050565b6000806000606084860312156129a7576129a66126fc565b5b60006129b58682870161274f565b93505060206129c68682870161274f565b92505060406129d7868287016127a8565b9150509250925092565b600060ff82169050919050565b6129f7816129e1565b82525050565b6000602082019050612a1260008301846129ee565b92915050565b60008060408385031215612a2f57612a2e6126fc565b5b6000612a3d8582860161274f565b9250506020612a4e8582860161274f565b9150509250929050565b612a6181612726565b82525050565b6000602082019050612a7c6000830184612a58565b92915050565b6000606082019050612a9760008301866126c8565b612aa460208301856126c8565b612ab160408301846126c8565b949350505050565b612ac28161292f565b8114612acd57600080fd5b50565b600081359050612adf81612ab9565b92915050565b600060208284031215612afb57612afa6126fc565b5b6000612b0984828501612ad0565b91505092915050565b600080600060608486031215612b2b57612b2a6126fc565b5b6000612b3986828701612ad0565b9350506020612b4a868287016127a8565b9250506040612b5b868287016127a8565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ba282612883565b810181811067ffffffffffffffff82111715612bc157612bc0612b6a565b5b80604052505050565b6000612bd46126f2565b9050612be08282612b99565b919050565b600067ffffffffffffffff821115612c0057612bff612b6a565b5b602082029050602081019050919050565b600080fd5b6000612c29612c2484612be5565b612bca565b90508083825260208201905060208402830185811115612c4c57612c4b612c11565b5b835b81811015612c755780612c61888261274f565b845260208401935050602081019050612c4e565b5050509392505050565b600082601f830112612c9457612c93612b65565b5b8135612ca4848260208601612c16565b91505092915050565b60008060408385031215612cc457612cc36126fc565b5b600083013567ffffffffffffffff811115612ce257612ce1612701565b5b612cee85828601612c7f565b9250506020612cff85828601612ad0565b9150509250929050565b6000819050919050565b6000612d2e612d29612d2484612706565b612d09565b612706565b9050919050565b6000612d4082612d13565b9050919050565b6000612d5282612d35565b9050919050565b612d6281612d47565b82525050565b6000602082019050612d7d6000830184612d59565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dbd826126be565b9150612dc8836126be565b9250828202612dd6816126be565b91508282048414831517612ded57612dec612d83565b5b5092915050565b6000612dff826126be565b9150612e0a836126be565b9250828201905080821115612e2257612e21612d83565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e6f57607f821691505b602082108103612e8257612e81612e28565b5b50919050565b6000604082019050612e9d6000830185612a58565b612eaa60208301846126c8565b9392505050565b600081519050612ec081612ab9565b92915050565b600060208284031215612edc57612edb6126fc565b5b6000612eea84828501612eb1565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f4f602583612848565b9150612f5a82612ef3565b604082019050919050565b60006020820190508181036000830152612f7e81612f42565b9050919050565b7f50657263656e746167652063616e277420626520300000000000000000000000600082015250565b6000612fbb601583612848565b9150612fc682612f85565b602082019050919050565b60006020820190508181036000830152612fea81612fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061307c602683612848565b915061308782613020565b604082019050919050565b600060208201905081810360008301526130ab8161306f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130e8602083612848565b91506130f3826130b2565b602082019050919050565b60006020820190508181036000830152613117816130db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061317a602483612848565b91506131858261311e565b604082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061320c602283612848565b9150613217826131b0565b604082019050919050565b6000602082019050818103600083015261323b816131ff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613278601d83612848565b915061328382613242565b602082019050919050565b600060208201905081810360008301526132a78161326b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330a602983612848565b9150613315826132ae565b604082019050919050565b60006020820190508181036000830152613339816132fd565b9050919050565b7f54726164696e6720636c6f736564210000000000000000000000000000000000600082015250565b6000613376600f83612848565b915061338182613340565b602082019050919050565b600060208201905081810360008301526133a581613369565b9050919050565b7f4d61782077616c6c657420726561636865640000000000000000000000000000600082015250565b60006133e2601283612848565b91506133ed826133ac565b602082019050919050565b60006020820190508181036000830152613411816133d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613452826126be565b915061345d836126be565b92508261346d5761346c613418565b5b828204905092915050565b6000613483826126be565b915061348e836126be565b92508282039050818111156134a6576134a5612d83565b5b92915050565b7f596f7520616c726561647920736f6c6420696e207468697320726f756e640000600082015250565b60006134e2601e83612848565b91506134ed826134ac565b602082019050919050565b60006020820190508181036000830152613511816134d5565b9050919050565b7f596f75206172652073656c6c696e6720746f6f206d7563680000000000000000600082015250565b600061354e601883612848565b915061355982613518565b602082019050919050565b6000602082019050818103600083015261357d81613541565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006135ba601d83612848565b91506135c582613584565b602082019050919050565b600060208201905081810360008301526135e9816135ad565b9050919050565b600081905092915050565b50565b600061360b6000836135f0565b9150613616826135fb565b600082019050919050565b600061362c826135fe565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613692603a83612848565b915061369d82613636565b604082019050919050565b600060208201905081810360008301526136c181613685565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613724602583612848565b915061372f826136c8565b604082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137b6602383612848565b91506137c18261375a565b604082019050919050565b600060208201905081810360008301526137e5816137a9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613848602683612848565b9150613853826137ec565b604082019050919050565b600060208201905081810360008301526138778161383b565b9050919050565b60008151905061388d81612738565b92915050565b6000602082840312156138a9576138a86126fc565b5b60006138b78482850161387e565b91505092915050565b6000819050919050565b60006138e56138e06138db846138c0565b612d09565b6126be565b9050919050565b6138f5816138ca565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61393081612726565b82525050565b60006139428383613927565b60208301905092915050565b6000602082019050919050565b6000613966826138fb565b6139708185613906565b935061397b83613917565b8060005b838110156139ac5781516139938882613936565b975061399e8361394e565b92505060018101905061397f565b5085935050505092915050565b600060a0820190506139ce60008301886126c8565b6139db60208301876138ec565b81810360408301526139ed818661395b565b90506139fc6060830185612a58565b613a0960808301846126c8565b9695505050505050565b600060c082019050613a286000830189612a58565b613a3560208301886126c8565b613a4260408301876138ec565b613a4f60608301866138ec565b613a5c6080830185612a58565b613a6960a08301846126c8565b979650505050505050565b600081519050613a8381612791565b92915050565b600080600060608486031215613aa257613aa16126fc565b5b6000613ab086828701613a74565b9350506020613ac186828701613a74565b9250506040613ad286828701613a74565b915050925092509256fea26469706673582212204827c58ceb11bc97c43e7a2542b68a5542238f1ea0def777e89dbb65d2688f6264736f6c63430008130033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

21576:7372:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22242:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22192:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28173:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26697:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27334:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9314:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11674:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10443:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21720:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;27650:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12455:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10285:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13125:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27776:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22107:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22037:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10614:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2769:103;;;;;;;;;;;;;:::i;:::-;;21934:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22147:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22460:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;27542:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28749:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2128:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26590:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9533:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28625:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27129:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13866:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21908:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10947:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28012:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26820:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28330:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21659:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11203:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21971:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3027:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22503:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;21880:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22298:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22074:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22242:49;;;;:::o;22192:40::-;;;;:::o;28173:148::-;2014:13;:11;:13::i;:::-;28266:9:::1;28250:13;;:25;;;;;;;;;;;;;;;;;;28309:4;28286:9;:20;28296:9;28286:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;28173:148:::0;:::o;26697:114::-;2014:13;:11;:13::i;:::-;26797:6:::1;26788;:15;;;;:::i;:::-;26772:13;:31;;;;26697:114:::0;:::o;27334:199::-;2014:13;:11;:13::i;:::-;27446:29:::1;;;;;;;;27452:2;27446:29;;;;27456:9;27446:29;;;;27467:7;27446:29;;::::0;27434:9:::1;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;27518:7;27506:9;27501:2;:14;;;;:::i;:::-;:24;;;;:::i;:::-;27486:12;:39;;;;27334:199:::0;;;:::o;9314:100::-;9368:13;9401:5;9394:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9314:100;:::o;11674:201::-;11757:4;11774:13;11790:12;:10;:12::i;:::-;11774:28;;11813:32;11822:5;11829:7;11838:6;11813:8;:32::i;:::-;11863:4;11856:11;;;11674:201;;;;:::o;10443:108::-;10504:7;10531:12;;10524:19;;10443:108;:::o;21720:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27650:117::-;2014:13;:11;:13::i;:::-;27753:6:::1;27738:12;:21;;;;:::i;:::-;27726:9;:33;;;;27650:117:::0;:::o;12455:261::-;12552:4;12569:15;12587:12;:10;:12::i;:::-;12569:30;;12610:38;12626:4;12632:7;12641:6;12610:15;:38::i;:::-;12659:27;12669:4;12675:2;12679:6;12659:9;:27::i;:::-;12704:4;12697:11;;;12455:261;;;;;:::o;10285:93::-;10343:5;10368:2;10361:9;;10285:93;:::o;13125:238::-;13213:4;13230:13;13246:12;:10;:12::i;:::-;13230:28;;13269:64;13278:5;13285:7;13322:10;13294:25;13304:5;13311:7;13294:9;:25::i;:::-;:38;;;;:::i;:::-;13269:8;:64::i;:::-;13351:4;13344:11;;;13125:238;;;;:::o;27776:227::-;2014:13;:11;:13::i;:::-;27887:9:::1;27870:6;;:27;;;;;;;;;;;;;;;;;;27915:7;27908:4;;:14;;;;;;;;;;;;;;;;;;27933:62;27950:4;27965:9;27977:17;27933:8;:62::i;:::-;27776:227:::0;;:::o;22107:33::-;;;;;;;;;;;;;:::o;22037:30::-;;;;;;;;;;;;;:::o;10614:127::-;10688:7;10715:9;:18;10725:7;10715:18;;;;;;;;;;;;;;;;10708:25;;10614:127;;;:::o;2769:103::-;2014:13;:11;:13::i;:::-;2834:30:::1;2861:1;2834:18;:30::i;:::-;2769:103::o:0;21934:30::-;;;;;;;;;;;;;:::o;22147:38::-;;;;:::o;22460:36::-;;;;;;;;;;;;;;;;;;;:::o;27542:99::-;2014:13;:11;:13::i;:::-;27627:6:::1;27613:11;;:20;;;;;;;;;;;;;;;;;;27542:99:::0;:::o;28749:137::-;2014:13;:11;:13::i;:::-;28840:8:::1;28833:25;;;28859:10;28871:6;28833:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28749:137:::0;;:::o;2128:87::-;2174:7;2201:6;;;;;;;;;;;2194:13;;2128:87;:::o;26590:98::-;2014:13;:11;:13::i;:::-;26674:6:::1;26660:11;;:20;;;;;;;;;;;;;;;;;;26590:98:::0;:::o;9533:104::-;9589:13;9622:7;9615:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:104;:::o;28625:115::-;2014:13;:11;:13::i;:::-;28692:40:::1;28722:9;28700:10;28692:29;;;;:40;;;;:::i;:::-;28625:115:::0;:::o;27129:196::-;2014:13;:11;:13::i;:::-;27239:29:::1;;;;;;;;27245:2;27239:29;;;;27249:9;27239:29;;;;27260:7;27239:29;;::::0;27228:8:::1;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;27310:7;27298:9;27293:2;:14;;;;:::i;:::-;:24;;;;:::i;:::-;27279:11;:38;;;;27129:196:::0;;;:::o;13866:436::-;13959:4;13976:13;13992:12;:10;:12::i;:::-;13976:28;;14015:24;14042:25;14052:5;14059:7;14042:9;:25::i;:::-;14015:52;;14106:15;14086:16;:35;;14078:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14199:60;14208:5;14215:7;14243:15;14224:16;:34;14199:8;:60::i;:::-;14290:4;14283:11;;;;13866:436;;;;:::o;21908:19::-;;;;;;;;;;;;;:::o;10947:193::-;11026:4;11043:13;11059:12;:10;:12::i;:::-;11043:28;;11082;11092:5;11099:2;11103:6;11082:9;:28::i;:::-;11128:4;11121:11;;;10947:193;;;;:::o;28012:152::-;2014:13;:11;:13::i;:::-;28109:9:::1;28091:15;;:27;;;;;;;;;;;;;;;;;;28152:4;28129:9;:20;28139:9;28129:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;28012:152:::0;:::o;26820:300::-;2014:13;:11;:13::i;:::-;26958:1:::1;26945:10;:14;26937:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27013:6;26996:14;;:23;;;;;;;;;;;;;;;;;;27051:10;27030:18;:31;;;;27105:7;27089:13;:23;;;;:::i;:::-;27072:14;:40;;;;26820:300:::0;;;:::o;28330:286::-;2014:13;:11;:13::i;:::-;28420:12:::1;28435:8;:15;28420:30;;28465:9;28461:148;28484:4;28480:1;:8;28461:148;;;28530:5;28505:9;:22;28515:8;28524:1;28515:11;;;;;;;;:::i;:::-;;;;;;;;28505:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;28579:3;;;;;28461:148;;;;28409:207;28330:286:::0;;:::o;21659:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;11203:151::-;11292:7;11319:11;:18;11331:5;11319:18;;;;;;;;;;;;;;;:27;11338:7;11319:27;;;;;;;;;;;;;;;;11312:34;;11203:151;;;;:::o;21971:28::-;;;;;;;;;;;;;:::o;3027:201::-;2014:13;:11;:13::i;:::-;3136:1:::1;3116:22;;:8;:22;;::::0;3108:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3192:28;3211:8;3192:18;:28::i;:::-;3027:201:::0;:::o;22503:37::-;;;;;;;;;;;;;;;;;;;:::o;21880:21::-;;;;;;;;;;;;;:::o;22298:47::-;;;;:::o;22074:23::-;;;;;;;;;;;;;:::o;2293:132::-;2368:12;:10;:12::i;:::-;2357:23;;:7;:5;:7::i;:::-;:23;;;2349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:132::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;17859:346::-;17978:1;17961:19;;:5;:19;;;17953:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18059:1;18040:21;;:7;:21;;;18032:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18143:6;18113:11;:18;18125:5;18113:18;;;;;;;;;;;;;;;:27;18132:7;18113:27;;;;;;;;;;;;;;;:36;;;;18181:7;18165:32;;18174:5;18165:32;;;18190:6;18165:32;;;;;;:::i;:::-;;;;;;;;17859:346;;;:::o;18496:419::-;18597:24;18624:25;18634:5;18641:7;18624:9;:25::i;:::-;18597:52;;18684:17;18664:16;:37;18660:248;;18746:6;18726:16;:26;;18718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18830:51;18839:5;18846:7;18874:6;18855:16;:25;18830:8;:51::i;:::-;18660:248;18586:329;18496:419;;;:::o;23263:1554::-;23379:1;23370:6;:10;23362:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23444:8;;;;;;;;;;;:29;;;;23456:9;:17;23466:6;23456:17;;;;;;;;;;;;;;;;;;;;;;;;;23444:29;:53;;;;23477:9;:20;23487:9;23477:20;;;;;;;;;;;;;;;;;;;;;;;;;23444:53;23440:148;;;23513:42;23529:6;23537:9;23548:6;23513:15;:42::i;:::-;23570:7;;23440:148;23609:11;;;;;;;;;;;23601:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;23667:4;;;;;;;;;;;23654:17;;:9;:17;;;23651:122;;23729:9;;23719:6;23696:20;23706:9;23696;:20::i;:::-;:29;;;;:::i;:::-;:42;;23688:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23651:122;23786:11;23819:9;23811:17;;:4;;;;;;;;;;;:17;;;23808:92;;23836:12;;23830:18;;23808:92;;;23875:6;23867:14;;:4;;;;;;;;;;;:14;;;23864:36;;23889:11;;23883:17;;23864:36;23808:92;23911:14;23943:3;23937;23928:6;:12;;;;:::i;:::-;:18;;;;:::i;:::-;23911:35;;23976:4;;;;;;;;;;;23963:17;;:9;:17;;;23960:75;;24028:6;24019;:15;;;;:::i;:::-;23982:8;:19;23991:9;23982:19;;;;;;;;;;;;;;;:32;;;:53;;;;;;;:::i;:::-;;;;;;;;23960:75;24059:4;;;;;;;;;;;24049:14;;:6;:14;;;;:32;;;;;24067:14;;;;;;;;;;;24049:32;24046:474;;;24097:25;24125:8;:16;24134:6;24125:16;;;;;;;;;;;;;;;:34;;;24097:62;;24174:22;24252:3;24231:18;;24199:8;:16;24208:6;24199:16;;;;;;;;;;;;;;;:29;;;:50;;;;:::i;:::-;:56;;;;:::i;:::-;24174:81;;24316:14;;24296:17;24278:15;:35;;;;:::i;:::-;:52;24270:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;24398:14;24388:6;:24;;24380:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24493:15;24456:8;:16;24465:6;24456:16;;;;;;;;;;;;;;;:34;;:52;;;;24082:438;;24046:474;24543:1;24537:3;:7;:22;;;;;24548:11;;;;;;;;;;;24537:22;:40;;;;;24573:4;;;;;;;;;;;24563:14;;:6;:14;;;;24537:40;:85;;;;;24609:13;;24581:24;24599:4;24581:9;:24::i;:::-;:41;;24537:85;24533:114;;;24624:23;24633:13;;24624:8;:23::i;:::-;24533:114;24661:51;24677:6;24685:9;24705:6;24696;:15;;;;:::i;:::-;24661;:51::i;:::-;24735:1;24726:6;:10;24723:87;;;24752:46;24768:6;24784:4;24791:6;24752:15;:46::i;:::-;24723:87;23351:1466;;23263:1554;;;;:::o;3388:191::-;3462:16;3481:6;;;;;;;;;;;3462:25;;3507:8;3498:6;;:17;;;;;;;;;;;;;;;;;;3562:8;3531:40;;3552:8;3531:40;;;;;;;;;;;;3451:128;3388:191;:::o;21130:318::-;21245:6;21220:21;:31;;21212:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21300:12;21318:9;:14;;21340:6;21318:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21299:52;;;21370:7;21362:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;21201:247;21130:318;;:::o;14772:806::-;14885:1;14869:18;;:4;:18;;;14861:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14962:1;14948:16;;:2;:16;;;14940:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15017:38;15038:4;15044:2;15048:6;15017:20;:38::i;:::-;15068:19;15090:9;:15;15100:4;15090:15;;;;;;;;;;;;;;;;15068:37;;15139:6;15124:11;:21;;15116:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15256:6;15242:11;:20;15224:9;:15;15234:4;15224:15;;;;;;;;;;;;;;;:38;;;;15459:6;15442:9;:13;15452:2;15442:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15509:2;15494:26;;15503:4;15494:26;;;15513:6;15494:26;;;;;;:::i;:::-;;;;;;;;15533:37;15553:4;15559:2;15563:6;15533:19;:37::i;:::-;14850:728;14772:806;;;:::o;24826:1087::-;22651:8;;;;;;;;;;;22646:104;;22687:4;22676:8;;:15;;;;;;;;;;;;;;;;;;24889:19:::1;24926:1;24911:12;;:16;;;;:::i;:::-;24889:38;;24938:32;24997:11;24982:9;:12;;;24973:6;:21;;;;:::i;:::-;:35;;;;:::i;:::-;24938:70;;25019:14;25045:24;25036:6;:33;;;;:::i;:::-;25019:50;;25083:22;25108:21;25083:46;;25143:24;25160:6;25143:16;:24::i;:::-;25181:20;25228:14;25204:21;:38;;;;:::i;:::-;25181:61;;25253:19;25304:9;:12;;;25290:11;:26;;;;:::i;:::-;25274:12;:43;;;;:::i;:::-;25253:64;;25328:29;25374:9;:12;;;25360:11;:26;;;;:::i;:::-;25328:58;;25427:1;25403:21;:25;25400:158;;;25485:61;25498:24;25524:21;25485:12;:61::i;:::-;25400:158;25571:20;25612:9;:19;;;25608:1;25594:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;25571:60;;25660:1;25645:12;:16;25642:95;;;25677:48;25712:12;25685:15;;;;;;;;;;;25677:34;;;;:48;;;;:::i;:::-;25642:95;25750:18;25789:9;:17;;;25785:1;25771:11;:15;;;;:::i;:::-;:35;;;;:::i;:::-;25750:56;;25833:1;25820:10;:14;25817:89;;;25850:44;25883:10;25858:13;;;;;;;;;;;25850:32;;;;:44;;;;:::i;:::-;25817:89;24878:1035;;;;;;;;;22733:5:::0;22722:8;;:16;;;;;;;;;;;;;;;;;;22646:104;24826:1087;:::o;19515:91::-;;;;:::o;20210:90::-;;;;:::o;26271:307::-;26337:21;26375:1;26361:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26337:40;;26406:4;26388;26393:1;26388:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26432:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26422:4;26427:1;26422:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26459:6;;;;;;;;;;;:57;;;26517:11;26530:1;26533:4;26547;26554:15;26459:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26326:252;26271:307;:::o;25922:340::-;26003:6;;;;;;;;;;;:22;;;26033:9;26066:4;26086:11;26112:1;26155;26198:15;;;;;;;;;;;26228;26003:251;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25922:340;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:126;806:7;846:42;839:5;835:54;824:65;;769:126;;;:::o;901:96::-;938:7;967:24;985:5;967:24;:::i;:::-;956:35;;901:96;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:619::-;2296:6;2304;2312;2361:2;2349:9;2340:7;2336:23;2332:32;2329:119;;;2367:79;;:::i;:::-;2329:119;2487:1;2512:53;2557:7;2548:6;2537:9;2533:22;2512:53;:::i;:::-;2502:63;;2458:117;2614:2;2640:53;2685:7;2676:6;2665:9;2661:22;2640:53;:::i;:::-;2630:63;;2585:118;2742:2;2768:53;2813:7;2804:6;2793:9;2789:22;2768:53;:::i;:::-;2758:63;;2713:118;2219:619;;;;;:::o;2844:99::-;2896:6;2930:5;2924:12;2914:22;;2844:99;;;:::o;2949:169::-;3033:11;3067:6;3062:3;3055:19;3107:4;3102:3;3098:14;3083:29;;2949:169;;;;:::o;3124:246::-;3205:1;3215:113;3229:6;3226:1;3223:13;3215:113;;;3314:1;3309:3;3305:11;3299:18;3295:1;3290:3;3286:11;3279:39;3251:2;3248:1;3244:10;3239:15;;3215:113;;;3362:1;3353:6;3348:3;3344:16;3337:27;3186:184;3124:246;;;:::o;3376:102::-;3417:6;3468:2;3464:7;3459:2;3452:5;3448:14;3444:28;3434:38;;3376:102;;;:::o;3484:377::-;3572:3;3600:39;3633:5;3600:39;:::i;:::-;3655:71;3719:6;3714:3;3655:71;:::i;:::-;3648:78;;3735:65;3793:6;3788:3;3781:4;3774:5;3770:16;3735:65;:::i;:::-;3825:29;3847:6;3825:29;:::i;:::-;3820:3;3816:39;3809:46;;3576:285;3484:377;;;;:::o;3867:313::-;3980:4;4018:2;4007:9;4003:18;3995:26;;4067:9;4061:4;4057:20;4053:1;4042:9;4038:17;4031:47;4095:78;4168:4;4159:6;4095:78;:::i;:::-;4087:86;;3867:313;;;;:::o;4186:474::-;4254:6;4262;4311:2;4299:9;4290:7;4286:23;4282:32;4279:119;;;4317:79;;:::i;:::-;4279:119;4437:1;4462:53;4507:7;4498:6;4487:9;4483:22;4462:53;:::i;:::-;4452:63;;4408:117;4564:2;4590:53;4635:7;4626:6;4615:9;4611:22;4590:53;:::i;:::-;4580:63;;4535:118;4186:474;;;;;:::o;4666:90::-;4700:7;4743:5;4736:13;4729:21;4718:32;;4666:90;;;:::o;4762:109::-;4843:21;4858:5;4843:21;:::i;:::-;4838:3;4831:34;4762:109;;:::o;4877:210::-;4964:4;5002:2;4991:9;4987:18;4979:26;;5015:65;5077:1;5066:9;5062:17;5053:6;5015:65;:::i;:::-;4877:210;;;;:::o;5093:332::-;5214:4;5252:2;5241:9;5237:18;5229:26;;5265:71;5333:1;5322:9;5318:17;5309:6;5265:71;:::i;:::-;5346:72;5414:2;5403:9;5399:18;5390:6;5346:72;:::i;:::-;5093:332;;;;;:::o;5431:619::-;5508:6;5516;5524;5573:2;5561:9;5552:7;5548:23;5544:32;5541:119;;;5579:79;;:::i;:::-;5541:119;5699:1;5724:53;5769:7;5760:6;5749:9;5745:22;5724:53;:::i;:::-;5714:63;;5670:117;5826:2;5852:53;5897:7;5888:6;5877:9;5873:22;5852:53;:::i;:::-;5842:63;;5797:118;5954:2;5980:53;6025:7;6016:6;6005:9;6001:22;5980:53;:::i;:::-;5970:63;;5925:118;5431:619;;;;;:::o;6056:86::-;6091:7;6131:4;6124:5;6120:16;6109:27;;6056:86;;;:::o;6148:112::-;6231:22;6247:5;6231:22;:::i;:::-;6226:3;6219:35;6148:112;;:::o;6266:214::-;6355:4;6393:2;6382:9;6378:18;6370:26;;6406:67;6470:1;6459:9;6455:17;6446:6;6406:67;:::i;:::-;6266:214;;;;:::o;6486:474::-;6554:6;6562;6611:2;6599:9;6590:7;6586:23;6582:32;6579:119;;;6617:79;;:::i;:::-;6579:119;6737:1;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6708:117;6864:2;6890:53;6935:7;6926:6;6915:9;6911:22;6890:53;:::i;:::-;6880:63;;6835:118;6486:474;;;;;:::o;6966:118::-;7053:24;7071:5;7053:24;:::i;:::-;7048:3;7041:37;6966:118;;:::o;7090:222::-;7183:4;7221:2;7210:9;7206:18;7198:26;;7234:71;7302:1;7291:9;7287:17;7278:6;7234:71;:::i;:::-;7090:222;;;;:::o;7318:442::-;7467:4;7505:2;7494:9;7490:18;7482:26;;7518:71;7586:1;7575:9;7571:17;7562:6;7518:71;:::i;:::-;7599:72;7667:2;7656:9;7652:18;7643:6;7599:72;:::i;:::-;7681;7749:2;7738:9;7734:18;7725:6;7681:72;:::i;:::-;7318:442;;;;;;:::o;7766:116::-;7836:21;7851:5;7836:21;:::i;:::-;7829:5;7826:32;7816:60;;7872:1;7869;7862:12;7816:60;7766:116;:::o;7888:133::-;7931:5;7969:6;7956:20;7947:29;;7985:30;8009:5;7985:30;:::i;:::-;7888:133;;;;:::o;8027:323::-;8083:6;8132:2;8120:9;8111:7;8107:23;8103:32;8100:119;;;8138:79;;:::i;:::-;8100:119;8258:1;8283:50;8325:7;8316:6;8305:9;8301:22;8283:50;:::i;:::-;8273:60;;8229:114;8027:323;;;;:::o;8356:613::-;8430:6;8438;8446;8495:2;8483:9;8474:7;8470:23;8466:32;8463:119;;;8501:79;;:::i;:::-;8463:119;8621:1;8646:50;8688:7;8679:6;8668:9;8664:22;8646:50;:::i;:::-;8636:60;;8592:114;8745:2;8771:53;8816:7;8807:6;8796:9;8792:22;8771:53;:::i;:::-;8761:63;;8716:118;8873:2;8899:53;8944:7;8935:6;8924:9;8920:22;8899:53;:::i;:::-;8889:63;;8844:118;8356:613;;;;;:::o;8975:117::-;9084:1;9081;9074:12;9098:180;9146:77;9143:1;9136:88;9243:4;9240:1;9233:15;9267:4;9264:1;9257:15;9284:281;9367:27;9389:4;9367:27;:::i;:::-;9359:6;9355:40;9497:6;9485:10;9482:22;9461:18;9449:10;9446:34;9443:62;9440:88;;;9508:18;;:::i;:::-;9440:88;9548:10;9544:2;9537:22;9327:238;9284:281;;:::o;9571:129::-;9605:6;9632:20;;:::i;:::-;9622:30;;9661:33;9689:4;9681:6;9661:33;:::i;:::-;9571:129;;;:::o;9706:311::-;9783:4;9873:18;9865:6;9862:30;9859:56;;;9895:18;;:::i;:::-;9859:56;9945:4;9937:6;9933:17;9925:25;;10005:4;9999;9995:15;9987:23;;9706:311;;;:::o;10023:117::-;10132:1;10129;10122:12;10163:710;10259:5;10284:81;10300:64;10357:6;10300:64;:::i;:::-;10284:81;:::i;:::-;10275:90;;10385:5;10414:6;10407:5;10400:21;10448:4;10441:5;10437:16;10430:23;;10501:4;10493:6;10489:17;10481:6;10477:30;10530:3;10522:6;10519:15;10516:122;;;10549:79;;:::i;:::-;10516:122;10664:6;10647:220;10681:6;10676:3;10673:15;10647:220;;;10756:3;10785:37;10818:3;10806:10;10785:37;:::i;:::-;10780:3;10773:50;10852:4;10847:3;10843:14;10836:21;;10723:144;10707:4;10702:3;10698:14;10691:21;;10647:220;;;10651:21;10265:608;;10163:710;;;;;:::o;10896:370::-;10967:5;11016:3;11009:4;11001:6;10997:17;10993:27;10983:122;;11024:79;;:::i;:::-;10983:122;11141:6;11128:20;11166:94;11256:3;11248:6;11241:4;11233:6;11229:17;11166:94;:::i;:::-;11157:103;;10973:293;10896:370;;;;:::o;11272:678::-;11362:6;11370;11419:2;11407:9;11398:7;11394:23;11390:32;11387:119;;;11425:79;;:::i;:::-;11387:119;11573:1;11562:9;11558:17;11545:31;11603:18;11595:6;11592:30;11589:117;;;11625:79;;:::i;:::-;11589:117;11730:78;11800:7;11791:6;11780:9;11776:22;11730:78;:::i;:::-;11720:88;;11516:302;11857:2;11883:50;11925:7;11916:6;11905:9;11901:22;11883:50;:::i;:::-;11873:60;;11828:115;11272:678;;;;;:::o;11956:60::-;11984:3;12005:5;11998:12;;11956:60;;;:::o;12022:142::-;12072:9;12105:53;12123:34;12132:24;12150:5;12132:24;:::i;:::-;12123:34;:::i;:::-;12105:53;:::i;:::-;12092:66;;12022:142;;;:::o;12170:126::-;12220:9;12253:37;12284:5;12253:37;:::i;:::-;12240:50;;12170:126;;;:::o;12302:141::-;12367:9;12400:37;12431:5;12400:37;:::i;:::-;12387:50;;12302:141;;;:::o;12449:161::-;12551:52;12597:5;12551:52;:::i;:::-;12546:3;12539:65;12449:161;;:::o;12616:252::-;12724:4;12762:2;12751:9;12747:18;12739:26;;12775:86;12858:1;12847:9;12843:17;12834:6;12775:86;:::i;:::-;12616:252;;;;:::o;12874:180::-;12922:77;12919:1;12912:88;13019:4;13016:1;13009:15;13043:4;13040:1;13033:15;13060:410;13100:7;13123:20;13141:1;13123:20;:::i;:::-;13118:25;;13157:20;13175:1;13157:20;:::i;:::-;13152:25;;13212:1;13209;13205:9;13234:30;13252:11;13234:30;:::i;:::-;13223:41;;13413:1;13404:7;13400:15;13397:1;13394:22;13374:1;13367:9;13347:83;13324:139;;13443:18;;:::i;:::-;13324:139;13108:362;13060:410;;;;:::o;13476:191::-;13516:3;13535:20;13553:1;13535:20;:::i;:::-;13530:25;;13569:20;13587:1;13569:20;:::i;:::-;13564:25;;13612:1;13609;13605:9;13598:16;;13633:3;13630:1;13627:10;13624:36;;;13640:18;;:::i;:::-;13624:36;13476:191;;;;:::o;13673:180::-;13721:77;13718:1;13711:88;13818:4;13815:1;13808:15;13842:4;13839:1;13832:15;13859:320;13903:6;13940:1;13934:4;13930:12;13920:22;;13987:1;13981:4;13977:12;14008:18;13998:81;;14064:4;14056:6;14052:17;14042:27;;13998:81;14126:2;14118:6;14115:14;14095:18;14092:38;14089:84;;14145:18;;:::i;:::-;14089:84;13910:269;13859:320;;;:::o;14185:332::-;14306:4;14344:2;14333:9;14329:18;14321:26;;14357:71;14425:1;14414:9;14410:17;14401:6;14357:71;:::i;:::-;14438:72;14506:2;14495:9;14491:18;14482:6;14438:72;:::i;:::-;14185:332;;;;;:::o;14523:137::-;14577:5;14608:6;14602:13;14593:22;;14624:30;14648:5;14624:30;:::i;:::-;14523:137;;;;:::o;14666:345::-;14733:6;14782:2;14770:9;14761:7;14757:23;14753:32;14750:119;;;14788:79;;:::i;:::-;14750:119;14908:1;14933:61;14986:7;14977:6;14966:9;14962:22;14933:61;:::i;:::-;14923:71;;14879:125;14666:345;;;;:::o;15017:224::-;15157:34;15153:1;15145:6;15141:14;15134:58;15226:7;15221:2;15213:6;15209:15;15202:32;15017:224;:::o;15247:366::-;15389:3;15410:67;15474:2;15469:3;15410:67;:::i;:::-;15403:74;;15486:93;15575:3;15486:93;:::i;:::-;15604:2;15599:3;15595:12;15588:19;;15247:366;;;:::o;15619:419::-;15785:4;15823:2;15812:9;15808:18;15800:26;;15872:9;15866:4;15862:20;15858:1;15847:9;15843:17;15836:47;15900:131;16026:4;15900:131;:::i;:::-;15892:139;;15619:419;;;:::o;16044:171::-;16184:23;16180:1;16172:6;16168:14;16161:47;16044:171;:::o;16221:366::-;16363:3;16384:67;16448:2;16443:3;16384:67;:::i;:::-;16377:74;;16460:93;16549:3;16460:93;:::i;:::-;16578:2;16573:3;16569:12;16562:19;;16221:366;;;:::o;16593:419::-;16759:4;16797:2;16786:9;16782:18;16774:26;;16846:9;16840:4;16836:20;16832:1;16821:9;16817:17;16810:47;16874:131;17000:4;16874:131;:::i;:::-;16866:139;;16593:419;;;:::o;17018:180::-;17066:77;17063:1;17056:88;17163:4;17160:1;17153:15;17187:4;17184:1;17177:15;17204:225;17344:34;17340:1;17332:6;17328:14;17321:58;17413:8;17408:2;17400:6;17396:15;17389:33;17204:225;:::o;17435:366::-;17577:3;17598:67;17662:2;17657:3;17598:67;:::i;:::-;17591:74;;17674:93;17763:3;17674:93;:::i;:::-;17792:2;17787:3;17783:12;17776:19;;17435:366;;;:::o;17807:419::-;17973:4;18011:2;18000:9;17996:18;17988:26;;18060:9;18054:4;18050:20;18046:1;18035:9;18031:17;18024:47;18088:131;18214:4;18088:131;:::i;:::-;18080:139;;17807:419;;;:::o;18232:182::-;18372:34;18368:1;18360:6;18356:14;18349:58;18232:182;:::o;18420:366::-;18562:3;18583:67;18647:2;18642:3;18583:67;:::i;:::-;18576:74;;18659:93;18748:3;18659:93;:::i;:::-;18777:2;18772:3;18768:12;18761:19;;18420:366;;;:::o;18792:419::-;18958:4;18996:2;18985:9;18981:18;18973:26;;19045:9;19039:4;19035:20;19031:1;19020:9;19016:17;19009:47;19073:131;19199:4;19073:131;:::i;:::-;19065:139;;18792:419;;;:::o;19217:223::-;19357:34;19353:1;19345:6;19341:14;19334:58;19426:6;19421:2;19413:6;19409:15;19402:31;19217:223;:::o;19446:366::-;19588:3;19609:67;19673:2;19668:3;19609:67;:::i;:::-;19602:74;;19685:93;19774:3;19685:93;:::i;:::-;19803:2;19798:3;19794:12;19787:19;;19446:366;;;:::o;19818:419::-;19984:4;20022:2;20011:9;20007:18;19999:26;;20071:9;20065:4;20061:20;20057:1;20046:9;20042:17;20035:47;20099:131;20225:4;20099:131;:::i;:::-;20091:139;;19818:419;;;:::o;20243:221::-;20383:34;20379:1;20371:6;20367:14;20360:58;20452:4;20447:2;20439:6;20435:15;20428:29;20243:221;:::o;20470:366::-;20612:3;20633:67;20697:2;20692:3;20633:67;:::i;:::-;20626:74;;20709:93;20798:3;20709:93;:::i;:::-;20827:2;20822:3;20818:12;20811:19;;20470:366;;;:::o;20842:419::-;21008:4;21046:2;21035:9;21031:18;21023:26;;21095:9;21089:4;21085:20;21081:1;21070:9;21066:17;21059:47;21123:131;21249:4;21123:131;:::i;:::-;21115:139;;20842:419;;;:::o;21267:179::-;21407:31;21403:1;21395:6;21391:14;21384:55;21267:179;:::o;21452:366::-;21594:3;21615:67;21679:2;21674:3;21615:67;:::i;:::-;21608:74;;21691:93;21780:3;21691:93;:::i;:::-;21809:2;21804:3;21800:12;21793:19;;21452:366;;;:::o;21824:419::-;21990:4;22028:2;22017:9;22013:18;22005:26;;22077:9;22071:4;22067:20;22063:1;22052:9;22048:17;22041:47;22105:131;22231:4;22105:131;:::i;:::-;22097:139;;21824:419;;;:::o;22249:228::-;22389:34;22385:1;22377:6;22373:14;22366:58;22458:11;22453:2;22445:6;22441:15;22434:36;22249:228;:::o;22483:366::-;22625:3;22646:67;22710:2;22705:3;22646:67;:::i;:::-;22639:74;;22722:93;22811:3;22722:93;:::i;:::-;22840:2;22835:3;22831:12;22824:19;;22483:366;;;:::o;22855:419::-;23021:4;23059:2;23048:9;23044:18;23036:26;;23108:9;23102:4;23098:20;23094:1;23083:9;23079:17;23072:47;23136:131;23262:4;23136:131;:::i;:::-;23128:139;;22855:419;;;:::o;23280:165::-;23420:17;23416:1;23408:6;23404:14;23397:41;23280:165;:::o;23451:366::-;23593:3;23614:67;23678:2;23673:3;23614:67;:::i;:::-;23607:74;;23690:93;23779:3;23690:93;:::i;:::-;23808:2;23803:3;23799:12;23792:19;;23451:366;;;:::o;23823:419::-;23989:4;24027:2;24016:9;24012:18;24004:26;;24076:9;24070:4;24066:20;24062:1;24051:9;24047:17;24040:47;24104:131;24230:4;24104:131;:::i;:::-;24096:139;;23823:419;;;:::o;24248:168::-;24388:20;24384:1;24376:6;24372:14;24365:44;24248:168;:::o;24422:366::-;24564:3;24585:67;24649:2;24644:3;24585:67;:::i;:::-;24578:74;;24661:93;24750:3;24661:93;:::i;:::-;24779:2;24774:3;24770:12;24763:19;;24422:366;;;:::o;24794:419::-;24960:4;24998:2;24987:9;24983:18;24975:26;;25047:9;25041:4;25037:20;25033:1;25022:9;25018:17;25011:47;25075:131;25201:4;25075:131;:::i;:::-;25067:139;;24794:419;;;:::o;25219:180::-;25267:77;25264:1;25257:88;25364:4;25361:1;25354:15;25388:4;25385:1;25378:15;25405:185;25445:1;25462:20;25480:1;25462:20;:::i;:::-;25457:25;;25496:20;25514:1;25496:20;:::i;:::-;25491:25;;25535:1;25525:35;;25540:18;;:::i;:::-;25525:35;25582:1;25579;25575:9;25570:14;;25405:185;;;;:::o;25596:194::-;25636:4;25656:20;25674:1;25656:20;:::i;:::-;25651:25;;25690:20;25708:1;25690:20;:::i;:::-;25685:25;;25734:1;25731;25727:9;25719:17;;25758:1;25752:4;25749:11;25746:37;;;25763:18;;:::i;:::-;25746:37;25596:194;;;;:::o;25796:180::-;25936:32;25932:1;25924:6;25920:14;25913:56;25796:180;:::o;25982:366::-;26124:3;26145:67;26209:2;26204:3;26145:67;:::i;:::-;26138:74;;26221:93;26310:3;26221:93;:::i;:::-;26339:2;26334:3;26330:12;26323:19;;25982:366;;;:::o;26354:419::-;26520:4;26558:2;26547:9;26543:18;26535:26;;26607:9;26601:4;26597:20;26593:1;26582:9;26578:17;26571:47;26635:131;26761:4;26635:131;:::i;:::-;26627:139;;26354:419;;;:::o;26779:174::-;26919:26;26915:1;26907:6;26903:14;26896:50;26779:174;:::o;26959:366::-;27101:3;27122:67;27186:2;27181:3;27122:67;:::i;:::-;27115:74;;27198:93;27287:3;27198:93;:::i;:::-;27316:2;27311:3;27307:12;27300:19;;26959:366;;;:::o;27331:419::-;27497:4;27535:2;27524:9;27520:18;27512:26;;27584:9;27578:4;27574:20;27570:1;27559:9;27555:17;27548:47;27612:131;27738:4;27612:131;:::i;:::-;27604:139;;27331:419;;;:::o;27756:179::-;27896:31;27892:1;27884:6;27880:14;27873:55;27756:179;:::o;27941:366::-;28083:3;28104:67;28168:2;28163:3;28104:67;:::i;:::-;28097:74;;28180:93;28269:3;28180:93;:::i;:::-;28298:2;28293:3;28289:12;28282:19;;27941:366;;;:::o;28313:419::-;28479:4;28517:2;28506:9;28502:18;28494:26;;28566:9;28560:4;28556:20;28552:1;28541:9;28537:17;28530:47;28594:131;28720:4;28594:131;:::i;:::-;28586:139;;28313:419;;;:::o;28738:147::-;28839:11;28876:3;28861:18;;28738:147;;;;:::o;28891:114::-;;:::o;29011:398::-;29170:3;29191:83;29272:1;29267:3;29191:83;:::i;:::-;29184:90;;29283:93;29372:3;29283:93;:::i;:::-;29401:1;29396:3;29392:11;29385:18;;29011:398;;;:::o;29415:379::-;29599:3;29621:147;29764:3;29621:147;:::i;:::-;29614:154;;29785:3;29778:10;;29415:379;;;:::o;29800:245::-;29940:34;29936:1;29928:6;29924:14;29917:58;30009:28;30004:2;29996:6;29992:15;29985:53;29800:245;:::o;30051:366::-;30193:3;30214:67;30278:2;30273:3;30214:67;:::i;:::-;30207:74;;30290:93;30379:3;30290:93;:::i;:::-;30408:2;30403:3;30399:12;30392:19;;30051:366;;;:::o;30423:419::-;30589:4;30627:2;30616:9;30612:18;30604:26;;30676:9;30670:4;30666:20;30662:1;30651:9;30647:17;30640:47;30704:131;30830:4;30704:131;:::i;:::-;30696:139;;30423:419;;;:::o;30848:224::-;30988:34;30984:1;30976:6;30972:14;30965:58;31057:7;31052:2;31044:6;31040:15;31033:32;30848:224;:::o;31078:366::-;31220:3;31241:67;31305:2;31300:3;31241:67;:::i;:::-;31234:74;;31317:93;31406:3;31317:93;:::i;:::-;31435:2;31430:3;31426:12;31419:19;;31078:366;;;:::o;31450:419::-;31616:4;31654:2;31643:9;31639:18;31631:26;;31703:9;31697:4;31693:20;31689:1;31678:9;31674:17;31667:47;31731:131;31857:4;31731:131;:::i;:::-;31723:139;;31450:419;;;:::o;31875:222::-;32015:34;32011:1;32003:6;31999:14;31992:58;32084:5;32079:2;32071:6;32067:15;32060:30;31875:222;:::o;32103:366::-;32245:3;32266:67;32330:2;32325:3;32266:67;:::i;:::-;32259:74;;32342:93;32431:3;32342:93;:::i;:::-;32460:2;32455:3;32451:12;32444:19;;32103:366;;;:::o;32475:419::-;32641:4;32679:2;32668:9;32664:18;32656:26;;32728:9;32722:4;32718:20;32714:1;32703:9;32699:17;32692:47;32756:131;32882:4;32756:131;:::i;:::-;32748:139;;32475:419;;;:::o;32900:225::-;33040:34;33036:1;33028:6;33024:14;33017:58;33109:8;33104:2;33096:6;33092:15;33085:33;32900:225;:::o;33131:366::-;33273:3;33294:67;33358:2;33353:3;33294:67;:::i;:::-;33287:74;;33370:93;33459:3;33370:93;:::i;:::-;33488:2;33483:3;33479:12;33472:19;;33131:366;;;:::o;33503:419::-;33669:4;33707:2;33696:9;33692:18;33684:26;;33756:9;33750:4;33746:20;33742:1;33731:9;33727:17;33720:47;33784:131;33910:4;33784:131;:::i;:::-;33776:139;;33503:419;;;:::o;33928:143::-;33985:5;34016:6;34010:13;34001:22;;34032:33;34059:5;34032:33;:::i;:::-;33928:143;;;;:::o;34077:351::-;34147:6;34196:2;34184:9;34175:7;34171:23;34167:32;34164:119;;;34202:79;;:::i;:::-;34164:119;34322:1;34347:64;34403:7;34394:6;34383:9;34379:22;34347:64;:::i;:::-;34337:74;;34293:128;34077:351;;;;:::o;34434:85::-;34479:7;34508:5;34497:16;;34434:85;;;:::o;34525:158::-;34583:9;34616:61;34634:42;34643:32;34669:5;34643:32;:::i;:::-;34634:42;:::i;:::-;34616:61;:::i;:::-;34603:74;;34525:158;;;:::o;34689:147::-;34784:45;34823:5;34784:45;:::i;:::-;34779:3;34772:58;34689:147;;:::o;34842:114::-;34909:6;34943:5;34937:12;34927:22;;34842:114;;;:::o;34962:184::-;35061:11;35095:6;35090:3;35083:19;35135:4;35130:3;35126:14;35111:29;;34962:184;;;;:::o;35152:132::-;35219:4;35242:3;35234:11;;35272:4;35267:3;35263:14;35255:22;;35152:132;;;:::o;35290:108::-;35367:24;35385:5;35367:24;:::i;:::-;35362:3;35355:37;35290:108;;:::o;35404:179::-;35473:10;35494:46;35536:3;35528:6;35494:46;:::i;:::-;35572:4;35567:3;35563:14;35549:28;;35404:179;;;;:::o;35589:113::-;35659:4;35691;35686:3;35682:14;35674:22;;35589:113;;;:::o;35738:732::-;35857:3;35886:54;35934:5;35886:54;:::i;:::-;35956:86;36035:6;36030:3;35956:86;:::i;:::-;35949:93;;36066:56;36116:5;36066:56;:::i;:::-;36145:7;36176:1;36161:284;36186:6;36183:1;36180:13;36161:284;;;36262:6;36256:13;36289:63;36348:3;36333:13;36289:63;:::i;:::-;36282:70;;36375:60;36428:6;36375:60;:::i;:::-;36365:70;;36221:224;36208:1;36205;36201:9;36196:14;;36161:284;;;36165:14;36461:3;36454:10;;35862:608;;;35738:732;;;;:::o;36476:831::-;36739:4;36777:3;36766:9;36762:19;36754:27;;36791:71;36859:1;36848:9;36844:17;36835:6;36791:71;:::i;:::-;36872:80;36948:2;36937:9;36933:18;36924:6;36872:80;:::i;:::-;36999:9;36993:4;36989:20;36984:2;36973:9;36969:18;36962:48;37027:108;37130:4;37121:6;37027:108;:::i;:::-;37019:116;;37145:72;37213:2;37202:9;37198:18;37189:6;37145:72;:::i;:::-;37227:73;37295:3;37284:9;37280:19;37271:6;37227:73;:::i;:::-;36476:831;;;;;;;;:::o;37313:807::-;37562:4;37600:3;37589:9;37585:19;37577:27;;37614:71;37682:1;37671:9;37667:17;37658:6;37614:71;:::i;:::-;37695:72;37763:2;37752:9;37748:18;37739:6;37695:72;:::i;:::-;37777:80;37853:2;37842:9;37838:18;37829:6;37777:80;:::i;:::-;37867;37943:2;37932:9;37928:18;37919:6;37867:80;:::i;:::-;37957:73;38025:3;38014:9;38010:19;38001:6;37957:73;:::i;:::-;38040;38108:3;38097:9;38093:19;38084:6;38040:73;:::i;:::-;37313:807;;;;;;;;;:::o;38126:143::-;38183:5;38214:6;38208:13;38199:22;;38230:33;38257:5;38230:33;:::i;:::-;38126:143;;;;:::o;38275:663::-;38363:6;38371;38379;38428:2;38416:9;38407:7;38403:23;38399:32;38396:119;;;38434:79;;:::i;:::-;38396:119;38554:1;38579:64;38635:7;38626:6;38615:9;38611:22;38579:64;:::i;:::-;38569:74;;38525:128;38692:2;38718:64;38774:7;38765:6;38754:9;38750:22;38718:64;:::i;:::-;38708:74;;38663:129;38831:2;38857:64;38913:7;38904:6;38893:9;38889:22;38857:64;:::i;:::-;38847:74;;38802:129;38275:663;;;;;:::o

Swarm Source

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