ETH Price: $3,469.49 (+6.88%)
Gas: 13 Gwei

Token

WW3 Pepe (PEPE)
 

Overview

Max Total Supply

1,000,000 PEPE

Holders

238

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.344936756912869535 PEPE

Value
$0.00
0x8555c79e8904986f75acecc3f307a94b8f033635
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:
WW3Pepe

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-11
*/

// SPDX-License-Identifier: MIT
/**
 * https://ww3pepe.com/
 * https://t.me/WW3PEPEToken
 * https://X.com/ww3pepe
 */
pragma solidity >=0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

interface IERC20Errors {
    error ERC20InsufficientBalance(
        address sender,
        uint256 balance,
        uint256 needed
    );
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(
        address spender,
        uint256 allowance,
        uint256 needed
    );
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    error ERC20FailedDecreaseAllowance(
        address spender,
        uint256 currentAllowance,
        uint256 requestedDecrease
    );

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

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

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

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

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

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

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

    function allowance(
        address owner,
        address spender
    ) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

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

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

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

    function decreaseAllowance(
        address spender,
        uint256 requestedDecrease
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < requestedDecrease) {
            revert ERC20FailedDecreaseAllowance(
                spender,
                currentAllowance,
                requestedDecrease
            );
        }
        unchecked {
            _approve(owner, spender, currentAllowance - requestedDecrease);
        }

        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value,
        bool emitEvent
    ) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(
                    spender,
                    currentAllowance,
                    value
                );
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

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

    function transfer(address to, uint256 value) external returns (bool);

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

