ETH Price: $2,436.17 (-0.81%)
 

Overview

Max Total Supply

1,000,000,000 Dogira

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 Dogira

Value
$0.00
0xec2013b885470de9bd99a7b067a8bdaf285e68b2
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:
Dogira

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-29
*/

// SPDX-License-Identifier: MIT

/*
            WELCOME BACK LOST CHILDREN OF DOGIRA 

memes & games can be found at our website: https://dogira.vercel.app

telegram: https://t.me/dogira_eth

x: https://x.com/Dogira_Reborn

*/

pragma solidity ^0.8.20;
pragma experimental ABIEncoderV2;

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

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IERC20Metadata is IERC20 {

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

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

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

interface 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 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 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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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 per(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= 100, "Percentage must be between 0 and 100");
        return a * b / 100;
    }

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        unchecked {
            _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 _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    address private marketingWallet;
    address private constant deadAddress = address(0xdead);

    uint8 private constant _decimals = 9;
    uint256 public initialTotalSupply = 1000000000 * 10**_decimals;

    uint256 public buyFee = 10;
    uint256 public sellFee = 15;

    uint256 public maxWallet = (initialTotalSupply * 2) / 100;
    uint256 public maxTransactionAmount = maxWallet;

    bool private swapping;

    bool public transferDelayEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    
    //swap for 0.2%
    uint256 public swapTokensAtAmount = (initialTotalSupply * 2)/1000;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("Dogira", "Dogira"){

        marketingWallet = payable(0x475190F17896dFA1DaA65Bc4EFc9bf5A74667Fcc);

        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(_msgSender()), true);
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(_msgSender()), true);
    
        _mint(msg.sender, initialTotalSupply);
    }


    function addLPToUniswap() external onlyOwner() {
        require(!tradingOpen,"Trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), initialTotalSupply);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }


    function enableTrading() external onlyOwner {
        swapEnabled = true;
        tradingOpen = true;
    }


    function burn(uint256 amount) external {
        _burn(_msgSender(), amount);
    }

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


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

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

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

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

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

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

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

            if (transferDelayEnabled && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number && _holderLastTransferTimestamp[to] < block.number, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
            }

            if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
            else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            }
            else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance > swapTokensAtAmount;
        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }

        bool takeFee = !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to];

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(sellFee).div(100);
            }
            else if(automatedMarketMakerPairs[from]) {
                fees = amount.mul(buyFee).div(100);
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }


    function setFee(uint256 _buyFee, uint256 _sellFee) external {
        require(msg.sender == marketingWallet);
        require(_buyFee < 10 && _sellFee < 15);
        sellFee = _sellFee;
        buyFee = _buyFee;
    }

    function disableTransferDelay() external {
        require(msg.sender == marketingWallet);
        require(transferDelayEnabled, "Already disabled!");
        transferDelayEnabled = false;
    }


    function removeLimit() external {
        require(msg.sender == marketingWallet);
        maxTransactionAmount = initialTotalSupply;
        maxWallet = initialTotalSupply;
    }

    function manualSwapToken(uint256 percent) external {
        require(_msgSender() == marketingWallet);
        uint256 contractBalance = balanceOf(address(this));
        uint256 swapAmount = contractBalance * percent / 100;
        swapTokensForEth(swapAmount);
    }

    function manualSwapAll() external {
        require(_msgSender()== marketingWallet);
        uint256 tokenBalance=balanceOf(address(this));
        swapTokensForEth(tokenBalance);
    }

    function withdrawStuckToken() external {
        require(_msgSender() == marketingWallet);
        uint256 amount = balanceOf(address(this));
        _transfer(address(this), marketingWallet, amount);
    }
    
    function withdrawStuckETH() external {
        require(address(this).balance > 0, "Token: no ETH in the contract");
        require(_msgSender() == marketingWallet);
        payable(msg.sender).transfer(address(this).balance);
    }


    function swapBack(uint256 tokenAmount) private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }
        uint256 tokensToSwap = contractBalance;

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

        if(tokensToSwap > tokenAmount) {
            tokensToSwap = tokenAmount;
        }

        swapTokensForEth(tokensToSwap);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLPToUniswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","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":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a6100129190610800565b633b9aca00610021919061084a565b600955600a8055600f600b556064600260095461003e919061084a565b61004891906108b8565b600c55600c54600d556001600e60016101000a81548160ff0219169083151502179055506103e8600260095461007e919061084a565b61008891906108b8565b6010555f60115f6101000a81548160ff0219169083151502179055505f601160016101000a81548160ff0219169083151502179055503480156100c9575f80fd5b506040518060400160405280600681526020017f446f6769726100000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f446f67697261000000000000000000000000000000000000000000000000000081525081600390816101459190610b19565b5080600490816101559190610b19565b50505061017461016961029560201b60201c565b61029c60201b60201c565b73475190f17896dfa1daa65bc4efc9bf5a74667fcc60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101d930600161035f60201b60201c565b6101ec61dead600161035f60201b60201c565b61020a6101fd61029560201b60201c565b600161035f60201b60201c565b61023c60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161041360201b60201c565b61024d30600161041360201b60201c565b61026061dead600161041360201b60201c565b61027e61027161029560201b60201c565b600161041360201b60201c565b6102903360095461047960201b60201c565b610d56565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61036d6105d360201b60201c565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516104079190610c02565b60405180910390a25050565b6104216105d360201b60201c565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104de90610c75565b60405180910390fd5b6104f85f838361065d60201b60201c565b8060025f8282546105099190610c93565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b69190610cd5565b60405180910390a36105cf5f838361066260201b60201c565b5050565b6105e161029560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661060561066760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065290610d38565b60405180910390fd5b565b505050565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610711578086048111156106ed576106ec61068f565b5b60018516156106fc5780820291505b808102905061070a856106bc565b94506106d1565b94509492505050565b5f8261072957600190506107e4565b81610736575f90506107e4565b816001811461074c576002811461075657610785565b60019150506107e4565b60ff8411156107685761076761068f565b5b8360020a91508482111561077f5761077e61068f565b5b506107e4565b5060208310610133831016604e8410600b84101617156107ba5782820a9050838111156107b5576107b461068f565b5b6107e4565b6107c784848460016106c8565b925090508184048111156107de576107dd61068f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61080a826107eb565b9150610815836107f4565b92506108427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461071a565b905092915050565b5f610854826107eb565b915061085f836107eb565b925082820261086d816107eb565b915082820484148315176108845761088361068f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6108c2826107eb565b91506108cd836107eb565b9250826108dd576108dc61088b565b5b828204905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061096357607f821691505b6020821081036109765761097561091f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026109d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261099d565b6109e2868361099d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610a1d610a18610a13846107eb565b6109fa565b6107eb565b9050919050565b5f819050919050565b610a3683610a03565b610a4a610a4282610a24565b8484546109a9565b825550505050565b5f90565b610a5e610a52565b610a69818484610a2d565b505050565b5b81811015610a8c57610a815f82610a56565b600181019050610a6f565b5050565b601f821115610ad157610aa28161097c565b610aab8461098e565b81016020851015610aba578190505b610ace610ac68561098e565b830182610a6e565b50505b505050565b5f82821c905092915050565b5f610af15f1984600802610ad6565b1980831691505092915050565b5f610b098383610ae2565b9150826002028217905092915050565b610b22826108e8565b67ffffffffffffffff811115610b3b57610b3a6108f2565b5b610b45825461094c565b610b50828285610a90565b5f60209050601f831160018114610b81575f8415610b6f578287015190505b610b798582610afe565b865550610be0565b601f198416610b8f8661097c565b5f5b82811015610bb657848901518255600182019150602085019450602081019050610b91565b86831015610bd35784890151610bcf601f891682610ae2565b8355505b6001600288020188555050505b505050505050565b5f8115159050919050565b610bfc81610be8565b82525050565b5f602082019050610c155f830184610bf3565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610c5f601f83610c1b565b9150610c6a82610c2b565b602082019050919050565b5f6020820190508181035f830152610c8c81610c53565b9050919050565b5f610c9d826107eb565b9150610ca8836107eb565b9250828201905080821115610cc057610cbf61068f565b5b92915050565b610ccf816107eb565b82525050565b5f602082019050610ce85f830184610cc6565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610d22602083610c1b565b9150610d2d82610cee565b602082019050919050565b5f6020820190508181035f830152610d4f81610d16565b9050919050565b6140ee80610d635f395ff3fe60806040526004361061021d575f3560e01c806371f5f01a11610122578063c0246668116100aa578063e884f2601161006e578063e884f26014610774578063f2fde38b1461078a578063f5648a4f146107b2578063f8b45b05146107c8578063ffb54a99146107f257610224565b8063c024666814610692578063c876d0b9146106ba578063c8c8ebe4146106e4578063dd62ed3e1461070e578063e2f456051461074a57610224565b80638da5cb5b116100f15780638da5cb5b1461059e57806395d89b41146105c85780639a7a23d6146105f2578063a457c2d71461061a578063a9059cbb1461065657610224565b806371f5f01a146105225780637571336a1461054a57806384dd4452146105725780638a8c523c1461058857610224565b80633edab509116101a557806352f7c9881161017457806352f7c9881461046857806362256589146104905780636ddd1713146104a657806370a08231146104d0578063715018a61461050c57610224565b80633edab509146103c457806342966c68146103da57806347062402146104025780634fbee1931461042c57610224565b80632b14ca56116101ec5780632b14ca56146102f4578063311028af1461031e578063313ce5671461034857806332454f3f14610372578063395093511461038857610224565b806306fdde0314610228578063095ea7b31461025257806318160ddd1461028e57806323b872dd146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c61081c565b6040516102499190612eb2565b60405180910390f35b34801561025d575f80fd5b5061027860048036038101906102739190612f63565b6108ac565b6040516102859190612fbb565b60405180910390f35b348015610299575f80fd5b506102a26108ce565b6040516102af9190612fe3565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612ffc565b6108d7565b6040516102eb9190612fbb565b60405180910390f35b3480156102ff575f80fd5b50610308610905565b6040516103159190612fe3565b60405180910390f35b348015610329575f80fd5b5061033261090b565b60405161033f9190612fe3565b60405180910390f35b348015610353575f80fd5b5061035c610911565b6040516103699190613067565b60405180910390f35b34801561037d575f80fd5b50610386610919565b005b348015610393575f80fd5b506103ae60048036038101906103a99190612f63565b610990565b6040516103bb9190612fbb565b60405180910390f35b3480156103cf575f80fd5b506103d86109c6565b005b3480156103e5575f80fd5b5061040060048036038101906103fb9190613080565b610e0b565b005b34801561040d575f80fd5b50610416610e1f565b6040516104239190612fe3565b60405180910390f35b348015610437575f80fd5b50610452600480360381019061044d91906130ab565b610e25565b60405161045f9190612fbb565b60405180910390f35b348015610473575f80fd5b5061048e600480360381019061048991906130d6565b610e77565b005b34801561049b575f80fd5b506104a4610ef9565b005b3480156104b1575f80fd5b506104ba610f65565b6040516104c79190612fbb565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906130ab565b610f78565b6040516105039190612fe3565b60405180910390f35b348015610517575f80fd5b50610520610fbd565b005b34801561052d575f80fd5b5061054860048036038101906105439190613080565b610fd0565b005b348015610555575f80fd5b50610570600480360381019061056b919061313e565b611064565b005b34801561057d575f80fd5b506105866110c4565b005b348015610593575f80fd5b5061059c61115e565b005b3480156105a9575f80fd5b506105b261119d565b6040516105bf919061318b565b60405180910390f35b3480156105d3575f80fd5b506105dc6111c5565b6040516105e99190612eb2565b60405180910390f35b3480156105fd575f80fd5b506106186004803603810190610613919061313e565b611255565b005b348015610625575f80fd5b50610640600480360381019061063b9190612f63565b6112fa565b60405161064d9190612fbb565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190612f63565b61136f565b6040516106899190612fbb565b60405180910390f35b34801561069d575f80fd5b506106b860048036038101906106b3919061313e565b611391565b005b3480156106c5575f80fd5b506106ce61143f565b6040516106db9190612fbb565b60405180910390f35b3480156106ef575f80fd5b506106f8611452565b6040516107059190612fe3565b60405180910390f35b348015610719575f80fd5b50610734600480360381019061072f91906131a4565b611458565b6040516107419190612fe3565b60405180910390f35b348015610755575f80fd5b5061075e6114da565b60405161076b9190612fe3565b60405180910390f35b34801561077f575f80fd5b506107886114e0565b005b348015610795575f80fd5b506107b060048036038101906107ab91906130ab565b6115a3565b005b3480156107bd575f80fd5b506107c6611625565b005b3480156107d3575f80fd5b506107dc61170c565b6040516107e99190612fe3565b60405180910390f35b3480156107fd575f80fd5b50610806611712565b6040516108139190612fbb565b60405180910390f35b60606003805461082b9061320f565b80601f01602080910402602001604051908101604052809291908181526020018280546108579061320f565b80156108a25780601f10610879576101008083540402835291602001916108a2565b820191905f5260205f20905b81548152906001019060200180831161088557829003601f168201915b5050505050905090565b5f806108b6611724565b90506108c381858561172b565b600191505092915050565b5f600254905090565b5f806108e1611724565b90506108ee8582856118ee565b6108f9858585611979565b60019150509392505050565b600b5481565b60095481565b5f6009905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610959611724565b73ffffffffffffffffffffffffffffffffffffffff1614610978575f80fd5b5f61098230610f78565b905061098d81612561565b50565b5f8061099a611724565b90506109bb8185856109ac8589611458565b6109b6919061326c565b61172b565b600191505092915050565b6109ce6127b8565b60115f9054906101000a900460ff1615610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906132e9565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a9f3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660095461172b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2d919061331b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd7919061331b565b6040518363ffffffff1660e01b8152600401610bf4929190613346565b6020604051808303815f875af1158015610c10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c34919061331b565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610cbb30610f78565b5f80610cc561119d565b426040518863ffffffff1660e01b8152600401610ce7969594939291906133af565b60606040518083038185885af1158015610d03573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d289190613422565b50505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610dc8929190613472565b6020604051808303815f875af1158015610de4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0891906134ad565b50565b610e1c610e16611724565b82612836565b50565b600a5481565b5f60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ecf575f80fd5b600a82108015610edf5750600f81105b610ee7575f80fd5b80600b8190555081600a819055505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f51575f80fd5b600954600d81905550600954600c81905550565b601160019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fc56127b8565b610fce5f6129f9565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611010611724565b73ffffffffffffffffffffffffffffffffffffffff161461102f575f80fd5b5f61103930610f78565b90505f6064838361104a91906134d8565b6110549190613546565b905061105f81612561565b505050565b61106c6127b8565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611104611724565b73ffffffffffffffffffffffffffffffffffffffff1614611123575f80fd5b5f61112d30610f78565b905061115b3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611979565b50565b6111666127b8565b6001601160016101000a81548160ff021916908315150217905550600160115f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546111d49061320f565b80601f01602080910402602001604051908101604052809291908181526020018280546112009061320f565b801561124b5780601f106112225761010080835404028352916020019161124b565b820191905f5260205f20905b81548152906001019060200180831161122e57829003601f168201915b5050505050905090565b61125d6127b8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e3906135e6565b60405180910390fd5b6112f68282612abc565b5050565b5f80611304611724565b90505f6113118286611458565b905083811015611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90613674565b60405180910390fd5b611363828686840361172b565b60019250505092915050565b5f80611379611724565b9050611386818585611979565b600191505092915050565b6113996127b8565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114339190612fbb565b60405180910390a25050565b600e60019054906101000a900460ff1681565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611538575f80fd5b600e60019054906101000a900460ff16611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e906136dc565b60405180910390fd5b5f600e60016101000a81548160ff021916908315150217905550565b6115ab6127b8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611619576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116109061376a565b60405180910390fd5b611622816129f9565b50565b5f4711611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e906137d2565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116a7611724565b73ffffffffffffffffffffffffffffffffffffffff16146116c6575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611709573d5f803e3d5ffd5b50565b600c5481565b60115f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090613860565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe906138ee565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118e19190612fe3565b60405180910390a3505050565b5f6118f98484611458565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119735781811015611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613956565b60405180910390fd5b611972848484840361172b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de906139e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4c90613a72565b60405180910390fd5b5f8103611a6c57611a6783835f612b5a565b61255c565b611a7461119d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ae25750611ab261119d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b1a57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b54575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6c5750600e5f9054906101000a900460ff16155b156121f05760115f9054906101000a900460ff16611c5f5760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c1f575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613ada565b60405180910390fd5b5b600e60019054906101000a900460ff168015611cc2575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d15575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f165760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611dc4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f155743600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015611e51575043600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790613b68565b60405180910390fd5b43600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555043600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fb3575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561205a57600d54811115611ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff490613bf6565b60405180910390fd5b600c5461200983610f78565b82612014919061326c565b1115612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c90613c5e565b60405180910390fd5b6121ef565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120f7575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561214657600d54811115612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890613cec565b60405180910390fd5b6121ee565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166121ed57600c546121a083610f78565b826121ab919061326c565b11156121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e390613c5e565b60405180910390fd5b5b5b5b5b5f6121fa30610f78565b90505f6010548211905080801561221d5750601160019054906101000a900460ff165b80156122355750600e5f9054906101000a900460ff16155b8015612288575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122db575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561232e575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612370576001600e5f6101000a81548160ff02191690831515021790555061235683612dc6565b5f600e5f6101000a81548160ff0219169083151502179055505b5f600e5f9054906101000a900460ff161580156123d4575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612427575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f811561254c5760145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156124ae576124a76064612499600b5488612e0e90919063ffffffff16565b612e2390919063ffffffff16565b9050612529565b60145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612528576125256064612517600a5488612e0e90919063ffffffff16565b612e2390919063ffffffff16565b90505b5b5f81111561253d5761253c873083612b5a565b5b80856125499190613d0a565b94505b612557878787612b5a565b505050505b505050565b5f600267ffffffffffffffff81111561257d5761257c613d3d565b5b6040519080825280602002602001820160405280156125ab5781602001602082028036833780820191505090505b50905030815f815181106125c2576125c1613d6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268a919061331b565b8160018151811061269e5761269d613d6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127043060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461172b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612787959493929190613e4e565b5f604051808303815f87803b15801561279e575f80fd5b505af11580156127b0573d5f803e3d5ffd5b505050505050565b6127c0611724565b73ffffffffffffffffffffffffffffffffffffffff166127de61119d565b73ffffffffffffffffffffffffffffffffffffffff1614612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b90613ef0565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613f7e565b60405180910390fd5b6128af825f83612e38565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129299061400c565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129e19190612fe3565b60405180910390a36129f4835f84612e3d565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf906139e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2d90613a72565b60405180910390fd5b612c41838383612e38565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbb9061409a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612dad9190612fe3565b60405180910390a3612dc0848484612e3d565b50505050565b5f612dd030610f78565b90505f8103612ddf5750612e0b565b5f819050601054811115612df35760105490505b82811115612dff578290505b612e0881612561565b50505b50565b5f8183612e1b91906134d8565b905092915050565b5f8183612e309190613546565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e8482612e42565b612e8e8185612e4c565b9350612e9e818560208601612e5c565b612ea781612e6a565b840191505092915050565b5f6020820190508181035f830152612eca8184612e7a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612eff82612ed6565b9050919050565b612f0f81612ef5565b8114612f19575f80fd5b50565b5f81359050612f2a81612f06565b92915050565b5f819050919050565b612f4281612f30565b8114612f4c575f80fd5b50565b5f81359050612f5d81612f39565b92915050565b5f8060408385031215612f7957612f78612ed2565b5b5f612f8685828601612f1c565b9250506020612f9785828601612f4f565b9150509250929050565b5f8115159050919050565b612fb581612fa1565b82525050565b5f602082019050612fce5f830184612fac565b92915050565b612fdd81612f30565b82525050565b5f602082019050612ff65f830184612fd4565b92915050565b5f805f6060848603121561301357613012612ed2565b5b5f61302086828701612f1c565b935050602061303186828701612f1c565b925050604061304286828701612f4f565b9150509250925092565b5f60ff82169050919050565b6130618161304c565b82525050565b5f60208201905061307a5f830184613058565b92915050565b5f6020828403121561309557613094612ed2565b5b5f6130a284828501612f4f565b91505092915050565b5f602082840312156130c0576130bf612ed2565b5b5f6130cd84828501612f1c565b91505092915050565b5f80604083850312156130ec576130eb612ed2565b5b5f6130f985828601612f4f565b925050602061310a85828601612f4f565b9150509250929050565b61311d81612fa1565b8114613127575f80fd5b50565b5f8135905061313881613114565b92915050565b5f806040838503121561315457613153612ed2565b5b5f61316185828601612f1c565b92505060206131728582860161312a565b9150509250929050565b61318581612ef5565b82525050565b5f60208201905061319e5f83018461317c565b92915050565b5f80604083850312156131ba576131b9612ed2565b5b5f6131c785828601612f1c565b92505060206131d885828601612f1c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061322657607f821691505b602082108103613239576132386131e2565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327682612f30565b915061328183612f30565b92508282019050808211156132995761329861323f565b5b92915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132d3601783612e4c565b91506132de8261329f565b602082019050919050565b5f6020820190508181035f830152613300816132c7565b9050919050565b5f8151905061331581612f06565b92915050565b5f602082840312156133305761332f612ed2565b5b5f61333d84828501613307565b91505092915050565b5f6040820190506133595f83018561317c565b613366602083018461317c565b9392505050565b5f819050919050565b5f819050919050565b5f61339961339461338f8461336d565b613376565b612f30565b9050919050565b6133a98161337f565b82525050565b5f60c0820190506133c25f83018961317c565b6133cf6020830188612fd4565b6133dc60408301876133a0565b6133e960608301866133a0565b6133f6608083018561317c565b61340360a0830184612fd4565b979650505050505050565b5f8151905061341c81612f39565b92915050565b5f805f6060848603121561343957613438612ed2565b5b5f6134468682870161340e565b93505060206134578682870161340e565b92505060406134688682870161340e565b9150509250925092565b5f6040820190506134855f83018561317c565b6134926020830184612fd4565b9392505050565b5f815190506134a781613114565b92915050565b5f602082840312156134c2576134c1612ed2565b5b5f6134cf84828501613499565b91505092915050565b5f6134e282612f30565b91506134ed83612f30565b92508282026134fb81612f30565b915082820484148315176135125761351161323f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61355082612f30565b915061355b83612f30565b92508261356b5761356a613519565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6135d0603983612e4c565b91506135db82613576565b604082019050919050565b5f6020820190508181035f8301526135fd816135c4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61365e602583612e4c565b915061366982613604565b604082019050919050565b5f6020820190508181035f83015261368b81613652565b9050919050565b7f416c72656164792064697361626c6564210000000000000000000000000000005f82015250565b5f6136c6601183612e4c565b91506136d182613692565b602082019050919050565b5f6020820190508181035f8301526136f3816136ba565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613754602683612e4c565b915061375f826136fa565b604082019050919050565b5f6020820190508181035f83015261378181613748565b9050919050565b7f546f6b656e3a206e6f2045544820696e2074686520636f6e74726163740000005f82015250565b5f6137bc601d83612e4c565b91506137c782613788565b602082019050919050565b5f6020820190508181035f8301526137e9816137b0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61384a602483612e4c565b9150613855826137f0565b604082019050919050565b5f6020820190508181035f8301526138778161383e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138d8602283612e4c565b91506138e38261387e565b604082019050919050565b5f6020820190508181035f830152613905816138cc565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613940601d83612e4c565b915061394b8261390c565b602082019050919050565b5f6020820190508181035f83015261396d81613934565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139ce602583612e4c565b91506139d982613974565b604082019050919050565b5f6020820190508181035f8301526139fb816139c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a5c602383612e4c565b9150613a6782613a02565b604082019050919050565b5f6020820190508181035f830152613a8981613a50565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613ac4601683612e4c565b9150613acf82613a90565b602082019050919050565b5f6020820190508181035f830152613af181613ab8565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b5f613b52603583612e4c565b9150613b5d82613af8565b604082019050919050565b5f6020820190508181035f830152613b7f81613b46565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613be0603583612e4c565b9150613beb82613b86565b604082019050919050565b5f6020820190508181035f830152613c0d81613bd4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613c48601383612e4c565b9150613c5382613c14565b602082019050919050565b5f6020820190508181035f830152613c7581613c3c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613cd6603683612e4c565b9150613ce182613c7c565b604082019050919050565b5f6020820190508181035f830152613d0381613cca565b9050919050565b5f613d1482612f30565b9150613d1f83612f30565b9250828203905081811115613d3757613d3661323f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dc981612ef5565b82525050565b5f613dda8383613dc0565b60208301905092915050565b5f602082019050919050565b5f613dfc82613d97565b613e068185613da1565b9350613e1183613db1565b805f5b83811015613e41578151613e288882613dcf565b9750613e3383613de6565b925050600181019050613e14565b5085935050505092915050565b5f60a082019050613e615f830188612fd4565b613e6e60208301876133a0565b8181036040830152613e808186613df2565b9050613e8f606083018561317c565b613e9c6080830184612fd4565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613eda602083612e4c565b9150613ee582613ea6565b602082019050919050565b5f6020820190508181035f830152613f0781613ece565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f68602183612e4c565b9150613f7382613f0e565b604082019050919050565b5f6020820190508181035f830152613f9581613f5c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ff6602283612e4c565b915061400182613f9c565b604082019050919050565b5f6020820190508181035f83015261402381613fea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614084602683612e4c565b915061408f8261402a565b604082019050919050565b5f6020820190508181035f8301526140b181614078565b905091905056fea2646970667358221220c4dea5bc4f6dcc4c37e64c6d942f972d144582add692e7308046d00bc642a0a964736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c806371f5f01a11610122578063c0246668116100aa578063e884f2601161006e578063e884f26014610774578063f2fde38b1461078a578063f5648a4f146107b2578063f8b45b05146107c8578063ffb54a99146107f257610224565b8063c024666814610692578063c876d0b9146106ba578063c8c8ebe4146106e4578063dd62ed3e1461070e578063e2f456051461074a57610224565b80638da5cb5b116100f15780638da5cb5b1461059e57806395d89b41146105c85780639a7a23d6146105f2578063a457c2d71461061a578063a9059cbb1461065657610224565b806371f5f01a146105225780637571336a1461054a57806384dd4452146105725780638a8c523c1461058857610224565b80633edab509116101a557806352f7c9881161017457806352f7c9881461046857806362256589146104905780636ddd1713146104a657806370a08231146104d0578063715018a61461050c57610224565b80633edab509146103c457806342966c68146103da57806347062402146104025780634fbee1931461042c57610224565b80632b14ca56116101ec5780632b14ca56146102f4578063311028af1461031e578063313ce5671461034857806332454f3f14610372578063395093511461038857610224565b806306fdde0314610228578063095ea7b31461025257806318160ddd1461028e57806323b872dd146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c61081c565b6040516102499190612eb2565b60405180910390f35b34801561025d575f80fd5b5061027860048036038101906102739190612f63565b6108ac565b6040516102859190612fbb565b60405180910390f35b348015610299575f80fd5b506102a26108ce565b6040516102af9190612fe3565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612ffc565b6108d7565b6040516102eb9190612fbb565b60405180910390f35b3480156102ff575f80fd5b50610308610905565b6040516103159190612fe3565b60405180910390f35b348015610329575f80fd5b5061033261090b565b60405161033f9190612fe3565b60405180910390f35b348015610353575f80fd5b5061035c610911565b6040516103699190613067565b60405180910390f35b34801561037d575f80fd5b50610386610919565b005b348015610393575f80fd5b506103ae60048036038101906103a99190612f63565b610990565b6040516103bb9190612fbb565b60405180910390f35b3480156103cf575f80fd5b506103d86109c6565b005b3480156103e5575f80fd5b5061040060048036038101906103fb9190613080565b610e0b565b005b34801561040d575f80fd5b50610416610e1f565b6040516104239190612fe3565b60405180910390f35b348015610437575f80fd5b50610452600480360381019061044d91906130ab565b610e25565b60405161045f9190612fbb565b60405180910390f35b348015610473575f80fd5b5061048e600480360381019061048991906130d6565b610e77565b005b34801561049b575f80fd5b506104a4610ef9565b005b3480156104b1575f80fd5b506104ba610f65565b6040516104c79190612fbb565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906130ab565b610f78565b6040516105039190612fe3565b60405180910390f35b348015610517575f80fd5b50610520610fbd565b005b34801561052d575f80fd5b5061054860048036038101906105439190613080565b610fd0565b005b348015610555575f80fd5b50610570600480360381019061056b919061313e565b611064565b005b34801561057d575f80fd5b506105866110c4565b005b348015610593575f80fd5b5061059c61115e565b005b3480156105a9575f80fd5b506105b261119d565b6040516105bf919061318b565b60405180910390f35b3480156105d3575f80fd5b506105dc6111c5565b6040516105e99190612eb2565b60405180910390f35b3480156105fd575f80fd5b506106186004803603810190610613919061313e565b611255565b005b348015610625575f80fd5b50610640600480360381019061063b9190612f63565b6112fa565b60405161064d9190612fbb565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190612f63565b61136f565b6040516106899190612fbb565b60405180910390f35b34801561069d575f80fd5b506106b860048036038101906106b3919061313e565b611391565b005b3480156106c5575f80fd5b506106ce61143f565b6040516106db9190612fbb565b60405180910390f35b3480156106ef575f80fd5b506106f8611452565b6040516107059190612fe3565b60405180910390f35b348015610719575f80fd5b50610734600480360381019061072f91906131a4565b611458565b6040516107419190612fe3565b60405180910390f35b348015610755575f80fd5b5061075e6114da565b60405161076b9190612fe3565b60405180910390f35b34801561077f575f80fd5b506107886114e0565b005b348015610795575f80fd5b506107b060048036038101906107ab91906130ab565b6115a3565b005b3480156107bd575f80fd5b506107c6611625565b005b3480156107d3575f80fd5b506107dc61170c565b6040516107e99190612fe3565b60405180910390f35b3480156107fd575f80fd5b50610806611712565b6040516108139190612fbb565b60405180910390f35b60606003805461082b9061320f565b80601f01602080910402602001604051908101604052809291908181526020018280546108579061320f565b80156108a25780601f10610879576101008083540402835291602001916108a2565b820191905f5260205f20905b81548152906001019060200180831161088557829003601f168201915b5050505050905090565b5f806108b6611724565b90506108c381858561172b565b600191505092915050565b5f600254905090565b5f806108e1611724565b90506108ee8582856118ee565b6108f9858585611979565b60019150509392505050565b600b5481565b60095481565b5f6009905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610959611724565b73ffffffffffffffffffffffffffffffffffffffff1614610978575f80fd5b5f61098230610f78565b905061098d81612561565b50565b5f8061099a611724565b90506109bb8185856109ac8589611458565b6109b6919061326c565b61172b565b600191505092915050565b6109ce6127b8565b60115f9054906101000a900460ff1615610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906132e9565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a9f3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660095461172b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2d919061331b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd7919061331b565b6040518363ffffffff1660e01b8152600401610bf4929190613346565b6020604051808303815f875af1158015610c10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c34919061331b565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610cbb30610f78565b5f80610cc561119d565b426040518863ffffffff1660e01b8152600401610ce7969594939291906133af565b60606040518083038185885af1158015610d03573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d289190613422565b50505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610dc8929190613472565b6020604051808303815f875af1158015610de4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0891906134ad565b50565b610e1c610e16611724565b82612836565b50565b600a5481565b5f60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ecf575f80fd5b600a82108015610edf5750600f81105b610ee7575f80fd5b80600b8190555081600a819055505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f51575f80fd5b600954600d81905550600954600c81905550565b601160019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fc56127b8565b610fce5f6129f9565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611010611724565b73ffffffffffffffffffffffffffffffffffffffff161461102f575f80fd5b5f61103930610f78565b90505f6064838361104a91906134d8565b6110549190613546565b905061105f81612561565b505050565b61106c6127b8565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611104611724565b73ffffffffffffffffffffffffffffffffffffffff1614611123575f80fd5b5f61112d30610f78565b905061115b3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611979565b50565b6111666127b8565b6001601160016101000a81548160ff021916908315150217905550600160115f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546111d49061320f565b80601f01602080910402602001604051908101604052809291908181526020018280546112009061320f565b801561124b5780601f106112225761010080835404028352916020019161124b565b820191905f5260205f20905b81548152906001019060200180831161122e57829003601f168201915b5050505050905090565b61125d6127b8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e3906135e6565b60405180910390fd5b6112f68282612abc565b5050565b5f80611304611724565b90505f6113118286611458565b905083811015611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90613674565b60405180910390fd5b611363828686840361172b565b60019250505092915050565b5f80611379611724565b9050611386818585611979565b600191505092915050565b6113996127b8565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114339190612fbb565b60405180910390a25050565b600e60019054906101000a900460ff1681565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611538575f80fd5b600e60019054906101000a900460ff16611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e906136dc565b60405180910390fd5b5f600e60016101000a81548160ff021916908315150217905550565b6115ab6127b8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611619576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116109061376a565b60405180910390fd5b611622816129f9565b50565b5f4711611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e906137d2565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116a7611724565b73ffffffffffffffffffffffffffffffffffffffff16146116c6575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611709573d5f803e3d5ffd5b50565b600c5481565b60115f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090613860565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe906138ee565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118e19190612fe3565b60405180910390a3505050565b5f6118f98484611458565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119735781811015611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613956565b60405180910390fd5b611972848484840361172b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de906139e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4c90613a72565b60405180910390fd5b5f8103611a6c57611a6783835f612b5a565b61255c565b611a7461119d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ae25750611ab261119d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b1a57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b54575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6c5750600e5f9054906101000a900460ff16155b156121f05760115f9054906101000a900460ff16611c5f5760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c1f575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613ada565b60405180910390fd5b5b600e60019054906101000a900460ff168015611cc2575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d15575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f165760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611dc4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f155743600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015611e51575043600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790613b68565b60405180910390fd5b43600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555043600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fb3575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561205a57600d54811115611ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff490613bf6565b60405180910390fd5b600c5461200983610f78565b82612014919061326c565b1115612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c90613c5e565b60405180910390fd5b6121ef565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120f7575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561214657600d54811115612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890613cec565b60405180910390fd5b6121ee565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166121ed57600c546121a083610f78565b826121ab919061326c565b11156121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e390613c5e565b60405180910390fd5b5b5b5b5b5f6121fa30610f78565b90505f6010548211905080801561221d5750601160019054906101000a900460ff165b80156122355750600e5f9054906101000a900460ff16155b8015612288575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122db575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561232e575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612370576001600e5f6101000a81548160ff02191690831515021790555061235683612dc6565b5f600e5f6101000a81548160ff0219169083151502179055505b5f600e5f9054906101000a900460ff161580156123d4575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612427575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f811561254c5760145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156124ae576124a76064612499600b5488612e0e90919063ffffffff16565b612e2390919063ffffffff16565b9050612529565b60145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612528576125256064612517600a5488612e0e90919063ffffffff16565b612e2390919063ffffffff16565b90505b5b5f81111561253d5761253c873083612b5a565b5b80856125499190613d0a565b94505b612557878787612b5a565b505050505b505050565b5f600267ffffffffffffffff81111561257d5761257c613d3d565b5b6040519080825280602002602001820160405280156125ab5781602001602082028036833780820191505090505b50905030815f815181106125c2576125c1613d6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268a919061331b565b8160018151811061269e5761269d613d6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127043060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461172b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612787959493929190613e4e565b5f604051808303815f87803b15801561279e575f80fd5b505af11580156127b0573d5f803e3d5ffd5b505050505050565b6127c0611724565b73ffffffffffffffffffffffffffffffffffffffff166127de61119d565b73ffffffffffffffffffffffffffffffffffffffff1614612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b90613ef0565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613f7e565b60405180910390fd5b6128af825f83612e38565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129299061400c565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129e19190612fe3565b60405180910390a36129f4835f84612e3d565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf906139e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2d90613a72565b60405180910390fd5b612c41838383612e38565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbb9061409a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612dad9190612fe3565b60405180910390a3612dc0848484612e3d565b50505050565b5f612dd030610f78565b90505f8103612ddf5750612e0b565b5f819050601054811115612df35760105490505b82811115612dff578290505b612e0881612561565b50505b50565b5f8183612e1b91906134d8565b905092915050565b5f8183612e309190613546565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e8482612e42565b612e8e8185612e4c565b9350612e9e818560208601612e5c565b612ea781612e6a565b840191505092915050565b5f6020820190508181035f830152612eca8184612e7a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612eff82612ed6565b9050919050565b612f0f81612ef5565b8114612f19575f80fd5b50565b5f81359050612f2a81612f06565b92915050565b5f819050919050565b612f4281612f30565b8114612f4c575f80fd5b50565b5f81359050612f5d81612f39565b92915050565b5f8060408385031215612f7957612f78612ed2565b5b5f612f8685828601612f1c565b9250506020612f9785828601612f4f565b9150509250929050565b5f8115159050919050565b612fb581612fa1565b82525050565b5f602082019050612fce5f830184612fac565b92915050565b612fdd81612f30565b82525050565b5f602082019050612ff65f830184612fd4565b92915050565b5f805f6060848603121561301357613012612ed2565b5b5f61302086828701612f1c565b935050602061303186828701612f1c565b925050604061304286828701612f4f565b9150509250925092565b5f60ff82169050919050565b6130618161304c565b82525050565b5f60208201905061307a5f830184613058565b92915050565b5f6020828403121561309557613094612ed2565b5b5f6130a284828501612f4f565b91505092915050565b5f602082840312156130c0576130bf612ed2565b5b5f6130cd84828501612f1c565b91505092915050565b5f80604083850312156130ec576130eb612ed2565b5b5f6130f985828601612f4f565b925050602061310a85828601612f4f565b9150509250929050565b61311d81612fa1565b8114613127575f80fd5b50565b5f8135905061313881613114565b92915050565b5f806040838503121561315457613153612ed2565b5b5f61316185828601612f1c565b92505060206131728582860161312a565b9150509250929050565b61318581612ef5565b82525050565b5f60208201905061319e5f83018461317c565b92915050565b5f80604083850312156131ba576131b9612ed2565b5b5f6131c785828601612f1c565b92505060206131d885828601612f1c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061322657607f821691505b602082108103613239576132386131e2565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327682612f30565b915061328183612f30565b92508282019050808211156132995761329861323f565b5b92915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132d3601783612e4c565b91506132de8261329f565b602082019050919050565b5f6020820190508181035f830152613300816132c7565b9050919050565b5f8151905061331581612f06565b92915050565b5f602082840312156133305761332f612ed2565b5b5f61333d84828501613307565b91505092915050565b5f6040820190506133595f83018561317c565b613366602083018461317c565b9392505050565b5f819050919050565b5f819050919050565b5f61339961339461338f8461336d565b613376565b612f30565b9050919050565b6133a98161337f565b82525050565b5f60c0820190506133c25f83018961317c565b6133cf6020830188612fd4565b6133dc60408301876133a0565b6133e960608301866133a0565b6133f6608083018561317c565b61340360a0830184612fd4565b979650505050505050565b5f8151905061341c81612f39565b92915050565b5f805f6060848603121561343957613438612ed2565b5b5f6134468682870161340e565b93505060206134578682870161340e565b92505060406134688682870161340e565b9150509250925092565b5f6040820190506134855f83018561317c565b6134926020830184612fd4565b9392505050565b5f815190506134a781613114565b92915050565b5f602082840312156134c2576134c1612ed2565b5b5f6134cf84828501613499565b91505092915050565b5f6134e282612f30565b91506134ed83612f30565b92508282026134fb81612f30565b915082820484148315176135125761351161323f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61355082612f30565b915061355b83612f30565b92508261356b5761356a613519565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6135d0603983612e4c565b91506135db82613576565b604082019050919050565b5f6020820190508181035f8301526135fd816135c4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61365e602583612e4c565b915061366982613604565b604082019050919050565b5f6020820190508181035f83015261368b81613652565b9050919050565b7f416c72656164792064697361626c6564210000000000000000000000000000005f82015250565b5f6136c6601183612e4c565b91506136d182613692565b602082019050919050565b5f6020820190508181035f8301526136f3816136ba565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613754602683612e4c565b915061375f826136fa565b604082019050919050565b5f6020820190508181035f83015261378181613748565b9050919050565b7f546f6b656e3a206e6f2045544820696e2074686520636f6e74726163740000005f82015250565b5f6137bc601d83612e4c565b91506137c782613788565b602082019050919050565b5f6020820190508181035f8301526137e9816137b0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61384a602483612e4c565b9150613855826137f0565b604082019050919050565b5f6020820190508181035f8301526138778161383e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138d8602283612e4c565b91506138e38261387e565b604082019050919050565b5f6020820190508181035f830152613905816138cc565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613940601d83612e4c565b915061394b8261390c565b602082019050919050565b5f6020820190508181035f83015261396d81613934565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139ce602583612e4c565b91506139d982613974565b604082019050919050565b5f6020820190508181035f8301526139fb816139c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a5c602383612e4c565b9150613a6782613a02565b604082019050919050565b5f6020820190508181035f830152613a8981613a50565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613ac4601683612e4c565b9150613acf82613a90565b602082019050919050565b5f6020820190508181035f830152613af181613ab8565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b5f613b52603583612e4c565b9150613b5d82613af8565b604082019050919050565b5f6020820190508181035f830152613b7f81613b46565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613be0603583612e4c565b9150613beb82613b86565b604082019050919050565b5f6020820190508181035f830152613c0d81613bd4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613c48601383612e4c565b9150613c5382613c14565b602082019050919050565b5f6020820190508181035f830152613c7581613c3c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613cd6603683612e4c565b9150613ce182613c7c565b604082019050919050565b5f6020820190508181035f830152613d0381613cca565b9050919050565b5f613d1482612f30565b9150613d1f83612f30565b9250828203905081811115613d3757613d3661323f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dc981612ef5565b82525050565b5f613dda8383613dc0565b60208301905092915050565b5f602082019050919050565b5f613dfc82613d97565b613e068185613da1565b9350613e1183613db1565b805f5b83811015613e41578151613e288882613dcf565b9750613e3383613de6565b925050600181019050613e14565b5085935050505092915050565b5f60a082019050613e615f830188612fd4565b613e6e60208301876133a0565b8181036040830152613e808186613df2565b9050613e8f606083018561317c565b613e9c6080830184612fd4565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613eda602083612e4c565b9150613ee582613ea6565b602082019050919050565b5f6020820190508181035f830152613f0781613ece565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f68602183612e4c565b9150613f7382613f0e565b604082019050919050565b5f6020820190508181035f830152613f9581613f5c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ff6602283612e4c565b915061400182613f9c565b604082019050919050565b5f6020820190508181035f83015261402381613fea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614084602683612e4c565b915061408f8261402a565b604082019050919050565b5f6020820190508181035f8301526140b181614078565b905091905056fea2646970667358221220c4dea5bc4f6dcc4c37e64c6d942f972d144582add692e7308046d00bc642a0a964736f6c634300081a0033

