ETH Price: $3,484.52 (+0.67%)
Gas: 7 Gwei

Token

Kryptonite (KrTn)
 

Overview

Max Total Supply

100,000,000 KrTn

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
1,600,000 KrTn

Value
$0.00
0xd2c39239a4215830fc347a5b5a043332a4df131b
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:
Kryptonite

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Website: https://www.krtntoken.com/
Twitter: https://twitter.com/krtntoken
Telegram: https://t.me/krtntoken
Docs: https://docs.krtntoken.com/
*/

//  SPDX-License-Identifier: MIT

pragma solidity >=0.8.19;

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

}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, 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);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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 IUniswapV2Router02 {
    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;

    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;

    uint256 buyCount;
    uint256 public buyFees;
    uint256 public sellFees;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;
    

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event LimitsRemoved();

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor() ERC20("Kryptonite", "KrTn") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100000000 * 1e8;

        maxTransactionAmount = (totalSupply * 2) /100;
        maxWallet = (totalSupply * 2)/ 100;
        swapTokensAtAmount = (totalSupply * 1) / 100; // 0.1% swap wallet

        buyFees = 44 * 1e14;
        sellFees = 44 * 1e14;

        marketingWallet = msg.sender;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(marketingWallet, true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(marketingWallet, true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        emit LimitsRemoved();
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= ((totalSupply() * 1) / 10000) / 1e8,
            "Swap amount cannot be lower than 0.01% total supply."
        );
        require(
            newAmount <= ((totalSupply() * 5) / 1000) / 1e8,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount * 1e8;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 100) / 1e8,
            "Cannot set maxTransactionAmount lower than 1%"
        );
        maxTransactionAmount = newNum * 1e8;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 100) / 1e8,
            "Cannot set maxWallet lower than 1%"
        );
        maxWallet = newNum * 1e8;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }


    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellFees > 0) {
                fees = calculateSellFees(amount);
                require(amount > fees , "Sell amount is less than fees.");
                amount -= fees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyFees > 0) {
                fees = calculateBuyFees(amount);
                require(amount > fees , "Buy amount is less than fees.");
                amount -= fees;
                buyCount += 1;
            }

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

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

    function calculateBuyFees(uint256 amount) internal view returns (uint256) {
        if (buyCount < 15) return amount *20/100;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint256[] memory amounts = uniswapV2Router.getAmountsIn(buyFees, path);
        return amounts[0];
    }

    function calculateSellFees(uint256 amount) internal view returns (uint256) {
        if (buyCount < 15) return amount *20/100;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint256[] memory amounts = uniswapV2Router.getAmountsIn(sellFees, path);
        return amounts[0];
    }


    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount) {
            contractBalance = swapTokensAtAmount;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitsRemoved","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a5f6101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555034801562000060575f80fd5b506040518060400160405280600a81526020017f4b727970746f6e697465000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4b72546e000000000000000000000000000000000000000000000000000000008152508160039081620000de919062000c9f565b508060049081620000f0919062000c9f565b50505062000113620001076200051360201b60201c565b6200051a60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013e816001620005dd60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000de8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000248573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026e919062000de8565b6040518363ffffffff1660e01b81526004016200028d92919062000e29565b6020604051808303815f875af1158015620002aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d0919062000de8565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031860a0516001620005dd60201b60201c565b6200032d60a0516001620006c460201b60201c565b5f662386f26fc100009050606460028262000349919062000e81565b62000355919062000ef8565b60078190555060646002826200036c919062000e81565b62000378919062000ef8565b60098190555060646001826200038f919062000e81565b6200039b919062000ef8565b600881905550660fa1c6d5030000600c81905550660fa1c6d5030000600d819055503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200041f620004116200076260201b60201c565b60016200078a60201b60201c565b620004323060016200078a60201b60201c565b6200044761dead60016200078a60201b60201c565b6200047b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200078a60201b60201c565b6200049d6200048f6200076260201b60201c565b6001620005dd60201b60201c565b620004b0306001620005dd60201b60201c565b620004c561dead6001620005dd60201b60201c565b620004f960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005dd60201b60201c565b6200050b3382620008c160201b60201c565b5050620010b8565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ed6200051360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006136200076260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200066c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006639062000f8d565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200079a6200051360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007c06200076260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008109062000f8d565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008b5919062000fc9565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000932576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009299062001032565b60405180910390fd5b620009455f838362000a3160201b60201c565b8060025f82825462000958919062001052565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620009ac919062001052565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a1291906200109d565b60405180910390a362000a2d5f838362000a3660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ab757607f821691505b60208210810362000acd5762000acc62000a72565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000af4565b62000b3d868362000af4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b8762000b8162000b7b8462000b55565b62000b5e565b62000b55565b9050919050565b5f819050919050565b62000ba28362000b67565b62000bba62000bb18262000b8e565b84845462000b00565b825550505050565b5f90565b62000bd062000bc2565b62000bdd81848462000b97565b505050565b5b8181101562000c045762000bf85f8262000bc6565b60018101905062000be3565b5050565b601f82111562000c535762000c1d8162000ad3565b62000c288462000ae5565b8101602085101562000c38578190505b62000c5062000c478562000ae5565b83018262000be2565b50505b505050565b5f82821c905092915050565b5f62000c755f198460080262000c58565b1980831691505092915050565b5f62000c8f838362000c64565b9150826002028217905092915050565b62000caa8262000a3b565b67ffffffffffffffff81111562000cc65762000cc562000a45565b5b62000cd2825462000a9f565b62000cdf82828562000c08565b5f60209050601f83116001811462000d15575f841562000d00578287015190505b62000d0c858262000c82565b86555062000d7b565b601f19841662000d258662000ad3565b5f5b8281101562000d4e5784890151825560018201915060208501945060208101905062000d27565b8683101562000d6e578489015162000d6a601f89168262000c64565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000db28262000d87565b9050919050565b62000dc48162000da6565b811462000dcf575f80fd5b50565b5f8151905062000de28162000db9565b92915050565b5f6020828403121562000e005762000dff62000d83565b5b5f62000e0f8482850162000dd2565b91505092915050565b62000e238162000da6565b82525050565b5f60408201905062000e3e5f83018562000e18565b62000e4d602083018462000e18565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e8d8262000b55565b915062000e9a8362000b55565b925082820262000eaa8162000b55565b9150828204841483151762000ec45762000ec362000e54565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f048262000b55565b915062000f118362000b55565b92508262000f245762000f2362000ecb565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f7560208362000f2f565b915062000f828262000f3f565b602082019050919050565b5f6020820190508181035f83015262000fa68162000f67565b9050919050565b5f8115159050919050565b62000fc38162000fad565b82525050565b5f60208201905062000fde5f83018462000fb8565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200101a601f8362000f2f565b9150620010278262000fe4565b602082019050919050565b5f6020820190508181035f8301526200104b816200100c565b9050919050565b5f6200105e8262000b55565b91506200106b8362000b55565b925082820190508082111562001086576200108562000e54565b5b92915050565b620010978162000b55565b82525050565b5f602082019050620010b25f8301846200108c565b92915050565b60805160a0516142f5620011125f395f8181610c8401526110e101525f81816109aa0152818161293e01528181612a1a01528181612ba701528181612c8301528181612dee01528181612ecd0152612ef401526142f55ff3fe60806040526004361061021d575f3560e01c806375f0a87411610122578063c0246668116100aa578063e0f3ccf51161006e578063e0f3ccf51461080e578063e2f4560514610838578063e4748b9e14610862578063f2fde38b1461088c578063f8b45b05146108b457610224565b8063c02466681461071c578063c18bc19514610744578063c8c8ebe41461076c578063d257b34f14610796578063dd62ed3e146107d257610224565b8063a457c2d7116100f1578063a457c2d714610616578063a9059cbb14610652578063aacebbe31461068e578063b62496f5146106b6578063bbc0c742146106f257610224565b806375f0a874146105705780638da5cb5b1461059a57806395d89b41146105c45780639a7a23d6146105ee57610224565b806339509351116101a55780636ddd1713116101745780636ddd1713146104a257806370a08231146104cc578063715018a614610508578063751039fc1461051e5780637571336a1461054857610224565b806339509351146103d657806349bd5a5e146104125780634a62bb651461043c5780634fbee1931461046657610224565b806318160ddd116101ec57806318160ddd146102f4578063203e727e1461031e57806323b872dd1461034657806327c8f83514610382578063313ce567146103ac57610224565b806306fdde0314610228578063095ea7b31461025257806310d5de531461028e5780631694505e146102ca57610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108de565b604051610249919061300e565b60405180910390f35b34801561025d575f80fd5b50610278600480360381019061027391906130cc565b61096e565b6040516102859190613124565b60405180910390f35b348015610299575f80fd5b506102b460048036038101906102af919061313d565b61098b565b6040516102c19190613124565b60405180910390f35b3480156102d5575f80fd5b506102de6109a8565b6040516102eb91906131c3565b60405180910390f35b3480156102ff575f80fd5b506103086109cc565b60405161031591906131eb565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613204565b6109d5565b005b348015610351575f80fd5b5061036c6004803603810190610367919061322f565b610adb565b6040516103799190613124565b60405180910390f35b34801561038d575f80fd5b50610396610bcd565b6040516103a3919061328e565b60405180910390f35b3480156103b7575f80fd5b506103c0610bd3565b6040516103cd91906132c2565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f791906130cc565b610bdb565b6040516104099190613124565b60405180910390f35b34801561041d575f80fd5b50610426610c82565b604051610433919061328e565b60405180910390f35b348015610447575f80fd5b50610450610ca6565b60405161045d9190613124565b60405180910390f35b348015610471575f80fd5b5061048c6004803603810190610487919061313d565b610cb8565b6040516104999190613124565b60405180910390f35b3480156104ad575f80fd5b506104b6610d0a565b6040516104c39190613124565b60405180910390f35b3480156104d7575f80fd5b506104f260048036038101906104ed919061313d565b610d1d565b6040516104ff91906131eb565b60405180910390f35b348015610513575f80fd5b5061051c610d62565b005b348015610529575f80fd5b50610532610de9565b60405161053f9190613124565b60405180910390f35b348015610553575f80fd5b5061056e60048036038101906105699190613305565b610eb2565b005b34801561057b575f80fd5b50610584610f86565b604051610591919061328e565b60405180910390f35b3480156105a5575f80fd5b506105ae610fab565b6040516105bb919061328e565b60405180910390f35b3480156105cf575f80fd5b506105d8610fd3565b6040516105e5919061300e565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190613305565b611063565b005b348015610621575f80fd5b5061063c600480360381019061063791906130cc565b61117b565b6040516106499190613124565b60405180910390f35b34801561065d575f80fd5b50610678600480360381019061067391906130cc565b611261565b6040516106859190613124565b60405180910390f35b348015610699575f80fd5b506106b460048036038101906106af919061313d565b61127e565b005b3480156106c1575f80fd5b506106dc60048036038101906106d7919061313d565b6113b8565b6040516106e99190613124565b60405180910390f35b3480156106fd575f80fd5b506107066113d5565b6040516107139190613124565b60405180910390f35b348015610727575f80fd5b50610742600480360381019061073d9190613305565b6113e8565b005b34801561074f575f80fd5b5061076a60048036038101906107659190613204565b61150a565b005b348015610777575f80fd5b50610780611610565b60405161078d91906131eb565b60405180910390f35b3480156107a1575f80fd5b506107bc60048036038101906107b79190613204565b611616565b6040516107c99190613124565b60405180910390f35b3480156107dd575f80fd5b506107f860048036038101906107f39190613343565b611796565b60405161080591906131eb565b60405180910390f35b348015610819575f80fd5b50610822611818565b60405161082f91906131eb565b60405180910390f35b348015610843575f80fd5b5061084c61181e565b60405161085991906131eb565b60405180910390f35b34801561086d575f80fd5b50610876611824565b60405161088391906131eb565b60405180910390f35b348015610897575f80fd5b506108b260048036038101906108ad919061313d565b61182a565b005b3480156108bf575f80fd5b506108c8611920565b6040516108d591906131eb565b60405180910390f35b6060600380546108ed906133ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610919906133ae565b80156109645780601f1061093b57610100808354040283529160200191610964565b820191905f5260205f20905b81548152906001019060200180831161094757829003601f168201915b5050505050905090565b5f61098161097a611926565b848461192d565b6001905092915050565b600f602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b6109dd611926565b73ffffffffffffffffffffffffffffffffffffffff166109fb610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890613428565b60405180910390fd5b6305f5e10060646001610a626109cc565b610a6c9190613473565b610a7691906134e1565b610a8091906134e1565b811015610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613581565b60405180910390fd5b6305f5e10081610ad29190613473565b60078190555050565b5f610ae7848484611af0565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b2e611926565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba49061360f565b60405180910390fd5b610bc185610bb9611926565b85840361192d565b60019150509392505050565b61dead81565b5f6008905090565b5f610c78610be7611926565b848460015f610bf4611926565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c73919061362d565b61192d565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5f9054906101000a900460ff1681565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600a60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d6a611926565b73ffffffffffffffffffffffffffffffffffffffff16610d88610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd590613428565b60405180910390fd5b610de75f6123d2565b565b5f610df2611926565b73ffffffffffffffffffffffffffffffffffffffff16610e10610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d90613428565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b610eba611926565b73ffffffffffffffffffffffffffffffffffffffff16610ed8610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613428565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fe2906133ae565b80601f016020809104026020016040519081016040528092919081815260200182805461100e906133ae565b80156110595780601f1061103057610100808354040283529160200191611059565b820191905f5260205f20905b81548152906001019060200180831161103c57829003601f168201915b5050505050905090565b61106b611926565b73ffffffffffffffffffffffffffffffffffffffff16611089610fab565b73ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690613428565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361116d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611164906136d0565b60405180910390fd5b6111778282612495565b5050565b5f8060015f611188611926565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112399061375e565b60405180910390fd5b61125661124d611926565b8585840361192d565b600191505092915050565b5f61127461126d611926565b8484611af0565b6001905092915050565b611286611926565b73ffffffffffffffffffffffffffffffffffffffff166112a4610fab565b73ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613428565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b6113f0611926565b73ffffffffffffffffffffffffffffffffffffffff1661140e610fab565b73ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613428565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114fe9190613124565b60405180910390a25050565b611512611926565b73ffffffffffffffffffffffffffffffffffffffff16611530610fab565b73ffffffffffffffffffffffffffffffffffffffff1614611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90613428565b60405180910390fd5b6305f5e100606460016115976109cc565b6115a19190613473565b6115ab91906134e1565b6115b591906134e1565b8110156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906137ec565b60405180910390fd5b6305f5e100816116079190613473565b60098190555050565b60075481565b5f61161f611926565b73ffffffffffffffffffffffffffffffffffffffff1661163d610fab565b73ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613428565b60405180910390fd5b6305f5e10061271060016116a56109cc565b6116af9190613473565b6116b991906134e1565b6116c391906134e1565b821015611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc9061387a565b60405180910390fd5b6305f5e1006103e860056117176109cc565b6117219190613473565b61172b91906134e1565b61173591906134e1565b821115611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90613908565b60405180910390fd5b6305f5e100826117879190613473565b60088190555060019050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b60085481565b600c5481565b611832611926565b73ffffffffffffffffffffffffffffffffffffffff16611850610fab565b73ffffffffffffffffffffffffffffffffffffffff16146118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d90613428565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190b90613996565b60405180910390fd5b61191d816123d2565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199290613a24565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613ab2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ae391906131eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613b40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc390613bce565b60405180910390fd5b5f8103611be357611bde83835f612533565b6123cd565b600a5f9054906101000a900460ff1615611fd857611bff610fab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c6d5750611c3d610fab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cdf575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf85750600560149054906101000a900460ff16155b15611fd75760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d9a5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e4157600754811115611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90613c5c565b60405180910390fd5b600954611df083610d1d565b82611dfb919061362d565b1115611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3390613cc4565b60405180910390fd5b611fd6565b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ede5750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f2d57600754811115611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613d52565b60405180910390fd5b611fd5565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611fd457600954611f8783610d1d565b82611f92919061362d565b1115611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90613cc4565b60405180910390fd5b5b5b5b5b5b5f611fe230610d1d565b90505f60085482101590508080156120065750600a60029054906101000a900460ff165b801561201f5750600560149054906101000a900460ff16155b8015612072575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c55750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121185750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561215b576001600560146101000a81548160ff0219169083151502179055506121406127a8565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220a5750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612213575f90505b5f81156123bd5760105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561227157505f600d54115b156122d65761227f85612875565b90508085116122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90613dba565b60405180910390fd5b80856122cf9190613dd8565b94506123a8565b60105f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561232d57505f600c54115b156123a75761233b85612ade565b905080851161237f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237690613e55565b60405180910390fd5b808561238b9190613dd8565b94506001600b5f82825461239f919061362d565b925050819055505b5b5f8111156123bc576123bb873083612533565b5b5b6123c8878787612533565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259890613b40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361260f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260690613bce565b60405180910390fd5b61261a838383612d47565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561269d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269490613ee3565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461272b919061362d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161278f91906131eb565b60405180910390a36127a2848484612d4c565b50505050565b5f6127b230610d1d565b90505f8082036127c3575050612873565b6008548211156127d35760085491505b5f8290506127e081612d51565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161282990613f2e565b5f6040518083038185875af1925050503d805f8114612863576040519150601f19603f3d011682016040523d82523d5f602084013e612868565b606091505b505080935050505050505b565b5f600f600b5410156128a15760646014836128909190613473565b61289a91906134e1565b9050612ad9565b5f600267ffffffffffffffff8111156128bd576128bc613f42565b5b6040519080825280602002602001820160405280156128eb5781602001602082028036833780820191505090505b50905030815f8151811061290257612901613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c99190613fb0565b816001815181106129dd576129dc613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631f00ca74600d54846040518363ffffffff1660e01b8152600401612a75929190614092565b5f60405180830381865afa158015612a8f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612ab791906141e7565b9050805f81518110612acc57612acb613f6f565b5b6020026020010151925050505b919050565b5f600f600b541015612b0a576064601483612af99190613473565b612b0391906134e1565b9050612d42565b5f600267ffffffffffffffff811115612b2657612b25613f42565b5b604051908082528060200260200182016040528015612b545781602001602082028036833780820191505090505b50905030815f81518110612b6b57612b6a613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c329190613fb0565b81600181518110612c4657612c45613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631f00ca74600c54846040518363ffffffff1660e01b8152600401612cde929190614092565b5f60405180830381865afa158015612cf8573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612d2091906141e7565b9050805f81518110612d3557612d34613f6f565b5b6020026020010151925050505b919050565b505050565b505050565b5f600267ffffffffffffffff811115612d6d57612d6c613f42565b5b604051908082528060200260200182016040528015612d9b5781602001602082028036833780820191505090505b50905030815f81518110612db257612db1613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e799190613fb0565b81600181518110612e8d57612e8c613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ef2307f00000000000000000000000000000000000000000000000000000000000000008461192d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f53959493929190614267565b5f604051808303815f87803b158015612f6a575f80fd5b505af1158015612f7c573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612fbb578082015181840152602081019050612fa0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fe082612f84565b612fea8185612f8e565b9350612ffa818560208601612f9e565b61300381612fc6565b840191505092915050565b5f6020820190508181035f8301526130268184612fd6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130688261303f565b9050919050565b6130788161305e565b8114613082575f80fd5b50565b5f813590506130938161306f565b92915050565b5f819050919050565b6130ab81613099565b81146130b5575f80fd5b50565b5f813590506130c6816130a2565b92915050565b5f80604083850312156130e2576130e1613037565b5b5f6130ef85828601613085565b9250506020613100858286016130b8565b9150509250929050565b5f8115159050919050565b61311e8161310a565b82525050565b5f6020820190506131375f830184613115565b92915050565b5f6020828403121561315257613151613037565b5b5f61315f84828501613085565b91505092915050565b5f819050919050565b5f61318b6131866131818461303f565b613168565b61303f565b9050919050565b5f61319c82613171565b9050919050565b5f6131ad82613192565b9050919050565b6131bd816131a3565b82525050565b5f6020820190506131d65f8301846131b4565b92915050565b6131e581613099565b82525050565b5f6020820190506131fe5f8301846131dc565b92915050565b5f6020828403121561321957613218613037565b5b5f613226848285016130b8565b91505092915050565b5f805f6060848603121561324657613245613037565b5b5f61325386828701613085565b935050602061326486828701613085565b9250506040613275868287016130b8565b9150509250925092565b6132888161305e565b82525050565b5f6020820190506132a15f83018461327f565b92915050565b5f60ff82169050919050565b6132bc816132a7565b82525050565b5f6020820190506132d55f8301846132b3565b92915050565b6132e48161310a565b81146132ee575f80fd5b50565b5f813590506132ff816132db565b92915050565b5f806040838503121561331b5761331a613037565b5b5f61332885828601613085565b9250506020613339858286016132f1565b9150509250929050565b5f806040838503121561335957613358613037565b5b5f61336685828601613085565b925050602061337785828601613085565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806133c557607f821691505b6020821081036133d8576133d7613381565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613412602083612f8e565b915061341d826133de565b602082019050919050565b5f6020820190508181035f83015261343f81613406565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61347d82613099565b915061348883613099565b925082820261349681613099565b915082820484148315176134ad576134ac613446565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134eb82613099565b91506134f683613099565b925082613506576135056134b4565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b5f61356b602d83612f8e565b915061357682613511565b604082019050919050565b5f6020820190508181035f8301526135988161355f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6135f9602883612f8e565b91506136048261359f565b604082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b5f61363782613099565b915061364283613099565b925082820190508082111561365a57613659613446565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6136ba603983612f8e565b91506136c582613660565b604082019050919050565b5f6020820190508181035f8301526136e7816136ae565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613748602583612f8e565b9150613753826136ee565b604082019050919050565b5f6020820190508181035f8301526137758161373c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137d6602283612f8e565b91506137e18261377c565b604082019050919050565b5f6020820190508181035f830152613803816137ca565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613864603483612f8e565b915061386f8261380a565b604082019050919050565b5f6020820190508181035f83015261389181613858565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6138f2603483612f8e565b91506138fd82613898565b604082019050919050565b5f6020820190508181035f83015261391f816138e6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613980602683612f8e565b915061398b82613926565b604082019050919050565b5f6020820190508181035f8301526139ad81613974565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a0e602483612f8e565b9150613a19826139b4565b604082019050919050565b5f6020820190508181035f830152613a3b81613a02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a9c602283612f8e565b9150613aa782613a42565b604082019050919050565b5f6020820190508181035f830152613ac981613a90565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b2a602583612f8e565b9150613b3582613ad0565b604082019050919050565b5f6020820190508181035f830152613b5781613b1e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bb8602383612f8e565b9150613bc382613b5e565b604082019050919050565b5f6020820190508181035f830152613be581613bac565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613c46603583612f8e565b9150613c5182613bec565b604082019050919050565b5f6020820190508181035f830152613c7381613c3a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613cae601383612f8e565b9150613cb982613c7a565b602082019050919050565b5f6020820190508181035f830152613cdb81613ca2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613d3c603683612f8e565b9150613d4782613ce2565b604082019050919050565b5f6020820190508181035f830152613d6981613d30565b9050919050565b7f53656c6c20616d6f756e74206973206c657373207468616e20666565732e00005f82015250565b5f613da4601e83612f8e565b9150613daf82613d70565b602082019050919050565b5f6020820190508181035f830152613dd181613d98565b9050919050565b5f613de282613099565b9150613ded83613099565b9250828203905081811115613e0557613e04613446565b5b92915050565b7f42757920616d6f756e74206973206c657373207468616e20666565732e0000005f82015250565b5f613e3f601d83612f8e565b9150613e4a82613e0b565b602082019050919050565b5f6020820190508181035f830152613e6c81613e33565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613ecd602683612f8e565b9150613ed882613e73565b604082019050919050565b5f6020820190508181035f830152613efa81613ec1565b9050919050565b5f81905092915050565b50565b5f613f195f83613f01565b9150613f2482613f0b565b5f82019050919050565b5f613f3882613f0e565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613faa8161306f565b92915050565b5f60208284031215613fc557613fc4613037565b5b5f613fd284828501613f9c565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61400d8161305e565b82525050565b5f61401e8383614004565b60208301905092915050565b5f602082019050919050565b5f61404082613fdb565b61404a8185613fe5565b935061405583613ff5565b805f5b8381101561408557815161406c8882614013565b97506140778361402a565b925050600181019050614058565b5085935050505092915050565b5f6040820190506140a55f8301856131dc565b81810360208301526140b78184614036565b90509392505050565b5f80fd5b6140cd82612fc6565b810181811067ffffffffffffffff821117156140ec576140eb613f42565b5b80604052505050565b5f6140fe61302e565b905061410a82826140c4565b919050565b5f67ffffffffffffffff82111561412957614128613f42565b5b602082029050602081019050919050565b5f80fd5b5f8151905061414c816130a2565b92915050565b5f61416461415f8461410f565b6140f5565b905080838252602082019050602084028301858111156141875761418661413a565b5b835b818110156141b0578061419c888261413e565b845260208401935050602081019050614189565b5050509392505050565b5f82601f8301126141ce576141cd6140c0565b5b81516141de848260208601614152565b91505092915050565b5f602082840312156141fc576141fb613037565b5b5f82015167ffffffffffffffff8111156142195761421861303b565b5b614225848285016141ba565b91505092915050565b5f819050919050565b5f61425161424c6142478461422e565b613168565b613099565b9050919050565b61426181614237565b82525050565b5f60a08201905061427a5f8301886131dc565b6142876020830187614258565b81810360408301526142998186614036565b90506142a8606083018561327f565b6142b560808301846131dc565b969550505050505056fea2646970667358221220c57e7bae96668213817118017e0e3ae19a0b16dfc96b6ecb79b0bdd94ae660b264736f6c63430008150033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c806375f0a87411610122578063c0246668116100aa578063e0f3ccf51161006e578063e0f3ccf51461080e578063e2f4560514610838578063e4748b9e14610862578063f2fde38b1461088c578063f8b45b05146108b457610224565b8063c02466681461071c578063c18bc19514610744578063c8c8ebe41461076c578063d257b34f14610796578063dd62ed3e146107d257610224565b8063a457c2d7116100f1578063a457c2d714610616578063a9059cbb14610652578063aacebbe31461068e578063b62496f5146106b6578063bbc0c742146106f257610224565b806375f0a874146105705780638da5cb5b1461059a57806395d89b41146105c45780639a7a23d6146105ee57610224565b806339509351116101a55780636ddd1713116101745780636ddd1713146104a257806370a08231146104cc578063715018a614610508578063751039fc1461051e5780637571336a1461054857610224565b806339509351146103d657806349bd5a5e146104125780634a62bb651461043c5780634fbee1931461046657610224565b806318160ddd116101ec57806318160ddd146102f4578063203e727e1461031e57806323b872dd1461034657806327c8f83514610382578063313ce567146103ac57610224565b806306fdde0314610228578063095ea7b31461025257806310d5de531461028e5780631694505e146102ca57610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108de565b604051610249919061300e565b60405180910390f35b34801561025d575f80fd5b50610278600480360381019061027391906130cc565b61096e565b6040516102859190613124565b60405180910390f35b348015610299575f80fd5b506102b460048036038101906102af919061313d565b61098b565b6040516102c19190613124565b60405180910390f35b3480156102d5575f80fd5b506102de6109a8565b6040516102eb91906131c3565b60405180910390f35b3480156102ff575f80fd5b506103086109cc565b60405161031591906131eb565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613204565b6109d5565b005b348015610351575f80fd5b5061036c6004803603810190610367919061322f565b610adb565b6040516103799190613124565b60405180910390f35b34801561038d575f80fd5b50610396610bcd565b6040516103a3919061328e565b60405180910390f35b3480156103b7575f80fd5b506103c0610bd3565b6040516103cd91906132c2565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f791906130cc565b610bdb565b6040516104099190613124565b60405180910390f35b34801561041d575f80fd5b50610426610c82565b604051610433919061328e565b60405180910390f35b348015610447575f80fd5b50610450610ca6565b60405161045d9190613124565b60405180910390f35b348015610471575f80fd5b5061048c6004803603810190610487919061313d565b610cb8565b6040516104999190613124565b60405180910390f35b3480156104ad575f80fd5b506104b6610d0a565b6040516104c39190613124565b60405180910390f35b3480156104d7575f80fd5b506104f260048036038101906104ed919061313d565b610d1d565b6040516104ff91906131eb565b60405180910390f35b348015610513575f80fd5b5061051c610d62565b005b348015610529575f80fd5b50610532610de9565b60405161053f9190613124565b60405180910390f35b348015610553575f80fd5b5061056e60048036038101906105699190613305565b610eb2565b005b34801561057b575f80fd5b50610584610f86565b604051610591919061328e565b60405180910390f35b3480156105a5575f80fd5b506105ae610fab565b6040516105bb919061328e565b60405180910390f35b3480156105cf575f80fd5b506105d8610fd3565b6040516105e5919061300e565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190613305565b611063565b005b348015610621575f80fd5b5061063c600480360381019061063791906130cc565b61117b565b6040516106499190613124565b60405180910390f35b34801561065d575f80fd5b50610678600480360381019061067391906130cc565b611261565b6040516106859190613124565b60405180910390f35b348015610699575f80fd5b506106b460048036038101906106af919061313d565b61127e565b005b3480156106c1575f80fd5b506106dc60048036038101906106d7919061313d565b6113b8565b6040516106e99190613124565b60405180910390f35b3480156106fd575f80fd5b506107066113d5565b6040516107139190613124565b60405180910390f35b348015610727575f80fd5b50610742600480360381019061073d9190613305565b6113e8565b005b34801561074f575f80fd5b5061076a60048036038101906107659190613204565b61150a565b005b348015610777575f80fd5b50610780611610565b60405161078d91906131eb565b60405180910390f35b3480156107a1575f80fd5b506107bc60048036038101906107b79190613204565b611616565b6040516107c99190613124565b60405180910390f35b3480156107dd575f80fd5b506107f860048036038101906107f39190613343565b611796565b60405161080591906131eb565b60405180910390f35b348015610819575f80fd5b50610822611818565b60405161082f91906131eb565b60405180910390f35b348015610843575f80fd5b5061084c61181e565b60405161085991906131eb565b60405180910390f35b34801561086d575f80fd5b50610876611824565b60405161088391906131eb565b60405180910390f35b348015610897575f80fd5b506108b260048036038101906108ad919061313d565b61182a565b005b3480156108bf575f80fd5b506108c8611920565b6040516108d591906131eb565b60405180910390f35b6060600380546108ed906133ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610919906133ae565b80156109645780601f1061093b57610100808354040283529160200191610964565b820191905f5260205f20905b81548152906001019060200180831161094757829003601f168201915b5050505050905090565b5f61098161097a611926565b848461192d565b6001905092915050565b600f602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b6109dd611926565b73ffffffffffffffffffffffffffffffffffffffff166109fb610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890613428565b60405180910390fd5b6305f5e10060646001610a626109cc565b610a6c9190613473565b610a7691906134e1565b610a8091906134e1565b811015610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613581565b60405180910390fd5b6305f5e10081610ad29190613473565b60078190555050565b5f610ae7848484611af0565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b2e611926565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba49061360f565b60405180910390fd5b610bc185610bb9611926565b85840361192d565b60019150509392505050565b61dead81565b5f6008905090565b5f610c78610be7611926565b848460015f610bf4611926565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c73919061362d565b61192d565b6001905092915050565b7f000000000000000000000000cd7ac7080668f3ea87f56ea5da100118063d4e2a81565b600a5f9054906101000a900460ff1681565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600a60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d6a611926565b73ffffffffffffffffffffffffffffffffffffffff16610d88610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd590613428565b60405180910390fd5b610de75f6123d2565b565b5f610df2611926565b73ffffffffffffffffffffffffffffffffffffffff16610e10610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d90613428565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b610eba611926565b73ffffffffffffffffffffffffffffffffffffffff16610ed8610fab565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613428565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fe2906133ae565b80601f016020809104026020016040519081016040528092919081815260200182805461100e906133ae565b80156110595780601f1061103057610100808354040283529160200191611059565b820191905f5260205f20905b81548152906001019060200180831161103c57829003601f168201915b5050505050905090565b61106b611926565b73ffffffffffffffffffffffffffffffffffffffff16611089610fab565b73ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690613428565b60405180910390fd5b7f000000000000000000000000cd7ac7080668f3ea87f56ea5da100118063d4e2a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361116d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611164906136d0565b60405180910390fd5b6111778282612495565b5050565b5f8060015f611188611926565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112399061375e565b60405180910390fd5b61125661124d611926565b8585840361192d565b600191505092915050565b5f61127461126d611926565b8484611af0565b6001905092915050565b611286611926565b73ffffffffffffffffffffffffffffffffffffffff166112a4610fab565b73ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613428565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b6113f0611926565b73ffffffffffffffffffffffffffffffffffffffff1661140e610fab565b73ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613428565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114fe9190613124565b60405180910390a25050565b611512611926565b73ffffffffffffffffffffffffffffffffffffffff16611530610fab565b73ffffffffffffffffffffffffffffffffffffffff1614611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90613428565b60405180910390fd5b6305f5e100606460016115976109cc565b6115a19190613473565b6115ab91906134e1565b6115b591906134e1565b8110156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906137ec565b60405180910390fd5b6305f5e100816116079190613473565b60098190555050565b60075481565b5f61161f611926565b73ffffffffffffffffffffffffffffffffffffffff1661163d610fab565b73ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613428565b60405180910390fd5b6305f5e10061271060016116a56109cc565b6116af9190613473565b6116b991906134e1565b6116c391906134e1565b821015611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc9061387a565b60405180910390fd5b6305f5e1006103e860056117176109cc565b6117219190613473565b61172b91906134e1565b61173591906134e1565b821115611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90613908565b60405180910390fd5b6305f5e100826117879190613473565b60088190555060019050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b60085481565b600c5481565b611832611926565b73ffffffffffffffffffffffffffffffffffffffff16611850610fab565b73ffffffffffffffffffffffffffffffffffffffff16146118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d90613428565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190b90613996565b60405180910390fd5b61191d816123d2565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199290613a24565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613ab2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ae391906131eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613b40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc390613bce565b60405180910390fd5b5f8103611be357611bde83835f612533565b6123cd565b600a5f9054906101000a900460ff1615611fd857611bff610fab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c6d5750611c3d610fab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cdf575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf85750600560149054906101000a900460ff16155b15611fd75760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d9a5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e4157600754811115611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90613c5c565b60405180910390fd5b600954611df083610d1d565b82611dfb919061362d565b1115611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3390613cc4565b60405180910390fd5b611fd6565b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ede5750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f2d57600754811115611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613d52565b60405180910390fd5b611fd5565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611fd457600954611f8783610d1d565b82611f92919061362d565b1115611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90613cc4565b60405180910390fd5b5b5b5b5b5b5f611fe230610d1d565b90505f60085482101590508080156120065750600a60029054906101000a900460ff165b801561201f5750600560149054906101000a900460ff16155b8015612072575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c55750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121185750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561215b576001600560146101000a81548160ff0219169083151502179055506121406127a8565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220a5750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612213575f90505b5f81156123bd5760105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561227157505f600d54115b156122d65761227f85612875565b90508085116122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90613dba565b60405180910390fd5b80856122cf9190613dd8565b94506123a8565b60105f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561232d57505f600c54115b156123a75761233b85612ade565b905080851161237f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237690613e55565b60405180910390fd5b808561238b9190613dd8565b94506001600b5f82825461239f919061362d565b925050819055505b5b5f8111156123bc576123bb873083612533565b5b5b6123c8878787612533565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259890613b40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361260f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260690613bce565b60405180910390fd5b61261a838383612d47565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561269d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269490613ee3565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461272b919061362d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161278f91906131eb565b60405180910390a36127a2848484612d4c565b50505050565b5f6127b230610d1d565b90505f8082036127c3575050612873565b6008548211156127d35760085491505b5f8290506127e081612d51565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161282990613f2e565b5f6040518083038185875af1925050503d805f8114612863576040519150601f19603f3d011682016040523d82523d5f602084013e612868565b606091505b505080935050505050505b565b5f600f600b5410156128a15760646014836128909190613473565b61289a91906134e1565b9050612ad9565b5f600267ffffffffffffffff8111156128bd576128bc613f42565b5b6040519080825280602002602001820160405280156128eb5781602001602082028036833780820191505090505b50905030815f8151811061290257612901613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c99190613fb0565b816001815181106129dd576129dc613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca74600d54846040518363ffffffff1660e01b8152600401612a75929190614092565b5f60405180830381865afa158015612a8f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612ab791906141e7565b9050805f81518110612acc57612acb613f6f565b5b6020026020010151925050505b919050565b5f600f600b541015612b0a576064601483612af99190613473565b612b0391906134e1565b9050612d42565b5f600267ffffffffffffffff811115612b2657612b25613f42565b5b604051908082528060200260200182016040528015612b545781602001602082028036833780820191505090505b50905030815f81518110612b6b57612b6a613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c329190613fb0565b81600181518110612c4657612c45613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca74600c54846040518363ffffffff1660e01b8152600401612cde929190614092565b5f60405180830381865afa158015612cf8573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612d2091906141e7565b9050805f81518110612d3557612d34613f6f565b5b6020026020010151925050505b919050565b505050565b505050565b5f600267ffffffffffffffff811115612d6d57612d6c613f42565b5b604051908082528060200260200182016040528015612d9b5781602001602082028036833780820191505090505b50905030815f81518110612db257612db1613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e799190613fb0565b81600181518110612e8d57612e8c613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ef2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461192d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f53959493929190614267565b5f604051808303815f87803b158015612f6a575f80fd5b505af1158015612f7c573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612fbb578082015181840152602081019050612fa0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fe082612f84565b612fea8185612f8e565b9350612ffa818560208601612f9e565b61300381612fc6565b840191505092915050565b5f6020820190508181035f8301526130268184612fd6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130688261303f565b9050919050565b6130788161305e565b8114613082575f80fd5b50565b5f813590506130938161306f565b92915050565b5f819050919050565b6130ab81613099565b81146130b5575f80fd5b50565b5f813590506130c6816130a2565b92915050565b5f80604083850312156130e2576130e1613037565b5b5f6130ef85828601613085565b9250506020613100858286016130b8565b9150509250929050565b5f8115159050919050565b61311e8161310a565b82525050565b5f6020820190506131375f830184613115565b92915050565b5f6020828403121561315257613151613037565b5b5f61315f84828501613085565b91505092915050565b5f819050919050565b5f61318b6131866131818461303f565b613168565b61303f565b9050919050565b5f61319c82613171565b9050919050565b5f6131ad82613192565b9050919050565b6131bd816131a3565b82525050565b5f6020820190506131d65f8301846131b4565b92915050565b6131e581613099565b82525050565b5f6020820190506131fe5f8301846131dc565b92915050565b5f6020828403121561321957613218613037565b5b5f613226848285016130b8565b91505092915050565b5f805f6060848603121561324657613245613037565b5b5f61325386828701613085565b935050602061326486828701613085565b9250506040613275868287016130b8565b9150509250925092565b6132888161305e565b82525050565b5f6020820190506132a15f83018461327f565b92915050565b5f60ff82169050919050565b6132bc816132a7565b82525050565b5f6020820190506132d55f8301846132b3565b92915050565b6132e48161310a565b81146132ee575f80fd5b50565b5f813590506132ff816132db565b92915050565b5f806040838503121561331b5761331a613037565b5b5f61332885828601613085565b9250506020613339858286016132f1565b9150509250929050565b5f806040838503121561335957613358613037565b5b5f61336685828601613085565b925050602061337785828601613085565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806133c557607f821691505b6020821081036133d8576133d7613381565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613412602083612f8e565b915061341d826133de565b602082019050919050565b5f6020820190508181035f83015261343f81613406565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61347d82613099565b915061348883613099565b925082820261349681613099565b915082820484148315176134ad576134ac613446565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134eb82613099565b91506134f683613099565b925082613506576135056134b4565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b5f61356b602d83612f8e565b915061357682613511565b604082019050919050565b5f6020820190508181035f8301526135988161355f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6135f9602883612f8e565b91506136048261359f565b604082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b5f61363782613099565b915061364283613099565b925082820190508082111561365a57613659613446565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6136ba603983612f8e565b91506136c582613660565b604082019050919050565b5f6020820190508181035f8301526136e7816136ae565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613748602583612f8e565b9150613753826136ee565b604082019050919050565b5f6020820190508181035f8301526137758161373c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137d6602283612f8e565b91506137e18261377c565b604082019050919050565b5f6020820190508181035f830152613803816137ca565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613864603483612f8e565b915061386f8261380a565b604082019050919050565b5f6020820190508181035f83015261389181613858565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6138f2603483612f8e565b91506138fd82613898565b604082019050919050565b5f6020820190508181035f83015261391f816138e6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613980602683612f8e565b915061398b82613926565b604082019050919050565b5f6020820190508181035f8301526139ad81613974565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a0e602483612f8e565b9150613a19826139b4565b604082019050919050565b5f6020820190508181035f830152613a3b81613a02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a9c602283612f8e565b9150613aa782613a42565b604082019050919050565b5f6020820190508181035f830152613ac981613a90565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b2a602583612f8e565b9150613b3582613ad0565b604082019050919050565b5f6020820190508181035f830152613b5781613b1e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bb8602383612f8e565b9150613bc382613b5e565b604082019050919050565b5f6020820190508181035f830152613be581613bac565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613c46603583612f8e565b9150613c5182613bec565b604082019050919050565b5f6020820190508181035f830152613c7381613c3a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613cae601383612f8e565b9150613cb982613c7a565b602082019050919050565b5f6020820190508181035f830152613cdb81613ca2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613d3c603683612f8e565b9150613d4782613ce2565b604082019050919050565b5f6020820190508181035f830152613d6981613d30565b9050919050565b7f53656c6c20616d6f756e74206973206c657373207468616e20666565732e00005f82015250565b5f613da4601e83612f8e565b9150613daf82613d70565b602082019050919050565b5f6020820190508181035f830152613dd181613d98565b9050919050565b5f613de282613099565b9150613ded83613099565b9250828203905081811115613e0557613e04613446565b5b92915050565b7f42757920616d6f756e74206973206c657373207468616e20666565732e0000005f82015250565b5f613e3f601d83612f8e565b9150613e4a82613e0b565b602082019050919050565b5f6020820190508181035f830152613e6c81613e33565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613ecd602683612f8e565b9150613ed882613e73565b604082019050919050565b5f6020820190508181035f830152613efa81613ec1565b9050919050565b5f81905092915050565b50565b5f613f195f83613f01565b9150613f2482613f0b565b5f82019050919050565b5f613f3882613f0e565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613faa8161306f565b92915050565b5f60208284031215613fc557613fc4613037565b5b5f613fd284828501613f9c565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61400d8161305e565b82525050565b5f61401e8383614004565b60208301905092915050565b5f602082019050919050565b5f61404082613fdb565b61404a8185613fe5565b935061405583613ff5565b805f5b8381101561408557815161406c8882614013565b97506140778361402a565b925050600181019050614058565b5085935050505092915050565b5f6040820190506140a55f8301856131dc565b81810360208301526140b78184614036565b90509392505050565b5f80fd5b6140cd82612fc6565b810181811067ffffffffffffffff821117156140ec576140eb613f42565b5b80604052505050565b5f6140fe61302e565b905061410a82826140c4565b919050565b5f67ffffffffffffffff82111561412957614128613f42565b5b602082029050602081019050919050565b5f80fd5b5f8151905061414c816130a2565b92915050565b5f61416461415f8461410f565b6140f5565b905080838252602082019050602084028301858111156141875761418661413a565b5b835b818110156141b0578061419c888261413e565b845260208401935050602081019050614189565b5050509392505050565b5f82601f8301126141ce576141cd6140c0565b5b81516141de848260208601614152565b91505092915050565b5f602082840312156141fc576141fb613037565b5b5f82015167ffffffffffffffff8111156142195761421861303b565b5b614225848285016141ba565b91505092915050565b5f819050919050565b5f61425161424c6142478461422e565b613168565b613099565b9050919050565b61426181614237565b82525050565b5f60a08201905061427a5f8301886131dc565b6142876020830187614258565b81810360408301526142998186614036565b90506142a8606083018561327f565b6142b560808301846131dc565b969550505050505056fea2646970667358221220c57e7bae96668213817118017e0e3ae19a0b16dfc96b6ecb79b0bdd94ae660b264736f6c63430008150033

Deployed Bytecode Sourcemap

12453:11006:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3615:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13222:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12533:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3022:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16355:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3792:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12636:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2922:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4292:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12591:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12880:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17998:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12959:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3138:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;824:103;;;;;;;;;;;;;:::i;:::-;;15608:152;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16884:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12728:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;601:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17251:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4515:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3273:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17759:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13443:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12920:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17061:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16629:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12765:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15830:517;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3456:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13050:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12807:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13021:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;935:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12847:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2702:100;2756:13;2789:5;2782:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:100;:::o;3615:169::-;3698:4;3715:39;3724:12;:10;:12::i;:::-;3738:7;3747:6;3715:8;:39::i;:::-;3772:4;3765:11;;3615:169;;;;:::o;13222:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;12533:51::-;;;:::o;3022:108::-;3083:7;3110:12;;3103:19;;3022:108;:::o;16355:266::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16491:3:::1;16484;16479:1;16463:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16462:25;;;;:::i;:::-;16461:33;;;;:::i;:::-;16451:6;:43;;16429:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;16610:3;16601:6;:12;;;;:::i;:::-;16578:20;:35;;;;16355:266:::0;:::o;3792:492::-;3932:4;3949:36;3959:6;3967:9;3978:6;3949:9;:36::i;:::-;3998:24;4025:11;:19;4037:6;4025:19;;;;;;;;;;;;;;;:33;4045:12;:10;:12::i;:::-;4025:33;;;;;;;;;;;;;;;;3998:60;;4097:6;4077:16;:26;;4069:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4184:57;4193:6;4201:12;:10;:12::i;:::-;4234:6;4215:16;:25;4184:8;:57::i;:::-;4272:4;4265:11;;;3792:492;;;;;:::o;12636:53::-;12682:6;12636:53;:::o;2922:92::-;2980:5;3005:1;2998:8;;2922:92;:::o;4292:215::-;4380:4;4397:80;4406:12;:10;:12::i;:::-;4420:7;4466:10;4429:11;:25;4441:12;:10;:12::i;:::-;4429:25;;;;;;;;;;;;;;;:34;4455:7;4429:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4397:8;:80::i;:::-;4495:4;4488:11;;4292:215;;;;:::o;12591:38::-;;;:::o;12880:33::-;;;;;;;;;;;;;:::o;17998:126::-;18064:4;18088:19;:28;18108:7;18088:28;;;;;;;;;;;;;;;;;;;;;;;;;18081:35;;17998:126;;;:::o;12959:30::-;;;;;;;;;;;;;:::o;3138:127::-;3212:7;3239:9;:18;3249:7;3239:18;;;;;;;;;;;;;;;;3232:25;;3138:127;;;:::o;824:103::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;889:30:::1;916:1;889:18;:30::i;:::-;824:103::o:0;15608:152::-;15660:4;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15694:5:::1;15677:14;;:22;;;;;;;;;;;;;;;;;;15715:15;;;;;;;;;;15748:4;15741:11;;15608:152:::0;:::o;16884:167::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17039:4:::1;16997:31;:39;17029:6;16997:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16884:167:::0;;:::o;12728:30::-;;;;;;;;;;;;;:::o;601:87::-;647:7;674:6;;;;;;;;;;;667:13;;601:87;:::o;2810:104::-;2866:13;2899:7;2892:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:104;:::o;17251:304::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17395:13:::1;17387:21;;:4;:21;;::::0;17365:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17506:41;17535:4;17541:5;17506:28;:41::i;:::-;17251:304:::0;;:::o;4515:413::-;4608:4;4625:24;4652:11;:25;4664:12;:10;:12::i;:::-;4652:25;;;;;;;;;;;;;;;:34;4678:7;4652:34;;;;;;;;;;;;;;;;4625:61;;4725:15;4705:16;:35;;4697:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4818:67;4827:12;:10;:12::i;:::-;4841:7;4869:15;4850:16;:34;4818:8;:67::i;:::-;4916:4;4909:11;;;4515:413;;;;:::o;3273:175::-;3359:4;3376:42;3386:12;:10;:12::i;:::-;3400:9;3411:6;3376:9;:42::i;:::-;3436:4;3429:11;;3273:175;;;;:::o;17759:231::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17919:15:::1;;;;;;;;;;;17876:59;;17899:18;17876:59;;;;;;;;;;;;17964:18;17946:15;;:36;;;;;;;;;;;;;;;;;;17759:231:::0;:::o;13443:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12920:32::-;;;;;;;;;;;;;:::o;17061:182::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17177:8:::1;17146:19;:28;17166:7;17146:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17217:7;17201:34;;;17226:8;17201:34;;;;;;:::i;:::-;;;;;;;;17061:182:::0;;:::o;16629:247::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16768:3:::1;16761;16756:1;16740:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16739:25;;;;:::i;:::-;16738:33;;;;:::i;:::-;16728:6;:43;;16706:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;16865:3;16856:6;:12;;;;:::i;:::-;16844:9;:24;;;;16629:247:::0;:::o;12765:35::-;;;;:::o;15830:517::-;15938:4;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16027:3:::1;16018:5;16013:1;15997:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15996:27;;;;:::i;:::-;15995:35;;;;:::i;:::-;15982:9;:48;;15960:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;16187:3;16179:4;16174:1;16158:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16157:26;;;;:::i;:::-;16156:34;;;;:::i;:::-;16143:9;:47;;16121:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;16314:3;16302:9;:15;;;;:::i;:::-;16281:18;:36;;;;16335:4;16328:11;;15830:517:::0;;;:::o;3456:151::-;3545:7;3572:11;:18;3584:5;3572:18;;;;;;;;;;;;;;;:27;3591:7;3572:27;;;;;;;;;;;;;;;;3565:34;;3456:151;;;;:::o;13050:23::-;;;;:::o;12807:33::-;;;;:::o;13021:22::-;;;;:::o;935:201::-;747:12;:10;:12::i;:::-;736:23;;:7;:5;:7::i;:::-;:23;;;728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1044:1:::1;1024:22;;:8;:22;;::::0;1016:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1100:28;1119:8;1100:18;:28::i;:::-;935:201:::0;:::o;12847:24::-;;;;:::o;254:98::-;307:7;334:10;327:17;;254:98;:::o;6084:380::-;6237:1;6220:19;;:5;:19;;;6212:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6318:1;6299:21;;:7;:21;;;6291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6402:6;6372:11;:18;6384:5;6372:18;;;;;;;;;;;;;;;:27;6391:7;6372:27;;;;;;;;;;;;;;;:36;;;;6440:7;6424:32;;6433:5;6424:32;;;6449:6;6424:32;;;;;;:::i;:::-;;;;;;;;6084:380;;;:::o;18132:3409::-;18280:1;18264:18;;:4;:18;;;18256:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18357:1;18343:16;;:2;:16;;;18335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18426:1;18416:6;:11;18412:93;;18444:28;18460:4;18466:2;18470:1;18444:15;:28::i;:::-;18487:7;;18412:93;18521:14;;;;;;;;;;;18517:1451;;;18582:7;:5;:7::i;:::-;18574:15;;:4;:15;;;;:49;;;;;18616:7;:5;:7::i;:::-;18610:13;;:2;:13;;;;18574:49;:86;;;;;18658:1;18644:16;;:2;:16;;;;18574:86;:128;;;;;18695:6;18681:21;;:2;:21;;;;18574:128;:158;;;;;18724:8;;;;;;;;;;;18723:9;18574:158;18552:1405;;;18821:25;:31;18847:4;18821:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;18878:31;:35;18910:2;18878:35;;;;;;;;;;;;;;;;;;;;;;;;;18877:36;18821:92;18795:1147;;;19000:20;;18990:6;:30;;18956:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;19208:9;;19191:13;19201:2;19191:9;:13::i;:::-;19182:6;:22;;;;:::i;:::-;:35;;19148:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18795:1147;;;19386:25;:29;19412:2;19386:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;19441:31;:37;19473:4;19441:37;;;;;;;;;;;;;;;;;;;;;;;;;19440:38;19386:92;19360:582;;;19565:20;;19555:6;:30;;19521:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;19360:582;;;19722:31;:35;19754:2;19722:35;;;;;;;;;;;;;;;;;;;;;;;;;19717:225;;19842:9;;19825:13;19835:2;19825:9;:13::i;:::-;19816:6;:22;;;;:::i;:::-;:35;;19782:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19717:225;19360:582;18795:1147;18552:1405;18517:1451;19980:28;20011:24;20029:4;20011:9;:24::i;:::-;19980:55;;20048:12;20087:18;;20063:20;:42;;20048:57;;20136:7;:35;;;;;20160:11;;;;;;;;;;;20136:35;:61;;;;;20189:8;;;;;;;;;;;20188:9;20136:61;:110;;;;;20215:25;:31;20241:4;20215:31;;;;;;;;;;;;;;;;;;;;;;;;;20214:32;20136:110;:153;;;;;20264:19;:25;20284:4;20264:25;;;;;;;;;;;;;;;;;;;;;;;;;20263:26;20136:153;:194;;;;;20307:19;:23;20327:2;20307:23;;;;;;;;;;;;;;;;;;;;;;;;;20306:24;20136:194;20118:326;;;20368:4;20357:8;;:15;;;;;;;;;;;;;;;;;;20389:10;:8;:10::i;:::-;20427:5;20416:8;;:16;;;;;;;;;;;;;;;;;;20118:326;20456:12;20472:8;;;;;;;;;;;20471:9;20456:24;;20582:19;:25;20602:4;20582:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20611:19;:23;20631:2;20611:23;;;;;;;;;;;;;;;;;;;;;;;;;20582:52;20578:100;;;20661:5;20651:15;;20578:100;20690:12;20795:7;20791:697;;;20847:25;:29;20873:2;20847:29;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;20891:1;20880:8;;:12;20847:45;20843:527;;;20920:25;20938:6;20920:17;:25::i;:::-;20913:32;;20981:4;20972:6;:13;20964:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21050:4;21040:14;;;;;:::i;:::-;;;20843:527;;;21116:25;:31;21142:4;21116:31;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;21161:1;21151:7;;:11;21116:46;21112:258;;;21190:24;21207:6;21190:16;:24::i;:::-;21183:31;;21250:4;21241:6;:13;21233:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21318:4;21308:14;;;;;:::i;:::-;;;21353:1;21341:8;;:13;;;;;;;:::i;:::-;;;;;;;;21112:258;20843:527;21397:1;21390:4;:8;21386:91;;;21419:42;21435:4;21449;21456;21419:15;:42::i;:::-;21386:91;20791:697;21500:33;21516:4;21522:2;21526:6;21500:15;:33::i;:::-;18245:3296;;;;18132:3409;;;;:::o;1144:191::-;1218:16;1237:6;;;;;;;;;;;1218:25;;1263:8;1254:6;;:17;;;;;;;;;;;;;;;;;;1318:8;1287:40;;1308:8;1287:40;;;;;;;;;;;;1207:128;1144:191;:::o;17563:188::-;17680:5;17646:25;:31;17672:4;17646:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17737:5;17703:40;;17731:4;17703:40;;;;;;;;;;;;17563:188;;:::o;4936:733::-;5094:1;5076:20;;:6;:20;;;5068:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5178:1;5157:23;;:9;:23;;;5149:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5233:47;5254:6;5262:9;5273:6;5233:20;:47::i;:::-;5293:21;5317:9;:17;5327:6;5317:17;;;;;;;;;;;;;;;;5293:41;;5370:6;5353:13;:23;;5345:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5491:6;5475:13;:22;5455:9;:17;5465:6;5455:17;;;;;;;;;;;;;;;:42;;;;5543:6;5519:9;:20;5529:9;5519:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5584:9;5567:35;;5576:6;5567:35;;;5595:6;5567:35;;;;;;:::i;:::-;;;;;;;;5615:46;5635:6;5643:9;5654:6;5615:19;:46::i;:::-;5057:612;4936:733;;;:::o;22910:546::-;22949:23;22975:24;22993:4;22975:9;:24::i;:::-;22949:50;;23010:12;23058:1;23039:15;:20;23035:59;;23076:7;;;;23035:59;23128:18;;23110:15;:36;23106:105;;;23181:18;;23163:36;;23106:105;23223:26;23252:15;23223:44;;23280:36;23297:18;23280:16;:36::i;:::-;23329:18;23350:21;23329:42;;23404:15;;;;;;;;;;;23396:29;;23433:10;23396:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23382:66;;;;;22938:518;;;;22910:546;:::o;21929:374::-;21995:7;22030:2;22019:8;;:13;22015:40;;;22052:3;22049:2;22041:6;:10;;;;:::i;:::-;:14;;;;:::i;:::-;22034:21;;;;22015:40;22066:21;22104:1;22090:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22066:40;;22135:4;22117;22122:1;22117:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22161:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22151:4;22156:1;22151:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22196:24;22223:15;:28;;;22252:8;;22262:4;22223:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22196:71;;22285:7;22293:1;22285:10;;;;;;;;:::i;:::-;;;;;;;;22278:17;;;;21929:374;;;;:::o;21549:372::-;21614:7;21649:2;21638:8;;:13;21634:40;;;21671:3;21668:2;21660:6;:10;;;;:::i;:::-;:14;;;;:::i;:::-;21653:21;;;;21634:40;21685:21;21723:1;21709:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21685:40;;21754:4;21736;21741:1;21736:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21780:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21770:4;21775:1;21770:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21815:24;21842:15;:28;;;21871:7;;21880:4;21842:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21815:70;;21903:7;21911:1;21903:10;;;;;;;;:::i;:::-;;;;;;;;21896:17;;;;21549:372;;;;:::o;6472:125::-;;;;:::o;6605:124::-;;;;:::o;22313:589::-;22439:21;22477:1;22463:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22439:40;;22508:4;22490;22495:1;22490:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22534:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22524:4;22529:1;22524:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22569:62;22586:4;22601:15;22619:11;22569:8;:62::i;:::-;22670:15;:66;;;22751:11;22777:1;22821:4;22848;22868:15;22670:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22368:534;22313:589;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:474::-;7656:6;7664;7713:2;7701:9;7692:7;7688:23;7684:32;7681:119;;;7719:79;;:::i;:::-;7681:119;7839:1;7864:53;7909:7;7900:6;7889:9;7885:22;7864:53;:::i;:::-;7854:63;;7810:117;7966:2;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7937:118;7588:474;;;;;:::o;8068:180::-;8116:77;8113:1;8106:88;8213:4;8210:1;8203:15;8237:4;8234:1;8227:15;8254:320;8298:6;8335:1;8329:4;8325:12;8315:22;;8382:1;8376:4;8372:12;8403:18;8393:81;;8459:4;8451:6;8447:17;8437:27;;8393:81;8521:2;8513:6;8510:14;8490:18;8487:38;8484:84;;8540:18;;:::i;:::-;8484:84;8305:269;8254:320;;;:::o;8580:182::-;8720:34;8716:1;8708:6;8704:14;8697:58;8580:182;:::o;8768:366::-;8910:3;8931:67;8995:2;8990:3;8931:67;:::i;:::-;8924:74;;9007:93;9096:3;9007:93;:::i;:::-;9125:2;9120:3;9116:12;9109:19;;8768:366;;;:::o;9140:419::-;9306:4;9344:2;9333:9;9329:18;9321:26;;9393:9;9387:4;9383:20;9379:1;9368:9;9364:17;9357:47;9421:131;9547:4;9421:131;:::i;:::-;9413:139;;9140:419;;;:::o;9565:180::-;9613:77;9610:1;9603:88;9710:4;9707:1;9700:15;9734:4;9731:1;9724:15;9751:410;9791:7;9814:20;9832:1;9814:20;:::i;:::-;9809:25;;9848:20;9866:1;9848:20;:::i;:::-;9843:25;;9903:1;9900;9896:9;9925:30;9943:11;9925:30;:::i;:::-;9914:41;;10104:1;10095:7;10091:15;10088:1;10085:22;10065:1;10058:9;10038:83;10015:139;;10134:18;;:::i;:::-;10015:139;9799:362;9751:410;;;;:::o;10167:180::-;10215:77;10212:1;10205:88;10312:4;10309:1;10302:15;10336:4;10333:1;10326:15;10353:185;10393:1;10410:20;10428:1;10410:20;:::i;:::-;10405:25;;10444:20;10462:1;10444:20;:::i;:::-;10439:25;;10483:1;10473:35;;10488:18;;:::i;:::-;10473:35;10530:1;10527;10523:9;10518:14;;10353:185;;;;:::o;10544:232::-;10684:34;10680:1;10672:6;10668:14;10661:58;10753:15;10748:2;10740:6;10736:15;10729:40;10544:232;:::o;10782:366::-;10924:3;10945:67;11009:2;11004:3;10945:67;:::i;:::-;10938:74;;11021:93;11110:3;11021:93;:::i;:::-;11139:2;11134:3;11130:12;11123:19;;10782:366;;;:::o;11154:419::-;11320:4;11358:2;11347:9;11343:18;11335:26;;11407:9;11401:4;11397:20;11393:1;11382:9;11378:17;11371:47;11435:131;11561:4;11435:131;:::i;:::-;11427:139;;11154:419;;;:::o;11579:227::-;11719:34;11715:1;11707:6;11703:14;11696:58;11788:10;11783:2;11775:6;11771:15;11764:35;11579:227;:::o;11812:366::-;11954:3;11975:67;12039:2;12034:3;11975:67;:::i;:::-;11968:74;;12051:93;12140:3;12051:93;:::i;:::-;12169:2;12164:3;12160:12;12153:19;;11812:366;;;:::o;12184:419::-;12350:4;12388:2;12377:9;12373:18;12365:26;;12437:9;12431:4;12427:20;12423:1;12412:9;12408:17;12401:47;12465:131;12591:4;12465:131;:::i;:::-;12457:139;;12184:419;;;:::o;12609:191::-;12649:3;12668:20;12686:1;12668:20;:::i;:::-;12663:25;;12702:20;12720:1;12702:20;:::i;:::-;12697:25;;12745:1;12742;12738:9;12731:16;;12766:3;12763:1;12760:10;12757:36;;;12773:18;;:::i;:::-;12757:36;12609:191;;;;:::o;12806:244::-;12946:34;12942:1;12934:6;12930:14;12923:58;13015:27;13010:2;13002:6;12998:15;12991:52;12806:244;:::o;13056:366::-;13198:3;13219:67;13283:2;13278:3;13219:67;:::i;:::-;13212:74;;13295:93;13384:3;13295:93;:::i;:::-;13413:2;13408:3;13404:12;13397:19;;13056:366;;;:::o;13428:419::-;13594:4;13632:2;13621:9;13617:18;13609:26;;13681:9;13675:4;13671:20;13667:1;13656:9;13652:17;13645:47;13709:131;13835:4;13709:131;:::i;:::-;13701:139;;13428:419;;;:::o;13853:224::-;13993:34;13989:1;13981:6;13977:14;13970:58;14062:7;14057:2;14049:6;14045:15;14038:32;13853:224;:::o;14083:366::-;14225:3;14246:67;14310:2;14305:3;14246:67;:::i;:::-;14239:74;;14322:93;14411:3;14322:93;:::i;:::-;14440:2;14435:3;14431:12;14424:19;;14083:366;;;:::o;14455:419::-;14621:4;14659:2;14648:9;14644:18;14636:26;;14708:9;14702:4;14698:20;14694:1;14683:9;14679:17;14672:47;14736:131;14862:4;14736:131;:::i;:::-;14728:139;;14455:419;;;:::o;14880:221::-;15020:34;15016:1;15008:6;15004:14;14997:58;15089:4;15084:2;15076:6;15072:15;15065:29;14880:221;:::o;15107:366::-;15249:3;15270:67;15334:2;15329:3;15270:67;:::i;:::-;15263:74;;15346:93;15435:3;15346:93;:::i;:::-;15464:2;15459:3;15455:12;15448:19;;15107:366;;;:::o;15479:419::-;15645:4;15683:2;15672:9;15668:18;15660:26;;15732:9;15726:4;15722:20;15718:1;15707:9;15703:17;15696:47;15760:131;15886:4;15760:131;:::i;:::-;15752:139;;15479:419;;;:::o;15904:239::-;16044:34;16040:1;16032:6;16028:14;16021:58;16113:22;16108:2;16100:6;16096:15;16089:47;15904:239;:::o;16149:366::-;16291:3;16312:67;16376:2;16371:3;16312:67;:::i;:::-;16305:74;;16388:93;16477:3;16388:93;:::i;:::-;16506:2;16501:3;16497:12;16490:19;;16149:366;;;:::o;16521:419::-;16687:4;16725:2;16714:9;16710:18;16702:26;;16774:9;16768:4;16764:20;16760:1;16749:9;16745:17;16738:47;16802:131;16928:4;16802:131;:::i;:::-;16794:139;;16521:419;;;:::o;16946:239::-;17086:34;17082:1;17074:6;17070:14;17063:58;17155:22;17150:2;17142:6;17138:15;17131:47;16946:239;:::o;17191:366::-;17333:3;17354:67;17418:2;17413:3;17354:67;:::i;:::-;17347:74;;17430:93;17519:3;17430:93;:::i;:::-;17548:2;17543:3;17539:12;17532:19;;17191:366;;;:::o;17563:419::-;17729:4;17767:2;17756:9;17752:18;17744:26;;17816:9;17810:4;17806:20;17802:1;17791:9;17787:17;17780:47;17844:131;17970:4;17844:131;:::i;:::-;17836:139;;17563:419;;;:::o;17988:225::-;18128:34;18124:1;18116:6;18112:14;18105:58;18197:8;18192:2;18184:6;18180:15;18173:33;17988:225;:::o;18219:366::-;18361:3;18382:67;18446:2;18441:3;18382:67;:::i;:::-;18375:74;;18458:93;18547:3;18458:93;:::i;:::-;18576:2;18571:3;18567:12;18560:19;;18219:366;;;:::o;18591:419::-;18757:4;18795:2;18784:9;18780:18;18772:26;;18844:9;18838:4;18834:20;18830:1;18819:9;18815:17;18808:47;18872:131;18998:4;18872:131;:::i;:::-;18864:139;;18591:419;;;:::o;19016:223::-;19156:34;19152:1;19144:6;19140:14;19133:58;19225:6;19220:2;19212:6;19208:15;19201:31;19016:223;:::o;19245:366::-;19387:3;19408:67;19472:2;19467:3;19408:67;:::i;:::-;19401:74;;19484:93;19573:3;19484:93;:::i;:::-;19602:2;19597:3;19593:12;19586:19;;19245:366;;;:::o;19617:419::-;19783:4;19821:2;19810:9;19806:18;19798:26;;19870:9;19864:4;19860:20;19856:1;19845:9;19841:17;19834:47;19898:131;20024:4;19898:131;:::i;:::-;19890:139;;19617:419;;;:::o;20042:221::-;20182:34;20178:1;20170:6;20166:14;20159:58;20251:4;20246:2;20238:6;20234:15;20227:29;20042:221;:::o;20269:366::-;20411:3;20432:67;20496:2;20491:3;20432:67;:::i;:::-;20425:74;;20508:93;20597:3;20508:93;:::i;:::-;20626:2;20621:3;20617:12;20610:19;;20269:366;;;:::o;20641:419::-;20807:4;20845:2;20834:9;20830:18;20822:26;;20894:9;20888:4;20884:20;20880:1;20869:9;20865:17;20858:47;20922:131;21048:4;20922:131;:::i;:::-;20914:139;;20641:419;;;:::o;21066:224::-;21206:34;21202:1;21194:6;21190:14;21183:58;21275:7;21270:2;21262:6;21258:15;21251:32;21066:224;:::o;21296:366::-;21438:3;21459:67;21523:2;21518:3;21459:67;:::i;:::-;21452:74;;21535:93;21624:3;21535:93;:::i;:::-;21653:2;21648:3;21644:12;21637:19;;21296:366;;;:::o;21668:419::-;21834:4;21872:2;21861:9;21857:18;21849:26;;21921:9;21915:4;21911:20;21907:1;21896:9;21892:17;21885:47;21949:131;22075:4;21949:131;:::i;:::-;21941:139;;21668:419;;;:::o;22093:222::-;22233:34;22229:1;22221:6;22217:14;22210:58;22302:5;22297:2;22289:6;22285:15;22278:30;22093:222;:::o;22321:366::-;22463:3;22484:67;22548:2;22543:3;22484:67;:::i;:::-;22477:74;;22560:93;22649:3;22560:93;:::i;:::-;22678:2;22673:3;22669:12;22662:19;;22321:366;;;:::o;22693:419::-;22859:4;22897:2;22886:9;22882:18;22874:26;;22946:9;22940:4;22936:20;22932:1;22921:9;22917:17;22910:47;22974:131;23100:4;22974:131;:::i;:::-;22966:139;;22693:419;;;:::o;23118:240::-;23258:34;23254:1;23246:6;23242:14;23235:58;23327:23;23322:2;23314:6;23310:15;23303:48;23118:240;:::o;23364:366::-;23506:3;23527:67;23591:2;23586:3;23527:67;:::i;:::-;23520:74;;23603:93;23692:3;23603:93;:::i;:::-;23721:2;23716:3;23712:12;23705:19;;23364:366;;;:::o;23736:419::-;23902:4;23940:2;23929:9;23925:18;23917:26;;23989:9;23983:4;23979:20;23975:1;23964:9;23960:17;23953:47;24017:131;24143:4;24017:131;:::i;:::-;24009:139;;23736:419;;;:::o;24161:169::-;24301:21;24297:1;24289:6;24285:14;24278:45;24161:169;:::o;24336:366::-;24478:3;24499:67;24563:2;24558:3;24499:67;:::i;:::-;24492:74;;24575:93;24664:3;24575:93;:::i;:::-;24693:2;24688:3;24684:12;24677:19;;24336:366;;;:::o;24708:419::-;24874:4;24912:2;24901:9;24897:18;24889:26;;24961:9;24955:4;24951:20;24947:1;24936:9;24932:17;24925:47;24989:131;25115:4;24989:131;:::i;:::-;24981:139;;24708:419;;;:::o;25133:241::-;25273:34;25269:1;25261:6;25257:14;25250:58;25342:24;25337:2;25329:6;25325:15;25318:49;25133:241;:::o;25380:366::-;25522:3;25543:67;25607:2;25602:3;25543:67;:::i;:::-;25536:74;;25619:93;25708:3;25619:93;:::i;:::-;25737:2;25732:3;25728:12;25721:19;;25380:366;;;:::o;25752:419::-;25918:4;25956:2;25945:9;25941:18;25933:26;;26005:9;25999:4;25995:20;25991:1;25980:9;25976:17;25969:47;26033:131;26159:4;26033:131;:::i;:::-;26025:139;;25752:419;;;:::o;26177:180::-;26317:32;26313:1;26305:6;26301:14;26294:56;26177:180;:::o;26363:366::-;26505:3;26526:67;26590:2;26585:3;26526:67;:::i;:::-;26519:74;;26602:93;26691:3;26602:93;:::i;:::-;26720:2;26715:3;26711:12;26704:19;;26363:366;;;:::o;26735:419::-;26901:4;26939:2;26928:9;26924:18;26916:26;;26988:9;26982:4;26978:20;26974:1;26963:9;26959:17;26952:47;27016:131;27142:4;27016:131;:::i;:::-;27008:139;;26735:419;;;:::o;27160:194::-;27200:4;27220:20;27238:1;27220:20;:::i;:::-;27215:25;;27254:20;27272:1;27254:20;:::i;:::-;27249:25;;27298:1;27295;27291:9;27283:17;;27322:1;27316:4;27313:11;27310:37;;;27327:18;;:::i;:::-;27310:37;27160:194;;;;:::o;27360:179::-;27500:31;27496:1;27488:6;27484:14;27477:55;27360:179;:::o;27545:366::-;27687:3;27708:67;27772:2;27767:3;27708:67;:::i;:::-;27701:74;;27784:93;27873:3;27784:93;:::i;:::-;27902:2;27897:3;27893:12;27886:19;;27545:366;;;:::o;27917:419::-;28083:4;28121:2;28110:9;28106:18;28098:26;;28170:9;28164:4;28160:20;28156:1;28145:9;28141:17;28134:47;28198:131;28324:4;28198:131;:::i;:::-;28190:139;;27917:419;;;:::o;28342:225::-;28482:34;28478:1;28470:6;28466:14;28459:58;28551:8;28546:2;28538:6;28534:15;28527:33;28342:225;:::o;28573:366::-;28715:3;28736:67;28800:2;28795:3;28736:67;:::i;:::-;28729:74;;28812:93;28901:3;28812:93;:::i;:::-;28930:2;28925:3;28921:12;28914:19;;28573:366;;;:::o;28945:419::-;29111:4;29149:2;29138:9;29134:18;29126:26;;29198:9;29192:4;29188:20;29184:1;29173:9;29169:17;29162:47;29226:131;29352:4;29226:131;:::i;:::-;29218:139;;28945:419;;;:::o;29370:147::-;29471:11;29508:3;29493:18;;29370:147;;;;:::o;29523:114::-;;:::o;29643:398::-;29802:3;29823:83;29904:1;29899:3;29823:83;:::i;:::-;29816:90;;29915:93;30004:3;29915:93;:::i;:::-;30033:1;30028:3;30024:11;30017:18;;29643:398;;;:::o;30047:379::-;30231:3;30253:147;30396:3;30253:147;:::i;:::-;30246:154;;30417:3;30410:10;;30047:379;;;:::o;30432:180::-;30480:77;30477:1;30470:88;30577:4;30574:1;30567:15;30601:4;30598:1;30591:15;30618:180;30666:77;30663:1;30656:88;30763:4;30760:1;30753:15;30787:4;30784:1;30777:15;30804:143;30861:5;30892:6;30886:13;30877:22;;30908:33;30935:5;30908:33;:::i;:::-;30804:143;;;;:::o;30953:351::-;31023:6;31072:2;31060:9;31051:7;31047:23;31043:32;31040:119;;;31078:79;;:::i;:::-;31040:119;31198:1;31223:64;31279:7;31270:6;31259:9;31255:22;31223:64;:::i;:::-;31213:74;;31169:128;30953:351;;;;:::o;31310:114::-;31377:6;31411:5;31405:12;31395:22;;31310:114;;;:::o;31430:184::-;31529:11;31563:6;31558:3;31551:19;31603:4;31598:3;31594:14;31579:29;;31430:184;;;;:::o;31620:132::-;31687:4;31710:3;31702:11;;31740:4;31735:3;31731:14;31723:22;;31620:132;;;:::o;31758:108::-;31835:24;31853:5;31835:24;:::i;:::-;31830:3;31823:37;31758:108;;:::o;31872:179::-;31941:10;31962:46;32004:3;31996:6;31962:46;:::i;:::-;32040:4;32035:3;32031:14;32017:28;;31872:179;;;;:::o;32057:113::-;32127:4;32159;32154:3;32150:14;32142:22;;32057:113;;;:::o;32206:732::-;32325:3;32354:54;32402:5;32354:54;:::i;:::-;32424:86;32503:6;32498:3;32424:86;:::i;:::-;32417:93;;32534:56;32584:5;32534:56;:::i;:::-;32613:7;32644:1;32629:284;32654:6;32651:1;32648:13;32629:284;;;32730:6;32724:13;32757:63;32816:3;32801:13;32757:63;:::i;:::-;32750:70;;32843:60;32896:6;32843:60;:::i;:::-;32833:70;;32689:224;32676:1;32673;32669:9;32664:14;;32629:284;;;32633:14;32929:3;32922:10;;32330:608;;;32206:732;;;;:::o;32944:483::-;33115:4;33153:2;33142:9;33138:18;33130:26;;33166:71;33234:1;33223:9;33219:17;33210:6;33166:71;:::i;:::-;33284:9;33278:4;33274:20;33269:2;33258:9;33254:18;33247:48;33312:108;33415:4;33406:6;33312:108;:::i;:::-;33304:116;;32944:483;;;;;:::o;33433:117::-;33542:1;33539;33532:12;33556:281;33639:27;33661:4;33639:27;:::i;:::-;33631:6;33627:40;33769:6;33757:10;33754:22;33733:18;33721:10;33718:34;33715:62;33712:88;;;33780:18;;:::i;:::-;33712:88;33820:10;33816:2;33809:22;33599:238;33556:281;;:::o;33843:129::-;33877:6;33904:20;;:::i;:::-;33894:30;;33933:33;33961:4;33953:6;33933:33;:::i;:::-;33843:129;;;:::o;33978:311::-;34055:4;34145:18;34137:6;34134:30;34131:56;;;34167:18;;:::i;:::-;34131:56;34217:4;34209:6;34205:17;34197:25;;34277:4;34271;34267:15;34259:23;;33978:311;;;:::o;34295:117::-;34404:1;34401;34394:12;34418:143;34475:5;34506:6;34500:13;34491:22;;34522:33;34549:5;34522:33;:::i;:::-;34418:143;;;;:::o;34584:732::-;34691:5;34716:81;34732:64;34789:6;34732:64;:::i;:::-;34716:81;:::i;:::-;34707:90;;34817:5;34846:6;34839:5;34832:21;34880:4;34873:5;34869:16;34862:23;;34933:4;34925:6;34921:17;34913:6;34909:30;34962:3;34954:6;34951:15;34948:122;;;34981:79;;:::i;:::-;34948:122;35096:6;35079:231;35113:6;35108:3;35105:15;35079:231;;;35188:3;35217:48;35261:3;35249:10;35217:48;:::i;:::-;35212:3;35205:61;35295:4;35290:3;35286:14;35279:21;;35155:155;35139:4;35134:3;35130:14;35123:21;;35079:231;;;35083:21;34697:619;;34584:732;;;;;:::o;35339:385::-;35421:5;35470:3;35463:4;35455:6;35451:17;35447:27;35437:122;;35478:79;;:::i;:::-;35437:122;35588:6;35582:13;35613:105;35714:3;35706:6;35699:4;35691:6;35687:17;35613:105;:::i;:::-;35604:114;;35427:297;35339:385;;;;:::o;35730:554::-;35825:6;35874:2;35862:9;35853:7;35849:23;35845:32;35842:119;;;35880:79;;:::i;:::-;35842:119;36021:1;36010:9;36006:17;36000:24;36051:18;36043:6;36040:30;36037:117;;;36073:79;;:::i;:::-;36037:117;36178:89;36259:7;36250:6;36239:9;36235:22;36178:89;:::i;:::-;36168:99;;35971:306;35730:554;;;;:::o;36290:85::-;36335:7;36364:5;36353:16;;36290:85;;;:::o;36381:158::-;36439:9;36472:61;36490:42;36499:32;36525:5;36499:32;:::i;:::-;36490:42;:::i;:::-;36472:61;:::i;:::-;36459:74;;36381:158;;;:::o;36545:147::-;36640:45;36679:5;36640:45;:::i;:::-;36635:3;36628:58;36545:147;;:::o;36698:831::-;36961:4;36999:3;36988:9;36984:19;36976:27;;37013:71;37081:1;37070:9;37066:17;37057:6;37013:71;:::i;:::-;37094:80;37170:2;37159:9;37155:18;37146:6;37094:80;:::i;:::-;37221:9;37215:4;37211:20;37206:2;37195:9;37191:18;37184:48;37249:108;37352:4;37343:6;37249:108;:::i;:::-;37241:116;;37367:72;37435:2;37424:9;37420:18;37411:6;37367:72;:::i;:::-;37449:73;37517:3;37506:9;37502:19;37493:6;37449:73;:::i;:::-;36698:831;;;;;;;;:::o

Swarm Source

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