contract WW3Pepe is ERC20, Ownable {
    using SafeMath for uint256;

    IDexRouter02 private immutable _dexRouter;
    address public immutable _dexPair;

    bool private onSwpBck;

    address public mktFeeReceiver;

    uint256 private _minSwapbackValue;
    uint256 private _maxSwapbackValue;

    uint256 public _txLimit;
    uint256 public _WalletLimit;

    uint256 public _feeOnBuys;
    uint256 public _feeOnSells;

    bool public _antiWhaleOn = true;
    bool public _tradingEnabled = false;

    mapping(address => bool) private feeExmpt;
    mapping(address => bool) private _WalletLimitExmpt;

    mapping(address => bool) public _dexPairs;

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

    event TaxesSwaped(uint256 tokensSwapped, uint256 ethReceived);

    constructor() ERC20("WW3 Pepe", "PEPE") {
        IDexRouter02 __dexRouter = IDexRouter02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        _dexRouter = __dexRouter;

        _dexPair = IDexFactory(__dexRouter.factory()).createPair(
            address(this),
            __dexRouter.WETH()
        );
        _setDexPair(address(_dexPair), true);

        uint256 totalSupply = 1_000_000 * 1e18;

        _txLimit = (totalSupply) / 100;
        _WalletLimit = (totalSupply) / 100;

        _feeOnBuys = 25;
        _feeOnSells = 25;

        _minSwapbackValue = (totalSupply * 5) / 10000;
        _maxSwapbackValue = (totalSupply * 1) / 100;

        mktFeeReceiver = address(msg.sender);

        feeExmpt[msg.sender] = true;
        feeExmpt[mktFeeReceiver] = true;
        feeExmpt[address(this)] = true;
        feeExmpt[address(0xdead)] = true;

        _WalletLimitExmpt[owner()] = true;
        _WalletLimitExmpt[address(this)] = true;
        _WalletLimitExmpt[address(0xdead)] = true;
        _WalletLimitExmpt[mktFeeReceiver] = true;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function declareWar() external onlyOwner {
        _tradingEnabled = true;
    }

    function setMktFeeReceiver(address newMktFeeReceiver) external onlyOwner {
        mktFeeReceiver = newMktFeeReceiver;
    }

    function setFeeOnBuys(uint256 buyFee) external onlyOwner {
        _feeOnBuys = buyFee;
        require(_feeOnBuys <= 25, "Buy fee can't be more than 25%");
    }

    function setFeeOnSells(uint256 sellFee) external onlyOwner {
        _feeOnSells = sellFee;
        require(_feeOnSells <= 25, "Sell fee can't be more than 25%");
    }

    function antiWhaleOff() external onlyOwner {
        _antiWhaleOn = false;
    }

    function setTxLimit(uint256 maxTx) external onlyOwner {
        require(maxTx >= 5, "Max tx can't be less than 0.5%");
        _txLimit = (maxTx * totalSupply()) / 10000;
    }

    function setWalletLimit(uint256 maxWallet) external onlyOwner {
        require(maxWallet >= 5, "Max wallet can't be less than 0.5%");
        _WalletLimit = (maxWallet * totalSupply()) / 10000;
    }

    function setSwapbackValue(
        uint256 newMin,
        uint256 newMax
    ) external onlyOwner {
        require(newMin <= 5, "Min swapback value can't be more than 0.5%");
        require(
            newMax >= newMin,
            "Max swapback value can't be lower than the minimun"
        );
        _minSwapbackValue = (newMin * totalSupply()) / 10000;
        _maxSwapbackValue = (newMax * totalSupply()) / 10000;
    }

    function _setDexPair(address pair, bool value) private {
        _dexPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function triggerContractSell() private {
        uint256 tokenBalance = balanceOf(address(this));
        bool success;

        if (tokenBalance == 0) {
            return;
        }

        if (tokenBalance > _maxSwapbackValue) {
            tokenBalance = _maxSwapbackValue;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _dexRouter.WETH();

        _approve(address(this), address(_dexRouter), tokenBalance);

        // make the swap
        _dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenBalance,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        emit TaxesSwaped(tokenBalance, address(this).balance);

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

    function _update(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (amount == 0) {
            super._update(from, to, 0);
            return;
        }

        if (_antiWhaleOn) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !onSwpBck
            ) {
                if (!_tradingEnabled) {
                    require(
                        feeExmpt[from] || feeExmpt[to],
                        "Trading is not active."
                    );
                }
                //when buy
                if (_dexPairs[from] && !_WalletLimitExmpt[to]) {
                    require(
                        amount <= _txLimit,
                        "Buy transfer amount exceeds the _txLimit."
                    );
                    require(
                        amount + balanceOf(to) <= _WalletLimit,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (_dexPairs[to] && !_WalletLimitExmpt[from]) {
                    require(
                        amount <= _txLimit,
                        "Sell transfer amount exceeds the _txLimit."
                    );
                } else if (!_WalletLimitExmpt[to]) {
                    require(
                        amount + balanceOf(to) <= _WalletLimit,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= _minSwapbackValue;

        if (
            canSwap &&
            !onSwpBck &&
            !_dexPairs[from] &&
            !feeExmpt[from] &&
            !feeExmpt[to]
        ) {
            onSwpBck = true;

            triggerContractSell();

            onSwpBck = false;
        }

        bool takeFee = !onSwpBck;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (feeExmpt[from] || feeExmpt[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (_dexPairs[to] && _feeOnSells > 0) {
                fees = amount.mul(_feeOnSells).div(100);
            }
            // on buy
            else if (_dexPairs[from] && _feeOnBuys > 0) {
                fees = amount.mul(_feeOnBuys).div(100);
            }

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

            amount -= fees;
        }

        super._update(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"ERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"TaxesSwaped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_WalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_antiWhaleOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dexPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeOnBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeOnSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_txLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiWhaleOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"declareWar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mktFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"setFeeOnBuys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setFeeOnSells","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMktFeeReceiver","type":"address"}],"name":"setMktFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMin","type":"uint256"},{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"setSwapbackValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","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"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600881526020017f57573320506570650000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f50455045000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062001c31565b508060049081620000d7919062001c31565b5050506000620000ec6200078760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024a919062001d82565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d8919062001d82565b6040518363ffffffff1660e01b8152600401620002f792919062001dc5565b6020604051808303816000875af115801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d919062001d82565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200038560a05160016200078f60201b60201c565b600069d3c21bcecceda10000009050606481620003a3919062001e50565b600981905550606481620003b8919062001e50565b600a819055506019600b819055506019600c81905550612710600582620003e0919062001e88565b620003ec919062001e50565b600781905550606460018262000403919062001e88565b6200040f919062001e50565b60088190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000620005f06200083060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200077f33826200085a60201b60201c565b505062002413565b600033905090565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008cf5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620008c6919062001ed3565b60405180910390fd5b620008e360008383620008e760201b60201c565b5050565b600081036200090a5762000904838360006200121260201b60201c565b6200120d565b600d60009054906101000a900460ff161562000e4757620009306200083060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620009a75750620009776200083060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620009e15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801562000a1c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801562000a365750600560149054906101000a900460ff16155b1562000e4657600d60019054906101000a900460ff1662000b3657600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168062000af35750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b62000b35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2c9062001f51565b60405180910390fd5b5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801562000bda5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000c935760095481111562000c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1f9062001fe9565b60405180910390fd5b600a5462000c3c836200144260201b60201c565b8262000c4991906200200b565b111562000c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c849062002096565b60405180910390fd5b62000e45565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801562000d375750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000d8b5760095481111562000d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d7c906200212e565b60405180910390fd5b62000e44565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000e4357600a5462000df1836200144260201b60201c565b8262000dfe91906200200b565b111562000e42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e399062002096565b60405180910390fd5b5b5b5b5b5b600062000e5a306200144260201b60201c565b90506000600754821015905080801562000e815750600560149054906101000a900460ff16155b801562000ed85750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801562000f2f5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801562000f865750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000fd3576001600560146101000a81548160ff02191690831515021790555062000fb76200148a60201b60201c565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806200108a5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156200109557600090505b60008115620011f557601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015620010fa57506000600c54115b1562001134576200112c60646200111d600c54886200178d60201b90919060201c565b620017a560201b90919060201c565b9050620011c6565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156200119057506000600b54115b15620011c557620011c26064620011b3600b54886200178d60201b90919060201c565b620017a560201b90919060201c565b90505b5b6000811115620011e457620011e38730836200121260201b60201c565b5b8085620011f2919062002150565b94505b620012088787876200121260201b60201c565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620012685780600260008282546200125b91906200200b565b925050819055506200133e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620012f7578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620012ee939291906200219c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620013895780600260008282540392505081905550620013d6565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620014359190620021d9565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006200149d306200144260201b60201c565b90506000808203620014b15750506200178b565b600854821115620014c25760085491505b6000600267ffffffffffffffff811115620014e257620014e1620019c2565b5b604051908082528060200260200182016040528015620015115781602001602082028036833780820191505090505b50905030816000815181106200152c576200152b620021f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620015b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015da919062001d82565b81600181518110620015f157620015f0620021f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050620016403060805185620017bd60201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016200168695949392919062002336565b600060405180830381600087803b158015620016a157600080fd5b505af1158015620016b6573d6000803e3d6000fd5b505050507f9f4559507f9a7857bc303531a378b99e27e335776551e2db760e6d1734b9137c8347604051620016ed9291906200239a565b60405180910390a1600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516200173d90620023fc565b60006040518083038185875af1925050503d80600081146200177c576040519150601f19603f3d011682016040523d82523d6000602084013e62001781565b606091505b5050809250505050505b565b600081836200179d919062001e88565b905092915050565b60008183620017b5919062001e50565b905092915050565b620017d28383836001620017d760201b60201c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200184c5760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040162001843919062001ed3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620018c15760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401620018b8919062001ed3565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015620019b1578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051620019a89190620021d9565b60405180910390a35b50505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062001a3957607f821691505b60208210810362001a4f5762001a4e620019f1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262001ab97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001a7a565b62001ac5868362001a7a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001b1262001b0c62001b068462001add565b62001ae7565b62001add565b9050919050565b6000819050919050565b62001b2e8362001af1565b62001b4662001b3d8262001b19565b84845462001a87565b825550505050565b600090565b62001b5d62001b4e565b62001b6a81848462001b23565b505050565b5b8181101562001b925762001b8660008262001b53565b60018101905062001b70565b5050565b601f82111562001be15762001bab8162001a55565b62001bb68462001a6a565b8101602085101562001bc6578190505b62001bde62001bd58562001a6a565b83018262001b6f565b50505b505050565b600082821c905092915050565b600062001c066000198460080262001be6565b1980831691505092915050565b600062001c21838362001bf3565b9150826002028217905092915050565b62001c3c82620019b7565b67ffffffffffffffff81111562001c585762001c57620019c2565b5b62001c64825462001a20565b62001c7182828562001b96565b600060209050601f83116001811462001ca9576000841562001c94578287015190505b62001ca0858262001c13565b86555062001d10565b601f19841662001cb98662001a55565b60005b8281101562001ce35784890151825560018201915060208501945060208101905062001cbc565b8683101562001d03578489015162001cff601f89168262001bf3565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001d4a8262001d1d565b9050919050565b62001d5c8162001d3d565b811462001d6857600080fd5b50565b60008151905062001d7c8162001d51565b92915050565b60006020828403121562001d9b5762001d9a62001d18565b5b600062001dab8482850162001d6b565b91505092915050565b62001dbf8162001d3d565b82525050565b600060408201905062001ddc600083018562001db4565b62001deb602083018462001db4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062001e5d8262001add565b915062001e6a8362001add565b92508262001e7d5762001e7c62001df2565b5b828204905092915050565b600062001e958262001add565b915062001ea28362001add565b925082820262001eb28162001add565b9150828204841483151762001ecc5762001ecb62001e21565b5b5092915050565b600060208201905062001eea600083018462001db4565b92915050565b600082825260208201905092915050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600062001f3960168362001ef0565b915062001f468262001f01565b602082019050919050565b6000602082019050818103600083015262001f6c8162001f2a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f5f74784c696d69742e0000000000000000000000000000000000000000000000602082015250565b600062001fd160298362001ef0565b915062001fde8262001f73565b604082019050919050565b60006020820190508181036000830152620020048162001fc2565b9050919050565b6000620020188262001add565b9150620020258362001add565b925082820190508082111562002040576200203f62001e21565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006200207e60138362001ef0565b91506200208b8262002046565b602082019050919050565b60006020820190508181036000830152620020b1816200206f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f205f74784c696d69742e00000000000000000000000000000000000000000000602082015250565b600062002116602a8362001ef0565b91506200212382620020b8565b604082019050919050565b60006020820190508181036000830152620021498162002107565b9050919050565b60006200215d8262001add565b91506200216a8362001add565b925082820390508181111562002185576200218462001e21565b5b92915050565b620021968162001add565b82525050565b6000606082019050620021b3600083018662001db4565b620021c260208301856200218b565b620021d160408301846200218b565b949350505050565b6000602082019050620021f060008301846200218b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000620022506200224a620022448462002225565b62001ae7565b62001add565b9050919050565b62002262816200222f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6200229f8162001d3d565b82525050565b6000620022b3838362002294565b60208301905092915050565b6000602082019050919050565b6000620022d98262002268565b620022e5818562002273565b9350620022f28362002284565b8060005b83811015620023295781516200230d8882620022a5565b97506200231a83620022bf565b925050600181019050620022f6565b5085935050505092915050565b600060a0820190506200234d60008301886200218b565b6200235c602083018762002257565b8181036040830152620023708186620022cc565b905062002381606083018562001db4565b6200239060808301846200218b565b9695505050505050565b6000604082019050620023b160008301856200218b565b620023c060208301846200218b565b9392505050565b600081905092915050565b50565b6000620023e4600083620023c7565b9150620023f182620023d2565b600082019050919050565b60006200240982620023d5565b9150819050919050565b60805160a05161358c62002447600039600061081a01526000818161251a015281816125fb0152612622015261358c6000f3fe6080604052600436106101dc5760003560e01c806370a0823111610102578063af6727ed11610095578063f2fde38b11610064578063f2fde38b146106a9578063f32bff44146106d2578063f70959451461070f578063fdbe1d521461073a576101e3565b8063af6727ed14610601578063dd62ed3e1461062c578063e842921514610669578063f1d5f51714610680576101e3565b806395d89b41116100d157806395d89b4114610533578063a457c2d71461055e578063a9059cbb1461059b578063aea6727c146105d8576101e3565b806370a082311461048b578063715018a6146104c85780638da5cb5b146104df5780638ecfc7fb1461050a576101e3565b8063228eec791161017a57806335444cb41161014957806335444cb4146103cf57806339509351146103fa5780635c85974f1461043757806363553e7c14610460576101e3565b8063228eec791461031157806323b872dd1461033c578063313ce5671461037957806334aed899146103a4576101e3565b80631080f74d116101b65780631080f74d1461027b5780631593b622146102a657806318160ddd146102bd5780631c14774e146102e8576101e3565b806306fdde03146101e8578063095ea7b3146102135780630bc47bb314610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610763565b60405161020a919061283d565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906128f8565b6107f5565b6040516102479190612953565b60405180910390f35b34801561025c57600080fd5b50610265610818565b604051610272919061297d565b60405180910390f35b34801561028757600080fd5b5061029061083c565b60405161029d91906129a7565b60405180910390f35b3480156102b257600080fd5b506102bb610842565b005b3480156102c957600080fd5b506102d26108f6565b6040516102df91906129a7565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a91906129c2565b610900565b005b34801561031d57600080fd5b506103266109e7565b60405161033391906129a7565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e91906129ef565b6109ed565b6040516103709190612953565b60405180910390f35b34801561038557600080fd5b5061038e610a1c565b60405161039b9190612a5e565b60405180910390f35b3480156103b057600080fd5b506103b9610a25565b6040516103c691906129a7565b60405180910390f35b3480156103db57600080fd5b506103e4610a2b565b6040516103f19190612953565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c91906128f8565b610a3e565b60405161042e9190612953565b60405180910390f35b34801561044357600080fd5b5061045e600480360381019061045991906129c2565b610a75565b005b34801561046c57600080fd5b50610475610b79565b60405161048291906129a7565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190612a79565b610b7f565b6040516104bf91906129a7565b60405180910390f35b3480156104d457600080fd5b506104dd610bc7565b005b3480156104eb57600080fd5b506104f4610d1f565b604051610501919061297d565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190612a79565b610d49565b005b34801561053f57600080fd5b50610548610e24565b604051610555919061283d565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906128f8565b610eb6565b6040516105929190612953565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd91906128f8565b610f33565b6040516105cf9190612953565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612aa6565b610f56565b005b34801561060d57600080fd5b506106166110c4565b604051610623919061297d565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190612ae6565b6110ea565b60405161066091906129a7565b60405180910390f35b34801561067557600080fd5b5061067e611171565b005b34801561068c57600080fd5b506106a760048036038101906106a291906129c2565b611225565b005b3480156106b557600080fd5b506106d060048036038101906106cb9190612a79565b611329565b005b3480156106de57600080fd5b506106f960048036038101906106f49190612a79565b6114ef565b6040516107069190612953565b60405180910390f35b34801561071b57600080fd5b5061072461150f565b6040516107319190612953565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906129c2565b611522565b005b60606003805461077290612b55565b80601f016020809104026020016040519081016040528092919081815260200182805461079e90612b55565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b600080610800611609565b905061080d818585611611565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b61084a611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d090612bd2565b60405180910390fd5b6001600d60016101000a81548160ff021916908315150217905550565b6000600254905090565b610908611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612bd2565b60405180910390fd5b80600b819055506019600b5411156109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db90612c3e565b60405180910390fd5b50565b600b5481565b6000806109f8611609565b9050610a05858285611623565b610a108585856116b7565b60019150509392505050565b60006012905090565b600c5481565b600d60009054906101000a900460ff1681565b600080610a49611609565b9050610a6a818585610a5b85896110ea565b610a659190612c8d565b611611565b600191505092915050565b610a7d611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0390612bd2565b60405180910390fd5b6005811015610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612d0d565b60405180910390fd5b612710610b5b6108f6565b82610b669190612d2d565b610b709190612d9e565b60098190555050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bcf611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590612bd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d51611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd790612bd2565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054610e3390612b55565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5f90612b55565b8015610eac5780601f10610e8157610100808354040283529160200191610eac565b820191906000526020600020905b815481529060010190602001808311610e8f57829003601f168201915b5050505050905090565b600080610ec1611609565b90506000610ecf82866110ea565b905083811015610f1a578481856040517fa60f030c000000000000000000000000000000000000000000000000000000008152600401610f1193929190612dcf565b60405180910390fd5b610f278286868403611611565b60019250505092915050565b600080610f3e611609565b9050610f4b8185856116b7565b600191505092915050565b610f5e611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612bd2565b60405180910390fd5b6005821115611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890612e78565b60405180910390fd5b81811015611074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106b90612f0a565b60405180910390fd5b61271061107f6108f6565b8361108a9190612d2d565b6110949190612d9e565b6007819055506127106110a56108f6565b826110b09190612d2d565b6110ba9190612d9e565b6008819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611179611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612bd2565b60405180910390fd5b6000600d60006101000a81548160ff021916908315150217905550565b61122d611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390612bd2565b60405180910390fd5b6005811015611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790612f9c565b60405180910390fd5b61271061130b6108f6565b826113169190612d2d565b6113209190612d9e565b600a8190555050565b611331611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612bd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114269061302e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61152a611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090612bd2565b60405180910390fd5b80600c819055506019600c541115611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd9061309a565b60405180910390fd5b50565b600033905090565b61161e83838360016117ab565b505050565b600061162f84846110ea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116b157818110156116a1578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161169893929190612dcf565b60405180910390fd5b6116b0848484840360006117ab565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117295760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611720919061297d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361179b5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611792919061297d565b60405180910390fd5b6117a6838383611982565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361181d5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611814919061297d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611886919061297d565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561197c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161197391906129a7565b60405180910390a35b50505050565b6000810361199b5761199683836000612229565b612224565b600d60009054906101000a900460ff1615611e96576119b8610d1f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2657506119f6610d1f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a5f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a99575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ab25750600560149054906101000a900460ff16155b15611e9557600d60019054906101000a900460ff16611bac57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b6c5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613106565b60405180910390fd5b5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c4f5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cf657600954811115611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613198565b60405180910390fd5b600a54611ca583610b7f565b82611cb09190612c8d565b1115611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890613204565b60405180910390fd5b611e94565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d995750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de857600954811115611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda90613296565b60405180910390fd5b611e93565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e9257600a54611e4583610b7f565b82611e509190612c8d565b1115611e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8890613204565b60405180910390fd5b5b5b5b5b5b6000611ea130610b7f565b905060006007548210159050808015611ec75750600560149054906101000a900460ff16155b8015611f1d5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f735750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fc95750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200d576001600560146101000a81548160ff021916908315150217905550611ff161244e565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120c35750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120cd57600090505b6000811561221457601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561213057506000600c54115b156121645761215d606461214f600c548861278190919063ffffffff16565b61279790919063ffffffff16565b90506121f0565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121bf57506000600b54115b156121ef576121ec60646121de600b548861278190919063ffffffff16565b61279790919063ffffffff16565b90505b5b600081111561220557612204873083612229565b5b808561221191906132b6565b94505b61221f878787612229565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361227b57806002600082825461226f9190612c8d565b9250508190555061234e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612307578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016122fe93929190612dcf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361239757806002600082825403925050819055506123e4565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161244191906129a7565b60405180910390a3505050565b600061245930610b7f565b9050600080820361246b57505061277f565b60085482111561247b5760085491505b6000600267ffffffffffffffff811115612498576124976132ea565b5b6040519080825280602002602001820160405280156124c65781602001602082028036833780820191505090505b50905030816000815181106124de576124dd613319565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a7919061335d565b816001815181106125bb576125ba613319565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612620307f000000000000000000000000000000000000000000000000000000000000000085611611565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161268295949392919061348d565b600060405180830381600087803b15801561269c57600080fd5b505af11580156126b0573d6000803e3d6000fd5b505050507f9f4559507f9a7857bc303531a378b99e27e335776551e2db760e6d1734b9137c83476040516126e59291906134e7565b60405180910390a1600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161273390613541565b60006040518083038185875af1925050503d8060008114612770576040519150601f19603f3d011682016040523d82523d6000602084013e612775565b606091505b5050809250505050505b565b6000818361278f9190612d2d565b905092915050565b600081836127a59190612d9e565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127e75780820151818401526020810190506127cc565b60008484015250505050565b6000601f19601f8301169050919050565b600061280f826127ad565b61281981856127b8565b93506128298185602086016127c9565b612832816127f3565b840191505092915050565b600060208201905081810360008301526128578184612804565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061288f82612864565b9050919050565b61289f81612884565b81146128aa57600080fd5b50565b6000813590506128bc81612896565b92915050565b6000819050919050565b6128d5816128c2565b81146128e057600080fd5b50565b6000813590506128f2816128cc565b92915050565b6000806040838503121561290f5761290e61285f565b5b600061291d858286016128ad565b925050602061292e858286016128e3565b9150509250929050565b60008115159050919050565b61294d81612938565b82525050565b60006020820190506129686000830184612944565b92915050565b61297781612884565b82525050565b6000602082019050612992600083018461296e565b92915050565b6129a1816128c2565b82525050565b60006020820190506129bc6000830184612998565b92915050565b6000602082840312156129d8576129d761285f565b5b60006129e6848285016128e3565b91505092915050565b600080600060608486031215612a0857612a0761285f565b5b6000612a16868287016128ad565b9350506020612a27868287016128ad565b9250506040612a38868287016128e3565b9150509250925092565b600060ff82169050919050565b612a5881612a42565b82525050565b6000602082019050612a736000830184612a4f565b92915050565b600060208284031215612a8f57612a8e61285f565b5b6000612a9d848285016128ad565b91505092915050565b60008060408385031215612abd57612abc61285f565b5b6000612acb858286016128e3565b9250506020612adc858286016128e3565b9150509250929050565b60008060408385031215612afd57612afc61285f565b5b6000612b0b858286016128ad565b9250506020612b1c858286016128ad565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b6d57607f821691505b602082108103612b8057612b7f612b26565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bbc6020836127b8565b9150612bc782612b86565b602082019050919050565b60006020820190508181036000830152612beb81612baf565b9050919050565b7f427579206665652063616e2774206265206d6f7265207468616e203235250000600082015250565b6000612c28601e836127b8565b9150612c3382612bf2565b602082019050919050565b60006020820190508181036000830152612c5781612c1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c98826128c2565b9150612ca3836128c2565b9250828201905080821115612cbb57612cba612c5e565b5b92915050565b7f4d61782074782063616e2774206265206c657373207468616e20302e35250000600082015250565b6000612cf7601e836127b8565b9150612d0282612cc1565b602082019050919050565b60006020820190508181036000830152612d2681612cea565b9050919050565b6000612d38826128c2565b9150612d43836128c2565b9250828202612d51816128c2565b91508282048414831517612d6857612d67612c5e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612da9826128c2565b9150612db4836128c2565b925082612dc457612dc3612d6f565b5b828204905092915050565b6000606082019050612de4600083018661296e565b612df16020830185612998565b612dfe6040830184612998565b949350505050565b7f4d696e20737761706261636b2076616c75652063616e2774206265206d6f726560008201527f207468616e20302e352500000000000000000000000000000000000000000000602082015250565b6000612e62602a836127b8565b9150612e6d82612e06565b604082019050919050565b60006020820190508181036000830152612e9181612e55565b9050919050565b7f4d617820737761706261636b2076616c75652063616e2774206265206c6f776560008201527f72207468616e20746865206d696e696d756e0000000000000000000000000000602082015250565b6000612ef46032836127b8565b9150612eff82612e98565b604082019050919050565b60006020820190508181036000830152612f2381612ee7565b9050919050565b7f4d61782077616c6c65742063616e2774206265206c657373207468616e20302e60008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f866022836127b8565b9150612f9182612f2a565b604082019050919050565b60006020820190508181036000830152612fb581612f79565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130186026836127b8565b915061302382612fbc565b604082019050919050565b600060208201905081810360008301526130478161300b565b9050919050565b7f53656c6c206665652063616e2774206265206d6f7265207468616e2032352500600082015250565b6000613084601f836127b8565b915061308f8261304e565b602082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006130f06016836127b8565b91506130fb826130ba565b602082019050919050565b6000602082019050818103600083015261311f816130e3565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f5f74784c696d69742e0000000000000000000000000000000000000000000000602082015250565b60006131826029836127b8565b915061318d82613126565b604082019050919050565b600060208201905081810360008301526131b181613175565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006131ee6013836127b8565b91506131f9826131b8565b602082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f205f74784c696d69742e00000000000000000000000000000000000000000000602082015250565b6000613280602a836127b8565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b60006132c1826128c2565b91506132cc836128c2565b92508282039050818111156132e4576132e3612c5e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061335781612896565b92915050565b6000602082840312156133735761337261285f565b5b600061338184828501613348565b91505092915050565b6000819050919050565b6000819050919050565b60006133b96133b46133af8461338a565b613394565b6128c2565b9050919050565b6133c98161339e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61340481612884565b82525050565b600061341683836133fb565b60208301905092915050565b6000602082019050919050565b600061343a826133cf565b61344481856133da565b935061344f836133eb565b8060005b83811015613480578151613467888261340a565b975061347283613422565b925050600181019050613453565b5085935050505092915050565b600060a0820190506134a26000830188612998565b6134af60208301876133c0565b81810360408301526134c1818661342f565b90506134d0606083018561296e565b6134dd6080830184612998565b9695505050505050565b60006040820190506134fc6000830185612998565b6135096020830184612998565b9392505050565b600081905092915050565b50565b600061352b600083613510565b91506135368261351b565b600082019050919050565b600061354c8261351e565b915081905091905056fea2646970667358221220297df8ddf24e396b06ac6f5d62fe044d8476f88f356ab9e6ce7350fcffe444c364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806370a0823111610102578063af6727ed11610095578063f2fde38b11610064578063f2fde38b146106a9578063f32bff44146106d2578063f70959451461070f578063fdbe1d521461073a576101e3565b8063af6727ed14610601578063dd62ed3e1461062c578063e842921514610669578063f1d5f51714610680576101e3565b806395d89b41116100d157806395d89b4114610533578063a457c2d71461055e578063a9059cbb1461059b578063aea6727c146105d8576101e3565b806370a082311461048b578063715018a6146104c85780638da5cb5b146104df5780638ecfc7fb1461050a576101e3565b8063228eec791161017a57806335444cb41161014957806335444cb4146103cf57806339509351146103fa5780635c85974f1461043757806363553e7c14610460576101e3565b8063228eec791461031157806323b872dd1461033c578063313ce5671461037957806334aed899146103a4576101e3565b80631080f74d116101b65780631080f74d1461027b5780631593b622146102a657806318160ddd146102bd5780631c14774e146102e8576101e3565b806306fdde03146101e8578063095ea7b3146102135780630bc47bb314610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610763565b60405161020a919061283d565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906128f8565b6107f5565b6040516102479190612953565b60405180910390f35b34801561025c57600080fd5b50610265610818565b604051610272919061297d565b60405180910390f35b34801561028757600080fd5b5061029061083c565b60405161029d91906129a7565b60405180910390f35b3480156102b257600080fd5b506102bb610842565b005b3480156102c957600080fd5b506102d26108f6565b6040516102df91906129a7565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a91906129c2565b610900565b005b34801561031d57600080fd5b506103266109e7565b60405161033391906129a7565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e91906129ef565b6109ed565b6040516103709190612953565b60405180910390f35b34801561038557600080fd5b5061038e610a1c565b60405161039b9190612a5e565b60405180910390f35b3480156103b057600080fd5b506103b9610a25565b6040516103c691906129a7565b60405180910390f35b3480156103db57600080fd5b506103e4610a2b565b6040516103f19190612953565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c91906128f8565b610a3e565b60405161042e9190612953565b60405180910390f35b34801561044357600080fd5b5061045e600480360381019061045991906129c2565b610a75565b005b34801561046c57600080fd5b50610475610b79565b60405161048291906129a7565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190612a79565b610b7f565b6040516104bf91906129a7565b60405180910390f35b3480156104d457600080fd5b506104dd610bc7565b005b3480156104eb57600080fd5b506104f4610d1f565b604051610501919061297d565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190612a79565b610d49565b005b34801561053f57600080fd5b50610548610e24565b604051610555919061283d565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906128f8565b610eb6565b6040516105929190612953565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd91906128f8565b610f33565b6040516105cf9190612953565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612aa6565b610f56565b005b34801561060d57600080fd5b506106166110c4565b604051610623919061297d565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190612ae6565b6110ea565b60405161066091906129a7565b60405180910390f35b34801561067557600080fd5b5061067e611171565b005b34801561068c57600080fd5b506106a760048036038101906106a291906129c2565b611225565b005b3480156106b557600080fd5b506106d060048036038101906106cb9190612a79565b611329565b005b3480156106de57600080fd5b506106f960048036038101906106f49190612a79565b6114ef565b6040516107069190612953565b60405180910390f35b34801561071b57600080fd5b5061072461150f565b6040516107319190612953565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906129c2565b611522565b005b60606003805461077290612b55565b80601f016020809104026020016040519081016040528092919081815260200182805461079e90612b55565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b600080610800611609565b905061080d818585611611565b600191505092915050565b7f000000000000000000000000ce454e71af6a7d0865848d97c455ab7aaf3eafc581565b600a5481565b61084a611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d090612bd2565b60405180910390fd5b6001600d60016101000a81548160ff021916908315150217905550565b6000600254905090565b610908611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612bd2565b60405180910390fd5b80600b819055506019600b5411156109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db90612c3e565b60405180910390fd5b50565b600b5481565b6000806109f8611609565b9050610a05858285611623565b610a108585856116b7565b60019150509392505050565b60006012905090565b600c5481565b600d60009054906101000a900460ff1681565b600080610a49611609565b9050610a6a818585610a5b85896110ea565b610a659190612c8d565b611611565b600191505092915050565b610a7d611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0390612bd2565b60405180910390fd5b6005811015610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612d0d565b60405180910390fd5b612710610b5b6108f6565b82610b669190612d2d565b610b709190612d9e565b60098190555050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bcf611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590612bd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d51611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd790612bd2565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054610e3390612b55565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5f90612b55565b8015610eac5780601f10610e8157610100808354040283529160200191610eac565b820191906000526020600020905b815481529060010190602001808311610e8f57829003601f168201915b5050505050905090565b600080610ec1611609565b90506000610ecf82866110ea565b905083811015610f1a578481856040517fa60f030c000000000000000000000000000000000000000000000000000000008152600401610f1193929190612dcf565b60405180910390fd5b610f278286868403611611565b60019250505092915050565b600080610f3e611609565b9050610f4b8185856116b7565b600191505092915050565b610f5e611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612bd2565b60405180910390fd5b6005821115611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890612e78565b60405180910390fd5b81811015611074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106b90612f0a565b60405180910390fd5b61271061107f6108f6565b8361108a9190612d2d565b6110949190612d9e565b6007819055506127106110a56108f6565b826110b09190612d2d565b6110ba9190612d9e565b6008819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611179611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612bd2565b60405180910390fd5b6000600d60006101000a81548160ff021916908315150217905550565b61122d611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390612bd2565b60405180910390fd5b6005811015611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790612f9c565b60405180910390fd5b61271061130b6108f6565b826113169190612d2d565b6113209190612d9e565b600a8190555050565b611331611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612bd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114269061302e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61152a611609565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090612bd2565b60405180910390fd5b80600c819055506019600c541115611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd9061309a565b60405180910390fd5b50565b600033905090565b61161e83838360016117ab565b505050565b600061162f84846110ea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116b157818110156116a1578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161169893929190612dcf565b60405180910390fd5b6116b0848484840360006117ab565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117295760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611720919061297d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361179b5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611792919061297d565b60405180910390fd5b6117a6838383611982565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361181d5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611814919061297d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611886919061297d565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561197c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161197391906129a7565b60405180910390a35b50505050565b6000810361199b5761199683836000612229565b612224565b600d60009054906101000a900460ff1615611e96576119b8610d1f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2657506119f6610d1f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a5f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a99575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ab25750600560149054906101000a900460ff16155b15611e9557600d60019054906101000a900460ff16611bac57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b6c5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613106565b60405180910390fd5b5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c4f5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cf657600954811115611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613198565b60405180910390fd5b600a54611ca583610b7f565b82611cb09190612c8d565b1115611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890613204565b60405180910390fd5b611e94565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d995750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de857600954811115611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda90613296565b60405180910390fd5b611e93565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e9257600a54611e4583610b7f565b82611e509190612c8d565b1115611e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8890613204565b60405180910390fd5b5b5b5b5b5b6000611ea130610b7f565b905060006007548210159050808015611ec75750600560149054906101000a900460ff16155b8015611f1d5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f735750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fc95750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200d576001600560146101000a81548160ff021916908315150217905550611ff161244e565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120c35750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120cd57600090505b6000811561221457601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561213057506000600c54115b156121645761215d606461214f600c548861278190919063ffffffff16565b61279790919063ffffffff16565b90506121f0565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121bf57506000600b54115b156121ef576121ec60646121de600b548861278190919063ffffffff16565b61279790919063ffffffff16565b90505b5b600081111561220557612204873083612229565b5b808561221191906132b6565b94505b61221f878787612229565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361227b57806002600082825461226f9190612c8d565b9250508190555061234e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612307578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016122fe93929190612dcf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361239757806002600082825403925050819055506123e4565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161244191906129a7565b60405180910390a3505050565b600061245930610b7f565b9050600080820361246b57505061277f565b60085482111561247b5760085491505b6000600267ffffffffffffffff811115612498576124976132ea565b5b6040519080825280602002602001820160405280156124c65781602001602082028036833780820191505090505b50905030816000815181106124de576124dd613319565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a7919061335d565b816001815181106125bb576125ba613319565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612620307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d85611611565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161268295949392919061348d565b600060405180830381600087803b15801561269c57600080fd5b505af11580156126b0573d6000803e3d6000fd5b505050507f9f4559507f9a7857bc303531a378b99e27e335776551e2db760e6d1734b9137c83476040516126e59291906134e7565b60405180910390a1600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161273390613541565b60006040518083038185875af1925050503d8060008114612770576040519150601f19603f3d011682016040523d82523d6000602084013e612775565b606091505b5050809250505050505b565b6000818361278f9190612d2d565b905092915050565b600081836127a59190612d9e565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127e75780820151818401526020810190506127cc565b60008484015250505050565b6000601f19601f8301169050919050565b600061280f826127ad565b61281981856127b8565b93506128298185602086016127c9565b612832816127f3565b840191505092915050565b600060208201905081810360008301526128578184612804565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061288f82612864565b9050919050565b61289f81612884565b81146128aa57600080fd5b50565b6000813590506128bc81612896565b92915050565b6000819050919050565b6128d5816128c2565b81146128e057600080fd5b50565b6000813590506128f2816128cc565b92915050565b6000806040838503121561290f5761290e61285f565b5b600061291d858286016128ad565b925050602061292e858286016128e3565b9150509250929050565b60008115159050919050565b61294d81612938565b82525050565b60006020820190506129686000830184612944565b92915050565b61297781612884565b82525050565b6000602082019050612992600083018461296e565b92915050565b6129a1816128c2565b82525050565b60006020820190506129bc6000830184612998565b92915050565b6000602082840312156129d8576129d761285f565b5b60006129e6848285016128e3565b91505092915050565b600080600060608486031215612a0857612a0761285f565b5b6000612a16868287016128ad565b9350506020612a27868287016128ad565b9250506040612a38868287016128e3565b9150509250925092565b600060ff82169050919050565b612a5881612a42565b82525050565b6000602082019050612a736000830184612a4f565b92915050565b600060208284031215612a8f57612a8e61285f565b5b6000612a9d848285016128ad565b91505092915050565b60008060408385031215612abd57612abc61285f565b5b6000612acb858286016128e3565b9250506020612adc858286016128e3565b9150509250929050565b60008060408385031215612afd57612afc61285f565b5b6000612b0b858286016128ad565b9250506020612b1c858286016128ad565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b6d57607f821691505b602082108103612b8057612b7f612b26565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bbc6020836127b8565b9150612bc782612b86565b602082019050919050565b60006020820190508181036000830152612beb81612baf565b9050919050565b7f427579206665652063616e2774206265206d6f7265207468616e203235250000600082015250565b6000612c28601e836127b8565b9150612c3382612bf2565b602082019050919050565b60006020820190508181036000830152612c5781612c1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c98826128c2565b9150612ca3836128c2565b9250828201905080821115612cbb57612cba612c5e565b5b92915050565b7f4d61782074782063616e2774206265206c657373207468616e20302e35250000600082015250565b6000612cf7601e836127b8565b9150612d0282612cc1565b602082019050919050565b60006020820190508181036000830152612d2681612cea565b9050919050565b6000612d38826128c2565b9150612d43836128c2565b9250828202612d51816128c2565b91508282048414831517612d6857612d67612c5e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612da9826128c2565b9150612db4836128c2565b925082612dc457612dc3612d6f565b5b828204905092915050565b6000606082019050612de4600083018661296e565b612df16020830185612998565b612dfe6040830184612998565b949350505050565b7f4d696e20737761706261636b2076616c75652063616e2774206265206d6f726560008201527f207468616e20302e352500000000000000000000000000000000000000000000602082015250565b6000612e62602a836127b8565b9150612e6d82612e06565b604082019050919050565b60006020820190508181036000830152612e9181612e55565b9050919050565b7f4d617820737761706261636b2076616c75652063616e2774206265206c6f776560008201527f72207468616e20746865206d696e696d756e0000000000000000000000000000602082015250565b6000612ef46032836127b8565b9150612eff82612e98565b604082019050919050565b60006020820190508181036000830152612f2381612ee7565b9050919050565b7f4d61782077616c6c65742063616e2774206265206c657373207468616e20302e60008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f866022836127b8565b9150612f9182612f2a565b604082019050919050565b60006020820190508181036000830152612fb581612f79565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130186026836127b8565b915061302382612fbc565b604082019050919050565b600060208201905081810360008301526130478161300b565b9050919050565b7f53656c6c206665652063616e2774206265206d6f7265207468616e2032352500600082015250565b6000613084601f836127b8565b915061308f8261304e565b602082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006130f06016836127b8565b91506130fb826130ba565b602082019050919050565b6000602082019050818103600083015261311f816130e3565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f5f74784c696d69742e0000000000000000000000000000000000000000000000602082015250565b60006131826029836127b8565b915061318d82613126565b604082019050919050565b600060208201905081810360008301526131b181613175565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006131ee6013836127b8565b91506131f9826131b8565b602082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f205f74784c696d69742e00000000000000000000000000000000000000000000602082015250565b6000613280602a836127b8565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b60006132c1826128c2565b91506132cc836128c2565b92508282039050818111156132e4576132e3612c5e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061335781612896565b92915050565b6000602082840312156133735761337261285f565b5b600061338184828501613348565b91505092915050565b6000819050919050565b6000819050919050565b60006133b96133b46133af8461338a565b613394565b6128c2565b9050919050565b6133c98161339e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61340481612884565b82525050565b600061341683836133fb565b60208301905092915050565b6000602082019050919050565b600061343a826133cf565b61344481856133da565b935061344f836133eb565b8060005b83811015613480578151613467888261340a565b975061347283613422565b925050600181019050613453565b5085935050505092915050565b600060a0820190506134a26000830188612998565b6134af60208301876133c0565b81810360408301526134c1818661342f565b90506134d0606083018561296e565b6134dd6080830184612998565b9695505050505050565b60006040820190506134fc6000830185612998565b6135096020830184612998565b9392505050565b600081905092915050565b50565b600061352b600083613510565b91506135368261351b565b600082019050919050565b600061354c8261351e565b915081905091905056fea2646970667358221220297df8ddf24e396b06ac6f5d62fe044d8476f88f356ab9e6ce7350fcffe444c364736f6c63430008130033

Deployed Bytecode Sourcemap

17300:7585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4266:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5158:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17425:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17647:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19342:82;;;;;;;;;;;;;:::i;:::-;;4560:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19566:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17683:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5381:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4468:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17715:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17750:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5672:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20008:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17617:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4667:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1558:148;;;;;;;;;;;;;:::i;:::-;;916:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19432:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4365:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5943:595;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4793:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20406:440;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17497:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4983:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19918:82;;;;;;;;;;;;;:::i;:::-;;20195:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1861:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17939:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17788:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19739:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4266:91;4311:13;4344:5;4337:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4266:91;:::o;5158:215::-;5256:4;5273:13;5289:12;:10;:12::i;:::-;5273:28;;5312:31;5321:5;5328:7;5337:5;5312:8;:31::i;:::-;5361:4;5354:11;;;5158:215;;;;:::o;17425:33::-;;;:::o;17647:27::-;;;;:::o;19342:82::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19412:4:::1;19394:15;;:22;;;;;;;;;;;;;;;;;;19342:82::o:0;4560:99::-;4612:7;4639:12;;4632:19;;4560:99;:::o;19566:165::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19647:6:::1;19634:10;:19;;;;19686:2;19672:10;;:16;;19664:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19566:165:::0;:::o;17683:25::-;;;;:::o;5381:283::-;5502:4;5519:15;5537:12;:10;:12::i;:::-;5519:30;;5560:37;5576:4;5582:7;5591:5;5560:15;:37::i;:::-;5608:26;5618:4;5624:2;5628:5;5608:9;:26::i;:::-;5652:4;5645:11;;;5381:283;;;;;:::o;4468:84::-;4517:5;4542:2;4535:9;;4468:84;:::o;17715:26::-;;;;:::o;17750:31::-;;;;;;;;;;;;;:::o;5672:263::-;5785:4;5802:13;5818:12;:10;:12::i;:::-;5802:28;;5841:64;5850:5;5857:7;5894:10;5866:25;5876:5;5883:7;5866:9;:25::i;:::-;:38;;;;:::i;:::-;5841:8;:64::i;:::-;5923:4;5916:11;;;5672:263;;;;:::o;20008:179::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20090:1:::1;20081:5;:10;;20073:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20174:5;20157:13;:11;:13::i;:::-;20149:5;:21;;;;:::i;:::-;20148:31;;;;:::i;:::-;20137:8;:42;;;;20008:179:::0;:::o;17617:23::-;;;;:::o;4667:118::-;4732:7;4759:9;:18;4769:7;4759:18;;;;;;;;;;;;;;;;4752:25;;4667:118;;;:::o;1558:148::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1665:1:::1;1628:40;;1649:6;;;;;;;;;;;1628:40;;;;;;;;;;;;1696:1;1679:6;;:19;;;;;;;;;;;;;;;;;;1558:148::o:0;916:79::-;954:7;981:6;;;;;;;;;;;974:13;;916:79;:::o;19432:126::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19533:17:::1;19516:14;;:34;;;;;;;;;;;;;;;;;;19432:126:::0;:::o;4365:95::-;4412:13;4445:7;4438:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4365:95;:::o;5943:595::-;6063:4;6080:13;6096:12;:10;:12::i;:::-;6080:28;;6119:24;6146:25;6156:5;6163:7;6146:9;:25::i;:::-;6119:52;;6205:17;6186:16;:36;6182:216;;;6293:7;6319:16;6354:17;6246:140;;;;;;;;;;;;;:::i;:::-;;;;;;;;6182:216;6433:62;6442:5;6449:7;6477:17;6458:16;:36;6433:8;:62::i;:::-;6526:4;6519:11;;;;5943:595;;;;:::o;4793:182::-;4862:4;4879:13;4895:12;:10;:12::i;:::-;4879:28;;4918:27;4928:5;4935:2;4939:5;4918:9;:27::i;:::-;4963:4;4956:11;;;4793:182;;;;:::o;20406:440::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20537:1:::1;20527:6;:11;;20519:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20628:6;20618;:16;;20596:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;20770:5;20753:13;:11;:13::i;:::-;20744:6;:22;;;;:::i;:::-;20743:32;;;;:::i;:::-;20723:17;:52;;;;20833:5;20816:13;:11;:13::i;:::-;20807:6;:22;;;;:::i;:::-;20806:32;;;;:::i;:::-;20786:17;:52;;;;20406:440:::0;;:::o;17497:29::-;;;;;;;;;;;;;:::o;4983:167::-;5088:7;5115:11;:18;5127:5;5115:18;;;;;;;;;;;;;;;:27;5134:7;5115:27;;;;;;;;;;;;;;;;5108:34;;4983:167;;;;:::o;19918:82::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19987:5:::1;19972:12;;:20;;;;;;;;;;;;;;;;;;19918:82::o:0;20195:203::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20289:1:::1;20276:9;:14;;20268:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20385:5;20368:13;:11;:13::i;:::-;20356:9;:25;;;;:::i;:::-;20355:35;;;;:::i;:::-;20340:12;:50;;;;20195:203:::0;:::o;1861:281::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1984:1:::1;1964:22;;:8;:22;;::::0;1942:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2097:8;2068:38;;2089:6;;;;;;;;;;;2068:38;;;;;;;;;;;;2126:8;2117:6;;:17;;;;;;;;;;;;;;;;;;1861:281:::0;:::o;17939:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;17788:35::-;;;;;;;;;;;;;:::o;19739:171::-;1138:12;:10;:12::i;:::-;1128:22;;:6;;;;;;;;;;;:22;;;1120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19823:7:::1;19809:11;:21;;;;19864:2;19849:11;;:17;;19841:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19739:171:::0;:::o;186:98::-;239:7;266:10;259:17;;186:98;:::o;8445:130::-;8530:37;8539:5;8546:7;8555:5;8562:4;8530:8;:37::i;:::-;8445:130;;;:::o;9077:603::-;9211:24;9238:25;9248:5;9255:7;9238:9;:25::i;:::-;9211:52;;9298:17;9278:16;:37;9274:399;;9355:5;9336:16;:24;9332:214;;;9437:7;9467:16;9506:5;9388:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;9332:214;9589:57;9598:5;9605:7;9633:5;9614:16;:24;9640:5;9589:8;:57::i;:::-;9274:399;9200:480;9077:603;;;:::o;6546:308::-;6646:1;6630:18;;:4;:18;;;6626:88;;6699:1;6672:30;;;;;;;;;;;:::i;:::-;;;;;;;;6626:88;6742:1;6728:16;;:2;:16;;;6724:88;;6797:1;6768:32;;;;;;;;;;;:::i;:::-;;;;;;;;6724:88;6822:24;6830:4;6836:2;6840:5;6822:7;:24::i;:::-;6546:308;;;:::o;8583:486::-;8756:1;8739:19;;:5;:19;;;8735:91;;8811:1;8782:32;;;;;;;;;;;:::i;:::-;;;;;;;;8735:91;8859:1;8840:21;;:7;:21;;;8836:92;;8913:1;8885:31;;;;;;;;;;;:::i;:::-;;;;;;;;8836:92;8968:5;8938:11;:18;8950:5;8938:18;;;;;;;;;;;;;;;:27;8957:7;8938:27;;;;;;;;;;;;;;;:35;;;;8988:9;8984:78;;;9035:7;9019:31;;9028:5;9019:31;;;9044:5;9019:31;;;;;;:::i;:::-;;;;;;;;8984:78;8583:486;;;;:::o;21964:2918::-;22100:1;22090:6;:11;22086:91;;22118:26;22132:4;22138:2;22142:1;22118:13;:26::i;:::-;22159:7;;22086:91;22193:12;;;;;;;;;;;22189:1432;;;22252:7;:5;:7::i;:::-;22244:15;;:4;:15;;;;:49;;;;;22286:7;:5;:7::i;:::-;22280:13;;:2;:13;;;;22244:49;:86;;;;;22328:1;22314:16;;:2;:16;;;;22244:86;:128;;;;;22365:6;22351:21;;:2;:21;;;;22244:128;:158;;;;;22394:8;;;;;;;;;;;22393:9;22244:158;22222:1388;;;22442:15;;;;;;;;;;;22437:203;;22516:8;:14;22525:4;22516:14;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;22534:8;:12;22543:2;22534:12;;;;;;;;;;;;;;;;;;;;;;;;;22516:30;22482:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;22437:203;22690:9;:15;22700:4;22690:15;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;22710:17;:21;22728:2;22710:21;;;;;;;;;;;;;;;;;;;;;;;;;22709:22;22690:41;22686:909;;;22800:8;;22790:6;:18;;22756:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;22984:12;;22967:13;22977:2;22967:9;:13::i;:::-;22958:6;:22;;;;:::i;:::-;:38;;22924:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;22686:909;;;23143:9;:13;23153:2;23143:13;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;23161:17;:23;23179:4;23161:23;;;;;;;;;;;;;;;;;;;;;;;;;23160:24;23143:41;23139:456;;;23253:8;;23243:6;:18;;23209:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;23139:456;;;23386:17;:21;23404:2;23386:21;;;;;;;;;;;;;;;;;;;;;;;;;23381:214;;23492:12;;23475:13;23485:2;23475:9;:13::i;:::-;23466:6;:22;;;;:::i;:::-;:38;;23432:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;23381:214;23139:456;22686:909;22222:1388;22189:1432;23633:28;23664:24;23682:4;23664:9;:24::i;:::-;23633:55;;23701:12;23740:17;;23716:20;:41;;23701:56;;23788:7;:33;;;;;23813:8;;;;;;;;;;;23812:9;23788:33;:66;;;;;23839:9;:15;23849:4;23839:15;;;;;;;;;;;;;;;;;;;;;;;;;23838:16;23788:66;:98;;;;;23872:8;:14;23881:4;23872:14;;;;;;;;;;;;;;;;;;;;;;;;;23871:15;23788:98;:128;;;;;23904:8;:12;23913:2;23904:12;;;;;;;;;;;;;;;;;;;;;;;;;23903:13;23788:128;23770:271;;;23954:4;23943:8;;:15;;;;;;;;;;;;;;;;;;23975:21;:19;:21::i;:::-;24024:5;24013:8;;:16;;;;;;;;;;;;;;;;;;23770:271;24053:12;24069:8;;;;;;;;;;;24068:9;24053:24;;24179:8;:14;24188:4;24179:14;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;24197:8;:12;24206:2;24197:12;;;;;;;;;;;;;;;;;;;;;;;;;24179:30;24175:78;;;24236:5;24226:15;;24175:78;24265:12;24370:7;24366:465;;;24422:9;:13;24432:2;24422:13;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;24453:1;24439:11;;:15;24422:32;24418:266;;;24482:32;24510:3;24482:23;24493:11;;24482:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;24475:39;;24418:266;;;24576:9;:15;24586:4;24576:15;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;24608:1;24595:10;;:14;24576:33;24572:112;;;24637:31;24664:3;24637:22;24648:10;;24637:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;24630:38;;24572:112;24418:266;24711:1;24704:4;:8;24700:89;;;24733:40;24747:4;24761;24768;24733:13;:40::i;:::-;24700:89;24815:4;24805:14;;;;;:::i;:::-;;;24366:465;24843:31;24857:4;24863:2;24867:6;24843:13;:31::i;:::-;22075:2807;;;;21964:2918;;;;:::o;6862:1135::-;6968:1;6952:18;;:4;:18;;;6948:552;;7106:5;7090:12;;:21;;;;;;;:::i;:::-;;;;;;;;6948:552;;;7144:19;7166:9;:15;7176:4;7166:15;;;;;;;;;;;;;;;;7144:37;;7214:5;7200:11;:19;7196:117;;;7272:4;7278:11;7291:5;7247:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;7196:117;7468:5;7454:11;:19;7436:9;:15;7446:4;7436:15;;;;;;;;;;;;;;;:37;;;;7129:371;6948:552;7530:1;7516:16;;:2;:16;;;7512:435;;7698:5;7682:12;;:21;;;;;;;;;;;7512:435;;;7915:5;7898:9;:13;7908:2;7898:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;7512:435;7979:2;7964:25;;7973:4;7964:25;;;7983:5;7964:25;;;;;;:::i;:::-;;;;;;;;6862:1135;;;:::o;21017:939::-;21067:20;21090:24;21108:4;21090:9;:24::i;:::-;21067:47;;21125:12;21170:1;21154:12;:17;21150:56;;21188:7;;;;21150:56;21237:17;;21222:12;:32;21218:97;;;21286:17;;21271:32;;21218:97;21327:21;21365:1;21351:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21327:40;;21396:4;21378;21383:1;21378:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21422:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21412:4;21417:1;21412:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;21452:58;21469:4;21484:10;21497:12;21452:8;:58::i;:::-;21549:10;:61;;;21625:12;21652:1;21696:4;21723;21743:15;21549:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21787:48;21799:12;21813:21;21787:48;;;;;;;:::i;:::-;;;;;;;;21870:14;;;;;;;;;;;21862:28;;21912:21;21862:86;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21848:100;;;;;21056:900;;;21017:939;:::o;11164:98::-;11222:7;11253:1;11249;:5;;;;:::i;:::-;11242:12;;11164:98;;;;:::o;11270:::-;11328:7;11359:1;11355;:5;;;;:::i;:::-;11348:12;;11270:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:329::-;4209:6;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4150:329;;;;:::o;4485:619::-;4562:6;4570;4578;4627:2;4615:9;4606:7;4602:23;4598:32;4595:119;;;4633:79;;:::i;:::-;4595:119;4753:1;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4724:117;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;4485:619;;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:::-;6423:6;6431;6480:2;6468:9;6459:7;6455:23;6451:32;6448:119;;;6486:79;;:::i;:::-;6448:119;6606:1;6631:53;6676:7;6667:6;6656:9;6652:22;6631:53;:::i;:::-;6621:63;;6577:117;6733:2;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6704:118;6355:474;;;;;:::o;6835:180::-;6883:77;6880:1;6873:88;6980:4;6977:1;6970:15;7004:4;7001:1;6994:15;7021:320;7065:6;7102:1;7096:4;7092:12;7082:22;;7149:1;7143:4;7139:12;7170:18;7160:81;;7226:4;7218:6;7214:17;7204:27;;7160:81;7288:2;7280:6;7277:14;7257:18;7254:38;7251:84;;7307:18;;:::i;:::-;7251:84;7072:269;7021:320;;;:::o;7347:182::-;7487:34;7483:1;7475:6;7471:14;7464:58;7347:182;:::o;7535:366::-;7677:3;7698:67;7762:2;7757:3;7698:67;:::i;:::-;7691:74;;7774:93;7863:3;7774:93;:::i;:::-;7892:2;7887:3;7883:12;7876:19;;7535:366;;;:::o;7907:419::-;8073:4;8111:2;8100:9;8096:18;8088:26;;8160:9;8154:4;8150:20;8146:1;8135:9;8131:17;8124:47;8188:131;8314:4;8188:131;:::i;:::-;8180:139;;7907:419;;;:::o;8332:180::-;8472:32;8468:1;8460:6;8456:14;8449:56;8332:180;:::o;8518:366::-;8660:3;8681:67;8745:2;8740:3;8681:67;:::i;:::-;8674:74;;8757:93;8846:3;8757:93;:::i;:::-;8875:2;8870:3;8866:12;8859:19;;8518:366;;;:::o;8890:419::-;9056:4;9094:2;9083:9;9079:18;9071:26;;9143:9;9137:4;9133:20;9129:1;9118:9;9114:17;9107:47;9171:131;9297:4;9171:131;:::i;:::-;9163:139;;8890:419;;;:::o;9315:180::-;9363:77;9360:1;9353:88;9460:4;9457:1;9450:15;9484:4;9481:1;9474:15;9501:191;9541:3;9560:20;9578:1;9560:20;:::i;:::-;9555:25;;9594:20;9612:1;9594:20;:::i;:::-;9589:25;;9637:1;9634;9630:9;9623:16;;9658:3;9655:1;9652:10;9649:36;;;9665:18;;:::i;:::-;9649:36;9501:191;;;;:::o;9698:180::-;9838:32;9834:1;9826:6;9822:14;9815:56;9698:180;:::o;9884:366::-;10026:3;10047:67;10111:2;10106:3;10047:67;:::i;:::-;10040:74;;10123:93;10212:3;10123:93;:::i;:::-;10241:2;10236:3;10232:12;10225:19;;9884:366;;;:::o;10256:419::-;10422:4;10460:2;10449:9;10445:18;10437:26;;10509:9;10503:4;10499:20;10495:1;10484:9;10480:17;10473:47;10537:131;10663:4;10537:131;:::i;:::-;10529:139;;10256:419;;;:::o;10681:410::-;10721:7;10744:20;10762:1;10744:20;:::i;:::-;10739:25;;10778:20;10796:1;10778:20;:::i;:::-;10773:25;;10833:1;10830;10826:9;10855:30;10873:11;10855:30;:::i;:::-;10844:41;;11034:1;11025:7;11021:15;11018:1;11015:22;10995:1;10988:9;10968:83;10945:139;;11064:18;;:::i;:::-;10945:139;10729:362;10681:410;;;;:::o;11097:180::-;11145:77;11142:1;11135:88;11242:4;11239:1;11232:15;11266:4;11263:1;11256:15;11283:185;11323:1;11340:20;11358:1;11340:20;:::i;:::-;11335:25;;11374:20;11392:1;11374:20;:::i;:::-;11369:25;;11413:1;11403:35;;11418:18;;:::i;:::-;11403:35;11460:1;11457;11453:9;11448:14;;11283:185;;;;:::o;11474:442::-;11623:4;11661:2;11650:9;11646:18;11638:26;;11674:71;11742:1;11731:9;11727:17;11718:6;11674:71;:::i;:::-;11755:72;11823:2;11812:9;11808:18;11799:6;11755:72;:::i;:::-;11837;11905:2;11894:9;11890:18;11881:6;11837:72;:::i;:::-;11474:442;;;;;;:::o;11922:229::-;12062:34;12058:1;12050:6;12046:14;12039:58;12131:12;12126:2;12118:6;12114:15;12107:37;11922:229;:::o;12157:366::-;12299:3;12320:67;12384:2;12379:3;12320:67;:::i;:::-;12313:74;;12396:93;12485:3;12396:93;:::i;:::-;12514:2;12509:3;12505:12;12498:19;;12157:366;;;:::o;12529:419::-;12695:4;12733:2;12722:9;12718:18;12710:26;;12782:9;12776:4;12772:20;12768:1;12757:9;12753:17;12746:47;12810:131;12936:4;12810:131;:::i;:::-;12802:139;;12529:419;;;:::o;12954:237::-;13094:34;13090:1;13082:6;13078:14;13071:58;13163:20;13158:2;13150:6;13146:15;13139:45;12954:237;:::o;13197:366::-;13339:3;13360:67;13424:2;13419:3;13360:67;:::i;:::-;13353:74;;13436:93;13525:3;13436:93;:::i;:::-;13554:2;13549:3;13545:12;13538:19;;13197:366;;;:::o;13569:419::-;13735:4;13773:2;13762:9;13758:18;13750:26;;13822:9;13816:4;13812:20;13808:1;13797:9;13793:17;13786:47;13850:131;13976:4;13850:131;:::i;:::-;13842:139;;13569:419;;;:::o;13994:221::-;14134:34;14130:1;14122:6;14118:14;14111:58;14203:4;14198:2;14190:6;14186:15;14179:29;13994:221;:::o;14221:366::-;14363:3;14384:67;14448:2;14443:3;14384:67;:::i;:::-;14377:74;;14460:93;14549:3;14460:93;:::i;:::-;14578:2;14573:3;14569:12;14562:19;;14221:366;;;:::o;14593:419::-;14759:4;14797:2;14786:9;14782:18;14774:26;;14846:9;14840:4;14836:20;14832:1;14821:9;14817:17;14810:47;14874:131;15000:4;14874:131;:::i;:::-;14866:139;;14593:419;;;:::o;15018:225::-;15158:34;15154:1;15146:6;15142:14;15135:58;15227:8;15222:2;15214:6;15210:15;15203:33;15018:225;:::o;15249:366::-;15391:3;15412:67;15476:2;15471:3;15412:67;:::i;:::-;15405:74;;15488:93;15577:3;15488:93;:::i;:::-;15606:2;15601:3;15597:12;15590:19;;15249:366;;;:::o;15621:419::-;15787:4;15825:2;15814:9;15810:18;15802:26;;15874:9;15868:4;15864:20;15860:1;15849:9;15845:17;15838:47;15902:131;16028:4;15902:131;:::i;:::-;15894:139;;15621:419;;;:::o;16046:181::-;16186:33;16182:1;16174:6;16170:14;16163:57;16046:181;:::o;16233:366::-;16375:3;16396:67;16460:2;16455:3;16396:67;:::i;:::-;16389:74;;16472:93;16561:3;16472:93;:::i;:::-;16590:2;16585:3;16581:12;16574:19;;16233:366;;;:::o;16605:419::-;16771:4;16809:2;16798:9;16794:18;16786:26;;16858:9;16852:4;16848:20;16844:1;16833:9;16829:17;16822:47;16886:131;17012:4;16886:131;:::i;:::-;16878:139;;16605:419;;;:::o;17030:172::-;17170:24;17166:1;17158:6;17154:14;17147:48;17030:172;:::o;17208:366::-;17350:3;17371:67;17435:2;17430:3;17371:67;:::i;:::-;17364:74;;17447:93;17536:3;17447:93;:::i;:::-;17565:2;17560:3;17556:12;17549:19;;17208:366;;;:::o;17580:419::-;17746:4;17784:2;17773:9;17769:18;17761:26;;17833:9;17827:4;17823:20;17819:1;17808:9;17804:17;17797:47;17861:131;17987:4;17861:131;:::i;:::-;17853:139;;17580:419;;;:::o;18005:228::-;18145:34;18141:1;18133:6;18129:14;18122:58;18214:11;18209:2;18201:6;18197:15;18190:36;18005:228;:::o;18239:366::-;18381:3;18402:67;18466:2;18461:3;18402:67;:::i;:::-;18395:74;;18478:93;18567:3;18478:93;:::i;:::-;18596:2;18591:3;18587:12;18580:19;;18239:366;;;:::o;18611:419::-;18777:4;18815:2;18804:9;18800:18;18792:26;;18864:9;18858:4;18854:20;18850:1;18839:9;18835:17;18828:47;18892:131;19018:4;18892:131;:::i;:::-;18884:139;;18611:419;;;:::o;19036:169::-;19176:21;19172:1;19164:6;19160:14;19153:45;19036:169;:::o;19211:366::-;19353:3;19374:67;19438:2;19433:3;19374:67;:::i;:::-;19367:74;;19450:93;19539:3;19450:93;:::i;:::-;19568:2;19563:3;19559:12;19552:19;;19211:366;;;:::o;19583:419::-;19749:4;19787:2;19776:9;19772:18;19764:26;;19836:9;19830:4;19826:20;19822:1;19811:9;19807:17;19800:47;19864:131;19990:4;19864:131;:::i;:::-;19856:139;;19583:419;;;:::o;20008:229::-;20148:34;20144:1;20136:6;20132:14;20125:58;20217:12;20212:2;20204:6;20200:15;20193:37;20008:229;:::o;20243:366::-;20385:3;20406:67;20470:2;20465:3;20406:67;:::i;:::-;20399:74;;20482:93;20571:3;20482:93;:::i;:::-;20600:2;20595:3;20591:12;20584:19;;20243:366;;;:::o;20615:419::-;20781:4;20819:2;20808:9;20804:18;20796:26;;20868:9;20862:4;20858:20;20854:1;20843:9;20839:17;20832:47;20896:131;21022:4;20896:131;:::i;:::-;20888:139;;20615:419;;;:::o;21040:194::-;21080:4;21100:20;21118:1;21100:20;:::i;:::-;21095:25;;21134:20;21152:1;21134:20;:::i;:::-;21129:25;;21178:1;21175;21171:9;21163:17;;21202:1;21196:4;21193:11;21190:37;;;21207:18;;:::i;:::-;21190:37;21040:194;;;;:::o;21240:180::-;21288:77;21285:1;21278:88;21385:4;21382:1;21375:15;21409:4;21406:1;21399:15;21426:180;21474:77;21471:1;21464:88;21571:4;21568:1;21561:15;21595:4;21592:1;21585:15;21612:143;21669:5;21700:6;21694:13;21685:22;;21716:33;21743:5;21716:33;:::i;:::-;21612:143;;;;:::o;21761:351::-;21831:6;21880:2;21868:9;21859:7;21855:23;21851:32;21848:119;;;21886:79;;:::i;:::-;21848:119;22006:1;22031:64;22087:7;22078:6;22067:9;22063:22;22031:64;:::i;:::-;22021:74;;21977:128;21761:351;;;;:::o;22118:85::-;22163:7;22192:5;22181:16;;22118:85;;;:::o;22209:60::-;22237:3;22258:5;22251:12;;22209:60;;;:::o;22275:158::-;22333:9;22366:61;22384:42;22393:32;22419:5;22393:32;:::i;:::-;22384:42;:::i;:::-;22366:61;:::i;:::-;22353:74;;22275:158;;;:::o;22439:147::-;22534:45;22573:5;22534:45;:::i;:::-;22529:3;22522:58;22439:147;;:::o;22592:114::-;22659:6;22693:5;22687:12;22677:22;;22592:114;;;:::o;22712:184::-;22811:11;22845:6;22840:3;22833:19;22885:4;22880:3;22876:14;22861:29;;22712:184;;;;:::o;22902:132::-;22969:4;22992:3;22984:11;;23022:4;23017:3;23013:14;23005:22;;22902:132;;;:::o;23040:108::-;23117:24;23135:5;23117:24;:::i;:::-;23112:3;23105:37;23040:108;;:::o;23154:179::-;23223:10;23244:46;23286:3;23278:6;23244:46;:::i;:::-;23322:4;23317:3;23313:14;23299:28;;23154:179;;;;:::o;23339:113::-;23409:4;23441;23436:3;23432:14;23424:22;;23339:113;;;:::o;23488:732::-;23607:3;23636:54;23684:5;23636:54;:::i;:::-;23706:86;23785:6;23780:3;23706:86;:::i;:::-;23699:93;;23816:56;23866:5;23816:56;:::i;:::-;23895:7;23926:1;23911:284;23936:6;23933:1;23930:13;23911:284;;;24012:6;24006:13;24039:63;24098:3;24083:13;24039:63;:::i;:::-;24032:70;;24125:60;24178:6;24125:60;:::i;:::-;24115:70;;23971:224;23958:1;23955;23951:9;23946:14;;23911:284;;;23915:14;24211:3;24204:10;;23612:608;;;23488:732;;;;:::o;24226:831::-;24489:4;24527:3;24516:9;24512:19;24504:27;;24541:71;24609:1;24598:9;24594:17;24585:6;24541:71;:::i;:::-;24622:80;24698:2;24687:9;24683:18;24674:6;24622:80;:::i;:::-;24749:9;24743:4;24739:20;24734:2;24723:9;24719:18;24712:48;24777:108;24880:4;24871:6;24777:108;:::i;:::-;24769:116;;24895:72;24963:2;24952:9;24948:18;24939:6;24895:72;:::i;:::-;24977:73;25045:3;25034:9;25030:19;25021:6;24977:73;:::i;:::-;24226:831;;;;;;;;:::o;25063:332::-;25184:4;25222:2;25211:9;25207:18;25199:26;;25235:71;25303:1;25292:9;25288:17;25279:6;25235:71;:::i;:::-;25316:72;25384:2;25373:9;25369:18;25360:6;25316:72;:::i;:::-;25063:332;;;;;:::o;25401:147::-;25502:11;25539:3;25524:18;;25401:147;;;;:::o;25554:114::-;;:::o;25674:398::-;25833:3;25854:83;25935:1;25930:3;25854:83;:::i;:::-;25847:90;;25946:93;26035:3;25946:93;:::i;:::-;26064:1;26059:3;26055:11;26048:18;;25674:398;;;:::o;26078:379::-;26262:3;26284:147;26427:3;26284:147;:::i;:::-;26277:154;;26448:3;26441:10;;26078:379;;;:::o

Swarm Source

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