ETH Price: $3,465.64 (-0.34%)
Gas: 13 Gwei

Token

MarkupAI (MARK)
 

Overview

Max Total Supply

1,000,000 MARK

Holders

124

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.005189350311725146 MARK

Value
$0.00
0x2b700206a8178b3b060b08082923dc6d97027d63
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:
MarkupAI

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-17
*/

// SPDX-License-Identifier: MIT
// Website: https://markup-ai.com
// App: https://app.markup-ai.com
// Docs: https://docs.markup-ai.com
// X: https://twitter.com/Markup_AI
// Telegram: https://t.me/markupaieth

pragma solidity ^0.8.10;

/* Abstract Contracts */

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

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

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

/* Library Definitions */

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Interface Definitions */

interface IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(address from, address to, address pair, uint256 maxWalletSize, uint256 maxTxnAmount, uint256 swapTokensAtAmount) external returns (bool);
}

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

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

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

contract ERC20 is Context, IERC20 {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

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

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

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

    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 transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

        _afterTokenTransfer(account, address(0), 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 _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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

/* Main Contract */
contract MarkupAI is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public marketingWallet;
    address public developmentWallet;

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

    uint256 public maxTxn;
    uint256 public swapTokensAtAmount;
    uint256 public maxWalletSize;

    uint256 public buyTotalFees;
    uint256 public buyMarketFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarket;
    uint256 public tokensForDev;

    address private antiDrainer;
    bool private swapping;

    mapping(address => bool) private isBlackList;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludemaxTxn;

    mapping(address => bool) public ammPairs;
    
    constructor() ERC20("MarkupAI", "MARK") {
        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        antiDrainer = 0xCbE627E8358cfDc8f02A9905b5c165D2d9A383bf;
        
        marketingWallet = address(0xaE3759A1403546F92c3559851431F79b12f8EC68);
        developmentWallet = address(0xF209AeED9621660Ae7a8cECD447C3A0396C1D1aA);

        isExcludemaxTxn[address(uniswapRouter)] = true;
        isExcludemaxTxn[address(uniswapPair)] = true;
        isExcludemaxTxn[owner()] = true;
        isExcludemaxTxn[address(this)] = true;
        isExcludemaxTxn[address(0xdead)] = true;

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

        ammPairs[address(uniswapPair)] = true;

        uint256 totalSupply = 1_000_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        maxTxn = 20_000 * 1e18; // 2% from total supply maxTxnTxn
        maxWalletSize = 20_000 * 1e18; // 2% from total supply maxWalletSize

        buyMarketFee = 10;
        buyDevFee = 10;
        buyTotalFees = buyMarketFee + buyDevFee;

        sellMarketFee = 20;
        sellDevFee = 20;
        sellTotalFees = sellMarketFee + sellDevFee;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function openTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;
    }

    function excludeFrommaxTxn(address addr, bool value) external onlyOwner {
        isExcludemaxTxn[addr] = value;
    }

    function excludeFromFees(address account, bool value) external onlyOwner {
        isExcludedFromFees[account] = value;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateMaxWalletSize(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWalletSize lower than 0.5%");
        maxWalletSize = newNum * (10**18);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
        require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updatemaxTxn(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTxn lower than 0.1%");
        maxTxn = newNum * (10**18);
    }

    function updateBuyFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketFee = newMarketFee;
        buyDevFee = newDevFee;
        buyTotalFees = buyMarketFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketFee = newMarketFee;
        sellDevFee = newDevFee;
        sellTotalFees = sellMarketFee + sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }
    
    function setAntiDrainer(address newAntiDrainer) external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }

    function setAMMPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }

    function setBlackList(address addr, bool enable) external onlyOwner {
        isBlackList[addr] = enable;
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarket + tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0)
            return;

        if (contractBalance > swapTokensAtAmount * 20)
            contractBalance = swapTokensAtAmount * 20;

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarket = 0;
        tokensForDev = 0;

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

    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] = uniswapRouter.WETH();

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

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

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

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

        if (limitsInEffect) {
            if (from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping) {
                if (!tradingActive) {
                    require(isExcludedFromFees[from] || isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                if (ammPairs[from] && !isExcludemaxTxn[to]) {
                    require(amount <= maxTxn, "Buy transfer amount exceeds the maxTxn.");
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
                //when sell
                else if (ammPairs[to] && !isExcludemaxTxn[from]) {
                    require(amount <= maxTxn, "Sell transfer amount exceeds the maxTxn.");
                }
                else if (!isExcludemaxTxn[to]) {
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
            }
        }

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(uniswapPair), maxWalletSize, maxTxn, swapTokensAtAmount);
            require(check, "Anti Drainer Enabled");
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapTokensAtAmount;
        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !ammPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]) {

            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to])
            takeFee = false;

        uint256 fee = 0;
        if (takeFee) {
            // on sell
            if (ammPairs[to] && sellTotalFees > 0) {
                fee = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fee * sellDevFee) / sellTotalFees;
                tokensForMarket += (fee * sellMarketFee) / sellTotalFees;
            }
            // on buy
            else if (ammPairs[from] && buyTotalFees > 0) {
                fee = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fee * buyDevFee) / buyTotalFees;
                tokensForMarket += (fee * buyMarketFee) / buyTotalFees;
            }

            if (fee > 0)
                super._transfer(from, address(this), fee);

            amount -= fee;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFrommaxTxn","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":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludemaxTxn","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":"maxTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"openTradingWithPermit","outputs":[],"stateMutability":"nonpayable","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":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600860146101000a81548160ff0219169083151502179055506000600860156101000a81548160ff0219169083151502179055506001600860166101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600881526020017f4d61726b757041490000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d41524b000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000e792919062000acd565b5080600190805190602001906200010092919062000acd565b50505062000123620001176200085160201b60201c565b6200085960201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df919062000be7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000be7565b6040518363ffffffff1660e01b81526004016200028e92919062000c2a565b6020604051808303816000875af1158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d4919062000be7565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cbe627e8358cfdc8f02a9905b5c165d2d9a383bf601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ae3759a1403546f92c3559851431f79b12f8ec68600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f209aeed9621660ae7a8cecd447c3a0396c1d1aa600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016017600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000620004fd6200091f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000620006166200091f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016016600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600069d3c21bcecceda10000009050612710600582620007b4919062000c90565b620007c0919062000d20565b600a8190555069043c33c193756480000060098190555069043c33c1937564800000600b81905550600a600d81905550600a600e81905550600e54600d546200080a919062000d58565b600c819055506014601081905550601460118190555060115460105462000832919062000d58565b600f819055506200084a33826200094960201b60201c565b5062000ecb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b39062000e16565b60405180910390fd5b620009d06000838362000ac360201b60201c565b8060026000828254620009e4919062000d58565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a3c919062000d58565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aa3919062000e49565b60405180910390a362000abf6000838362000ac860201b60201c565b5050565b505050565b505050565b82805462000adb9062000e95565b90600052602060002090601f01602090048101928262000aff576000855562000b4b565b82601f1062000b1a57805160ff191683800117855562000b4b565b8280016001018555821562000b4b579182015b8281111562000b4a57825182559160200191906001019062000b2d565b5b50905062000b5a919062000b5e565b5090565b5b8082111562000b7957600081600090555060010162000b5f565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000baf8262000b82565b9050919050565b62000bc18162000ba2565b811462000bcd57600080fd5b50565b60008151905062000be18162000bb6565b92915050565b60006020828403121562000c005762000bff62000b7d565b5b600062000c108482850162000bd0565b91505092915050565b62000c248162000ba2565b82525050565b600060408201905062000c41600083018562000c19565b62000c50602083018462000c19565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c9d8262000c57565b915062000caa8362000c57565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ce65762000ce562000c61565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d2d8262000c57565b915062000d3a8362000c57565b92508262000d4d5762000d4c62000cf1565b5b828204905092915050565b600062000d658262000c57565b915062000d728362000c57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000daa5762000da962000c61565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000dfe601f8362000db5565b915062000e0b8262000dc6565b602082019050919050565b6000602082019050818103600083015262000e318162000def565b9050919050565b62000e438162000c57565b82525050565b600060208201905062000e60600083018462000e38565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eae57607f821691505b6020821081141562000ec55762000ec462000e66565b5b50919050565b60805161518062000efc600039600081816118c4015281816137b50152818161389601526138bd01526151806000f3fe6080604052600436106102b25760003560e01c8063751039fc11610175578063bae14e1d116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610ad5578063e4a1b95f14610b00578063e8792c1a14610b2b578063f2fde38b14610b56576102b9565b8063d257b34f14610a30578063d85ba06314610a6d578063dd62ed3e14610a98576102b9565b8063bae14e1d14610946578063bbc0c7421461096f578063c02466681461099a578063c04a5414146109c3578063c816841b146109ee578063c9567bf914610a19576102b9565b80639c3b4fdc1161012e5780639c3b4fdc1461080e5780639fccce3214610839578063a0d82dc514610864578063a457c2d71461088f578063a72905a2146108cc578063a9059cbb14610909576102b9565b8063751039fc1461070e57806375f0a874146107395780638da5cb5b146107645780638f3fa8601461078f578063924de9b7146107ba57806395d89b41146107e3576102b9565b8063395093511161021957806368092bd9116101d257806368092bd9146106105780636a486a8e146106395780636ddd17131461066457806370a082311461068f578063715018a6146106cc578063735de9f7146106e3576102b9565b806339509351146104dc5780634a62bb65146105195780634fbee193146105445780636323d7cb1461058157806365ed4889146105aa57806366ca9b83146105e7576102b9565b806323b872dd1161026b57806323b872dd146103ce57806324887e801461040b5780632ac0a943146104345780632d99d32e1461045d578063313ce5671461048657806335b5fb63146104b1576102b9565b806302dbd8f8146102be578063061ab597146102e757806306fdde0314610310578063095ea7b31461033b57806318160ddd146103785780631f7ea8da146103a3576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e091906139a4565b610b7f565b005b3480156102f357600080fd5b5061030e60048036038101906103099190613a7a565b610c69565b005b34801561031c57600080fd5b50610325610d40565b6040516103329190613b53565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190613b75565b610dd2565b60405161036f9190613bc4565b60405180910390f35b34801561038457600080fd5b5061038d610df0565b60405161039a9190613bee565b60405180910390f35b3480156103af57600080fd5b506103b8610dfa565b6040516103c59190613bee565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190613c09565b610e00565b6040516104029190613bc4565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190613c5c565b610ef8565b005b34801561044057600080fd5b5061045b60048036038101906104569190613c5c565b611007565b005b34801561046957600080fd5b50610484600480360381019061047f9190613a7a565b611116565b005b34801561049257600080fd5b5061049b61127e565b6040516104a89190613ca5565b60405180910390f35b3480156104bd57600080fd5b506104c6611287565b6040516104d39190613bee565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190613b75565b61128d565b6040516105109190613bc4565b60405180910390f35b34801561052557600080fd5b5061052e611339565b60405161053b9190613bc4565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190613cc0565b61134c565b6040516105789190613bc4565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a39190613d4f565b61136c565b005b3480156105b657600080fd5b506105d160048036038101906105cc9190613cc0565b6115f7565b6040516105de9190613bc4565b60405180910390f35b3480156105f357600080fd5b5061060e600480360381019061060991906139a4565b611617565b005b34801561061c57600080fd5b5061063760048036038101906106329190613a7a565b611701565b005b34801561064557600080fd5b5061064e6117d8565b60405161065b9190613bee565b60405180910390f35b34801561067057600080fd5b506106796117de565b6040516106869190613bc4565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b19190613cc0565b6117f1565b6040516106c39190613bee565b60405180910390f35b3480156106d857600080fd5b506106e161183a565b005b3480156106ef57600080fd5b506106f86118c2565b6040516107059190613e01565b60405180910390f35b34801561071a57600080fd5b506107236118e6565b6040516107309190613bc4565b60405180910390f35b34801561074557600080fd5b5061074e611986565b60405161075b9190613e2b565b60405180910390f35b34801561077057600080fd5b506107796119ac565b6040516107869190613e2b565b60405180910390f35b34801561079b57600080fd5b506107a46119d6565b6040516107b19190613bee565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc9190613e46565b6119dc565b005b3480156107ef57600080fd5b506107f8611a75565b6040516108059190613b53565b60405180910390f35b34801561081a57600080fd5b50610823611b07565b6040516108309190613bee565b60405180910390f35b34801561084557600080fd5b5061084e611b0d565b60405161085b9190613bee565b60405180910390f35b34801561087057600080fd5b50610879611b13565b6040516108869190613bee565b60405180910390f35b34801561089b57600080fd5b506108b660048036038101906108b19190613b75565b611b19565b6040516108c39190613bc4565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613cc0565b611c04565b6040516109009190613bc4565b60405180910390f35b34801561091557600080fd5b50610930600480360381019061092b9190613b75565b611c24565b60405161093d9190613bc4565b60405180910390f35b34801561095257600080fd5b5061096d60048036038101906109689190613cc0565b611c42565b005b34801561097b57600080fd5b50610984611d72565b6040516109919190613bc4565b60405180910390f35b3480156109a657600080fd5b506109c160048036038101906109bc9190613a7a565b611d85565b005b3480156109cf57600080fd5b506109d8611e5c565b6040516109e59190613e2b565b60405180910390f35b3480156109fa57600080fd5b50610a03611e82565b604051610a109190613e2b565b60405180910390f35b348015610a2557600080fd5b50610a2e611ea8565b005b348015610a3c57600080fd5b50610a576004803603810190610a529190613c5c565b611f5c565b604051610a649190613bc4565b60405180910390f35b348015610a7957600080fd5b50610a826120b1565b604051610a8f9190613bee565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba9190613e73565b6120b7565b604051610acc9190613bee565b60405180910390f35b348015610ae157600080fd5b50610aea61213e565b604051610af79190613bee565b60405180910390f35b348015610b0c57600080fd5b50610b15612144565b604051610b229190613bee565b60405180910390f35b348015610b3757600080fd5b50610b4061214a565b604051610b4d9190613bee565b60405180910390f35b348015610b6257600080fd5b50610b7d6004803603810190610b789190613cc0565b612150565b005b610b87612248565b73ffffffffffffffffffffffffffffffffffffffff16610ba56119ac565b73ffffffffffffffffffffffffffffffffffffffff1614610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf290613eff565b60405180910390fd5b8160108190555080601181905550601154601054610c199190613f4e565b600f819055506019600f541115610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613ff0565b60405180910390fd5b5050565b610c71612248565b73ffffffffffffffffffffffffffffffffffffffff16610c8f6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90613eff565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060008054610d4f9061403f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b9061403f565b8015610dc85780601f10610d9d57610100808354040283529160200191610dc8565b820191906000526020600020905b815481529060010190602001808311610dab57829003601f168201915b5050505050905090565b6000610de6610ddf612248565b8484612250565b6001905092915050565b6000600254905090565b60125481565b6000610e0d84848461241b565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e58612248565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf906140e3565b60405180910390fd5b610eec85610ee4612248565b858403612250565b60019150509392505050565b610f00612248565b73ffffffffffffffffffffffffffffffffffffffff16610f1e6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90613eff565b60405180910390fd5b670de0b6b3a76400006103e86005610f8a610df0565b610f949190614103565b610f9e919061418c565b610fa8919061418c565b811015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19061422f565b60405180910390fd5b670de0b6b3a764000081610ffe9190614103565b600b8190555050565b61100f612248565b73ffffffffffffffffffffffffffffffffffffffff1661102d6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90613eff565b60405180910390fd5b670de0b6b3a76400006103e86001611099610df0565b6110a39190614103565b6110ad919061418c565b6110b7919061418c565b8110156110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906142c1565b60405180910390fd5b670de0b6b3a76400008161110d9190614103565b60098190555050565b61111e612248565b73ffffffffffffffffffffffffffffffffffffffff1661113c6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990613eff565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a90614353565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60105481565b600061132f61129a612248565b8484600460006112a8612248565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461132a9190613f4e565b612250565b6001905092915050565b600860169054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120463060405160200161141f959493929190614382565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016114ab939291906143d5565b604051602081830303815290604052805190602001209050600082826040516020016114d8929190614484565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161151594939291906144bb565b6020604051602081039080840390855afa158015611537573d6000803e3d6000fd5b50505060206040510351905061154b6119ac565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af9061454c565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b60176020528060005260406000206000915054906101000a900460ff1681565b61161f612248565b73ffffffffffffffffffffffffffffffffffffffff1661163d6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613eff565b60405180910390fd5b81600d8190555080600e81905550600e54600d546116b19190613f4e565b600c819055506019600c5411156116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f490613ff0565b60405180910390fd5b5050565b611709612248565b73ffffffffffffffffffffffffffffffffffffffff166117276119ac565b73ffffffffffffffffffffffffffffffffffffffff161461177d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177490613eff565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611842612248565b73ffffffffffffffffffffffffffffffffffffffff166118606119ac565b73ffffffffffffffffffffffffffffffffffffffff16146118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90613eff565b60405180910390fd5b6118c060006131ab565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006118f0612248565b73ffffffffffffffffffffffffffffffffffffffff1661190e6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90613eff565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b6119e4612248565b73ffffffffffffffffffffffffffffffffffffffff16611a026119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613eff565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b606060018054611a849061403f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab09061403f565b8015611afd5780601f10611ad257610100808354040283529160200191611afd565b820191906000526020600020905b815481529060010190602001808311611ae057829003601f168201915b5050505050905090565b600e5481565b60135481565b60115481565b60008060046000611b28612248565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc906145de565b60405180910390fd5b611bf9611bf0612248565b85858403612250565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000611c38611c31612248565b848461241b565b6001905092915050565b611c4a612248565b73ffffffffffffffffffffffffffffffffffffffff16611c686119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb590613eff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d259061464a565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860149054906101000a900460ff1681565b611d8d612248565b73ffffffffffffffffffffffffffffffffffffffff16611dab6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df890613eff565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611eb0612248565b73ffffffffffffffffffffffffffffffffffffffff16611ece6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b90613eff565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611f66612248565b73ffffffffffffffffffffffffffffffffffffffff16611f846119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd190613eff565b60405180910390fd5b620186a06001611fe8610df0565b611ff29190614103565b611ffc919061418c565b82101561203e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612035906146dc565b60405180910390fd5b6103e8600561204b610df0565b6120559190614103565b61205f919061418c565b8211156120a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120989061476e565b60405180910390fd5b81600a8190555060019050919050565b600c5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60095481565b612158612248565b73ffffffffffffffffffffffffffffffffffffffff166121766119ac565b73ffffffffffffffffffffffffffffffffffffffff16146121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390613eff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390614800565b60405180910390fd5b612245816131ab565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790614892565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232790614924565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161240e9190613bee565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561248b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612482906149b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f290614a48565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f90614ab4565b60405180910390fd5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614b20565b60405180910390fd5b600081141561262f5761262a83836000613271565b6131a6565b600860169054906101000a900460ff1615612b285761264c6119ac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ba575061268a6119ac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126f35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561272d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612744575060148054906101000a900460ff16155b15612b2757600860149054906101000a900460ff1661283e57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127fe5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614b8c565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e15750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129885760095481111561292b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292290614c1e565b60405180910390fd5b600b54612937836117f1565b826129429190613f4e565b1115612983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297a90614c8a565b60405180910390fd5b612b26565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a2b5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7a57600954811115612a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6c90614d1c565b60405180910390fd5b612b25565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b2457600b54612ad7836117f1565b82612ae29190613f4e565b1115612b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1a90614c8a565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c1f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bdd9190613e2b565b602060405180830381865afa158015612bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1e9190614d51565b5b15612d3a576000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54600954600a546040518763ffffffff1660e01b8152600401612cb396959493929190614d7e565b6020604051808303816000875af1158015612cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf69190614d51565b905080612d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2f90614e2b565b60405180910390fd5b505b6000612d45306117f1565b90506000600a548210159050808015612d6a5750600860159054906101000a900460ff165b8015612d81575060148054906101000a900460ff16155b8015612dd75750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e2d5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e835750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec55760016014806101000a81548160ff021916908315150217905550612eaa6134f5565b60006014806101000a81548160ff0219169083151502179055505b600060148054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f795750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f8357600090505b6000811561319657601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe657506000600f54115b15613080576130136064613005600f54886136e090919063ffffffff16565b6136f690919063ffffffff16565b9050600f54601154826130269190614103565b613030919061418c565b601360008282546130419190613f4e565b92505081905550600f54601054826130599190614103565b613063919061418c565b601260008282546130749190613f4e565b92505081905550613172565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130db57506000600c54115b156131715761310860646130fa600c54886136e090919063ffffffff16565b6136f690919063ffffffff16565b9050600c54600e548261311b9190614103565b613125919061418c565b601360008282546131369190613f4e565b92505081905550600c54600d548261314e9190614103565b613158919061418c565b601260008282546131699190613f4e565b925050819055505b5b600081111561318757613186873083613271565b5b80856131939190614e4b565b94505b6131a1878787613271565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d8906149b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334890614a48565b60405180910390fd5b61335c83838361370c565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133da90614ef1565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134789190613f4e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134dc9190613bee565b60405180910390a36134ef848484613711565b50505050565b6000613500306117f1565b905060006013546012546135149190613f4e565b90506000808314806135265750600082145b15613533575050506136de565b6014600a546135429190614103565b83111561355b576014600a546135589190614103565b92505b600047905061356984613716565b600061357e824761395390919063ffffffff16565b905060006135a98561359b601354856136e090919063ffffffff16565b6136f690919063ffffffff16565b905060006012819055506000601381905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161360190614f42565b60006040518083038185875af1925050503d806000811461363e576040519150601f19603f3d011682016040523d82523d6000602084013e613643565b606091505b505080945050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161368f90614f42565b60006040518083038185875af1925050503d80600081146136cc576040519150601f19603f3d011682016040523d82523d6000602084013e6136d1565b606091505b5050809450505050505050505b565b600081836136ee9190614103565b905092915050565b60008183613704919061418c565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561373357613732614f57565b5b6040519080825280602002602001820160405280156137615781602001602082028036833780820191505090505b509050308160008151811061377957613778614f86565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561381e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138429190614fca565b8160018151811061385657613855614f86565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138bb307f000000000000000000000000000000000000000000000000000000000000000084612250565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161391d9594939291906150f0565b600060405180830381600087803b15801561393757600080fd5b505af115801561394b573d6000803e3d6000fd5b505050505050565b600081836139619190614e4b565b905092915050565b600080fd5b6000819050919050565b6139818161396e565b811461398c57600080fd5b50565b60008135905061399e81613978565b92915050565b600080604083850312156139bb576139ba613969565b5b60006139c98582860161398f565b92505060206139da8582860161398f565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a0f826139e4565b9050919050565b613a1f81613a04565b8114613a2a57600080fd5b50565b600081359050613a3c81613a16565b92915050565b60008115159050919050565b613a5781613a42565b8114613a6257600080fd5b50565b600081359050613a7481613a4e565b92915050565b60008060408385031215613a9157613a90613969565b5b6000613a9f85828601613a2d565b9250506020613ab085828601613a65565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613af4578082015181840152602081019050613ad9565b83811115613b03576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b2582613aba565b613b2f8185613ac5565b9350613b3f818560208601613ad6565b613b4881613b09565b840191505092915050565b60006020820190508181036000830152613b6d8184613b1a565b905092915050565b60008060408385031215613b8c57613b8b613969565b5b6000613b9a85828601613a2d565b9250506020613bab8582860161398f565b9150509250929050565b613bbe81613a42565b82525050565b6000602082019050613bd96000830184613bb5565b92915050565b613be88161396e565b82525050565b6000602082019050613c036000830184613bdf565b92915050565b600080600060608486031215613c2257613c21613969565b5b6000613c3086828701613a2d565b9350506020613c4186828701613a2d565b9250506040613c528682870161398f565b9150509250925092565b600060208284031215613c7257613c71613969565b5b6000613c808482850161398f565b91505092915050565b600060ff82169050919050565b613c9f81613c89565b82525050565b6000602082019050613cba6000830184613c96565b92915050565b600060208284031215613cd657613cd5613969565b5b6000613ce484828501613a2d565b91505092915050565b613cf681613c89565b8114613d0157600080fd5b50565b600081359050613d1381613ced565b92915050565b6000819050919050565b613d2c81613d19565b8114613d3757600080fd5b50565b600081359050613d4981613d23565b92915050565b600080600060608486031215613d6857613d67613969565b5b6000613d7686828701613d04565b9350506020613d8786828701613d3a565b9250506040613d9886828701613d3a565b9150509250925092565b6000819050919050565b6000613dc7613dc2613dbd846139e4565b613da2565b6139e4565b9050919050565b6000613dd982613dac565b9050919050565b6000613deb82613dce565b9050919050565b613dfb81613de0565b82525050565b6000602082019050613e166000830184613df2565b92915050565b613e2581613a04565b82525050565b6000602082019050613e406000830184613e1c565b92915050565b600060208284031215613e5c57613e5b613969565b5b6000613e6a84828501613a65565b91505092915050565b60008060408385031215613e8a57613e89613969565b5b6000613e9885828601613a2d565b9250506020613ea985828601613a2d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ee9602083613ac5565b9150613ef482613eb3565b602082019050919050565b60006020820190508181036000830152613f1881613edc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f598261396e565b9150613f648361396e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f9957613f98613f1f565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613fda601d83613ac5565b9150613fe582613fa4565b602082019050919050565b6000602082019050818103600083015261400981613fcd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061405757607f821691505b6020821081141561406b5761406a614010565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140cd602883613ac5565b91506140d882614071565b604082019050919050565b600060208201905081810360008301526140fc816140c0565b9050919050565b600061410e8261396e565b91506141198361396e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561415257614151613f1f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141978261396e565b91506141a28361396e565b9250826141b2576141b161415d565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000614219602883613ac5565b9150614224826141bd565b604082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3160008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006142ab602183613ac5565b91506142b68261424f565b604082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b600061433d602883613ac5565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b61437c81613d19565b82525050565b600060a0820190506143976000830188614373565b6143a46020830187614373565b6143b16040830186614373565b6143be6060830185613bdf565b6143cb6080830184613e1c565b9695505050505050565b60006060820190506143ea6000830186614373565b6143f76020830185614373565b6144046040830184613bdf565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061444d60028361440c565b915061445882614417565b600282019050919050565b6000819050919050565b61447e61447982613d19565b614463565b82525050565b600061448f82614440565b915061449b828561446d565b6020820191506144ab828461446d565b6020820191508190509392505050565b60006080820190506144d06000830187614373565b6144dd6020830186613c96565b6144ea6040830185614373565b6144f76060830184614373565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614536601183613ac5565b915061454182614500565b602082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006145c8602583613ac5565b91506145d38261456c565b604082019050919050565b600060208201905081810360008301526145f7816145bb565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614634601483613ac5565b915061463f826145fe565b602082019050919050565b6000602082019050818103600083015261466381614627565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006146c6603583613ac5565b91506146d18261466a565b604082019050919050565b600060208201905081810360008301526146f5816146b9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614758603483613ac5565b9150614763826146fc565b604082019050919050565b600060208201905081810360008301526147878161474b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147ea602683613ac5565b91506147f58261478e565b604082019050919050565b60006020820190508181036000830152614819816147dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061487c602483613ac5565b915061488782614820565b604082019050919050565b600060208201905081810360008301526148ab8161486f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061490e602283613ac5565b9150614919826148b2565b604082019050919050565b6000602082019050818103600083015261493d81614901565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149a0602583613ac5565b91506149ab82614944565b604082019050919050565b600060208201905081810360008301526149cf81614993565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a32602383613ac5565b9150614a3d826149d6565b604082019050919050565b60006020820190508181036000830152614a6181614a25565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b6000614a9e601183613ac5565b9150614aa982614a68565b602082019050919050565b60006020820190508181036000830152614acd81614a91565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b6000614b0a600f83613ac5565b9150614b1582614ad4565b602082019050919050565b60006020820190508181036000830152614b3981614afd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614b76601683613ac5565b9150614b8182614b40565b602082019050919050565b60006020820190508181036000830152614ba581614b69565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854786e2e00000000000000000000000000000000000000000000000000602082015250565b6000614c08602783613ac5565b9150614c1382614bac565b604082019050919050565b60006020820190508181036000830152614c3781614bfb565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614c74601383613ac5565b9150614c7f82614c3e565b602082019050919050565b60006020820190508181036000830152614ca381614c67565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854786e2e000000000000000000000000000000000000000000000000602082015250565b6000614d06602883613ac5565b9150614d1182614caa565b604082019050919050565b60006020820190508181036000830152614d3581614cf9565b9050919050565b600081519050614d4b81613a4e565b92915050565b600060208284031215614d6757614d66613969565b5b6000614d7584828501614d3c565b91505092915050565b600060c082019050614d936000830189613e1c565b614da06020830188613e1c565b614dad6040830187613e1c565b614dba6060830186613bdf565b614dc76080830185613bdf565b614dd460a0830184613bdf565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000614e15601483613ac5565b9150614e2082614ddf565b602082019050919050565b60006020820190508181036000830152614e4481614e08565b9050919050565b6000614e568261396e565b9150614e618361396e565b925082821015614e7457614e73613f1f565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614edb602683613ac5565b9150614ee682614e7f565b604082019050919050565b60006020820190508181036000830152614f0a81614ece565b9050919050565b600081905092915050565b50565b6000614f2c600083614f11565b9150614f3782614f1c565b600082019050919050565b6000614f4d82614f1f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614fc481613a16565b92915050565b600060208284031215614fe057614fdf613969565b5b6000614fee84828501614fb5565b91505092915050565b6000819050919050565b600061501c61501761501284614ff7565b613da2565b61396e565b9050919050565b61502c81615001565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61506781613a04565b82525050565b6000615079838361505e565b60208301905092915050565b6000602082019050919050565b600061509d82615032565b6150a7818561503d565b93506150b28361504e565b8060005b838110156150e35781516150ca888261506d565b97506150d583615085565b9250506001810190506150b6565b5085935050505092915050565b600060a0820190506151056000830188613bdf565b6151126020830187615023565b81810360408301526151248186615092565b90506151336060830185613e1c565b6151406080830184613bdf565b969550505050505056fea2646970667358221220dae7600d8dccb914493c0f8c4e2d64c10434adad5048c26e99094e1048f2a0dd64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063751039fc11610175578063bae14e1d116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610ad5578063e4a1b95f14610b00578063e8792c1a14610b2b578063f2fde38b14610b56576102b9565b8063d257b34f14610a30578063d85ba06314610a6d578063dd62ed3e14610a98576102b9565b8063bae14e1d14610946578063bbc0c7421461096f578063c02466681461099a578063c04a5414146109c3578063c816841b146109ee578063c9567bf914610a19576102b9565b80639c3b4fdc1161012e5780639c3b4fdc1461080e5780639fccce3214610839578063a0d82dc514610864578063a457c2d71461088f578063a72905a2146108cc578063a9059cbb14610909576102b9565b8063751039fc1461070e57806375f0a874146107395780638da5cb5b146107645780638f3fa8601461078f578063924de9b7146107ba57806395d89b41146107e3576102b9565b8063395093511161021957806368092bd9116101d257806368092bd9146106105780636a486a8e146106395780636ddd17131461066457806370a082311461068f578063715018a6146106cc578063735de9f7146106e3576102b9565b806339509351146104dc5780634a62bb65146105195780634fbee193146105445780636323d7cb1461058157806365ed4889146105aa57806366ca9b83146105e7576102b9565b806323b872dd1161026b57806323b872dd146103ce57806324887e801461040b5780632ac0a943146104345780632d99d32e1461045d578063313ce5671461048657806335b5fb63146104b1576102b9565b806302dbd8f8146102be578063061ab597146102e757806306fdde0314610310578063095ea7b31461033b57806318160ddd146103785780631f7ea8da146103a3576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e091906139a4565b610b7f565b005b3480156102f357600080fd5b5061030e60048036038101906103099190613a7a565b610c69565b005b34801561031c57600080fd5b50610325610d40565b6040516103329190613b53565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190613b75565b610dd2565b60405161036f9190613bc4565b60405180910390f35b34801561038457600080fd5b5061038d610df0565b60405161039a9190613bee565b60405180910390f35b3480156103af57600080fd5b506103b8610dfa565b6040516103c59190613bee565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190613c09565b610e00565b6040516104029190613bc4565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190613c5c565b610ef8565b005b34801561044057600080fd5b5061045b60048036038101906104569190613c5c565b611007565b005b34801561046957600080fd5b50610484600480360381019061047f9190613a7a565b611116565b005b34801561049257600080fd5b5061049b61127e565b6040516104a89190613ca5565b60405180910390f35b3480156104bd57600080fd5b506104c6611287565b6040516104d39190613bee565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190613b75565b61128d565b6040516105109190613bc4565b60405180910390f35b34801561052557600080fd5b5061052e611339565b60405161053b9190613bc4565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190613cc0565b61134c565b6040516105789190613bc4565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a39190613d4f565b61136c565b005b3480156105b657600080fd5b506105d160048036038101906105cc9190613cc0565b6115f7565b6040516105de9190613bc4565b60405180910390f35b3480156105f357600080fd5b5061060e600480360381019061060991906139a4565b611617565b005b34801561061c57600080fd5b5061063760048036038101906106329190613a7a565b611701565b005b34801561064557600080fd5b5061064e6117d8565b60405161065b9190613bee565b60405180910390f35b34801561067057600080fd5b506106796117de565b6040516106869190613bc4565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b19190613cc0565b6117f1565b6040516106c39190613bee565b60405180910390f35b3480156106d857600080fd5b506106e161183a565b005b3480156106ef57600080fd5b506106f86118c2565b6040516107059190613e01565b60405180910390f35b34801561071a57600080fd5b506107236118e6565b6040516107309190613bc4565b60405180910390f35b34801561074557600080fd5b5061074e611986565b60405161075b9190613e2b565b60405180910390f35b34801561077057600080fd5b506107796119ac565b6040516107869190613e2b565b60405180910390f35b34801561079b57600080fd5b506107a46119d6565b6040516107b19190613bee565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc9190613e46565b6119dc565b005b3480156107ef57600080fd5b506107f8611a75565b6040516108059190613b53565b60405180910390f35b34801561081a57600080fd5b50610823611b07565b6040516108309190613bee565b60405180910390f35b34801561084557600080fd5b5061084e611b0d565b60405161085b9190613bee565b60405180910390f35b34801561087057600080fd5b50610879611b13565b6040516108869190613bee565b60405180910390f35b34801561089b57600080fd5b506108b660048036038101906108b19190613b75565b611b19565b6040516108c39190613bc4565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613cc0565b611c04565b6040516109009190613bc4565b60405180910390f35b34801561091557600080fd5b50610930600480360381019061092b9190613b75565b611c24565b60405161093d9190613bc4565b60405180910390f35b34801561095257600080fd5b5061096d60048036038101906109689190613cc0565b611c42565b005b34801561097b57600080fd5b50610984611d72565b6040516109919190613bc4565b60405180910390f35b3480156109a657600080fd5b506109c160048036038101906109bc9190613a7a565b611d85565b005b3480156109cf57600080fd5b506109d8611e5c565b6040516109e59190613e2b565b60405180910390f35b3480156109fa57600080fd5b50610a03611e82565b604051610a109190613e2b565b60405180910390f35b348015610a2557600080fd5b50610a2e611ea8565b005b348015610a3c57600080fd5b50610a576004803603810190610a529190613c5c565b611f5c565b604051610a649190613bc4565b60405180910390f35b348015610a7957600080fd5b50610a826120b1565b604051610a8f9190613bee565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba9190613e73565b6120b7565b604051610acc9190613bee565b60405180910390f35b348015610ae157600080fd5b50610aea61213e565b604051610af79190613bee565b60405180910390f35b348015610b0c57600080fd5b50610b15612144565b604051610b229190613bee565b60405180910390f35b348015610b3757600080fd5b50610b4061214a565b604051610b4d9190613bee565b60405180910390f35b348015610b6257600080fd5b50610b7d6004803603810190610b789190613cc0565b612150565b005b610b87612248565b73ffffffffffffffffffffffffffffffffffffffff16610ba56119ac565b73ffffffffffffffffffffffffffffffffffffffff1614610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf290613eff565b60405180910390fd5b8160108190555080601181905550601154601054610c199190613f4e565b600f819055506019600f541115610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613ff0565b60405180910390fd5b5050565b610c71612248565b73ffffffffffffffffffffffffffffffffffffffff16610c8f6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90613eff565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060008054610d4f9061403f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b9061403f565b8015610dc85780601f10610d9d57610100808354040283529160200191610dc8565b820191906000526020600020905b815481529060010190602001808311610dab57829003601f168201915b5050505050905090565b6000610de6610ddf612248565b8484612250565b6001905092915050565b6000600254905090565b60125481565b6000610e0d84848461241b565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e58612248565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf906140e3565b60405180910390fd5b610eec85610ee4612248565b858403612250565b60019150509392505050565b610f00612248565b73ffffffffffffffffffffffffffffffffffffffff16610f1e6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90613eff565b60405180910390fd5b670de0b6b3a76400006103e86005610f8a610df0565b610f949190614103565b610f9e919061418c565b610fa8919061418c565b811015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19061422f565b60405180910390fd5b670de0b6b3a764000081610ffe9190614103565b600b8190555050565b61100f612248565b73ffffffffffffffffffffffffffffffffffffffff1661102d6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90613eff565b60405180910390fd5b670de0b6b3a76400006103e86001611099610df0565b6110a39190614103565b6110ad919061418c565b6110b7919061418c565b8110156110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906142c1565b60405180910390fd5b670de0b6b3a76400008161110d9190614103565b60098190555050565b61111e612248565b73ffffffffffffffffffffffffffffffffffffffff1661113c6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990613eff565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a90614353565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60105481565b600061132f61129a612248565b8484600460006112a8612248565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461132a9190613f4e565b612250565b6001905092915050565b600860169054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120463060405160200161141f959493929190614382565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016114ab939291906143d5565b604051602081830303815290604052805190602001209050600082826040516020016114d8929190614484565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161151594939291906144bb565b6020604051602081039080840390855afa158015611537573d6000803e3d6000fd5b50505060206040510351905061154b6119ac565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af9061454c565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b60176020528060005260406000206000915054906101000a900460ff1681565b61161f612248565b73ffffffffffffffffffffffffffffffffffffffff1661163d6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613eff565b60405180910390fd5b81600d8190555080600e81905550600e54600d546116b19190613f4e565b600c819055506019600c5411156116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f490613ff0565b60405180910390fd5b5050565b611709612248565b73ffffffffffffffffffffffffffffffffffffffff166117276119ac565b73ffffffffffffffffffffffffffffffffffffffff161461177d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177490613eff565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611842612248565b73ffffffffffffffffffffffffffffffffffffffff166118606119ac565b73ffffffffffffffffffffffffffffffffffffffff16146118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90613eff565b60405180910390fd5b6118c060006131ab565b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006118f0612248565b73ffffffffffffffffffffffffffffffffffffffff1661190e6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90613eff565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b6119e4612248565b73ffffffffffffffffffffffffffffffffffffffff16611a026119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613eff565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b606060018054611a849061403f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab09061403f565b8015611afd5780601f10611ad257610100808354040283529160200191611afd565b820191906000526020600020905b815481529060010190602001808311611ae057829003601f168201915b5050505050905090565b600e5481565b60135481565b60115481565b60008060046000611b28612248565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc906145de565b60405180910390fd5b611bf9611bf0612248565b85858403612250565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000611c38611c31612248565b848461241b565b6001905092915050565b611c4a612248565b73ffffffffffffffffffffffffffffffffffffffff16611c686119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb590613eff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d259061464a565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860149054906101000a900460ff1681565b611d8d612248565b73ffffffffffffffffffffffffffffffffffffffff16611dab6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df890613eff565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611eb0612248565b73ffffffffffffffffffffffffffffffffffffffff16611ece6119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b90613eff565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611f66612248565b73ffffffffffffffffffffffffffffffffffffffff16611f846119ac565b73ffffffffffffffffffffffffffffffffffffffff1614611fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd190613eff565b60405180910390fd5b620186a06001611fe8610df0565b611ff29190614103565b611ffc919061418c565b82101561203e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612035906146dc565b60405180910390fd5b6103e8600561204b610df0565b6120559190614103565b61205f919061418c565b8211156120a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120989061476e565b60405180910390fd5b81600a8190555060019050919050565b600c5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60095481565b612158612248565b73ffffffffffffffffffffffffffffffffffffffff166121766119ac565b73ffffffffffffffffffffffffffffffffffffffff16146121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390613eff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390614800565b60405180910390fd5b612245816131ab565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790614892565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232790614924565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161240e9190613bee565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561248b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612482906149b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f290614a48565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f90614ab4565b60405180910390fd5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614b20565b60405180910390fd5b600081141561262f5761262a83836000613271565b6131a6565b600860169054906101000a900460ff1615612b285761264c6119ac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ba575061268a6119ac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126f35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561272d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612744575060148054906101000a900460ff16155b15612b2757600860149054906101000a900460ff1661283e57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127fe5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614b8c565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e15750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129885760095481111561292b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292290614c1e565b60405180910390fd5b600b54612937836117f1565b826129429190613f4e565b1115612983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297a90614c8a565b60405180910390fd5b612b26565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a2b5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7a57600954811115612a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6c90614d1c565b60405180910390fd5b612b25565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b2457600b54612ad7836117f1565b82612ae29190613f4e565b1115612b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1a90614c8a565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c1f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bdd9190613e2b565b602060405180830381865afa158015612bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1e9190614d51565b5b15612d3a576000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54600954600a546040518763ffffffff1660e01b8152600401612cb396959493929190614d7e565b6020604051808303816000875af1158015612cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf69190614d51565b905080612d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2f90614e2b565b60405180910390fd5b505b6000612d45306117f1565b90506000600a548210159050808015612d6a5750600860159054906101000a900460ff165b8015612d81575060148054906101000a900460ff16155b8015612dd75750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e2d5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e835750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec55760016014806101000a81548160ff021916908315150217905550612eaa6134f5565b60006014806101000a81548160ff0219169083151502179055505b600060148054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f795750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f8357600090505b6000811561319657601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe657506000600f54115b15613080576130136064613005600f54886136e090919063ffffffff16565b6136f690919063ffffffff16565b9050600f54601154826130269190614103565b613030919061418c565b601360008282546130419190613f4e565b92505081905550600f54601054826130599190614103565b613063919061418c565b601260008282546130749190613f4e565b92505081905550613172565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130db57506000600c54115b156131715761310860646130fa600c54886136e090919063ffffffff16565b6136f690919063ffffffff16565b9050600c54600e548261311b9190614103565b613125919061418c565b601360008282546131369190613f4e565b92505081905550600c54600d548261314e9190614103565b613158919061418c565b601260008282546131699190613f4e565b925050819055505b5b600081111561318757613186873083613271565b5b80856131939190614e4b565b94505b6131a1878787613271565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d8906149b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334890614a48565b60405180910390fd5b61335c83838361370c565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133da90614ef1565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134789190613f4e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134dc9190613bee565b60405180910390a36134ef848484613711565b50505050565b6000613500306117f1565b905060006013546012546135149190613f4e565b90506000808314806135265750600082145b15613533575050506136de565b6014600a546135429190614103565b83111561355b576014600a546135589190614103565b92505b600047905061356984613716565b600061357e824761395390919063ffffffff16565b905060006135a98561359b601354856136e090919063ffffffff16565b6136f690919063ffffffff16565b905060006012819055506000601381905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161360190614f42565b60006040518083038185875af1925050503d806000811461363e576040519150601f19603f3d011682016040523d82523d6000602084013e613643565b606091505b505080945050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161368f90614f42565b60006040518083038185875af1925050503d80600081146136cc576040519150601f19603f3d011682016040523d82523d6000602084013e6136d1565b606091505b5050809450505050505050505b565b600081836136ee9190614103565b905092915050565b60008183613704919061418c565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561373357613732614f57565b5b6040519080825280602002602001820160405280156137615781602001602082028036833780820191505090505b509050308160008151811061377957613778614f86565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561381e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138429190614fca565b8160018151811061385657613855614f86565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138bb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612250565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161391d9594939291906150f0565b600060405180830381600087803b15801561393757600080fd5b505af115801561394b573d6000803e3d6000fd5b505050505050565b600081836139619190614e4b565b905092915050565b600080fd5b6000819050919050565b6139818161396e565b811461398c57600080fd5b50565b60008135905061399e81613978565b92915050565b600080604083850312156139bb576139ba613969565b5b60006139c98582860161398f565b92505060206139da8582860161398f565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a0f826139e4565b9050919050565b613a1f81613a04565b8114613a2a57600080fd5b50565b600081359050613a3c81613a16565b92915050565b60008115159050919050565b613a5781613a42565b8114613a6257600080fd5b50565b600081359050613a7481613a4e565b92915050565b60008060408385031215613a9157613a90613969565b5b6000613a9f85828601613a2d565b9250506020613ab085828601613a65565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613af4578082015181840152602081019050613ad9565b83811115613b03576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b2582613aba565b613b2f8185613ac5565b9350613b3f818560208601613ad6565b613b4881613b09565b840191505092915050565b60006020820190508181036000830152613b6d8184613b1a565b905092915050565b60008060408385031215613b8c57613b8b613969565b5b6000613b9a85828601613a2d565b9250506020613bab8582860161398f565b9150509250929050565b613bbe81613a42565b82525050565b6000602082019050613bd96000830184613bb5565b92915050565b613be88161396e565b82525050565b6000602082019050613c036000830184613bdf565b92915050565b600080600060608486031215613c2257613c21613969565b5b6000613c3086828701613a2d565b9350506020613c4186828701613a2d565b9250506040613c528682870161398f565b9150509250925092565b600060208284031215613c7257613c71613969565b5b6000613c808482850161398f565b91505092915050565b600060ff82169050919050565b613c9f81613c89565b82525050565b6000602082019050613cba6000830184613c96565b92915050565b600060208284031215613cd657613cd5613969565b5b6000613ce484828501613a2d565b91505092915050565b613cf681613c89565b8114613d0157600080fd5b50565b600081359050613d1381613ced565b92915050565b6000819050919050565b613d2c81613d19565b8114613d3757600080fd5b50565b600081359050613d4981613d23565b92915050565b600080600060608486031215613d6857613d67613969565b5b6000613d7686828701613d04565b9350506020613d8786828701613d3a565b9250506040613d9886828701613d3a565b9150509250925092565b6000819050919050565b6000613dc7613dc2613dbd846139e4565b613da2565b6139e4565b9050919050565b6000613dd982613dac565b9050919050565b6000613deb82613dce565b9050919050565b613dfb81613de0565b82525050565b6000602082019050613e166000830184613df2565b92915050565b613e2581613a04565b82525050565b6000602082019050613e406000830184613e1c565b92915050565b600060208284031215613e5c57613e5b613969565b5b6000613e6a84828501613a65565b91505092915050565b60008060408385031215613e8a57613e89613969565b5b6000613e9885828601613a2d565b9250506020613ea985828601613a2d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ee9602083613ac5565b9150613ef482613eb3565b602082019050919050565b60006020820190508181036000830152613f1881613edc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f598261396e565b9150613f648361396e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f9957613f98613f1f565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613fda601d83613ac5565b9150613fe582613fa4565b602082019050919050565b6000602082019050818103600083015261400981613fcd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061405757607f821691505b6020821081141561406b5761406a614010565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140cd602883613ac5565b91506140d882614071565b604082019050919050565b600060208201905081810360008301526140fc816140c0565b9050919050565b600061410e8261396e565b91506141198361396e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561415257614151613f1f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141978261396e565b91506141a28361396e565b9250826141b2576141b161415d565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000614219602883613ac5565b9150614224826141bd565b604082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3160008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006142ab602183613ac5565b91506142b68261424f565b604082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b600061433d602883613ac5565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b61437c81613d19565b82525050565b600060a0820190506143976000830188614373565b6143a46020830187614373565b6143b16040830186614373565b6143be6060830185613bdf565b6143cb6080830184613e1c565b9695505050505050565b60006060820190506143ea6000830186614373565b6143f76020830185614373565b6144046040830184613bdf565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061444d60028361440c565b915061445882614417565b600282019050919050565b6000819050919050565b61447e61447982613d19565b614463565b82525050565b600061448f82614440565b915061449b828561446d565b6020820191506144ab828461446d565b6020820191508190509392505050565b60006080820190506144d06000830187614373565b6144dd6020830186613c96565b6144ea6040830185614373565b6144f76060830184614373565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614536601183613ac5565b915061454182614500565b602082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006145c8602583613ac5565b91506145d38261456c565b604082019050919050565b600060208201905081810360008301526145f7816145bb565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614634601483613ac5565b915061463f826145fe565b602082019050919050565b6000602082019050818103600083015261466381614627565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006146c6603583613ac5565b91506146d18261466a565b604082019050919050565b600060208201905081810360008301526146f5816146b9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614758603483613ac5565b9150614763826146fc565b604082019050919050565b600060208201905081810360008301526147878161474b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147ea602683613ac5565b91506147f58261478e565b604082019050919050565b60006020820190508181036000830152614819816147dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061487c602483613ac5565b915061488782614820565b604082019050919050565b600060208201905081810360008301526148ab8161486f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061490e602283613ac5565b9150614919826148b2565b604082019050919050565b6000602082019050818103600083015261493d81614901565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149a0602583613ac5565b91506149ab82614944565b604082019050919050565b600060208201905081810360008301526149cf81614993565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a32602383613ac5565b9150614a3d826149d6565b604082019050919050565b60006020820190508181036000830152614a6181614a25565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b6000614a9e601183613ac5565b9150614aa982614a68565b602082019050919050565b60006020820190508181036000830152614acd81614a91565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b6000614b0a600f83613ac5565b9150614b1582614ad4565b602082019050919050565b60006020820190508181036000830152614b3981614afd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614b76601683613ac5565b9150614b8182614b40565b602082019050919050565b60006020820190508181036000830152614ba581614b69565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854786e2e00000000000000000000000000000000000000000000000000602082015250565b6000614c08602783613ac5565b9150614c1382614bac565b604082019050919050565b60006020820190508181036000830152614c3781614bfb565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614c74601383613ac5565b9150614c7f82614c3e565b602082019050919050565b60006020820190508181036000830152614ca381614c67565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854786e2e000000000000000000000000000000000000000000000000602082015250565b6000614d06602883613ac5565b9150614d1182614caa565b604082019050919050565b60006020820190508181036000830152614d3581614cf9565b9050919050565b600081519050614d4b81613a4e565b92915050565b600060208284031215614d6757614d66613969565b5b6000614d7584828501614d3c565b91505092915050565b600060c082019050614d936000830189613e1c565b614da06020830188613e1c565b614dad6040830187613e1c565b614dba6060830186613bdf565b614dc76080830185613bdf565b614dd460a0830184613bdf565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000614e15601483613ac5565b9150614e2082614ddf565b602082019050919050565b60006020820190508181036000830152614e4481614e08565b9050919050565b6000614e568261396e565b9150614e618361396e565b925082821015614e7457614e73613f1f565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614edb602683613ac5565b9150614ee682614e7f565b604082019050919050565b60006020820190508181036000830152614f0a81614ece565b9050919050565b600081905092915050565b50565b6000614f2c600083614f11565b9150614f3782614f1c565b600082019050919050565b6000614f4d82614f1f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614fc481613a16565b92915050565b600060208284031215614fe057614fdf613969565b5b6000614fee84828501614fb5565b91505092915050565b6000819050919050565b600061501c61501761501284614ff7565b613da2565b61396e565b9050919050565b61502c81615001565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61506781613a04565b82525050565b6000615079838361505e565b60208301905092915050565b6000602082019050919050565b600061509d82615032565b6150a7818561503d565b93506150b28361504e565b8060005b838110156150e35781516150ca888261506d565b97506150d583615085565b9250506001810190506150b6565b5085935050505092915050565b600060a0820190506151056000830188613bdf565b6151126020830187615023565b81810360408301526151248186615092565b90506151336060830185613e1c565b6151406080830184613bdf565b969550505050505056fea2646970667358221220dae7600d8dccb914493c0f8c4e2d64c10434adad5048c26e99094e1048f2a0dd64736f6c634300080a0033