Deployed Bytecode Sourcemap

14659:9081:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9888:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10819:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10208:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11028:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15070:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14966:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10108:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22551:189;;;;;;;;;;;;;:::i;:::-;;11297:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16498:627;;;;;;;;;;;;;:::i;:::-;;17255:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15037:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18151:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21642:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22080:182;;;;;;;;;;;;;:::i;:::-;;15512:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10324:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1099:103;;;;;;;;;;;;;:::i;:::-;;22270:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17348:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22748:210;;;;;;;;;;;;;:::i;:::-;;17135:110;;;;;;;;;;;;;:::i;:::-;;864:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9996:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17692:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11543:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10459:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17502:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15256:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15170:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10660:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15400:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21872:198;;;;;;;;;;;;;:::i;:::-;;1210:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22970:236;;;;;;;;;;;;;:::i;:::-;;15106:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15474:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9888:100;9942:13;9975:5;9968:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9888:100;:::o;10819:201::-;10902:4;10919:13;10935:12;:10;:12::i;:::-;10919:28;;10958:32;10967:5;10974:7;10983:6;10958:8;:32::i;:::-;11008:4;11001:11;;;10819:201;;;;:::o;10208:108::-;10269:7;10296:12;;10289:19;;10208:108;:::o;11028:261::-;11125:4;11142:15;11160:12;:10;:12::i;:::-;11142:30;;11183:38;11199:4;11205:7;11214:6;11183:15;:38::i;:::-;11232:27;11242:4;11248:2;11252:6;11232:9;:27::i;:::-;11277:4;11270:11;;;11028:261;;;;;:::o;15070:27::-;;;;:::o;14966:62::-;;;;:::o;10108:92::-;10166:5;10191:1;10184:8;;10108:92;:::o;22551:189::-;22619:15;;;;;;;;;;;22604:30;;:12;:10;:12::i;:::-;:30;;;22596:39;;;;;;22646:20;22667:24;22685:4;22667:9;:24::i;:::-;22646:45;;22702:30;22719:12;22702:16;:30::i;:::-;22585:155;22551:189::o;11297:238::-;11385:4;11402:13;11418:12;:10;:12::i;:::-;11402:28;;11441:64;11450:5;11457:7;11494:10;11466:25;11476:5;11483:7;11466:9;:25::i;:::-;:38;;;;:::i;:::-;11441:8;:64::i;:::-;11523:4;11516:11;;;11297:238;;;;:::o;16498:627::-;823:13;:11;:13::i;:::-;16565:11:::1;;;;;;;;;;;16564:12;16556:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;16651:42;16614:15;;:80;;;;;;;;;;;;;;;;;;16705:69;16722:4;16737:15;;;;;;;;;;;16755:18;;16705:8;:69::i;:::-;16819:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16801:55;;;16865:4;16872:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16801:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16785:13;;:110;;;;;;;;;;;;;;;;;;16906:15;;;;;;;;;;;:31;;;16945:21;16976:4;16982:24;17000:4;16982:9;:24::i;:::-;17007:1;17009::::0;17011:7:::1;:5;:7::i;:::-;17019:15;16906:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17053:13;;;;;;;;;;;17046:29;;;17084:15;;;;;;;;;;;17102:14;17046:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16498:627::o:0;17255:85::-;17305:27;17311:12;:10;:12::i;:::-;17325:6;17305:5;:27::i;:::-;17255:85;:::o;15037:26::-;;;;:::o;18151:126::-;18217:4;18241:19;:28;18261:7;18241:28;;;;;;;;;;;;;;;;;;;;;;;;;18234:35;;18151:126;;;:::o;21642:222::-;21735:15;;;;;;;;;;;21721:29;;:10;:29;;;21713:38;;;;;;21780:2;21770:7;:12;:29;;;;;21797:2;21786:8;:13;21770:29;21762:38;;;;;;21821:8;21811:7;:18;;;;21849:7;21840:6;:16;;;;21642:222;;:::o;22080:182::-;22145:15;;;;;;;;;;;22131:29;;:10;:29;;;22123:38;;;;;;22195:18;;22172:20;:41;;;;22236:18;;22224:9;:30;;;;22080:182::o;15512:31::-;;;;;;;;;;;;;:::o;10324:127::-;10398:7;10425:9;:18;10435:7;10425:18;;;;;;;;;;;;;;;;10418:25;;10324:127;;;:::o;1099:103::-;823:13;:11;:13::i;:::-;1164:30:::1;1191:1;1164:18;:30::i;:::-;1099:103::o:0;22270:273::-;22356:15;;;;;;;;;;;22340:31;;:12;:10;:12::i;:::-;:31;;;22332:40;;;;;;22383:23;22409:24;22427:4;22409:9;:24::i;:::-;22383:50;;22444:18;22493:3;22483:7;22465:15;:25;;;;:::i;:::-;:31;;;;:::i;:::-;22444:52;;22507:28;22524:10;22507:16;:28::i;:::-;22321:222;;22270:273;:::o;17348:144::-;823:13;:11;:13::i;:::-;17480:4:::1;17438:31;:39;17470:6;17438:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17348:144:::0;;:::o;22748:210::-;22822:15;;;;;;;;;;;22806:31;;:12;:10;:12::i;:::-;:31;;;22798:40;;;;;;22849:14;22866:24;22884:4;22866:9;:24::i;:::-;22849:41;;22901:49;22919:4;22926:15;;;;;;;;;;;22943:6;22901:9;:49::i;:::-;22787:171;22748:210::o;17135:110::-;823:13;:11;:13::i;:::-;17204:4:::1;17190:11;;:18;;;;;;;;;;;;;;;;;;17233:4;17219:11;;:18;;;;;;;;;;;;;;;;;;17135:110::o:0;864:87::-;910:7;937:6;;;;;;;;;;;930:13;;864:87;:::o;9996:104::-;10052:13;10085:7;10078:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9996:104;:::o;17692:257::-;823:13;:11;:13::i;:::-;17814::::1;;;;;;;;;;;17806:21;;:4;:21;;::::0;17798:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17900:41;17929:4;17935:5;17900:28;:41::i;:::-;17692:257:::0;;:::o;11543:436::-;11636:4;11653:13;11669:12;:10;:12::i;:::-;11653:28;;11692:24;11719:25;11729:5;11736:7;11719:9;:25::i;:::-;11692:52;;11783:15;11763:16;:35;;11755:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11876:60;11885:5;11892:7;11920:15;11901:16;:34;11876:8;:60::i;:::-;11967:4;11960:11;;;;11543:436;;;;:::o;10459:193::-;10538:4;10555:13;10571:12;:10;:12::i;:::-;10555:28;;10594;10604:5;10611:2;10615:6;10594:9;:28::i;:::-;10640:4;10633:11;;;10459:193;;;;:::o;17502:182::-;823:13;:11;:13::i;:::-;17618:8:::1;17587:19;:28;17607:7;17587:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17658:7;17642:34;;;17667:8;17642:34;;;;;;:::i;:::-;;;;;;;;17502:182:::0;;:::o;15256:39::-;;;;;;;;;;;;;:::o;15170:47::-;;;;:::o;10660:151::-;10749:7;10776:11;:18;10788:5;10776:18;;;;;;;;;;;;;;;:27;10795:7;10776:27;;;;;;;;;;;;;;;;10769:34;;10660:151;;;;:::o;15400:65::-;;;;:::o;21872:198::-;21946:15;;;;;;;;;;;21932:29;;:10;:29;;;21924:38;;;;;;21981:20;;;;;;;;;;;21973:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;22057:5;22034:20;;:28;;;;;;;;;;;;;;;;;;21872:198::o;1210:201::-;823:13;:11;:13::i;:::-;1319:1:::1;1299:22;;:8;:22;;::::0;1291:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1375:28;1394:8;1375:18;:28::i;:::-;1210:201:::0;:::o;22970:236::-;23050:1;23026:21;:25;23018:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23120:15;;;;;;;;;;;23104:31;;:12;:10;:12::i;:::-;:31;;;23096:40;;;;;;23155:10;23147:28;;:51;23176:21;23147:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22970:236::o;15106:57::-;;;;:::o;15474:31::-;;;;;;;;;;;;;:::o;337:98::-;390:7;417:10;410:17;;337:98;:::o;13682:346::-;13801:1;13784:19;;:5;:19;;;13776:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13882:1;13863:21;;:7;:21;;;13855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13966:6;13936:11;:18;13948:5;13936:18;;;;;;;;;;;;;;;:27;13955:7;13936:27;;;;;;;;;;;;;;;:36;;;;14004:7;13988:32;;13997:5;13988:32;;;14013:6;13988:32;;;;;;:::i;:::-;;;;;;;;13682:346;;;:::o;14036:419::-;14137:24;14164:25;14174:5;14181:7;14164:9;:25::i;:::-;14137:52;;14224:17;14204:16;:37;14200:248;;14286:6;14266:16;:26;;14258:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14370:51;14379:5;14386:7;14414:6;14395:16;:25;14370:8;:51::i;:::-;14200:248;14126:329;14036:419;;;:::o;18285:2866::-;18399:1;18383:18;;:4;:18;;;18375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18476:1;18462:16;;:2;:16;;;18454:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18545:1;18535:6;:11;18531:93;;18563:28;18579:4;18585:2;18589:1;18563:15;:28::i;:::-;18606:7;;18531:93;18648:7;:5;:7::i;:::-;18640:15;;:4;:15;;;;:32;;;;;18665:7;:5;:7::i;:::-;18659:13;;:2;:13;;;;18640:32;:52;;;;;18690:1;18676:16;;:2;:16;;;;18640:52;:77;;;;;18710:6;18696:21;;:2;:21;;;;18640:77;:90;;;;;18722:8;;;;;;;;;;;18721:9;18640:90;18636:1544;;;18752:11;;;;;;;;;;;18747:140;;18792:19;:25;18812:4;18792:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18821:19;:23;18841:2;18821:23;;;;;;;;;;;;;;;;;;;;;;;;;18792:52;18784:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18747:140;18907:20;;;;;;;;;;;:50;;;;;18932:19;:25;18952:4;18932:25;;;;;;;;;;;;;;;;;;;;;;;;;18931:26;18907:50;:78;;;;;18962:19;:23;18982:2;18962:23;;;;;;;;;;;;;;;;;;;;;;;;;18961:24;18907:78;18903:565;;;19027:15;;;;;;;;;;;19013:30;;:2;:30;;;;:62;;;;;19061:13;;;;;;;;;;;19047:28;;:2;:28;;;;19013:62;19009:444;;;19153:12;19111:28;:39;19140:9;19111:39;;;;;;;;;;;;;;;;:54;:105;;;;;19204:12;19169:28;:32;19198:2;19169:32;;;;;;;;;;;;;;;;:47;19111:105;19103:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;19343:12;19301:28;:39;19330:9;19301:39;;;;;;;;;;;;;;;:54;;;;19417:12;19382:28;:32;19411:2;19382:32;;;;;;;;;;;;;;;:47;;;;19009:444;18903:565;19488:25;:31;19514:4;19488:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19524:31;:35;19556:2;19524:35;;;;;;;;;;;;;;;;;;;;;;;;;19523:36;19488:71;19484:685;;;19598:20;;19588:6;:30;;19580:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19729:9;;19712:13;19722:2;19712:9;:13::i;:::-;19703:6;:22;;;;:::i;:::-;:35;;19695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19484:685;;;19801:25;:29;19827:2;19801:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19835:31;:37;19867:4;19835:37;;;;;;;;;;;;;;;;;;;;;;;;;19834:38;19801:71;19797:372;;;19911:20;;19901:6;:30;;19893:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19797:372;;;20030:31;:35;20062:2;20030:35;;;;;;;;;;;;;;;;;;;;;;;;;20025:144;;20120:9;;20103:13;20113:2;20103:9;:13::i;:::-;20094:6;:22;;;;:::i;:::-;:35;;20086:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20025:144;19797:372;19484:685;18636:1544;20192:28;20223:24;20241:4;20223:9;:24::i;:::-;20192:55;;20258:12;20296:18;;20273:20;:41;20258:56;;20329:7;:22;;;;;20340:11;;;;;;;;;;;20329:22;:35;;;;;20356:8;;;;;;;;;;;20355:9;20329:35;:71;;;;;20369:25;:31;20395:4;20369:31;;;;;;;;;;;;;;;;;;;;;;;;;20368:32;20329:71;:101;;;;;20405:19;:25;20425:4;20405:25;;;;;;;;;;;;;;;;;;;;;;;;;20404:26;20329:101;:129;;;;;20435:19;:23;20455:2;20435:23;;;;;;;;;;;;;;;;;;;;;;;;;20434:24;20329:129;20325:239;;;20486:4;20475:8;;:15;;;;;;;;;;;;;;;;;;20505:16;20514:6;20505:8;:16::i;:::-;20547:5;20536:8;;:16;;;;;;;;;;;;;;;;;;20325:239;20576:12;20592:8;;;;;;;;;;;20591:9;:39;;;;;20605:19;:25;20625:4;20605:25;;;;;;;;;;;;;;;;;;;;;;;;;20604:26;20591:39;:67;;;;;20635:19;:23;20655:2;20635:23;;;;;;;;;;;;;;;;;;;;;;;;;20634:24;20591:67;20576:82;;20671:12;20702:7;20698:402;;;20730:25;:29;20756:2;20730:29;;;;;;;;;;;;;;;;;;;;;;;;;20726:229;;;20787:28;20811:3;20787:19;20798:7;;20787:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;20780:35;;20726:229;;;20853:25;:31;20879:4;20853:31;;;;;;;;;;;;;;;;;;;;;;;;;20850:105;;;20912:27;20935:3;20912:18;20923:6;;20912;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;20905:34;;20850:105;20726:229;20980:1;20973:4;:8;20969:91;;;21002:42;21018:4;21032;21039;21002:15;:42::i;:::-;20969:91;21084:4;21074:14;;;;;:::i;:::-;;;20698:402;21110:33;21126:4;21132:2;21136:6;21110:15;:33::i;:::-;18364:2787;;;;18285:2866;;;;:::o;21159:473::-;21225:21;21263:1;21249:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21225:40;;21294:4;21276;21281:1;21276:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21320:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21310:4;21315:1;21310:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21353:62;21370:4;21385:15;;;;;;;;;;;21403:11;21353:8;:62::i;:::-;21426:15;;;;;;;;;;;:66;;;21507:11;21533:1;21549:4;21568:15;;;;;;;;;;;21598;21426:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21214:418;21159:473;:::o;959:132::-;1034:12;:10;:12::i;:::-;1023:23;;:7;:5;:7::i;:::-;:23;;;1015:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;959:132::o;13079:595::-;13182:1;13163:21;;:7;:21;;;13155:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13235:49;13256:7;13273:1;13277:6;13235:20;:49::i;:::-;13297:22;13322:9;:18;13332:7;13322:18;;;;;;;;;;;;;;;;13297:43;;13377:6;13359:14;:24;;13351:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13496:6;13479:14;:23;13458:9;:18;13468:7;13458:18;;;;;;;;;;;;;;;:44;;;;13533:6;13517:12;;:22;;;;;;;;;;;13594:1;13568:37;;13577:7;13568:37;;;13598:6;13568:37;;;;;;:::i;:::-;;;;;;;;13618:48;13638:7;13655:1;13659:6;13618:19;:48::i;:::-;13144:530;13079:595;;:::o;1419:191::-;1493:16;1512:6;;;;;;;;;;;1493:25;;1538:8;1529:6;;:17;;;;;;;;;;;;;;;;;;1593:8;1562:40;;1583:8;1562:40;;;;;;;;;;;;1482:128;1419:191;:::o;17957:186::-;18074:5;18040:25;:31;18066:4;18040:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18129:5;18095:40;;18123:4;18095:40;;;;;;;;;;;;17957:186;;:::o;11987:641::-;12100:1;12084:18;;:4;:18;;;12076:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12177:1;12163:16;;:2;:16;;;12155:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12232:38;12253:4;12259:2;12263:6;12232:20;:38::i;:::-;12283:19;12305:9;:15;12315:4;12305:15;;;;;;;;;;;;;;;;12283:37;;12354:6;12339:11;:21;;12331:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12471:6;12457:11;:20;12439:9;:15;12449:4;12439:15;;;;;;;;;;;;;;;:38;;;;12509:6;12492:9;:13;12502:2;12492:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12559:2;12544:26;;12553:4;12544:26;;;12563:6;12544:26;;;;;;:::i;:::-;;;;;;;;12583:37;12603:4;12609:2;12613:6;12583:19;:37::i;:::-;12065:563;11987:641;;;:::o;23216:484::-;23274:23;23300:24;23318:4;23300:9;:24::i;:::-;23274:50;;23358:1;23339:15;:20;23335:59;;23376:7;;;23335:59;23404:20;23427:15;23404:38;;23474:18;;23459:12;:33;23455:99;;;23524:18;;23509:33;;23455:99;23584:11;23569:12;:26;23566:84;;;23627:11;23612:26;;23566:84;23662:30;23679:12;23662:16;:30::i;:::-;23263:437;;23216:484;;:::o;8345:98::-;8403:7;8434:1;8430;:5;;;;:::i;:::-;8423:12;;8345:98;;;;:::o;8451:::-;8509:7;8540:1;8536;:5;;;;:::i;:::-;8529:12;;8451:98;;;;:::o;14463:91::-;;;;:::o;14562:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:474::-;5484:6;5492;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5794:2;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5765:118;5416:474;;;;;:::o;5896:116::-;5966:21;5981:5;5966:21;:::i;:::-;5959:5;5956:32;5946:60;;6002:1;5999;5992:12;5946:60;5896:116;:::o;6018:133::-;6061:5;6099:6;6086:20;6077:29;;6115:30;6139:5;6115:30;:::i;:::-;6018:133;;;;:::o;6157:468::-;6222:6;6230;6279:2;6267:9;6258:7;6254:23;6250:32;6247:119;;;6285:79;;:::i;:::-;6247:119;6405:1;6430:53;6475:7;6466:6;6455:9;6451:22;6430:53;:::i;:::-;6420:63;;6376:117;6532:2;6558:50;6600:7;6591:6;6580:9;6576:22;6558:50;:::i;:::-;6548:60;;6503:115;6157:468;;;;;:::o;6631:118::-;6718:24;6736:5;6718:24;:::i;:::-;6713:3;6706:37;6631:118;;:::o;6755:222::-;6848:4;6886:2;6875:9;6871:18;6863:26;;6899:71;6967:1;6956:9;6952:17;6943:6;6899:71;:::i;:::-;6755:222;;;;:::o;6983:474::-;7051:6;7059;7108:2;7096:9;7087:7;7083:23;7079:32;7076:119;;;7114:79;;:::i;:::-;7076:119;7234:1;7259:53;7304:7;7295:6;7284:9;7280:22;7259:53;:::i;:::-;7249:63;;7205:117;7361:2;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7332:118;6983:474;;;;;:::o;7463:180::-;7511:77;7508:1;7501:88;7608:4;7605:1;7598:15;7632:4;7629:1;7622:15;7649:320;7693:6;7730:1;7724:4;7720:12;7710:22;;7777:1;7771:4;7767:12;7798:18;7788:81;;7854:4;7846:6;7842:17;7832:27;;7788:81;7916:2;7908:6;7905:14;7885:18;7882:38;7879:84;;7935:18;;:::i;:::-;7879:84;7700:269;7649:320;;;:::o;7975:180::-;8023:77;8020:1;8013:88;8120:4;8117:1;8110:15;8144:4;8141:1;8134:15;8161:191;8201:3;8220:20;8238:1;8220:20;:::i;:::-;8215:25;;8254:20;8272:1;8254:20;:::i;:::-;8249:25;;8297:1;8294;8290:9;8283:16;;8318:3;8315:1;8312:10;8309:36;;;8325:18;;:::i;:::-;8309:36;8161:191;;;;:::o;8358:173::-;8498:25;8494:1;8486:6;8482:14;8475:49;8358:173;:::o;8537:366::-;8679:3;8700:67;8764:2;8759:3;8700:67;:::i;:::-;8693:74;;8776:93;8865:3;8776:93;:::i;:::-;8894:2;8889:3;8885:12;8878:19;;8537:366;;;:::o;8909:419::-;9075:4;9113:2;9102:9;9098:18;9090:26;;9162:9;9156:4;9152:20;9148:1;9137:9;9133:17;9126:47;9190:131;9316:4;9190:131;:::i;:::-;9182:139;;8909:419;;;:::o;9334:143::-;9391:5;9422:6;9416:13;9407:22;;9438:33;9465:5;9438:33;:::i;:::-;9334:143;;;;:::o;9483:351::-;9553:6;9602:2;9590:9;9581:7;9577:23;9573:32;9570:119;;;9608:79;;:::i;:::-;9570:119;9728:1;9753:64;9809:7;9800:6;9789:9;9785:22;9753:64;:::i;:::-;9743:74;;9699:128;9483:351;;;;:::o;9840:332::-;9961:4;9999:2;9988:9;9984:18;9976:26;;10012:71;10080:1;10069:9;10065:17;10056:6;10012:71;:::i;:::-;10093:72;10161:2;10150:9;10146:18;10137:6;10093:72;:::i;:::-;9840:332;;;;;:::o;10178:85::-;10223:7;10252:5;10241:16;;10178:85;;;:::o;10269:60::-;10297:3;10318:5;10311:12;;10269:60;;;:::o;10335:158::-;10393:9;10426:61;10444:42;10453:32;10479:5;10453:32;:::i;:::-;10444:42;:::i;:::-;10426:61;:::i;:::-;10413:74;;10335:158;;;:::o;10499:147::-;10594:45;10633:5;10594:45;:::i;:::-;10589:3;10582:58;10499:147;;:::o;10652:807::-;10901:4;10939:3;10928:9;10924:19;10916:27;;10953:71;11021:1;11010:9;11006:17;10997:6;10953:71;:::i;:::-;11034:72;11102:2;11091:9;11087:18;11078:6;11034:72;:::i;:::-;11116:80;11192:2;11181:9;11177:18;11168:6;11116:80;:::i;:::-;11206;11282:2;11271:9;11267:18;11258:6;11206:80;:::i;:::-;11296:73;11364:3;11353:9;11349:19;11340:6;11296:73;:::i;:::-;11379;11447:3;11436:9;11432:19;11423:6;11379:73;:::i;:::-;10652:807;;;;;;;;;:::o;11465:143::-;11522:5;11553:6;11547:13;11538:22;;11569:33;11596:5;11569:33;:::i;:::-;11465:143;;;;:::o;11614:663::-;11702:6;11710;11718;11767:2;11755:9;11746:7;11742:23;11738:32;11735:119;;;11773:79;;:::i;:::-;11735:119;11893:1;11918:64;11974:7;11965:6;11954:9;11950:22;11918:64;:::i;:::-;11908:74;;11864:128;12031:2;12057:64;12113:7;12104:6;12093:9;12089:22;12057:64;:::i;:::-;12047:74;;12002:129;12170:2;12196:64;12252:7;12243:6;12232:9;12228:22;12196:64;:::i;:::-;12186:74;;12141:129;11614:663;;;;;:::o;12283:332::-;12404:4;12442:2;12431:9;12427:18;12419:26;;12455:71;12523:1;12512:9;12508:17;12499:6;12455:71;:::i;:::-;12536:72;12604:2;12593:9;12589:18;12580:6;12536:72;:::i;:::-;12283:332;;;;;:::o;12621:137::-;12675:5;12706:6;12700:13;12691:22;;12722:30;12746:5;12722:30;:::i;:::-;12621:137;;;;:::o;12764:345::-;12831:6;12880:2;12868:9;12859:7;12855:23;12851:32;12848:119;;;12886:79;;:::i;:::-;12848:119;13006:1;13031:61;13084:7;13075:6;13064:9;13060:22;13031:61;:::i;:::-;13021:71;;12977:125;12764:345;;;;:::o;13115:410::-;13155:7;13178:20;13196:1;13178:20;:::i;:::-;13173:25;;13212:20;13230:1;13212:20;:::i;:::-;13207:25;;13267:1;13264;13260:9;13289:30;13307:11;13289:30;:::i;:::-;13278:41;;13468:1;13459:7;13455:15;13452:1;13449:22;13429:1;13422:9;13402:83;13379:139;;13498:18;;:::i;:::-;13379:139;13163:362;13115:410;;;;:::o;13531:180::-;13579:77;13576:1;13569:88;13676:4;13673:1;13666:15;13700:4;13697:1;13690:15;13717:185;13757:1;13774:20;13792:1;13774:20;:::i;:::-;13769:25;;13808:20;13826:1;13808:20;:::i;:::-;13803:25;;13847:1;13837:35;;13852:18;;:::i;:::-;13837:35;13894:1;13891;13887:9;13882:14;;13717:185;;;;:::o;13908:244::-;14048:34;14044:1;14036:6;14032:14;14025:58;14117:27;14112:2;14104:6;14100:15;14093:52;13908:244;:::o;14158:366::-;14300:3;14321:67;14385:2;14380:3;14321:67;:::i;:::-;14314:74;;14397:93;14486:3;14397:93;:::i;:::-;14515:2;14510:3;14506:12;14499:19;;14158:366;;;:::o;14530:419::-;14696:4;14734:2;14723:9;14719:18;14711:26;;14783:9;14777:4;14773:20;14769:1;14758:9;14754:17;14747:47;14811:131;14937:4;14811:131;:::i;:::-;14803:139;;14530:419;;;:::o;14955:224::-;15095:34;15091:1;15083:6;15079:14;15072:58;15164:7;15159:2;15151:6;15147:15;15140:32;14955:224;:::o;15185:366::-;15327:3;15348:67;15412:2;15407:3;15348:67;:::i;:::-;15341:74;;15424:93;15513:3;15424:93;:::i;:::-;15542:2;15537:3;15533:12;15526:19;;15185:366;;;:::o;15557:419::-;15723:4;15761:2;15750:9;15746:18;15738:26;;15810:9;15804:4;15800:20;15796:1;15785:9;15781:17;15774:47;15838:131;15964:4;15838:131;:::i;:::-;15830:139;;15557:419;;;:::o;15982:167::-;16122:19;16118:1;16110:6;16106:14;16099:43;15982:167;:::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:225::-;17092:34;17088:1;17080:6;17076:14;17069:58;17161:8;17156:2;17148:6;17144:15;17137:33;16952:225;:::o;17183:366::-;17325:3;17346:67;17410:2;17405:3;17346:67;:::i;:::-;17339:74;;17422:93;17511:3;17422:93;:::i;:::-;17540:2;17535:3;17531:12;17524:19;;17183:366;;;:::o;17555:419::-;17721:4;17759:2;17748:9;17744:18;17736:26;;17808:9;17802:4;17798:20;17794:1;17783:9;17779:17;17772:47;17836:131;17962:4;17836:131;:::i;:::-;17828:139;;17555:419;;;:::o;17980:179::-;18120:31;18116:1;18108:6;18104:14;18097:55;17980:179;:::o;18165:366::-;18307:3;18328:67;18392:2;18387:3;18328:67;:::i;:::-;18321:74;;18404:93;18493:3;18404:93;:::i;:::-;18522:2;18517:3;18513:12;18506:19;;18165:366;;;:::o;18537:419::-;18703:4;18741:2;18730:9;18726:18;18718:26;;18790:9;18784:4;18780:20;18776:1;18765:9;18761:17;18754:47;18818:131;18944:4;18818:131;:::i;:::-;18810:139;;18537:419;;;:::o;18962:223::-;19102:34;19098:1;19090:6;19086:14;19079:58;19171:6;19166:2;19158:6;19154:15;19147:31;18962:223;:::o;19191:366::-;19333:3;19354:67;19418:2;19413:3;19354:67;:::i;:::-;19347:74;;19430:93;19519:3;19430:93;:::i;:::-;19548:2;19543:3;19539:12;19532:19;;19191:366;;;:::o;19563:419::-;19729:4;19767:2;19756:9;19752:18;19744:26;;19816:9;19810:4;19806:20;19802:1;19791:9;19787:17;19780:47;19844:131;19970:4;19844:131;:::i;:::-;19836:139;;19563:419;;;:::o;19988:221::-;20128:34;20124:1;20116:6;20112:14;20105:58;20197:4;20192:2;20184:6;20180:15;20173:29;19988:221;:::o;20215:366::-;20357:3;20378:67;20442:2;20437:3;20378:67;:::i;:::-;20371:74;;20454:93;20543:3;20454:93;:::i;:::-;20572:2;20567:3;20563:12;20556:19;;20215:366;;;:::o;20587:419::-;20753:4;20791:2;20780:9;20776:18;20768:26;;20840:9;20834:4;20830:20;20826:1;20815:9;20811:17;20804:47;20868:131;20994:4;20868:131;:::i;:::-;20860:139;;20587:419;;;:::o;21012:179::-;21152:31;21148:1;21140:6;21136:14;21129:55;21012:179;:::o;21197:366::-;21339:3;21360:67;21424:2;21419:3;21360:67;:::i;:::-;21353:74;;21436:93;21525:3;21436:93;:::i;:::-;21554:2;21549:3;21545:12;21538:19;;21197:366;;;:::o;21569:419::-;21735:4;21773:2;21762:9;21758:18;21750:26;;21822:9;21816:4;21812:20;21808:1;21797:9;21793:17;21786:47;21850:131;21976:4;21850:131;:::i;:::-;21842:139;;21569:419;;;:::o;21994:224::-;22134:34;22130:1;22122:6;22118:14;22111:58;22203:7;22198:2;22190:6;22186:15;22179:32;21994:224;:::o;22224:366::-;22366:3;22387:67;22451:2;22446:3;22387:67;:::i;:::-;22380:74;;22463:93;22552:3;22463:93;:::i;:::-;22581:2;22576:3;22572:12;22565:19;;22224:366;;;:::o;22596:419::-;22762:4;22800:2;22789:9;22785:18;22777:26;;22849:9;22843:4;22839:20;22835:1;22824:9;22820:17;22813:47;22877:131;23003:4;22877:131;:::i;:::-;22869:139;;22596:419;;;:::o;23021:222::-;23161:34;23157:1;23149:6;23145:14;23138:58;23230:5;23225:2;23217:6;23213:15;23206:30;23021:222;:::o;23249:366::-;23391:3;23412:67;23476:2;23471:3;23412:67;:::i;:::-;23405:74;;23488:93;23577:3;23488:93;:::i;:::-;23606:2;23601:3;23597:12;23590:19;;23249:366;;;:::o;23621:419::-;23787:4;23825:2;23814:9;23810:18;23802:26;;23874:9;23868:4;23864:20;23860:1;23849:9;23845:17;23838:47;23902:131;24028:4;23902:131;:::i;:::-;23894:139;;23621:419;;;:::o;24046:172::-;24186:24;24182:1;24174:6;24170:14;24163:48;24046:172;:::o;24224:366::-;24366:3;24387:67;24451:2;24446:3;24387:67;:::i;:::-;24380:74;;24463:93;24552:3;24463:93;:::i;:::-;24581:2;24576:3;24572:12;24565:19;;24224:366;;;:::o;24596:419::-;24762:4;24800:2;24789:9;24785:18;24777:26;;24849:9;24843:4;24839:20;24835:1;24824:9;24820:17;24813:47;24877:131;25003:4;24877:131;:::i;:::-;24869:139;;24596:419;;;:::o;25021:240::-;25161:34;25157:1;25149:6;25145:14;25138:58;25230:23;25225:2;25217:6;25213:15;25206:48;25021:240;:::o;25267:366::-;25409:3;25430:67;25494:2;25489:3;25430:67;:::i;:::-;25423:74;;25506:93;25595:3;25506:93;:::i;:::-;25624:2;25619:3;25615:12;25608:19;;25267:366;;;:::o;25639:419::-;25805:4;25843:2;25832:9;25828:18;25820:26;;25892:9;25886:4;25882:20;25878:1;25867:9;25863:17;25856:47;25920:131;26046:4;25920:131;:::i;:::-;25912:139;;25639:419;;;:::o;26064:240::-;26204:34;26200:1;26192:6;26188:14;26181:58;26273:23;26268:2;26260:6;26256:15;26249:48;26064:240;:::o;26310:366::-;26452:3;26473:67;26537:2;26532:3;26473:67;:::i;:::-;26466:74;;26549:93;26638:3;26549:93;:::i;:::-;26667:2;26662:3;26658:12;26651:19;;26310:366;;;:::o;26682:419::-;26848:4;26886:2;26875:9;26871:18;26863:26;;26935:9;26929:4;26925:20;26921:1;26910:9;26906:17;26899:47;26963:131;27089:4;26963:131;:::i;:::-;26955:139;;26682:419;;;:::o;27107:169::-;27247:21;27243:1;27235:6;27231:14;27224:45;27107:169;:::o;27282:366::-;27424:3;27445:67;27509:2;27504:3;27445:67;:::i;:::-;27438:74;;27521:93;27610:3;27521:93;:::i;:::-;27639:2;27634:3;27630:12;27623:19;;27282:366;;;:::o;27654:419::-;27820:4;27858:2;27847:9;27843:18;27835:26;;27907:9;27901:4;27897:20;27893:1;27882:9;27878:17;27871:47;27935:131;28061:4;27935:131;:::i;:::-;27927:139;;27654:419;;;:::o;28079:241::-;28219:34;28215:1;28207:6;28203:14;28196:58;28288:24;28283:2;28275:6;28271:15;28264:49;28079:241;:::o;28326:366::-;28468:3;28489:67;28553:2;28548:3;28489:67;:::i;:::-;28482:74;;28565:93;28654:3;28565:93;:::i;:::-;28683:2;28678:3;28674:12;28667:19;;28326:366;;;:::o;28698:419::-;28864:4;28902:2;28891:9;28887:18;28879:26;;28951:9;28945:4;28941:20;28937:1;28926:9;28922:17;28915:47;28979:131;29105:4;28979:131;:::i;:::-;28971:139;;28698:419;;;:::o;29123:194::-;29163:4;29183:20;29201:1;29183:20;:::i;:::-;29178:25;;29217:20;29235:1;29217:20;:::i;:::-;29212:25;;29261:1;29258;29254:9;29246:17;;29285:1;29279:4;29276:11;29273:37;;;29290:18;;:::i;:::-;29273:37;29123:194;;;;:::o;29323:180::-;29371:77;29368:1;29361:88;29468:4;29465:1;29458:15;29492:4;29489:1;29482:15;29509:180;29557:77;29554:1;29547:88;29654:4;29651:1;29644:15;29678:4;29675:1;29668:15;29695:114;29762:6;29796:5;29790:12;29780:22;;29695:114;;;:::o;29815:184::-;29914:11;29948:6;29943:3;29936:19;29988:4;29983:3;29979:14;29964:29;;29815:184;;;;:::o;30005:132::-;30072:4;30095:3;30087:11;;30125:4;30120:3;30116:14;30108:22;;30005:132;;;:::o;30143:108::-;30220:24;30238:5;30220:24;:::i;:::-;30215:3;30208:37;30143:108;;:::o;30257:179::-;30326:10;30347:46;30389:3;30381:6;30347:46;:::i;:::-;30425:4;30420:3;30416:14;30402:28;;30257:179;;;;:::o;30442:113::-;30512:4;30544;30539:3;30535:14;30527:22;;30442:113;;;:::o;30591:732::-;30710:3;30739:54;30787:5;30739:54;:::i;:::-;30809:86;30888:6;30883:3;30809:86;:::i;:::-;30802:93;;30919:56;30969:5;30919:56;:::i;:::-;30998:7;31029:1;31014:284;31039:6;31036:1;31033:13;31014:284;;;31115:6;31109:13;31142:63;31201:3;31186:13;31142:63;:::i;:::-;31135:70;;31228:60;31281:6;31228:60;:::i;:::-;31218:70;;31074:224;31061:1;31058;31054:9;31049:14;;31014:284;;;31018:14;31314:3;31307:10;;30715:608;;;30591:732;;;;:::o;31329:831::-;31592:4;31630:3;31619:9;31615:19;31607:27;;31644:71;31712:1;31701:9;31697:17;31688:6;31644:71;:::i;:::-;31725:80;31801:2;31790:9;31786:18;31777:6;31725:80;:::i;:::-;31852:9;31846:4;31842:20;31837:2;31826:9;31822:18;31815:48;31880:108;31983:4;31974:6;31880:108;:::i;:::-;31872:116;;31998:72;32066:2;32055:9;32051:18;32042:6;31998:72;:::i;:::-;32080:73;32148:3;32137:9;32133:19;32124:6;32080:73;:::i;:::-;31329:831;;;;;;;;:::o;32166:182::-;32306:34;32302:1;32294:6;32290:14;32283:58;32166:182;:::o;32354:366::-;32496:3;32517:67;32581:2;32576:3;32517:67;:::i;:::-;32510:74;;32593:93;32682:3;32593:93;:::i;:::-;32711:2;32706:3;32702:12;32695:19;;32354:366;;;:::o;32726:419::-;32892:4;32930:2;32919:9;32915:18;32907:26;;32979:9;32973:4;32969:20;32965:1;32954:9;32950:17;32943:47;33007:131;33133:4;33007:131;:::i;:::-;32999:139;;32726:419;;;:::o;33151:220::-;33291:34;33287:1;33279:6;33275:14;33268:58;33360:3;33355:2;33347:6;33343:15;33336:28;33151:220;:::o;33377:366::-;33519:3;33540:67;33604:2;33599:3;33540:67;:::i;:::-;33533:74;;33616:93;33705:3;33616:93;:::i;:::-;33734:2;33729:3;33725:12;33718:19;;33377:366;;;:::o;33749:419::-;33915:4;33953:2;33942:9;33938:18;33930:26;;34002:9;33996:4;33992:20;33988:1;33977:9;33973:17;33966:47;34030:131;34156:4;34030:131;:::i;:::-;34022:139;;33749:419;;;:::o;34174:221::-;34314:34;34310:1;34302:6;34298:14;34291:58;34383:4;34378:2;34370:6;34366:15;34359:29;34174:221;:::o;34401:366::-;34543:3;34564:67;34628:2;34623:3;34564:67;:::i;:::-;34557:74;;34640:93;34729:3;34640:93;:::i;:::-;34758:2;34753:3;34749:12;34742:19;;34401:366;;;:::o;34773:419::-;34939:4;34977:2;34966:9;34962:18;34954:26;;35026:9;35020:4;35016:20;35012:1;35001:9;34997:17;34990:47;35054:131;35180:4;35054:131;:::i;:::-;35046:139;;34773:419;;;:::o;35198:225::-;35338:34;35334:1;35326:6;35322:14;35315:58;35407:8;35402:2;35394:6;35390:15;35383:33;35198:225;:::o;35429:366::-;35571:3;35592:67;35656:2;35651:3;35592:67;:::i;:::-;35585:74;;35668:93;35757:3;35668:93;:::i;:::-;35786:2;35781:3;35777:12;35770:19;;35429:366;;;:::o;35801:419::-;35967:4;36005:2;35994:9;35990:18;35982:26;;36054:9;36048:4;36044:20;36040:1;36029:9;36025:17;36018:47;36082:131;36208:4;36082:131;:::i;:::-;36074:139;;35801:419;;;:::o

Swarm Source

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