Deployed Bytecode Sourcemap

15421:10986:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20797:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19163:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10766:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11497:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11087:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16098:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11857:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19663:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20295:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21294:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10986:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16029:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12357:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15746:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16286:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18095:1060;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16343:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20507:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21491:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15994:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15708:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11203:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;984:103;;;;;;;;;;;;;:::i;:::-;;15499:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19426:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15590:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;761:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15856:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19555:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10874:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15961:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16135:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16064:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12580:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16399:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11674:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21098:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15668:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19291:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15627:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15555:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17977:110;;;;;;;;;;;;;:::i;:::-;;19896:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15893:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11338:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15816:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15927:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15788:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1095:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20797:289;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20908:12:::1;20892:13;:28;;;;20944:9;20931:10;:22;;;;20996:10;;20980:13;;:26;;;;:::i;:::-;20964:13;:42;;;;21042:2;21025:13;;:19;;21017:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20797:289:::0;;:::o;19163:120::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19270:5:::1;19246:15;:21;19262:4;19246:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19163:120:::0;;:::o;10766:100::-;10820:13;10853:5;10846:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10766:100;:::o;11497:169::-;11580:4;11597:39;11606:12;:10;:12::i;:::-;11620:7;11629:6;11597:8;:39::i;:::-;11654:4;11647:11;;11497:169;;;;:::o;11087:108::-;11148:7;11175:12;;11168:19;;11087:108;:::o;16098:30::-;;;;:::o;11857:492::-;11997:4;12014:36;12024:6;12032:9;12043:6;12014:9;:36::i;:::-;12063:24;12090:11;:19;12102:6;12090:19;;;;;;;;;;;;;;;:33;12110:12;:10;:12::i;:::-;12090:33;;;;;;;;;;;;;;;;12063:60;;12162:6;12142:16;:26;;12134:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12249:57;12258:6;12266:12;:10;:12::i;:::-;12299:6;12280:16;:25;12249:8;:57::i;:::-;12337:4;12330:11;;;11857:492;;;;;:::o;19663:225::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19787:4:::1;19779;19774:1;19758:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19757:26;;;;:::i;:::-;19756:35;;;;:::i;:::-;19746:6;:45;;19738:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;19873:6;19863;:17;;;;:::i;:::-;19847:13;:33;;;;19663:225:::0;:::o;20295:204::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20412:4:::1;20404;20399:1;20383:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20382:26;;;;:::i;:::-;20381:35;;;;:::i;:::-;20371:6;:45;;20363:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;20484:6;20474;:17;;;;:::i;:::-;20465:6;:26;;;;20295:204:::0;:::o;21294:189::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21386:11:::1;;;;;;;;;;;21378:19;;:4;:19;;;;21370:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21470:5;21453:8;:14;21462:4;21453:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;21294:189:::0;;:::o;10986:93::-;11044:5;11069:2;11062:9;;10986:93;:::o;16029:28::-;;;;:::o;12357:215::-;12445:4;12462:80;12471:12;:10;:12::i;:::-;12485:7;12531:10;12494:11;:25;12506:12;:10;:12::i;:::-;12494:25;;;;;;;;;;;;;;;:34;12520:7;12494:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12462:8;:80::i;:::-;12560:4;12553:11;;12357:215;;;;:::o;15746:33::-;;;;;;;;;;;;;:::o;16286:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;18095:1060::-;18177:18;18251:95;18375:22;;;;;;;;;;;;;;;;;18365:33;;;;;;18427:10;;;;;;;;;;;;;;;;;18417:21;;;;;;18457:13;18497:4;18222:295;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18198:330;;;;;;18177:351;;18541:18;18615:49;18693:23;;;;;;;;;;;;;;;;;18683:34;;;;;;18744:1;18586:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18562:210;;;;;;18541:231;;18785:14;18890:10;18919;18826:134;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18802:169;;;;;;18785:186;;18984:14;19001:26;19011:6;19019:1;19022;19025;19001:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18984:43;;19056:7;:5;:7::i;:::-;19046:17;;:6;:17;;;19038:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19114:4;19098:13;;:20;;;;;;;;;;;;;;;;;;19143:4;19129:11;;:18;;;;;;;;;;;;;;;;;;18166:989;;;;18095:1060;;;:::o;16343:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;20507:282::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20616:12:::1;20601;:27;;;;20651:9;20639;:21;;;;20701:9;;20686:12;;:24;;;;:::i;:::-;20671:12;:39;;;;20745:2;20729:12;;:18;;20721:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20507:282:::0;;:::o;21491:113::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21590:6:::1;21570:11;:17;21582:4;21570:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;21491:113:::0;;:::o;15994:28::-;;;;:::o;15708:31::-;;;;;;;;;;;;;:::o;11203:127::-;11277:7;11304:9;:18;11314:7;11304:18;;;;;;;;;;;;;;;;11297:25;;11203:127;;;:::o;984:103::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1049:30:::1;1076:1;1049:18;:30::i;:::-;984:103::o:0;15499:49::-;;;:::o;19426:121::-;19478:4;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19512:5:::1;19495:14;;:22;;;;;;;;;;;;;;;;;;19535:4;19528:11;;19426:121:::0;:::o;15590:30::-;;;;;;;;;;;;;:::o;761:87::-;807:7;834:6;;;;;;;;;;;827:13;;761:87;:::o;15856:28::-;;;;:::o;19555:100::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19640:7:::1;19626:11;;:21;;;;;;;;;;;;;;;;;;19555:100:::0;:::o;10874:104::-;10930:13;10963:7;10956:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10874:104;:::o;15961:24::-;;;;:::o;16135:27::-;;;;:::o;16064:25::-;;;;:::o;12580:413::-;12673:4;12690:24;12717:11;:25;12729:12;:10;:12::i;:::-;12717:25;;;;;;;;;;;;;;;:34;12743:7;12717:34;;;;;;;;;;;;;;;;12690:61;;12790:15;12770:16;:35;;12762:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12883:67;12892:12;:10;:12::i;:::-;12906:7;12934:15;12915:16;:34;12883:8;:67::i;:::-;12981:4;12974:11;;;12580:413;;;;:::o;16399:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11674:175::-;11760:4;11777:42;11787:12;:10;:12::i;:::-;11801:9;11812:6;11777:9;:42::i;:::-;11837:4;11830:11;;11674:175;;;;:::o;21098:188::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21210:3:::1;21184:30;;:14;:30;;;;21176:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;21264:14;21250:11;;:28;;;;;;;;;;;;;;;;;;21098:188:::0;:::o;15668:33::-;;;;;;;;;;;;;:::o;19291:127::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19405:5:::1;19375:18;:27;19394:7;19375:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19291:127:::0;;:::o;15627:32::-;;;;;;;;;;;;;:::o;15555:26::-;;;;;;;;;;;;;:::o;17977:110::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18046:4:::1;18030:13;;:20;;;;;;;;;;;;;;;;;;18075:4;18061:11;;:18;;;;;;;;;;;;;;;;;;17977:110::o:0;19896:391::-;19977:4;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20037:6:::1;20032:1;20016:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20015:28;;;;:::i;:::-;20002:9;:41;;19994:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;20155:4;20150:1;20134:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20133:26;;;;:::i;:::-;20120:9;:39;;20112:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;20248:9;20227:18;:30;;;;20275:4;20268:11;;19896:391:::0;;;:::o;15893:27::-;;;;:::o;11338:151::-;11427:7;11454:11;:18;11466:5;11454:18;;;;;;;;;;;;;;;:27;11473:7;11454:27;;;;;;;;;;;;;;;;11447:34;;11338:151;;;;:::o;15816:33::-;;;;:::o;15927:27::-;;;;:::o;15788:21::-;;;;:::o;1095:201::-;907:12;:10;:12::i;:::-;896:23;;:7;:5;:7::i;:::-;:23;;;888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1204:1:::1;1184:22;;:8;:22;;;;1176:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1260:28;1279:8;1260:18;:28::i;:::-;1095:201:::0;:::o;307:98::-;360:7;387:10;380:17;;307:98;:::o;14007:380::-;14160:1;14143:19;;:5;:19;;;;14135:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14241:1;14222:21;;:7;:21;;;;14214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14325:6;14295:11;:18;14307:5;14295:18;;;;;;;;;;;;;;;:27;14314:7;14295:27;;;;;;;;;;;;;;;:36;;;;14363:7;14347:32;;14356:5;14347:32;;;14372:6;14347:32;;;;;;:::i;:::-;;;;;;;;14007:380;;;:::o;23093:3196::-;23207:1;23191:18;;:4;:18;;;;23183:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23284:1;23270:16;;:2;:16;;;;23262:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23346:11;:17;23358:4;23346:17;;;;;;;;;;;;;;;;;;;;;;;;;23345:18;23337:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23405:11;:15;23417:2;23405:15;;;;;;;;;;;;;;;;;;;;;;;;;23404:16;23396:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;23467:1;23457:6;:11;23453:93;;;23485:28;23501:4;23507:2;23511:1;23485:15;:28::i;:::-;23528:7;;23453:93;23562:14;;;;;;;;;;;23558:1060;;;23605:7;:5;:7::i;:::-;23597:15;;:4;:15;;;;:49;;;;;23639:7;:5;:7::i;:::-;23633:13;;:2;:13;;;;23597:49;:86;;;;;23681:1;23667:16;;:2;:16;;;;23597:86;:128;;;;;23718:6;23704:21;;:2;:21;;;;23597:128;:158;;;;;23747:8;;;;;;;;;;23746:9;23597:158;23593:1014;;;23781:13;;;;;;;;;;;23776:148;;23827:18;:24;23846:4;23827:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23855:18;:22;23874:2;23855:22;;;;;;;;;;;;;;;;;;;;;;;;;23827:50;23819:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;23776:148;23976:8;:14;23985:4;23976:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;23995:15;:19;24011:2;23995:19;;;;;;;;;;;;;;;;;;;;;;;;;23994:20;23976:38;23972:620;;;24057:6;;24047;:16;;24039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24164:13;;24147;24157:2;24147:9;:13::i;:::-;24138:6;:22;;;;:::i;:::-;:39;;24130:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23972:620;;;24277:8;:12;24286:2;24277:12;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;24294:15;:21;24310:4;24294:21;;;;;;;;;;;;;;;;;;;;;;;;;24293:22;24277:38;24273:319;;;24358:6;;24348;:16;;24340:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;24273:319;;;24457:15;:19;24473:2;24457:19;;;;;;;;;;;;;;;;;;;;;;;;;24452:140;;24535:13;;24518;24528:2;24518:9;:13::i;:::-;24509:6;:22;;;;:::i;:::-;:39;;24501:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24452:140;24273:319;23972:620;23593:1014;23558:1060;24657:1;24634:25;;:11;;;;;;;;;;;:25;;;;:79;;;;;24676:11;;;;;;;;;;;24663:35;;;24707:4;24663:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24634:79;24630:284;;;24730:10;24756:11;;;;;;;;;;;24743:31;;;24775:4;24781:2;24793:11;;;;;;;;;;;24807:13;;24822:6;;24830:18;;24743:106;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24730:119;;24872:5;24864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;24715:199;24630:284;24926:23;24952:24;24970:4;24952:9;:24::i;:::-;24926:50;;24987:12;25021:18;;25002:15;:37;;24987:52;;25054:7;:35;;;;;25078:11;;;;;;;;;;;25054:35;:61;;;;;25107:8;;;;;;;;;;25106:9;25054:61;:93;;;;;25133:8;:14;25142:4;25133:14;;;;;;;;;;;;;;;;;;;;;;;;;25132:15;25054:93;:135;;;;;25165:18;:24;25184:4;25165:24;;;;;;;;;;;;;;;;;;;;;;;;;25164:25;25054:135;:175;;;;;25207:18;:22;25226:2;25207:22;;;;;;;;;;;;;;;;;;;;;;;;;25206:23;25054:175;25050:281;;;25259:4;25248:8;;:15;;;;;;;;;;;;;;;;;;25278:10;:8;:10::i;:::-;25314:5;25303:8;;:16;;;;;;;;;;;;;;;;;;25050:281;25343:12;25359:8;;;;;;;;;;25358:9;25343:24;;25382:18;:24;25401:4;25382:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;25410:18;:22;25429:2;25410:22;;;;;;;;;;;;;;;;;;;;;;;;;25382:50;25378:84;;;25457:5;25447:15;;25378:84;25475:11;25505:7;25501:735;;;25557:8;:12;25566:2;25557:12;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;25589:1;25573:13;;:17;25557:33;25553:554;;;25617:34;25647:3;25617:25;25628:13;;25617:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25611:40;;25707:13;;25693:10;;25687:3;:16;;;;:::i;:::-;25686:34;;;;:::i;:::-;25670:12;;:50;;;;;;;:::i;:::-;;;;;;;;25782:13;;25765;;25759:3;:19;;;;:::i;:::-;25758:37;;;;:::i;:::-;25739:15;;:56;;;;;;;:::i;:::-;;;;;;;;25553:554;;;25857:8;:14;25866:4;25857:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;25890:1;25875:12;;:16;25857:34;25853:254;;;25918:33;25947:3;25918:24;25929:12;;25918:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25912:39;;26006:12;;25993:9;;25987:3;:15;;;;:::i;:::-;25986:32;;;;:::i;:::-;25970:12;;:48;;;;;;;:::i;:::-;;;;;;;;26079:12;;26063;;26057:3;:18;;;;:::i;:::-;26056:35;;;;:::i;:::-;26037:15;;:54;;;;;;;:::i;:::-;;;;;;;;25853:254;25553:554;26133:1;26127:3;:7;26123:71;;;26153:41;26169:4;26183;26190:3;26153:15;:41::i;:::-;26123:71;26221:3;26211:13;;;;;:::i;:::-;;;25501:735;26248:33;26264:4;26270:2;26274:6;26248:15;:33::i;:::-;23172:3117;;;;23093:3196;;;;:::o;1304:191::-;1378:16;1397:6;;;;;;;;;;;1378:25;;1423:8;1414:6;;:17;;;;;;;;;;;;;;;;;;1478:8;1447:40;;1468:8;1447:40;;;;;;;;;;;;1367:128;1304:191;:::o;14395:733::-;14553:1;14535:20;;:6;:20;;;;14527:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14637:1;14616:23;;:9;:23;;;;14608:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14692:47;14713:6;14721:9;14732:6;14692:20;:47::i;:::-;14752:21;14776:9;:17;14786:6;14776:17;;;;;;;;;;;;;;;;14752:41;;14829:6;14812:13;:23;;14804:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14950:6;14934:13;:22;14914:9;:17;14924:6;14914:17;;;;;;;;;;;;;;;:42;;;;15002:6;14978:9;:20;14988:9;14978:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15043:9;15026:35;;15035:6;15026:35;;;15054:6;15026:35;;;;;;:::i;:::-;;;;;;;;15074:46;15094:6;15102:9;15113:6;15074:19;:46::i;:::-;14516:612;14395:733;;;:::o;21612:882::-;21651:23;21677:24;21695:4;21677:9;:24::i;:::-;21651:50;;21712:25;21758:12;;21740:15;;:30;;;;:::i;:::-;21712:58;;21781:12;21829:1;21810:15;:20;:46;;;;21855:1;21834:17;:22;21810:46;21806:72;;;21871:7;;;;;21806:72;21933:2;21912:18;;:23;;;;:::i;:::-;21894:15;:41;21890:101;;;21989:2;21968:18;;:23;;;;:::i;:::-;21950:41;;21890:101;22004:25;22032:21;22004:49;;22064:33;22081:15;22064:16;:33::i;:::-;22110:18;22131:44;22157:17;22131:21;:25;;:44;;;;:::i;:::-;22110:65;;22186:17;22206:51;22239:17;22206:28;22221:12;;22206:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;22186:71;;22288:1;22270:15;:19;;;;22315:1;22300:12;:16;;;;22351:17;;;;;;;;;;;22343:31;;22382:9;22343:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22329:67;;;;;22429:15;;;;;;;;;;;22421:29;;22459:21;22421:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22407:79;;;;;21640:854;;;;;;21612:882;:::o;2883:98::-;2941:7;2972:1;2968;:5;;;;:::i;:::-;2961:12;;2883:98;;;;:::o;2989:::-;3047:7;3078:1;3074;:5;;;;:::i;:::-;3067:12;;2989:98;;;;:::o;15136:125::-;;;;:::o;15269:124::-;;;;:::o;22502:583::-;22628:21;22666:1;22652:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22628:40;;22697:4;22679;22684:1;22679:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22723:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22713:4;22718:1;22713:7;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;;;;22756:60;22773:4;22788:13;22804:11;22756:8;:60::i;:::-;22855:13;:64;;;22934:11;22960:1;23004:4;23031;23051:15;22855:222;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22557:528;22502:583;:::o;2777:98::-;2835:7;2866:1;2862;:5;;;;:::i;:::-;2855:12;;2777:98;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:126::-;1207:7;1247:42;1240:5;1236:54;1225:65;;1170:126;;;:::o;1302:96::-;1339:7;1368:24;1386:5;1368:24;:::i;:::-;1357:35;;1302:96;;;:::o;1404:122::-;1477:24;1495:5;1477:24;:::i;:::-;1470:5;1467:35;1457:63;;1516:1;1513;1506:12;1457:63;1404:122;:::o;1532:139::-;1578:5;1616:6;1603:20;1594:29;;1632:33;1659:5;1632:33;:::i;:::-;1532:139;;;;:::o;1677:90::-;1711:7;1754:5;1747:13;1740:21;1729:32;;1677:90;;;:::o;1773:116::-;1843:21;1858:5;1843:21;:::i;:::-;1836:5;1833:32;1823:60;;1879:1;1876;1869:12;1823:60;1773:116;:::o;1895:133::-;1938:5;1976:6;1963:20;1954:29;;1992:30;2016:5;1992:30;:::i;:::-;1895:133;;;;:::o;2034:468::-;2099:6;2107;2156:2;2144:9;2135:7;2131:23;2127:32;2124:119;;;2162:79;;:::i;:::-;2124:119;2282:1;2307:53;2352:7;2343:6;2332:9;2328:22;2307:53;:::i;:::-;2297:63;;2253:117;2409:2;2435:50;2477:7;2468:6;2457:9;2453:22;2435:50;:::i;:::-;2425:60;;2380:115;2034:468;;;;;:::o;2508:99::-;2560:6;2594:5;2588:12;2578:22;;2508:99;;;:::o;2613:169::-;2697:11;2731:6;2726:3;2719:19;2771:4;2766:3;2762:14;2747:29;;2613:169;;;;:::o;2788:307::-;2856:1;2866:113;2880:6;2877:1;2874:13;2866:113;;;2965:1;2960:3;2956:11;2950:18;2946:1;2941:3;2937:11;2930:39;2902:2;2899:1;2895:10;2890:15;;2866:113;;;2997:6;2994:1;2991:13;2988:101;;;3077:1;3068:6;3063:3;3059:16;3052:27;2988:101;2837:258;2788:307;;;:::o;3101:102::-;3142:6;3193:2;3189:7;3184:2;3177:5;3173:14;3169:28;3159:38;;3101:102;;;:::o;3209:364::-;3297:3;3325:39;3358:5;3325:39;:::i;:::-;3380:71;3444:6;3439:3;3380:71;:::i;:::-;3373:78;;3460:52;3505:6;3500:3;3493:4;3486:5;3482:16;3460:52;:::i;:::-;3537:29;3559:6;3537:29;:::i;:::-;3532:3;3528:39;3521:46;;3301:272;3209:364;;;;:::o;3579:313::-;3692:4;3730:2;3719:9;3715:18;3707:26;;3779:9;3773:4;3769:20;3765:1;3754:9;3750:17;3743:47;3807:78;3880:4;3871:6;3807:78;:::i;:::-;3799:86;;3579:313;;;;:::o;3898:474::-;3966:6;3974;4023:2;4011:9;4002:7;3998:23;3994:32;3991:119;;;4029:79;;:::i;:::-;3991:119;4149:1;4174:53;4219:7;4210:6;4199:9;4195:22;4174:53;:::i;:::-;4164:63;;4120:117;4276:2;4302:53;4347:7;4338:6;4327:9;4323:22;4302:53;:::i;:::-;4292:63;;4247:118;3898:474;;;;;:::o;4378:109::-;4459:21;4474:5;4459:21;:::i;:::-;4454:3;4447:34;4378:109;;:::o;4493:210::-;4580:4;4618:2;4607:9;4603:18;4595:26;;4631:65;4693:1;4682:9;4678:17;4669:6;4631:65;:::i;:::-;4493:210;;;;:::o;4709:118::-;4796:24;4814:5;4796:24;:::i;:::-;4791:3;4784:37;4709:118;;:::o;4833:222::-;4926:4;4964:2;4953:9;4949:18;4941:26;;4977:71;5045:1;5034:9;5030:17;5021:6;4977:71;:::i;:::-;4833:222;;;;:::o;5061:619::-;5138:6;5146;5154;5203:2;5191:9;5182:7;5178:23;5174:32;5171:119;;;5209:79;;:::i;:::-;5171:119;5329:1;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5300:117;5456:2;5482:53;5527:7;5518:6;5507:9;5503:22;5482:53;:::i;:::-;5472:63;;5427:118;5584:2;5610:53;5655:7;5646:6;5635:9;5631:22;5610:53;:::i;:::-;5600:63;;5555:118;5061:619;;;;;:::o;5686:329::-;5745:6;5794:2;5782:9;5773:7;5769:23;5765:32;5762:119;;;5800:79;;:::i;:::-;5762:119;5920:1;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;:::i;:::-;5935:63;;5891:117;5686:329;;;;:::o;6021:86::-;6056:7;6096:4;6089:5;6085:16;6074:27;;6021:86;;;:::o;6113:112::-;6196:22;6212:5;6196:22;:::i;:::-;6191:3;6184:35;6113:112;;:::o;6231:214::-;6320:4;6358:2;6347:9;6343:18;6335:26;;6371:67;6435:1;6424:9;6420:17;6411:6;6371:67;:::i;:::-;6231:214;;;;:::o;6451:329::-;6510:6;6559:2;6547:9;6538:7;6534:23;6530:32;6527:119;;;6565:79;;:::i;:::-;6527:119;6685:1;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6656:117;6451:329;;;;:::o;6786:118::-;6857:22;6873:5;6857:22;:::i;:::-;6850:5;6847:33;6837:61;;6894:1;6891;6884:12;6837:61;6786:118;:::o;6910:135::-;6954:5;6992:6;6979:20;6970:29;;7008:31;7033:5;7008:31;:::i;:::-;6910:135;;;;:::o;7051:77::-;7088:7;7117:5;7106:16;;7051:77;;;:::o;7134:122::-;7207:24;7225:5;7207:24;:::i;:::-;7200:5;7197:35;7187:63;;7246:1;7243;7236:12;7187:63;7134:122;:::o;7262:139::-;7308:5;7346:6;7333:20;7324:29;;7362:33;7389:5;7362:33;:::i;:::-;7262:139;;;;:::o;7407:615::-;7482:6;7490;7498;7547:2;7535:9;7526:7;7522:23;7518:32;7515:119;;;7553:79;;:::i;:::-;7515:119;7673:1;7698:51;7741:7;7732:6;7721:9;7717:22;7698:51;:::i;:::-;7688:61;;7644:115;7798:2;7824:53;7869:7;7860:6;7849:9;7845:22;7824:53;:::i;:::-;7814:63;;7769:118;7926:2;7952:53;7997:7;7988:6;7977:9;7973:22;7952:53;:::i;:::-;7942:63;;7897:118;7407:615;;;;;:::o;8028:60::-;8056:3;8077:5;8070:12;;8028:60;;;:::o;8094:142::-;8144:9;8177:53;8195:34;8204:24;8222:5;8204:24;:::i;:::-;8195:34;:::i;:::-;8177:53;:::i;:::-;8164:66;;8094:142;;;:::o;8242:126::-;8292:9;8325:37;8356:5;8325:37;:::i;:::-;8312:50;;8242:126;;;:::o;8374:152::-;8450:9;8483:37;8514:5;8483:37;:::i;:::-;8470:50;;8374:152;;;:::o;8532:183::-;8645:63;8702:5;8645:63;:::i;:::-;8640:3;8633:76;8532:183;;:::o;8721:274::-;8840:4;8878:2;8867:9;8863:18;8855:26;;8891:97;8985:1;8974:9;8970:17;8961:6;8891:97;:::i;:::-;8721:274;;;;:::o;9001:118::-;9088:24;9106:5;9088:24;:::i;:::-;9083:3;9076:37;9001:118;;:::o;9125:222::-;9218:4;9256:2;9245:9;9241:18;9233:26;;9269:71;9337:1;9326:9;9322:17;9313:6;9269:71;:::i;:::-;9125:222;;;;:::o;9353:323::-;9409:6;9458:2;9446:9;9437:7;9433:23;9429:32;9426:119;;;9464:79;;:::i;:::-;9426:119;9584:1;9609:50;9651:7;9642:6;9631:9;9627:22;9609:50;:::i;:::-;9599:60;;9555:114;9353:323;;;;:::o;9682:474::-;9750:6;9758;9807:2;9795:9;9786:7;9782:23;9778:32;9775:119;;;9813:79;;:::i;:::-;9775:119;9933:1;9958:53;10003:7;9994:6;9983:9;9979:22;9958:53;:::i;:::-;9948:63;;9904:117;10060:2;10086:53;10131:7;10122:6;10111:9;10107:22;10086:53;:::i;:::-;10076:63;;10031:118;9682:474;;;;;:::o;10162:182::-;10302:34;10298:1;10290:6;10286:14;10279:58;10162:182;:::o;10350:366::-;10492:3;10513:67;10577:2;10572:3;10513:67;:::i;:::-;10506:74;;10589:93;10678:3;10589:93;:::i;:::-;10707:2;10702:3;10698:12;10691:19;;10350:366;;;:::o;10722:419::-;10888:4;10926:2;10915:9;10911:18;10903:26;;10975:9;10969:4;10965:20;10961:1;10950:9;10946:17;10939:47;11003:131;11129:4;11003:131;:::i;:::-;10995:139;;10722:419;;;:::o;11147:180::-;11195:77;11192:1;11185:88;11292:4;11289:1;11282:15;11316:4;11313:1;11306:15;11333:305;11373:3;11392:20;11410:1;11392:20;:::i;:::-;11387:25;;11426:20;11444:1;11426:20;:::i;:::-;11421:25;;11580:1;11512:66;11508:74;11505:1;11502:81;11499:107;;;11586:18;;:::i;:::-;11499:107;11630:1;11627;11623:9;11616:16;;11333:305;;;;:::o;11644:179::-;11784:31;11780:1;11772:6;11768:14;11761:55;11644:179;:::o;11829:366::-;11971:3;11992:67;12056:2;12051:3;11992:67;:::i;:::-;11985:74;;12068:93;12157:3;12068:93;:::i;:::-;12186:2;12181:3;12177:12;12170:19;;11829:366;;;:::o;12201:419::-;12367:4;12405:2;12394:9;12390:18;12382:26;;12454:9;12448:4;12444:20;12440:1;12429:9;12425:17;12418:47;12482:131;12608:4;12482:131;:::i;:::-;12474:139;;12201:419;;;:::o;12626:180::-;12674:77;12671:1;12664:88;12771:4;12768:1;12761:15;12795:4;12792:1;12785:15;12812:320;12856:6;12893:1;12887:4;12883:12;12873:22;;12940:1;12934:4;12930:12;12961:18;12951:81;;13017:4;13009:6;13005:17;12995:27;;12951:81;13079:2;13071:6;13068:14;13048:18;13045:38;13042:84;;;13098:18;;:::i;:::-;13042:84;12863:269;12812:320;;;:::o;13138:227::-;13278:34;13274:1;13266:6;13262:14;13255:58;13347:10;13342:2;13334:6;13330:15;13323:35;13138:227;:::o;13371:366::-;13513:3;13534:67;13598:2;13593:3;13534:67;:::i;:::-;13527:74;;13610:93;13699:3;13610:93;:::i;:::-;13728:2;13723:3;13719:12;13712:19;;13371:366;;;:::o;13743:419::-;13909:4;13947:2;13936:9;13932:18;13924:26;;13996:9;13990:4;13986:20;13982:1;13971:9;13967:17;13960:47;14024:131;14150:4;14024:131;:::i;:::-;14016:139;;13743:419;;;:::o;14168:348::-;14208:7;14231:20;14249:1;14231:20;:::i;:::-;14226:25;;14265:20;14283:1;14265:20;:::i;:::-;14260:25;;14453:1;14385:66;14381:74;14378:1;14375:81;14370:1;14363:9;14356:17;14352:105;14349:131;;;14460:18;;:::i;:::-;14349:131;14508:1;14505;14501:9;14490:20;;14168:348;;;;:::o;14522:180::-;14570:77;14567:1;14560:88;14667:4;14664:1;14657:15;14691:4;14688:1;14681:15;14708:185;14748:1;14765:20;14783:1;14765:20;:::i;:::-;14760:25;;14799:20;14817:1;14799:20;:::i;:::-;14794:25;;14838:1;14828:35;;14843:18;;:::i;:::-;14828:35;14885:1;14882;14878:9;14873:14;;14708:185;;;;:::o;14899:227::-;15039:34;15035:1;15027:6;15023:14;15016:58;15108:10;15103:2;15095:6;15091:15;15084:35;14899:227;:::o;15132:366::-;15274:3;15295:67;15359:2;15354:3;15295:67;:::i;:::-;15288:74;;15371:93;15460:3;15371:93;:::i;:::-;15489:2;15484:3;15480:12;15473:19;;15132:366;;;:::o;15504:419::-;15670:4;15708:2;15697:9;15693:18;15685:26;;15757:9;15751:4;15747:20;15743:1;15732:9;15728:17;15721:47;15785:131;15911:4;15785:131;:::i;:::-;15777:139;;15504:419;;;:::o;15929:220::-;16069:34;16065:1;16057:6;16053:14;16046:58;16138:3;16133:2;16125:6;16121:15;16114:28;15929:220;:::o;16155:366::-;16297:3;16318:67;16382:2;16377:3;16318:67;:::i;:::-;16311:74;;16394:93;16483:3;16394:93;:::i;:::-;16512:2;16507:3;16503:12;16496:19;;16155:366;;;:::o;16527:419::-;16693:4;16731:2;16720:9;16716:18;16708:26;;16780:9;16774:4;16770:20;16766:1;16755:9;16751:17;16744:47;16808:131;16934:4;16808:131;:::i;:::-;16800:139;;16527:419;;;:::o;16952:227::-;17092:34;17088:1;17080:6;17076:14;17069:58;17161:10;17156:2;17148:6;17144:15;17137:35;16952:227;:::o;17185:366::-;17327:3;17348:67;17412:2;17407:3;17348:67;:::i;:::-;17341:74;;17424:93;17513:3;17424:93;:::i;:::-;17542:2;17537:3;17533:12;17526:19;;17185:366;;;:::o;17557:419::-;17723:4;17761:2;17750:9;17746:18;17738:26;;17810:9;17804:4;17800:20;17796:1;17785:9;17781:17;17774:47;17838:131;17964:4;17838:131;:::i;:::-;17830:139;;17557:419;;;:::o;17982:118::-;18069:24;18087:5;18069:24;:::i;:::-;18064:3;18057:37;17982:118;;:::o;18106:664::-;18311:4;18349:3;18338:9;18334:19;18326:27;;18363:71;18431:1;18420:9;18416:17;18407:6;18363:71;:::i;:::-;18444:72;18512:2;18501:9;18497:18;18488:6;18444:72;:::i;:::-;18526;18594:2;18583:9;18579:18;18570:6;18526:72;:::i;:::-;18608;18676:2;18665:9;18661:18;18652:6;18608:72;:::i;:::-;18690:73;18758:3;18747:9;18743:19;18734:6;18690:73;:::i;:::-;18106:664;;;;;;;;:::o;18776:442::-;18925:4;18963:2;18952:9;18948:18;18940:26;;18976:71;19044:1;19033:9;19029:17;19020:6;18976:71;:::i;:::-;19057:72;19125:2;19114:9;19110:18;19101:6;19057:72;:::i;:::-;19139;19207:2;19196:9;19192:18;19183:6;19139:72;:::i;:::-;18776:442;;;;;;:::o;19224:148::-;19326:11;19363:3;19348:18;;19224:148;;;;:::o;19378:214::-;19518:66;19514:1;19506:6;19502:14;19495:90;19378:214;:::o;19598:400::-;19758:3;19779:84;19861:1;19856:3;19779:84;:::i;:::-;19772:91;;19872:93;19961:3;19872:93;:::i;:::-;19990:1;19985:3;19981:11;19974:18;;19598:400;;;:::o;20004:79::-;20043:7;20072:5;20061:16;;20004:79;;;:::o;20089:157::-;20194:45;20214:24;20232:5;20214:24;:::i;:::-;20194:45;:::i;:::-;20189:3;20182:58;20089:157;;:::o;20252:663::-;20493:3;20515:148;20659:3;20515:148;:::i;:::-;20508:155;;20673:75;20744:3;20735:6;20673:75;:::i;:::-;20773:2;20768:3;20764:12;20757:19;;20786:75;20857:3;20848:6;20786:75;:::i;:::-;20886:2;20881:3;20877:12;20870:19;;20906:3;20899:10;;20252:663;;;;;:::o;20921:545::-;21094:4;21132:3;21121:9;21117:19;21109:27;;21146:71;21214:1;21203:9;21199:17;21190:6;21146:71;:::i;:::-;21227:68;21291:2;21280:9;21276:18;21267:6;21227:68;:::i;:::-;21305:72;21373:2;21362:9;21358:18;21349:6;21305:72;:::i;:::-;21387;21455:2;21444:9;21440:18;21431:6;21387:72;:::i;:::-;20921:545;;;;;;;:::o;21472:167::-;21612:19;21608:1;21600:6;21596:14;21589:43;21472:167;:::o;21645:366::-;21787:3;21808:67;21872:2;21867:3;21808:67;:::i;:::-;21801:74;;21884:93;21973:3;21884:93;:::i;:::-;22002:2;21997:3;21993:12;21986:19;;21645:366;;;:::o;22017:419::-;22183:4;22221:2;22210:9;22206:18;22198:26;;22270:9;22264:4;22260:20;22256:1;22245:9;22241:17;22234:47;22298:131;22424:4;22298:131;:::i;:::-;22290:139;;22017:419;;;:::o;22442:224::-;22582:34;22578:1;22570:6;22566:14;22559:58;22651:7;22646:2;22638:6;22634:15;22627:32;22442:224;:::o;22672:366::-;22814:3;22835:67;22899:2;22894:3;22835:67;:::i;:::-;22828:74;;22911:93;23000:3;22911:93;:::i;:::-;23029:2;23024:3;23020:12;23013:19;;22672:366;;;:::o;23044:419::-;23210:4;23248:2;23237:9;23233:18;23225:26;;23297:9;23291:4;23287:20;23283:1;23272:9;23268:17;23261:47;23325:131;23451:4;23325:131;:::i;:::-;23317:139;;23044:419;;;:::o;23469:170::-;23609:22;23605:1;23597:6;23593:14;23586:46;23469:170;:::o;23645:366::-;23787:3;23808:67;23872:2;23867:3;23808:67;:::i;:::-;23801:74;;23884:93;23973:3;23884:93;:::i;:::-;24002:2;23997:3;23993:12;23986:19;;23645:366;;;:::o;24017:419::-;24183:4;24221:2;24210:9;24206:18;24198:26;;24270:9;24264:4;24260:20;24256:1;24245:9;24241:17;24234:47;24298:131;24424:4;24298:131;:::i;:::-;24290:139;;24017:419;;;:::o;24442:240::-;24582:34;24578:1;24570:6;24566:14;24559:58;24651:23;24646:2;24638:6;24634:15;24627:48;24442:240;:::o;24688:366::-;24830:3;24851:67;24915:2;24910:3;24851:67;:::i;:::-;24844:74;;24927:93;25016:3;24927:93;:::i;:::-;25045:2;25040:3;25036:12;25029:19;;24688:366;;;:::o;25060:419::-;25226:4;25264:2;25253:9;25249:18;25241:26;;25313:9;25307:4;25303:20;25299:1;25288:9;25284:17;25277:47;25341:131;25467:4;25341:131;:::i;:::-;25333:139;;25060:419;;;:::o;25485:239::-;25625:34;25621:1;25613:6;25609:14;25602:58;25694:22;25689:2;25681:6;25677:15;25670:47;25485:239;:::o;25730:366::-;25872:3;25893:67;25957:2;25952:3;25893:67;:::i;:::-;25886:74;;25969:93;26058:3;25969:93;:::i;:::-;26087:2;26082:3;26078:12;26071:19;;25730:366;;;:::o;26102:419::-;26268:4;26306:2;26295:9;26291:18;26283:26;;26355:9;26349:4;26345:20;26341:1;26330:9;26326:17;26319:47;26383:131;26509:4;26383:131;:::i;:::-;26375:139;;26102:419;;;:::o;26527:225::-;26667:34;26663:1;26655:6;26651:14;26644:58;26736:8;26731:2;26723:6;26719:15;26712:33;26527:225;:::o;26758:366::-;26900:3;26921:67;26985:2;26980:3;26921:67;:::i;:::-;26914:74;;26997:93;27086:3;26997:93;:::i;:::-;27115:2;27110:3;27106:12;27099:19;;26758:366;;;:::o;27130:419::-;27296:4;27334:2;27323:9;27319:18;27311:26;;27383:9;27377:4;27373:20;27369:1;27358:9;27354:17;27347:47;27411:131;27537:4;27411:131;:::i;:::-;27403:139;;27130:419;;;:::o;27555:223::-;27695:34;27691:1;27683:6;27679:14;27672:58;27764:6;27759:2;27751:6;27747:15;27740:31;27555:223;:::o;27784:366::-;27926:3;27947:67;28011:2;28006:3;27947:67;:::i;:::-;27940:74;;28023:93;28112:3;28023:93;:::i;:::-;28141:2;28136:3;28132:12;28125:19;;27784:366;;;:::o;28156:419::-;28322:4;28360:2;28349:9;28345:18;28337:26;;28409:9;28403:4;28399:20;28395:1;28384:9;28380:17;28373:47;28437:131;28563:4;28437:131;:::i;:::-;28429:139;;28156:419;;;:::o;28581:221::-;28721:34;28717:1;28709:6;28705:14;28698:58;28790:4;28785:2;28777:6;28773:15;28766:29;28581:221;:::o;28808:366::-;28950:3;28971:67;29035:2;29030:3;28971:67;:::i;:::-;28964:74;;29047:93;29136:3;29047:93;:::i;:::-;29165:2;29160:3;29156:12;29149:19;;28808:366;;;:::o;29180:419::-;29346:4;29384:2;29373:9;29369:18;29361:26;;29433:9;29427:4;29423:20;29419:1;29408:9;29404:17;29397:47;29461:131;29587:4;29461:131;:::i;:::-;29453:139;;29180:419;;;:::o;29605:224::-;29745:34;29741:1;29733:6;29729:14;29722:58;29814:7;29809:2;29801:6;29797:15;29790:32;29605:224;:::o;29835:366::-;29977:3;29998:67;30062:2;30057:3;29998:67;:::i;:::-;29991:74;;30074:93;30163:3;30074:93;:::i;:::-;30192:2;30187:3;30183:12;30176:19;;29835:366;;;:::o;30207:419::-;30373:4;30411:2;30400:9;30396:18;30388:26;;30460:9;30454:4;30450:20;30446:1;30435:9;30431:17;30424:47;30488:131;30614:4;30488:131;:::i;:::-;30480:139;;30207:419;;;:::o;30632:222::-;30772:34;30768:1;30760:6;30756:14;30749:58;30841:5;30836:2;30828:6;30824:15;30817:30;30632:222;:::o;30860:366::-;31002:3;31023:67;31087:2;31082:3;31023:67;:::i;:::-;31016:74;;31099:93;31188:3;31099:93;:::i;:::-;31217:2;31212:3;31208:12;31201:19;;30860:366;;;:::o;31232:419::-;31398:4;31436:2;31425:9;31421:18;31413:26;;31485:9;31479:4;31475:20;31471:1;31460:9;31456:17;31449:47;31513:131;31639:4;31513:131;:::i;:::-;31505:139;;31232:419;;;:::o;31657:167::-;31797:19;31793:1;31785:6;31781:14;31774:43;31657:167;:::o;31830:366::-;31972:3;31993:67;32057:2;32052:3;31993:67;:::i;:::-;31986:74;;32069:93;32158:3;32069:93;:::i;:::-;32187:2;32182:3;32178:12;32171:19;;31830:366;;;:::o;32202:419::-;32368:4;32406:2;32395:9;32391:18;32383:26;;32455:9;32449:4;32445:20;32441:1;32430:9;32426:17;32419:47;32483:131;32609:4;32483:131;:::i;:::-;32475:139;;32202:419;;;:::o;32627:165::-;32767:17;32763:1;32755:6;32751:14;32744:41;32627:165;:::o;32798:366::-;32940:3;32961:67;33025:2;33020:3;32961:67;:::i;:::-;32954:74;;33037:93;33126:3;33037:93;:::i;:::-;33155:2;33150:3;33146:12;33139:19;;32798:366;;;:::o;33170:419::-;33336:4;33374:2;33363:9;33359:18;33351:26;;33423:9;33417:4;33413:20;33409:1;33398:9;33394:17;33387:47;33451:131;33577:4;33451:131;:::i;:::-;33443:139;;33170:419;;;:::o;33595:172::-;33735:24;33731:1;33723:6;33719:14;33712:48;33595:172;:::o;33773:366::-;33915:3;33936:67;34000:2;33995:3;33936:67;:::i;:::-;33929:74;;34012:93;34101:3;34012:93;:::i;:::-;34130:2;34125:3;34121:12;34114:19;;33773:366;;;:::o;34145:419::-;34311:4;34349:2;34338:9;34334:18;34326:26;;34398:9;34392:4;34388:20;34384:1;34373:9;34369:17;34362:47;34426:131;34552:4;34426:131;:::i;:::-;34418:139;;34145:419;;;:::o;34570:226::-;34710:34;34706:1;34698:6;34694:14;34687:58;34779:9;34774:2;34766:6;34762:15;34755:34;34570:226;:::o;34802:366::-;34944:3;34965:67;35029:2;35024:3;34965:67;:::i;:::-;34958:74;;35041:93;35130:3;35041:93;:::i;:::-;35159:2;35154:3;35150:12;35143:19;;34802:366;;;:::o;35174:419::-;35340:4;35378:2;35367:9;35363:18;35355:26;;35427:9;35421:4;35417:20;35413:1;35402:9;35398:17;35391:47;35455:131;35581:4;35455:131;:::i;:::-;35447:139;;35174:419;;;:::o;35599:169::-;35739:21;35735:1;35727:6;35723:14;35716:45;35599:169;:::o;35774:366::-;35916:3;35937:67;36001:2;35996:3;35937:67;:::i;:::-;35930:74;;36013:93;36102:3;36013:93;:::i;:::-;36131:2;36126:3;36122:12;36115:19;;35774:366;;;:::o;36146:419::-;36312:4;36350:2;36339:9;36335:18;36327:26;;36399:9;36393:4;36389:20;36385:1;36374:9;36370:17;36363:47;36427:131;36553:4;36427:131;:::i;:::-;36419:139;;36146:419;;;:::o;36571:227::-;36711:34;36707:1;36699:6;36695:14;36688:58;36780:10;36775:2;36767:6;36763:15;36756:35;36571:227;:::o;36804:366::-;36946:3;36967:67;37031:2;37026:3;36967:67;:::i;:::-;36960:74;;37043:93;37132:3;37043:93;:::i;:::-;37161:2;37156:3;37152:12;37145:19;;36804:366;;;:::o;37176:419::-;37342:4;37380:2;37369:9;37365:18;37357:26;;37429:9;37423:4;37419:20;37415:1;37404:9;37400:17;37393:47;37457:131;37583:4;37457:131;:::i;:::-;37449:139;;37176:419;;;:::o;37601:137::-;37655:5;37686:6;37680:13;37671:22;;37702:30;37726:5;37702:30;:::i;:::-;37601:137;;;;:::o;37744:345::-;37811:6;37860:2;37848:9;37839:7;37835:23;37831:32;37828:119;;;37866:79;;:::i;:::-;37828:119;37986:1;38011:61;38064:7;38055:6;38044:9;38040:22;38011:61;:::i;:::-;38001:71;;37957:125;37744:345;;;;:::o;38095:775::-;38328:4;38366:3;38355:9;38351:19;38343:27;;38380:71;38448:1;38437:9;38433:17;38424:6;38380:71;:::i;:::-;38461:72;38529:2;38518:9;38514:18;38505:6;38461:72;:::i;:::-;38543;38611:2;38600:9;38596:18;38587:6;38543:72;:::i;:::-;38625;38693:2;38682:9;38678:18;38669:6;38625:72;:::i;:::-;38707:73;38775:3;38764:9;38760:19;38751:6;38707:73;:::i;:::-;38790;38858:3;38847:9;38843:19;38834:6;38790:73;:::i;:::-;38095:775;;;;;;;;;:::o;38876:170::-;39016:22;39012:1;39004:6;39000:14;38993:46;38876:170;:::o;39052:366::-;39194:3;39215:67;39279:2;39274:3;39215:67;:::i;:::-;39208:74;;39291:93;39380:3;39291:93;:::i;:::-;39409:2;39404:3;39400:12;39393:19;;39052:366;;;:::o;39424:419::-;39590:4;39628:2;39617:9;39613:18;39605:26;;39677:9;39671:4;39667:20;39663:1;39652:9;39648:17;39641:47;39705:131;39831:4;39705:131;:::i;:::-;39697:139;;39424:419;;;:::o;39849:191::-;39889:4;39909:20;39927:1;39909:20;:::i;:::-;39904:25;;39943:20;39961:1;39943:20;:::i;:::-;39938:25;;39982:1;39979;39976:8;39973:34;;;39987:18;;:::i;:::-;39973:34;40032:1;40029;40025:9;40017:17;;39849:191;;;;:::o;40046:225::-;40186:34;40182:1;40174:6;40170:14;40163:58;40255:8;40250:2;40242:6;40238:15;40231:33;40046:225;:::o;40277:366::-;40419:3;40440:67;40504:2;40499:3;40440:67;:::i;:::-;40433:74;;40516:93;40605:3;40516:93;:::i;:::-;40634:2;40629:3;40625:12;40618:19;;40277:366;;;:::o;40649:419::-;40815:4;40853:2;40842:9;40838:18;40830:26;;40902:9;40896:4;40892:20;40888:1;40877:9;40873:17;40866:47;40930:131;41056:4;40930:131;:::i;:::-;40922:139;;40649:419;;;:::o;41074:147::-;41175:11;41212:3;41197:18;;41074:147;;;;:::o;41227:114::-;;:::o;41347:398::-;41506:3;41527:83;41608:1;41603:3;41527:83;:::i;:::-;41520:90;;41619:93;41708:3;41619:93;:::i;:::-;41737:1;41732:3;41728:11;41721:18;;41347:398;;;:::o;41751:379::-;41935:3;41957:147;42100:3;41957:147;:::i;:::-;41950:154;;42121:3;42114:10;;41751:379;;;:::o;42136:180::-;42184:77;42181:1;42174:88;42281:4;42278:1;42271:15;42305:4;42302:1;42295:15;42322:180;42370:77;42367:1;42360:88;42467:4;42464:1;42457:15;42491:4;42488:1;42481:15;42508:143;42565:5;42596:6;42590:13;42581:22;;42612:33;42639:5;42612:33;:::i;:::-;42508:143;;;;:::o;42657:351::-;42727:6;42776:2;42764:9;42755:7;42751:23;42747:32;42744:119;;;42782:79;;:::i;:::-;42744:119;42902:1;42927:64;42983:7;42974:6;42963:9;42959:22;42927:64;:::i;:::-;42917:74;;42873:128;42657:351;;;;:::o;43014:85::-;43059:7;43088:5;43077:16;;43014:85;;;:::o;43105:158::-;43163:9;43196:61;43214:42;43223:32;43249:5;43223:32;:::i;:::-;43214:42;:::i;:::-;43196:61;:::i;:::-;43183:74;;43105:158;;;:::o;43269:147::-;43364:45;43403:5;43364:45;:::i;:::-;43359:3;43352:58;43269:147;;:::o;43422:114::-;43489:6;43523:5;43517:12;43507:22;;43422:114;;;:::o;43542:184::-;43641:11;43675:6;43670:3;43663:19;43715:4;43710:3;43706:14;43691:29;;43542:184;;;;:::o;43732:132::-;43799:4;43822:3;43814:11;;43852:4;43847:3;43843:14;43835:22;;43732:132;;;:::o;43870:108::-;43947:24;43965:5;43947:24;:::i;:::-;43942:3;43935:37;43870:108;;:::o;43984:179::-;44053:10;44074:46;44116:3;44108:6;44074:46;:::i;:::-;44152:4;44147:3;44143:14;44129:28;;43984:179;;;;:::o;44169:113::-;44239:4;44271;44266:3;44262:14;44254:22;;44169:113;;;:::o;44318:732::-;44437:3;44466:54;44514:5;44466:54;:::i;:::-;44536:86;44615:6;44610:3;44536:86;:::i;:::-;44529:93;;44646:56;44696:5;44646:56;:::i;:::-;44725:7;44756:1;44741:284;44766:6;44763:1;44760:13;44741:284;;;44842:6;44836:13;44869:63;44928:3;44913:13;44869:63;:::i;:::-;44862:70;;44955:60;45008:6;44955:60;:::i;:::-;44945:70;;44801:224;44788:1;44785;44781:9;44776:14;;44741:284;;;44745:14;45041:3;45034:10;;44442:608;;;44318:732;;;;:::o;45056:831::-;45319:4;45357:3;45346:9;45342:19;45334:27;;45371:71;45439:1;45428:9;45424:17;45415:6;45371:71;:::i;:::-;45452:80;45528:2;45517:9;45513:18;45504:6;45452:80;:::i;:::-;45579:9;45573:4;45569:20;45564:2;45553:9;45549:18;45542:48;45607:108;45710:4;45701:6;45607:108;:::i;:::-;45599:116;;45725:72;45793:2;45782:9;45778:18;45769:6;45725:72;:::i;:::-;45807:73;45875:3;45864:9;45860:19;45851:6;45807:73;:::i;:::-;45056:831;;;;;;;;:::o

Swarm Source

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