ETH Price: $3,683.84 (+1.42%)
 

Overview

Max Total Supply

100,000,000 XELON

Holders

225

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
434.249392559273946338 XELON

Value
$0.00
0xe43de4f02a66c64fc99b5364ea7f54e79ba7a112
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:
XELON

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

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


interface IERC20 {

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

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction XELON overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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


contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_,uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, XELON imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(),
         spender,
          amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender,
         recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
         "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender,
         _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, XELON slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: XELON mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner, address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

    function WETH() external pure returns (address);

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


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

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

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

}

interface IUniswapV2Factory {

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

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

interface IUniswapV2Pair {

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

    function token0() external view returns (address);

    function token1() external view returns (address);

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

}

contract usdtReceiver {
    address public usdt;
    address public owner;
    constructor(address _u) {
        usdt = _u;
        owner = msg.sender;
        IERC20(usdt).approve(msg.sender,~uint256(0));
    }
}

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

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapPair;

    bool private swapping;

    uint256 public swapTokensAtAmount;

    uint256 public buyTokenRewardsFee;
    uint256 public sellTokenRewardsFee;

    uint256 public buyLiquidityFee;
    uint256 public sellLiquidityFee;

    uint256 public buyMarketingFee;
    uint256 public sellMarketingFee;

    uint256 public buyDeadFee;
    uint256 public sellDeadFee;

    uint256 public AmountLiquidityFee;
    uint256 public AmountTokenRewardsFee;
    uint256 public AmountMarketingFee;

    uint256 public addLiquidityFee;
    uint256 public removeLiquidityFee;

    usdtReceiver public _usdtReceiver;
    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public usdtAddress;
    address public _marketingWalletAddress;
    address public rewardsAddress;
    uint256 public gasForProcessing;
    bool public swapAndLiquifyEnabled = true;

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

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

    event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet);

    event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SendDividends(
        uint256 tokensSwapped,
        uint256 amount
    );

    event ProcessedDividendTracker(
        uint256 iterations,
        uint256 claims,
        uint256 lastProcessedIndex,
        bool indexed automatic,
        uint256 gas,
        address indexed processor
    );

    constructor() payable ERC20("XELON", "XELON",18)  {

        uint256 totalSupply = 100000000 * (10 ** 18);
        // use by default 300,000 gas to process auto-claiming dividends
        gasForProcessing = 300000;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        
        _mint(owner(), totalSupply);
    }
    receive() external payable {}



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

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market XELON maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }


    function updateGasForProcessing(uint256 newValue) public onlyOwner {
        require(newValue != gasForProcessing, "Cannot update gasForProcessing to same value");
        emit GasForProcessingUpdated(newValue, gasForProcessing);
        gasForProcessing = newValue;
    }


    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
    }


    function setSwapTokensAtAmount(uint256 amount) public onlyOwner {
        swapTokensAtAmount = amount;
    }




    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 XELON the zero address");

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            automatedMarketMakerPairs[from] &&
            from != owner() &&
            to != owner() &&
            swapAndLiquifyEnabled
        ) {
            swapping = true;
            swapAndSendMarketing(AmountMarketingFee);
            swapAndLiquify(AmountLiquidityFee);
            swapAndSendDividends(AmountTokenRewardsFee);
            swapping = false;
        }


        bool takeFee = !swapping;

        if(takeFee) {
            uint256 fees;
            uint256 LFee; // Liquidity
            uint256 RFee; // Rewards
            uint256 MFee; // Marketing
            uint256 DFee; // Dead

            if(automatedMarketMakerPairs[from]){
                LFee = amount.mul(buyLiquidityFee).div(100);
                AmountLiquidityFee += LFee;
                RFee = amount.mul(buyTokenRewardsFee).div(100);
                AmountTokenRewardsFee += RFee;
                MFee = amount.mul(buyMarketingFee).div(100);
                AmountMarketingFee += MFee;
                DFee = amount.mul(buyDeadFee).div(100);
                fees = LFee.add(RFee).add(MFee).add(DFee);
            }else if(automatedMarketMakerPairs[to]){
                LFee = amount.mul(sellLiquidityFee).div(100);
                AmountLiquidityFee += LFee;
                RFee = amount.mul(sellTokenRewardsFee).div(100);
                AmountTokenRewardsFee += RFee;
                MFee = amount.mul(sellMarketingFee).div(100);
                AmountMarketingFee += MFee;
                DFee = amount.mul(sellDeadFee).div(100);
                fees = LFee.add(RFee).add(MFee).add(DFee);
            }


            amount = amount.sub(fees);
            if(DFee > 0) super._transfer(from, deadWallet, DFee);
            if(fees > 0) super._transfer(from, address(this), fees.sub(DFee));
        }


        super._transfer(from, to, amount);

    }



    function swapAndSendMarketing(uint256 tokens) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdtAddress;
        if(usdtAddress == uniswapV2Router.WETH()){
            // make the swap
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokens,
                0, // accept any amount of ETH
                path,
                _marketingWalletAddress, // The contract
                block.timestamp
            );
        }else{
            // make the swap
            uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokens,
                0, // accept any amount of USDT
                path,
                _marketingWalletAddress,
                block.timestamp
            );
        }
        AmountMarketingFee = AmountMarketingFee - tokens;
    }

    function swapAndLiquify(uint256 tokens) private {
       // split the contract balance into halves
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        uint256 initialBalance = IERC20(usdtAddress).balanceOf(address(this));

        // swap tokens for ETH
        swapTokensForUsdt(half,address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = IERC20(usdtAddress).balanceOf(address(this)).sub(initialBalance);

        // add liquidity to uniswap
        addLiquidityUSDT(otherHalf, newBalance);
        AmountLiquidityFee = AmountLiquidityFee - tokens;
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function addLiquidityUSDT(uint256 tokenAmount, uint256 USDTAmount) private {
        // approve token transfer to cover all possible scenarios
        IERC20(usdtAddress).approve(address(uniswapV2Router),USDTAmount);
        // add the liquidity
        uniswapV2Router.addLiquidity(
            address(this),
            usdtAddress,
            tokenAmount,
            USDTAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _marketingWalletAddress,
            block.timestamp
        );
    }

    function swapTokensForUsdt(uint256 tokenAmount,address addr) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdtAddress;
        // make the swap
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of USDT
            path,
            address(_usdtReceiver),
            block.timestamp
        );
        uint256 amount = IERC20(usdtAddress).balanceOf(address(_usdtReceiver));
        IERC20(usdtAddress).transferFrom(address(_usdtReceiver),addr, amount);
    }

    function swapTokensForRewards(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth -> rewards
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = usdtAddress;
        path[2] = rewardsAddress;
        // make the swap
        try
            uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of USDT
                path,
                address(this),
                block.timestamp
            )
        {}catch{}

    }

    function swapAndSendDividends(uint256 tokens) private {
        // Judging whether to distribute dividends in the local currency
        if(usdtAddress == rewardsAddress){
            swapTokensForUsdt(tokens,address(this));
        }else{
            swapTokensForRewards(tokens);
        }
        AmountTokenRewardsFee = AmountTokenRewardsFee - tokens;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","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":false,"internalType":"uint256","name":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"ProcessedDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdtReceiver","outputs":[{"internalType":"contract usdtReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"removeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTokenRewardsFee","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":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateGasForProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c5f6101000a81548160ff0219169083151502179055506040518060400160405280600581526020017f58454c4f4e0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f58454c4f4e00000000000000000000000000000000000000000000000000000081525060128260039081620000df919062000726565b508160049081620000f1919062000726565b508060055f6101000a81548160ff021916908360ff1602179055505050506200012f62000123620001c960201b60201c565b620001d060201b60201c565b5f6a52b7d2dcc80cd2e40000009050620493e0601b819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001c1620001b46200029560201b60201c565b83620002be60201b60201c565b5050620009af565b5f33905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200032f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000326906200088e565b60405180910390fd5b620003425f83836200045b60201b60201c565b62000359816002546200046060201b90919060201c565b600281905550620003b0815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200046060201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200044f9190620008bf565b60405180910390a35050565b505050565b5f80828462000470919062000907565b905083811015620004b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004af906200098f565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200053e57607f821691505b602082108103620005545762000553620004f9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200057b565b620005c486836200057b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200060e620006086200060284620005dc565b620005e5565b620005dc565b9050919050565b5f819050919050565b6200062983620005ee565b62000641620006388262000615565b84845462000587565b825550505050565b5f90565b6200065762000649565b620006648184846200061e565b505050565b5b818110156200068b576200067f5f826200064d565b6001810190506200066a565b5050565b601f821115620006da57620006a4816200055a565b620006af846200056c565b81016020851015620006bf578190505b620006d7620006ce856200056c565b83018262000669565b50505b505050565b5f82821c905092915050565b5f620006fc5f1984600802620006df565b1980831691505092915050565b5f620007168383620006eb565b9150826002028217905092915050565b6200073182620004c2565b67ffffffffffffffff8111156200074d576200074c620004cc565b5b62000759825462000526565b620007668282856200068f565b5f60209050601f8311600181146200079c575f841562000787578287015190505b62000793858262000709565b86555062000802565b601f198416620007ac866200055a565b5f5b82811015620007d557848901518255600182019150602085019450602081019050620007ae565b86831015620007f55784890151620007f1601f891682620006eb565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a2058454c4f4e206d696e7420746f20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f620008766025836200080a565b915062000883826200081a565b604082019050919050565b5f6020820190508181035f830152620008a78162000868565b9050919050565b620008b981620005dc565b82525050565b5f602082019050620008d45f830184620008ae565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200091382620005dc565b91506200092083620005dc565b92508282019050808211156200093b576200093a620008da565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000977601b836200080a565b9150620009848262000941565b602082019050919050565b5f6020820190508181035f830152620009a88162000969565b9050919050565b61410c80620009bd5f395ff3fe60806040526004361061025f575f3560e01c80638de743b311610143578063bfc3137e116100b5578063dd62ed3e11610079578063dd62ed3e146108de578063e2f456051461091a578063f11a24d314610944578063f2fde38b1461096e578063f637434214610996578063f8326795146109c057610266565b8063bfc3137e1461080e578063c0973eed14610838578063c49b9a8014610862578063c816841b1461088a578063cfe0e619146108b457610266565b80639c1b8af5116101075780639c1b8af5146106de578063a457c2d714610708578063a9059cbb14610744578063afa4f3b214610780578063b340a954146107a8578063b62496f5146107d257610266565b80638de743b31461060e578063921369131461063857806395d89b41146106625780639a7a23d61461068c5780639ab4a445146106b457610266565b806339509351116101dc57806370a08231116101a057806370a0823114610516578063715018a6146105525780637bce5a041461056857806385141a7714610592578063871c128d146105bc5780638da5cb5b146105e457610266565b806339509351146104325780633b1cd1871461046e5780634144d9e4146104985780634a74bb02146104c2578063557ed1ba146104ec57610266565b806318160ddd1161022357806318160ddd1461034e57806323b872dd1461037857806324942a04146103b4578063313ce567146103de5780633926876d1461040857610266565b806302df64d61461026a57806306fdde031461029457806308b2a12c146102be578063095ea7b3146102e85780631694505e1461032457610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ea565b60405161028b9190613037565b60405180910390f35b34801561029f575f80fd5b506102a86109f0565b6040516102b591906130da565b60405180910390f35b3480156102c9575f80fd5b506102d2610a80565b6040516102df9190613037565b60405180910390f35b3480156102f3575f80fd5b5061030e60048036038101906103099190613182565b610a86565b60405161031b91906131da565b60405180910390f35b34801561032f575f80fd5b50610338610aa3565b604051610345919061324e565b60405180910390f35b348015610359575f80fd5b50610362610ac8565b60405161036f9190613037565b60405180910390f35b348015610383575f80fd5b5061039e60048036038101906103999190613267565b610ad1565b6040516103ab91906131da565b60405180910390f35b3480156103bf575f80fd5b506103c8610ba5565b6040516103d59190613037565b60405180910390f35b3480156103e9575f80fd5b506103f2610bab565b6040516103ff91906132d2565b60405180910390f35b348015610413575f80fd5b5061041c610bc0565b6040516104299190613037565b60405180910390f35b34801561043d575f80fd5b5061045860048036038101906104539190613182565b610bc6565b60405161046591906131da565b60405180910390f35b348015610479575f80fd5b50610482610c74565b60405161048f9190613037565b60405180910390f35b3480156104a3575f80fd5b506104ac610c7a565b6040516104b991906132fa565b60405180910390f35b3480156104cd575f80fd5b506104d6610c9f565b6040516104e391906131da565b60405180910390f35b3480156104f7575f80fd5b50610500610cb1565b60405161050d9190613037565b60405180910390f35b348015610521575f80fd5b5061053c60048036038101906105379190613313565b610cb8565b6040516105499190613037565b60405180910390f35b34801561055d575f80fd5b50610566610cfd565b005b348015610573575f80fd5b5061057c610d84565b6040516105899190613037565b60405180910390f35b34801561059d575f80fd5b506105a6610d8a565b6040516105b391906132fa565b60405180910390f35b3480156105c7575f80fd5b506105e260048036038101906105dd919061333e565b610daf565b005b3480156105ef575f80fd5b506105f8610ea9565b60405161060591906132fa565b60405180910390f35b348015610619575f80fd5b50610622610ed2565b60405161062f9190613037565b60405180910390f35b348015610643575f80fd5b5061064c610ed8565b6040516106599190613037565b60405180910390f35b34801561066d575f80fd5b50610676610ede565b60405161068391906130da565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190613393565b610f6e565b005b3480156106bf575f80fd5b506106c8611087565b6040516106d591906132fa565b60405180910390f35b3480156106e9575f80fd5b506106f26110ac565b6040516106ff9190613037565b60405180910390f35b348015610713575f80fd5b5061072e60048036038101906107299190613182565b6110b2565b60405161073b91906131da565b60405180910390f35b34801561074f575f80fd5b5061076a60048036038101906107659190613182565b61117a565b60405161077791906131da565b60405180910390f35b34801561078b575f80fd5b506107a660048036038101906107a1919061333e565b611197565b005b3480156107b3575f80fd5b506107bc61121d565b6040516107c991906133f1565b60405180910390f35b3480156107dd575f80fd5b506107f860048036038101906107f39190613313565b611242565b60405161080591906131da565b60405180910390f35b348015610819575f80fd5b5061082261125f565b60405161082f9190613037565b60405180910390f35b348015610843575f80fd5b5061084c611265565b60405161085991906132fa565b60405180910390f35b34801561086d575f80fd5b506108886004803603810190610883919061340a565b61128a565b005b348015610895575f80fd5b5061089e611322565b6040516108ab91906132fa565b60405180910390f35b3480156108bf575f80fd5b506108c8611347565b6040516108d59190613037565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190613435565b61134d565b6040516109119190613037565b60405180910390f35b348015610925575f80fd5b5061092e6113cf565b60405161093b9190613037565b60405180910390f35b34801561094f575f80fd5b506109586113d5565b6040516109659190613037565b60405180910390f35b348015610979575f80fd5b50610994600480360381019061098f9190613313565b6113db565b005b3480156109a1575f80fd5b506109aa6114d1565b6040516109b79190613037565b60405180910390f35b3480156109cb575f80fd5b506109d46114d7565b6040516109e19190613037565b60405180910390f35b60095481565b6060600380546109ff906134a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b906134a0565b8015610a765780601f10610a4d57610100808354040283529160200191610a76565b820191905f5260205f20905b815481529060010190602001808311610a5957829003601f168201915b5050505050905090565b600a5481565b5f610a99610a926114dd565b84846114e4565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f610add8484846116a7565b610b9a84610ae96114dd565b610b958560405180606001604052806028815260200161408a6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b4c6114dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cac9092919063ffffffff16565b6114e4565b600190509392505050565b60105481565b5f60055f9054906101000a900460ff16905090565b60125481565b5f610c6a610bd26114dd565b84610c658560015f610be26114dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d0e90919063ffffffff16565b6114e4565b6001905092915050565b60145481565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5f9054906101000a900460ff1681565b5f42905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d056114dd565b73ffffffffffffffffffffffffffffffffffffffff16610d23610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d709061351a565b60405180910390fd5b610d825f611d6b565b565b600d5481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610db76114dd565b73ffffffffffffffffffffffffffffffffffffffff16610dd5610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e229061351a565b60405180910390fd5b601b548103610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906135a8565b60405180910390fd5b601b54817f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db760405160405180910390a380601b8190555050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b600e5481565b606060048054610eed906134a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610f19906134a0565b8015610f645780601f10610f3b57610100808354040283529160200191610f64565b820191905f5260205f20905b815481529060010190602001808311610f4757829003601f168201915b5050505050905090565b610f766114dd565b73ffffffffffffffffffffffffffffffffffffffff16610f94610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19061351a565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110709061365c565b60405180910390fd5b6110838282611e30565b5050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b5f6111706110be6114dd565b8461116b856040518060600160405280602581526020016140b26025913960015f6110e76114dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cac9092919063ffffffff16565b6114e4565b6001905092915050565b5f61118d6111866114dd565b84846116a7565b6001905092915050565b61119f6114dd565b73ffffffffffffffffffffffffffffffffffffffff166111bd610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a9061351a565b60405180910390fd5b8060088190555050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d602052805f5260405f205f915054906101000a900460ff1681565b60155481565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112926114dd565b73ffffffffffffffffffffffffffffffffffffffff166112b0610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd9061351a565b60405180910390fd5b80601c5f6101000a81548160ff02191690831515021790555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b600b5481565b6113e36114dd565b73ffffffffffffffffffffffffffffffffffffffff16611401610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e9061351a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc906136ea565b60405180910390fd5b6114ce81611d6b565b50565b600c5481565b60115481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154990613778565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790613806565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161169a9190613037565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90613894565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90613922565b60405180910390fd5b5f810361179a5761179583835f611f5d565b611ca7565b5f6117a430610cb8565b90505f60085482101590508080156117c95750600760149054906101000a900460ff16155b801561181b5750601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561185a575061182a610ea9565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118995750611869610ea9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118b05750601c5f9054906101000a900460ff165b1561190c576001600760146101000a81548160ff0219169083151502179055506118db6013546121e6565b6118e6601154612550565b6118f1601254612731565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff161590508015611c98575f805f805f601d5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611aa8576119a26064611994600b548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b93508360115f8282546119b5919061396d565b925050819055506119e460646119d66009548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b92508260125f8282546119f7919061396d565b92505081905550611a266064611a18600d548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b91508160135f828254611a39919061396d565b92505081905550611a686064611a5a600f548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b9050611aa181611a9384611a858789611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b9450611c22565b601d5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611c2157611b1f6064611b11600c548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b93508360115f828254611b32919061396d565b92505081905550611b616064611b53600a548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b92508260125f828254611b74919061396d565b92505081905550611ba36064611b95600e548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b91508160135f828254611bb6919061396d565b92505081905550611be56064611bd76010548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b9050611c1e81611c1084611c028789611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b94505b5b611c35858a61289690919063ffffffff16565b98505f811115611c6c57611c6b8b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611f5d565b5b5f851115611c9257611c918b30611c8c848961289690919063ffffffff16565b611f5d565b5b50505050505b611ca3868686611f5d565b5050505b505050565b5f838311158290611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea91906130da565b60405180910390fd5b505f8385611d0191906139a0565b9050809150509392505050565b5f808284611d1c919061396d565b905083811015611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5890613a1d565b60405180910390fd5b8091505092915050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb690613aab565b60405180910390fd5b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290613894565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613b39565b60405180910390fd5b6120448383836128c2565b6120ad81604051806060016040528060268152602001614040602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cac9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061213c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d0e90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121d99190613037565b60405180910390a3505050565b5f600267ffffffffffffffff81111561220257612201613b57565b5b6040519080825280602002602001820160405280156122305781602001602082028036833780820191505090505b50905030815f8151811061224757612246613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106122b7576122b6613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237f9190613bc5565b73ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036124875760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612455959493929190613ce0565b5f604051808303815f87803b15801561246c575f80fd5b505af115801561247e573d5f803e3d5ffd5b50505050612538565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8460195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161250a959493929190613ce0565b5f604051808303815f87803b158015612521575f80fd5b505af1158015612533573d5f803e3d5ffd5b505050505b8160135461254691906139a0565b6013819055505050565b5f61256560028361284d90919063ffffffff16565b90505f61257b828461289690919063ffffffff16565b90505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125d891906132fa565b602060405180830381865afa1580156125f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126179190613d4c565b905061262383306128c7565b5f6126cf8260185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161268291906132fa565b602060405180830381865afa15801561269d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c19190613d4c565b61289690919063ffffffff16565b90506126db8382612c05565b846011546126e991906139a0565b6011819055507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161272293929190613d77565b60405180910390a15050505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036127b5576127b081306128c7565b6127bf565b6127be81612db4565b5b806012546127cd91906139a0565b60128190555050565b5f8083036127e6575f9050612847565b5f82846127f39190613dac565b90508284826128029190613e1a565b14612842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283990613eba565b60405180910390fd5b809150505b92915050565b5f61288e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fbe565b905092915050565b5f6128ba838360405180606001604052806024815260200161406660249139611cac565b905092915050565b505050565b5f600267ffffffffffffffff8111156128e3576128e2613b57565b5b6040519080825280602002602001820160405280156129115781602001602082028036833780820191505090505b50905030815f8151811061292857612927613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061299857612997613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795845f8460165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612a55959493929190613ce0565b5f604051808303815f87803b158015612a6c575f80fd5b505af1158015612a7e573d5f803e3d5ffd5b505050505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612afe91906132fa565b602060405180830381865afa158015612b19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b3d9190613d4c565b905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685846040518463ffffffff1660e01b8152600401612bbe93929190613ed8565b6020604051808303815f875af1158015612bda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bfe9190613f21565b5050505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612c82929190613f4c565b6020604051808303815f875af1158015612c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc29190613f21565b5060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e337003060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685855f8060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b8152600401612d6d989796959493929190613f73565b6060604051808303815f875af1158015612d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dad9190613fef565b5050505050565b5f600367ffffffffffffffff811115612dd057612dcf613b57565b5b604051908082528060200260200182016040528015612dfe5781602001602082028036833780820191505090505b50905030815f81518110612e1557612e14613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e8557612e84613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600281518110612ef557612ef4613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8430426040518663ffffffff1660e01b8152600401612f91959493929190613ce0565b5f604051808303815f87803b158015612fa8575f80fd5b505af1925050508015612fb9575060015b505050565b5f8083118290613004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffb91906130da565b60405180910390fd5b505f83856130129190613e1a565b9050809150509392505050565b5f819050919050565b6130318161301f565b82525050565b5f60208201905061304a5f830184613028565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561308757808201518184015260208101905061306c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130ac82613050565b6130b6818561305a565b93506130c681856020860161306a565b6130cf81613092565b840191505092915050565b5f6020820190508181035f8301526130f281846130a2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613127826130fe565b9050919050565b6131378161311d565b8114613141575f80fd5b50565b5f813590506131528161312e565b92915050565b6131618161301f565b811461316b575f80fd5b50565b5f8135905061317c81613158565b92915050565b5f8060408385031215613198576131976130fa565b5b5f6131a585828601613144565b92505060206131b68582860161316e565b9150509250929050565b5f8115159050919050565b6131d4816131c0565b82525050565b5f6020820190506131ed5f8301846131cb565b92915050565b5f819050919050565b5f61321661321161320c846130fe565b6131f3565b6130fe565b9050919050565b5f613227826131fc565b9050919050565b5f6132388261321d565b9050919050565b6132488161322e565b82525050565b5f6020820190506132615f83018461323f565b92915050565b5f805f6060848603121561327e5761327d6130fa565b5b5f61328b86828701613144565b935050602061329c86828701613144565b92505060406132ad8682870161316e565b9150509250925092565b5f60ff82169050919050565b6132cc816132b7565b82525050565b5f6020820190506132e55f8301846132c3565b92915050565b6132f48161311d565b82525050565b5f60208201905061330d5f8301846132eb565b92915050565b5f60208284031215613328576133276130fa565b5b5f61333584828501613144565b91505092915050565b5f60208284031215613353576133526130fa565b5b5f6133608482850161316e565b91505092915050565b613372816131c0565b811461337c575f80fd5b50565b5f8135905061338d81613369565b92915050565b5f80604083850312156133a9576133a86130fa565b5b5f6133b685828601613144565b92505060206133c78582860161337f565b9150509250929050565b5f6133db8261321d565b9050919050565b6133eb816133d1565b82525050565b5f6020820190506134045f8301846133e2565b92915050565b5f6020828403121561341f5761341e6130fa565b5b5f61342c8482850161337f565b91505092915050565b5f806040838503121561344b5761344a6130fa565b5b5f61345885828601613144565b925050602061346985828601613144565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806134b757607f821691505b6020821081036134ca576134c9613473565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61350460208361305a565b915061350f826134d0565b602082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f43616e6e6f742075706461746520676173466f7250726f63657373696e6720745f8201527f6f2073616d652076616c75650000000000000000000000000000000000000000602082015250565b5f613592602c8361305a565b915061359d82613538565b604082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f7420626520725f8201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b5f61364660458361305a565b9150613651826135c6565b606082019050919050565b5f6020820190508181035f8301526136738161363a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6136d460268361305a565b91506136df8261367a565b604082019050919050565b5f6020820190508181035f830152613701816136c8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61376260248361305a565b915061376d82613708565b604082019050919050565b5f6020820190508181035f83015261378f81613756565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137f060228361305a565b91506137fb82613796565b604082019050919050565b5f6020820190508181035f83015261381d816137e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61387e60258361305a565b915061388982613824565b604082019050919050565b5f6020820190508181035f8301526138ab81613872565b9050919050565b7f45524332303a207472616e7366657220746f2058454c4f4e20746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61390c60298361305a565b9150613917826138b2565b604082019050919050565b5f6020820190508181035f83015261393981613900565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139778261301f565b91506139828361301f565b925082820190508082111561399a57613999613940565b5b92915050565b5f6139aa8261301f565b91506139b58361301f565b92508282039050818111156139cd576139cc613940565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a07601b8361305a565b9150613a12826139d3565b602082019050919050565b5f6020820190508181035f830152613a34816139fb565b9050919050565b7f4175746f6d61746564206d61726b65742058454c4f4e206d616b6572207061695f8201527f7220697320616c72656164792073657420746f20746861742076616c75650000602082015250565b5f613a95603e8361305a565b9150613aa082613a3b565b604082019050919050565b5f6020820190508181035f830152613ac281613a89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613b2360238361305a565b9150613b2e82613ac9565b604082019050919050565b5f6020820190508181035f830152613b5081613b17565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613bbf8161312e565b92915050565b5f60208284031215613bda57613bd96130fa565b5b5f613be784828501613bb1565b91505092915050565b5f819050919050565b5f613c13613c0e613c0984613bf0565b6131f3565b61301f565b9050919050565b613c2381613bf9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c5b8161311d565b82525050565b5f613c6c8383613c52565b60208301905092915050565b5f602082019050919050565b5f613c8e82613c29565b613c988185613c33565b9350613ca383613c43565b805f5b83811015613cd3578151613cba8882613c61565b9750613cc583613c78565b925050600181019050613ca6565b5085935050505092915050565b5f60a082019050613cf35f830188613028565b613d006020830187613c1a565b8181036040830152613d128186613c84565b9050613d2160608301856132eb565b613d2e6080830184613028565b9695505050505050565b5f81519050613d4681613158565b92915050565b5f60208284031215613d6157613d606130fa565b5b5f613d6e84828501613d38565b91505092915050565b5f606082019050613d8a5f830186613028565b613d976020830185613028565b613da46040830184613028565b949350505050565b5f613db68261301f565b9150613dc18361301f565b9250828202613dcf8161301f565b91508282048414831517613de657613de5613940565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e248261301f565b9150613e2f8361301f565b925082613e3f57613e3e613ded565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ea460218361305a565b9150613eaf82613e4a565b604082019050919050565b5f6020820190508181035f830152613ed181613e98565b9050919050565b5f606082019050613eeb5f8301866132eb565b613ef860208301856132eb565b613f056040830184613028565b949350505050565b5f81519050613f1b81613369565b92915050565b5f60208284031215613f3657613f356130fa565b5b5f613f4384828501613f0d565b91505092915050565b5f604082019050613f5f5f8301856132eb565b613f6c6020830184613028565b9392505050565b5f61010082019050613f875f83018b6132eb565b613f94602083018a6132eb565b613fa16040830189613028565b613fae6060830188613028565b613fbb6080830187613c1a565b613fc860a0830186613c1a565b613fd560c08301856132eb565b613fe260e0830184613028565b9998505050505050505050565b5f805f60608486031215614006576140056130fa565b5b5f61401386828701613d38565b935050602061402486828701613d38565b925050604061403586828701613d38565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a207375627472616374696f6e2058454c4f4e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d34400756c450dd4077f0e3546f145781ec44530c3fc508ae8ee21493383612564736f6c63430008140033

Deployed Bytecode

0x60806040526004361061025f575f3560e01c80638de743b311610143578063bfc3137e116100b5578063dd62ed3e11610079578063dd62ed3e146108de578063e2f456051461091a578063f11a24d314610944578063f2fde38b1461096e578063f637434214610996578063f8326795146109c057610266565b8063bfc3137e1461080e578063c0973eed14610838578063c49b9a8014610862578063c816841b1461088a578063cfe0e619146108b457610266565b80639c1b8af5116101075780639c1b8af5146106de578063a457c2d714610708578063a9059cbb14610744578063afa4f3b214610780578063b340a954146107a8578063b62496f5146107d257610266565b80638de743b31461060e578063921369131461063857806395d89b41146106625780639a7a23d61461068c5780639ab4a445146106b457610266565b806339509351116101dc57806370a08231116101a057806370a0823114610516578063715018a6146105525780637bce5a041461056857806385141a7714610592578063871c128d146105bc5780638da5cb5b146105e457610266565b806339509351146104325780633b1cd1871461046e5780634144d9e4146104985780634a74bb02146104c2578063557ed1ba146104ec57610266565b806318160ddd1161022357806318160ddd1461034e57806323b872dd1461037857806324942a04146103b4578063313ce567146103de5780633926876d1461040857610266565b806302df64d61461026a57806306fdde031461029457806308b2a12c146102be578063095ea7b3146102e85780631694505e1461032457610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ea565b60405161028b9190613037565b60405180910390f35b34801561029f575f80fd5b506102a86109f0565b6040516102b591906130da565b60405180910390f35b3480156102c9575f80fd5b506102d2610a80565b6040516102df9190613037565b60405180910390f35b3480156102f3575f80fd5b5061030e60048036038101906103099190613182565b610a86565b60405161031b91906131da565b60405180910390f35b34801561032f575f80fd5b50610338610aa3565b604051610345919061324e565b60405180910390f35b348015610359575f80fd5b50610362610ac8565b60405161036f9190613037565b60405180910390f35b348015610383575f80fd5b5061039e60048036038101906103999190613267565b610ad1565b6040516103ab91906131da565b60405180910390f35b3480156103bf575f80fd5b506103c8610ba5565b6040516103d59190613037565b60405180910390f35b3480156103e9575f80fd5b506103f2610bab565b6040516103ff91906132d2565b60405180910390f35b348015610413575f80fd5b5061041c610bc0565b6040516104299190613037565b60405180910390f35b34801561043d575f80fd5b5061045860048036038101906104539190613182565b610bc6565b60405161046591906131da565b60405180910390f35b348015610479575f80fd5b50610482610c74565b60405161048f9190613037565b60405180910390f35b3480156104a3575f80fd5b506104ac610c7a565b6040516104b991906132fa565b60405180910390f35b3480156104cd575f80fd5b506104d6610c9f565b6040516104e391906131da565b60405180910390f35b3480156104f7575f80fd5b50610500610cb1565b60405161050d9190613037565b60405180910390f35b348015610521575f80fd5b5061053c60048036038101906105379190613313565b610cb8565b6040516105499190613037565b60405180910390f35b34801561055d575f80fd5b50610566610cfd565b005b348015610573575f80fd5b5061057c610d84565b6040516105899190613037565b60405180910390f35b34801561059d575f80fd5b506105a6610d8a565b6040516105b391906132fa565b60405180910390f35b3480156105c7575f80fd5b506105e260048036038101906105dd919061333e565b610daf565b005b3480156105ef575f80fd5b506105f8610ea9565b60405161060591906132fa565b60405180910390f35b348015610619575f80fd5b50610622610ed2565b60405161062f9190613037565b60405180910390f35b348015610643575f80fd5b5061064c610ed8565b6040516106599190613037565b60405180910390f35b34801561066d575f80fd5b50610676610ede565b60405161068391906130da565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190613393565b610f6e565b005b3480156106bf575f80fd5b506106c8611087565b6040516106d591906132fa565b60405180910390f35b3480156106e9575f80fd5b506106f26110ac565b6040516106ff9190613037565b60405180910390f35b348015610713575f80fd5b5061072e60048036038101906107299190613182565b6110b2565b60405161073b91906131da565b60405180910390f35b34801561074f575f80fd5b5061076a60048036038101906107659190613182565b61117a565b60405161077791906131da565b60405180910390f35b34801561078b575f80fd5b506107a660048036038101906107a1919061333e565b611197565b005b3480156107b3575f80fd5b506107bc61121d565b6040516107c991906133f1565b60405180910390f35b3480156107dd575f80fd5b506107f860048036038101906107f39190613313565b611242565b60405161080591906131da565b60405180910390f35b348015610819575f80fd5b5061082261125f565b60405161082f9190613037565b60405180910390f35b348015610843575f80fd5b5061084c611265565b60405161085991906132fa565b60405180910390f35b34801561086d575f80fd5b506108886004803603810190610883919061340a565b61128a565b005b348015610895575f80fd5b5061089e611322565b6040516108ab91906132fa565b60405180910390f35b3480156108bf575f80fd5b506108c8611347565b6040516108d59190613037565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190613435565b61134d565b6040516109119190613037565b60405180910390f35b348015610925575f80fd5b5061092e6113cf565b60405161093b9190613037565b60405180910390f35b34801561094f575f80fd5b506109586113d5565b6040516109659190613037565b60405180910390f35b348015610979575f80fd5b50610994600480360381019061098f9190613313565b6113db565b005b3480156109a1575f80fd5b506109aa6114d1565b6040516109b79190613037565b60405180910390f35b3480156109cb575f80fd5b506109d46114d7565b6040516109e19190613037565b60405180910390f35b60095481565b6060600380546109ff906134a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b906134a0565b8015610a765780601f10610a4d57610100808354040283529160200191610a76565b820191905f5260205f20905b815481529060010190602001808311610a5957829003601f168201915b5050505050905090565b600a5481565b5f610a99610a926114dd565b84846114e4565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f610add8484846116a7565b610b9a84610ae96114dd565b610b958560405180606001604052806028815260200161408a6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b4c6114dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cac9092919063ffffffff16565b6114e4565b600190509392505050565b60105481565b5f60055f9054906101000a900460ff16905090565b60125481565b5f610c6a610bd26114dd565b84610c658560015f610be26114dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d0e90919063ffffffff16565b6114e4565b6001905092915050565b60145481565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5f9054906101000a900460ff1681565b5f42905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d056114dd565b73ffffffffffffffffffffffffffffffffffffffff16610d23610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d709061351a565b60405180910390fd5b610d825f611d6b565b565b600d5481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610db76114dd565b73ffffffffffffffffffffffffffffffffffffffff16610dd5610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e229061351a565b60405180910390fd5b601b548103610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906135a8565b60405180910390fd5b601b54817f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db760405160405180910390a380601b8190555050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b600e5481565b606060048054610eed906134a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610f19906134a0565b8015610f645780601f10610f3b57610100808354040283529160200191610f64565b820191905f5260205f20905b815481529060010190602001808311610f4757829003601f168201915b5050505050905090565b610f766114dd565b73ffffffffffffffffffffffffffffffffffffffff16610f94610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19061351a565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110709061365c565b60405180910390fd5b6110838282611e30565b5050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b5f6111706110be6114dd565b8461116b856040518060600160405280602581526020016140b26025913960015f6110e76114dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cac9092919063ffffffff16565b6114e4565b6001905092915050565b5f61118d6111866114dd565b84846116a7565b6001905092915050565b61119f6114dd565b73ffffffffffffffffffffffffffffffffffffffff166111bd610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a9061351a565b60405180910390fd5b8060088190555050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d602052805f5260405f205f915054906101000a900460ff1681565b60155481565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112926114dd565b73ffffffffffffffffffffffffffffffffffffffff166112b0610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd9061351a565b60405180910390fd5b80601c5f6101000a81548160ff02191690831515021790555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b600b5481565b6113e36114dd565b73ffffffffffffffffffffffffffffffffffffffff16611401610ea9565b73ffffffffffffffffffffffffffffffffffffffff1614611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e9061351a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc906136ea565b60405180910390fd5b6114ce81611d6b565b50565b600c5481565b60115481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154990613778565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790613806565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161169a9190613037565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90613894565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90613922565b60405180910390fd5b5f810361179a5761179583835f611f5d565b611ca7565b5f6117a430610cb8565b90505f60085482101590508080156117c95750600760149054906101000a900460ff16155b801561181b5750601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561185a575061182a610ea9565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118995750611869610ea9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118b05750601c5f9054906101000a900460ff165b1561190c576001600760146101000a81548160ff0219169083151502179055506118db6013546121e6565b6118e6601154612550565b6118f1601254612731565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff161590508015611c98575f805f805f601d5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611aa8576119a26064611994600b548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b93508360115f8282546119b5919061396d565b925050819055506119e460646119d66009548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b92508260125f8282546119f7919061396d565b92505081905550611a266064611a18600d548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b91508160135f828254611a39919061396d565b92505081905550611a686064611a5a600f548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b9050611aa181611a9384611a858789611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b9450611c22565b601d5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611c2157611b1f6064611b11600c548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b93508360115f828254611b32919061396d565b92505081905550611b616064611b53600a548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b92508260125f828254611b74919061396d565b92505081905550611ba36064611b95600e548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b91508160135f828254611bb6919061396d565b92505081905550611be56064611bd76010548c6127d690919063ffffffff16565b61284d90919063ffffffff16565b9050611c1e81611c1084611c028789611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b611d0e90919063ffffffff16565b94505b5b611c35858a61289690919063ffffffff16565b98505f811115611c6c57611c6b8b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611f5d565b5b5f851115611c9257611c918b30611c8c848961289690919063ffffffff16565b611f5d565b5b50505050505b611ca3868686611f5d565b5050505b505050565b5f838311158290611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea91906130da565b60405180910390fd5b505f8385611d0191906139a0565b9050809150509392505050565b5f808284611d1c919061396d565b905083811015611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5890613a1d565b60405180910390fd5b8091505092915050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb690613aab565b60405180910390fd5b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290613894565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613b39565b60405180910390fd5b6120448383836128c2565b6120ad81604051806060016040528060268152602001614040602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cac9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061213c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d0e90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121d99190613037565b60405180910390a3505050565b5f600267ffffffffffffffff81111561220257612201613b57565b5b6040519080825280602002602001820160405280156122305781602001602082028036833780820191505090505b50905030815f8151811061224757612246613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106122b7576122b6613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237f9190613bc5565b73ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036124875760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612455959493929190613ce0565b5f604051808303815f87803b15801561246c575f80fd5b505af115801561247e573d5f803e3d5ffd5b50505050612538565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8460195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161250a959493929190613ce0565b5f604051808303815f87803b158015612521575f80fd5b505af1158015612533573d5f803e3d5ffd5b505050505b8160135461254691906139a0565b6013819055505050565b5f61256560028361284d90919063ffffffff16565b90505f61257b828461289690919063ffffffff16565b90505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125d891906132fa565b602060405180830381865afa1580156125f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126179190613d4c565b905061262383306128c7565b5f6126cf8260185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161268291906132fa565b602060405180830381865afa15801561269d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c19190613d4c565b61289690919063ffffffff16565b90506126db8382612c05565b846011546126e991906139a0565b6011819055507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161272293929190613d77565b60405180910390a15050505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036127b5576127b081306128c7565b6127bf565b6127be81612db4565b5b806012546127cd91906139a0565b60128190555050565b5f8083036127e6575f9050612847565b5f82846127f39190613dac565b90508284826128029190613e1a565b14612842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283990613eba565b60405180910390fd5b809150505b92915050565b5f61288e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fbe565b905092915050565b5f6128ba838360405180606001604052806024815260200161406660249139611cac565b905092915050565b505050565b5f600267ffffffffffffffff8111156128e3576128e2613b57565b5b6040519080825280602002602001820160405280156129115781602001602082028036833780820191505090505b50905030815f8151811061292857612927613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061299857612997613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795845f8460165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612a55959493929190613ce0565b5f604051808303815f87803b158015612a6c575f80fd5b505af1158015612a7e573d5f803e3d5ffd5b505050505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612afe91906132fa565b602060405180830381865afa158015612b19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b3d9190613d4c565b905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685846040518463ffffffff1660e01b8152600401612bbe93929190613ed8565b6020604051808303815f875af1158015612bda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bfe9190613f21565b5050505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612c82929190613f4c565b6020604051808303815f875af1158015612c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc29190613f21565b5060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e337003060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685855f8060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b8152600401612d6d989796959493929190613f73565b6060604051808303815f875af1158015612d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dad9190613fef565b5050505050565b5f600367ffffffffffffffff811115612dd057612dcf613b57565b5b604051908082528060200260200182016040528015612dfe5781602001602082028036833780820191505090505b50905030815f81518110612e1557612e14613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e8557612e84613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600281518110612ef557612ef4613b84565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8430426040518663ffffffff1660e01b8152600401612f91959493929190613ce0565b5f604051808303815f87803b158015612fa8575f80fd5b505af1925050508015612fb9575060015b505050565b5f8083118290613004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffb91906130da565b60405180910390fd5b505f83856130129190613e1a565b9050809150509392505050565b5f819050919050565b6130318161301f565b82525050565b5f60208201905061304a5f830184613028565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561308757808201518184015260208101905061306c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130ac82613050565b6130b6818561305a565b93506130c681856020860161306a565b6130cf81613092565b840191505092915050565b5f6020820190508181035f8301526130f281846130a2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613127826130fe565b9050919050565b6131378161311d565b8114613141575f80fd5b50565b5f813590506131528161312e565b92915050565b6131618161301f565b811461316b575f80fd5b50565b5f8135905061317c81613158565b92915050565b5f8060408385031215613198576131976130fa565b5b5f6131a585828601613144565b92505060206131b68582860161316e565b9150509250929050565b5f8115159050919050565b6131d4816131c0565b82525050565b5f6020820190506131ed5f8301846131cb565b92915050565b5f819050919050565b5f61321661321161320c846130fe565b6131f3565b6130fe565b9050919050565b5f613227826131fc565b9050919050565b5f6132388261321d565b9050919050565b6132488161322e565b82525050565b5f6020820190506132615f83018461323f565b92915050565b5f805f6060848603121561327e5761327d6130fa565b5b5f61328b86828701613144565b935050602061329c86828701613144565b92505060406132ad8682870161316e565b9150509250925092565b5f60ff82169050919050565b6132cc816132b7565b82525050565b5f6020820190506132e55f8301846132c3565b92915050565b6132f48161311d565b82525050565b5f60208201905061330d5f8301846132eb565b92915050565b5f60208284031215613328576133276130fa565b5b5f61333584828501613144565b91505092915050565b5f60208284031215613353576133526130fa565b5b5f6133608482850161316e565b91505092915050565b613372816131c0565b811461337c575f80fd5b50565b5f8135905061338d81613369565b92915050565b5f80604083850312156133a9576133a86130fa565b5b5f6133b685828601613144565b92505060206133c78582860161337f565b9150509250929050565b5f6133db8261321d565b9050919050565b6133eb816133d1565b82525050565b5f6020820190506134045f8301846133e2565b92915050565b5f6020828403121561341f5761341e6130fa565b5b5f61342c8482850161337f565b91505092915050565b5f806040838503121561344b5761344a6130fa565b5b5f61345885828601613144565b925050602061346985828601613144565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806134b757607f821691505b6020821081036134ca576134c9613473565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61350460208361305a565b915061350f826134d0565b602082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f43616e6e6f742075706461746520676173466f7250726f63657373696e6720745f8201527f6f2073616d652076616c75650000000000000000000000000000000000000000602082015250565b5f613592602c8361305a565b915061359d82613538565b604082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f7420626520725f8201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b5f61364660458361305a565b9150613651826135c6565b606082019050919050565b5f6020820190508181035f8301526136738161363a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6136d460268361305a565b91506136df8261367a565b604082019050919050565b5f6020820190508181035f830152613701816136c8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61376260248361305a565b915061376d82613708565b604082019050919050565b5f6020820190508181035f83015261378f81613756565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137f060228361305a565b91506137fb82613796565b604082019050919050565b5f6020820190508181035f83015261381d816137e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61387e60258361305a565b915061388982613824565b604082019050919050565b5f6020820190508181035f8301526138ab81613872565b9050919050565b7f45524332303a207472616e7366657220746f2058454c4f4e20746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61390c60298361305a565b9150613917826138b2565b604082019050919050565b5f6020820190508181035f83015261393981613900565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139778261301f565b91506139828361301f565b925082820190508082111561399a57613999613940565b5b92915050565b5f6139aa8261301f565b91506139b58361301f565b92508282039050818111156139cd576139cc613940565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a07601b8361305a565b9150613a12826139d3565b602082019050919050565b5f6020820190508181035f830152613a34816139fb565b9050919050565b7f4175746f6d61746564206d61726b65742058454c4f4e206d616b6572207061695f8201527f7220697320616c72656164792073657420746f20746861742076616c75650000602082015250565b5f613a95603e8361305a565b9150613aa082613a3b565b604082019050919050565b5f6020820190508181035f830152613ac281613a89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613b2360238361305a565b9150613b2e82613ac9565b604082019050919050565b5f6020820190508181035f830152613b5081613b17565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613bbf8161312e565b92915050565b5f60208284031215613bda57613bd96130fa565b5b5f613be784828501613bb1565b91505092915050565b5f819050919050565b5f613c13613c0e613c0984613bf0565b6131f3565b61301f565b9050919050565b613c2381613bf9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c5b8161311d565b82525050565b5f613c6c8383613c52565b60208301905092915050565b5f602082019050919050565b5f613c8e82613c29565b613c988185613c33565b9350613ca383613c43565b805f5b83811015613cd3578151613cba8882613c61565b9750613cc583613c78565b925050600181019050613ca6565b5085935050505092915050565b5f60a082019050613cf35f830188613028565b613d006020830187613c1a565b8181036040830152613d128186613c84565b9050613d2160608301856132eb565b613d2e6080830184613028565b9695505050505050565b5f81519050613d4681613158565b92915050565b5f60208284031215613d6157613d606130fa565b5b5f613d6e84828501613d38565b91505092915050565b5f606082019050613d8a5f830186613028565b613d976020830185613028565b613da46040830184613028565b949350505050565b5f613db68261301f565b9150613dc18361301f565b9250828202613dcf8161301f565b91508282048414831517613de657613de5613940565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e248261301f565b9150613e2f8361301f565b925082613e3f57613e3e613ded565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ea460218361305a565b9150613eaf82613e4a565b604082019050919050565b5f6020820190508181035f830152613ed181613e98565b9050919050565b5f606082019050613eeb5f8301866132eb565b613ef860208301856132eb565b613f056040830184613028565b949350505050565b5f81519050613f1b81613369565b92915050565b5f60208284031215613f3657613f356130fa565b5b5f613f4384828501613f0d565b91505092915050565b5f604082019050613f5f5f8301856132eb565b613f6c6020830184613028565b9392505050565b5f61010082019050613f875f83018b6132eb565b613f94602083018a6132eb565b613fa16040830189613028565b613fae6060830188613028565b613fbb6080830187613c1a565b613fc860a0830186613c1a565b613fd560c08301856132eb565b613fe260e0830184613028565b9998505050505050505050565b5f805f60608486031215614006576140056130fa565b5b5f61401386828701613d38565b935050602061402486828701613d38565b925050604061403586828701613d38565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a207375627472616374696f6e2058454c4f4e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d34400756c450dd4077f0e3546f145781ec44530c3fc508ae8ee21493383612564736f6c63430008140033

Deployed Bytecode Sourcemap

15562:10492:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15793:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5013:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15833:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7199:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15637:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6146:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7871:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16062:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5981:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16137:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8655:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16222:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16451:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16570:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1116:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6317:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;786:103;;;;;;;;;;;;;:::i;:::-;;15953:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16341:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18971:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;553:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16030:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15990:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5232:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18389:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16418:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16532:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9386:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6657:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19384:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16301:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16768:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16259:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16496:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19257:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15685:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16180:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15751:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15876:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;897:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15913:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16097:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15793;;;;:::o;5013:100::-;5067:13;5100:5;5093:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5013:100;:::o;15833:34::-;;;;:::o;7199:190::-;7282:4;7299:60;7308:12;:10;:12::i;:::-;7332:7;7352:6;7299:8;:60::i;:::-;7377:4;7370:11;;7199:190;;;;:::o;15637:41::-;;;;;;;;;;;;;:::o;6146:108::-;6207:7;6234:12;;6227:19;;6146:108;:::o;7871:375::-;8011:4;8028:46;8038:6;8056:9;8067:6;8028:9;:46::i;:::-;8085:131;8094:6;8102:12;:10;:12::i;:::-;8116:99;8154:6;8116:99;;;;;;;;;;;;;;;;;:11;:19;8128:6;8116:19;;;;;;;;;;;;;;;:33;8136:12;:10;:12::i;:::-;8116:33;;;;;;;;;;;;;;;;:37;;:99;;;;;:::i;:::-;8085:8;:131::i;:::-;8234:4;8227:11;;7871:375;;;;;:::o;16062:26::-;;;;:::o;5981:100::-;6039:5;6064:9;;;;;;;;;;;6057:16;;5981:100;:::o;16137:36::-;;;;:::o;8655:228::-;8743:4;8760:93;8769:12;:10;:12::i;:::-;8783:7;8802:50;8841:10;8802:11;:25;8814:12;:10;:12::i;:::-;8802:25;;;;;;;;;;;;;;;:34;8828:7;8802:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8760:8;:93::i;:::-;8871:4;8864:11;;8655:228;;;;:::o;16222:30::-;;;;:::o;16451:38::-;;;;;;;;;;;;;:::o;16570:40::-;;;;;;;;;;;;;:::o;1116:90::-;1156:7;1183:15;1176:22;;1116:90;:::o;6317:127::-;6391:7;6418:9;:18;6428:7;6418:18;;;;;;;;;;;;;;;;6411:25;;6317:127;;;:::o;786:103::-;699:12;:10;:12::i;:::-;688:23;;:7;:5;:7::i;:::-;:23;;;680:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;851:30:::1;878:1;851:18;:30::i;:::-;786:103::o:0;15953:30::-;;;;:::o;16341:70::-;;;;;;;;;;;;;:::o;18971:276::-;699:12;:10;:12::i;:::-;688:23;;:7;:5;:7::i;:::-;:23;;;680:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19069:16:::1;;19057:8;:28:::0;19049:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19184:16;;19174:8;19150:51;;;;;;;;;;19231:8;19212:16;:27;;;;18971:276:::0;:::o;553:87::-;599:7;626:6;;;;;;;;;;;619:13;;553:87;:::o;16030:25::-;;;;:::o;15990:31::-;;;;:::o;5232:104::-;5288:13;5321:7;5314:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:104;:::o;18389:252::-;699:12;:10;:12::i;:::-;688:23;;:7;:5;:7::i;:::-;:23;;;680:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18496:11:::1;;;;;;;;;;;18488:19;;:4;:19;;::::0;18480:101:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18592:41;18621:4;18627:5;18592:28;:41::i;:::-;18389:252:::0;;:::o;16418:26::-;;;;;;;;;;;;;:::o;16532:31::-;;;;:::o;9386:269::-;9479:4;9496:129;9505:12;:10;:12::i;:::-;9519:7;9528:96;9567:15;9528:96;;;;;;;;;;;;;;;;;:11;:25;9540:12;:10;:12::i;:::-;9528:25;;;;;;;;;;;;;;;:34;9554:7;9528:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9496:8;:129::i;:::-;9643:4;9636:11;;9386:269;;;;:::o;6657:175::-;6743:4;6760:42;6770:12;:10;:12::i;:::-;6784:9;6795:6;6760:9;:42::i;:::-;6820:4;6813:11;;6657:175;;;;:::o;19384:110::-;699:12;:10;:12::i;:::-;688:23;;:7;:5;:7::i;:::-;:23;;;680:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19480:6:::1;19459:18;:27;;;;19384:110:::0;:::o;16301:33::-;;;;;;;;;;;;;:::o;16768:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16259:33::-;;;;:::o;16496:29::-;;;;;;;;;;;;;:::o;19257:117::-;699:12;:10;:12::i;:::-;688:23;;:7;:5;:7::i;:::-;:23;;;680:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19358:8:::1;19334:21;;:32;;;;;;;;;;;;;;;;;;19257:117:::0;:::o;15685:27::-;;;;;;;;;;;;;:::o;16180:33::-;;;;:::o;6895:157::-;6990:7;7017:11;:18;7029:5;7017:18;;;;;;;;;;;;;;;:27;7036:7;7017:27;;;;;;;;;;;;;;;;7010:34;;6895:157;;;;:::o;15751:33::-;;;;:::o;15876:30::-;;;;:::o;897:211::-;699:12;:10;:12::i;:::-;688:23;;:7;:5;:7::i;:::-;:23;;;680:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;1006:1:::1;986:22;;:8;:22;;::::0;978:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1072:28;1091:8;1072:18;:28::i;:::-;897:211:::0;:::o;15913:31::-;;;;:::o;16097:33::-;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;12584:392::-;12728:1;12711:19;;:5;:19;;;12703:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12809:1;12790:21;;:7;:21;;;12782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12893:6;12863:11;:18;12875:5;12863:18;;;;;;;;;;;;;;;:27;12882:7;12863:27;;;;;;;;;;;;;;;:36;;;;12941:7;12915:53;;12924:5;12915:53;;;12961:6;12915:53;;;;;;:::i;:::-;;;;;;;;12584:392;;;:::o;19508:2477::-;19656:1;19640:18;;:4;:18;;;19632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19733:1;19719:16;;:2;:16;;;19711:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19808:1;19798:6;:11;19794:93;;19826:28;19842:4;19848:2;19852:1;19826:15;:28::i;:::-;19869:7;;19794:93;19899:28;19930:24;19948:4;19930:9;:24::i;:::-;19899:55;;19967:12;20006:18;;19982:20;:42;;19967:57;;20041:7;:33;;;;;20066:8;;;;;;;;;;;20065:9;20041:33;:81;;;;;20091:25;:31;20117:4;20091:31;;;;;;;;;;;;;;;;;;;;;;;;;20041:81;:113;;;;;20147:7;:5;:7::i;:::-;20139:15;;:4;:15;;;;20041:113;:143;;;;;20177:7;:5;:7::i;:::-;20171:13;;:2;:13;;;;20041:143;:181;;;;;20201:21;;;;;;;;;;;20041:181;20037:432;;;20260:4;20249:8;;:15;;;;;;;;;;;;;;;;;;20279:40;20300:18;;20279:20;:40::i;:::-;20334:34;20349:18;;20334:14;:34::i;:::-;20383:43;20404:21;;20383:20;:43::i;:::-;20452:5;20441:8;;:16;;;;;;;;;;;;;;;;;;20037:432;20483:12;20499:8;;;;;;;;;;;20498:9;20483:24;;20523:7;20520:1408;;;20547:12;20574;20614;20652;20692;20732:25;:31;20758:4;20732:31;;;;;;;;;;;;;;;;;;;;;;;;;20729:997;;;20790:36;20822:3;20790:27;20801:15;;20790:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;20783:43;;20867:4;20845:18;;:26;;;;;;;:::i;:::-;;;;;;;;20897:39;20932:3;20897:30;20908:18;;20897:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;20890:46;;20980:4;20955:21;;:29;;;;;;;:::i;:::-;;;;;;;;21010:36;21042:3;21010:27;21021:15;;21010:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;21003:43;;21087:4;21065:18;;:26;;;;;;;:::i;:::-;;;;;;;;21117:31;21144:3;21117:22;21128:10;;21117:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;21110:38;;21174:34;21203:4;21174:24;21193:4;21174:14;21183:4;21174;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;21167:41;;20729:997;;;21232:25;:29;21258:2;21232:29;;;;;;;;;;;;;;;;;;;;;;;;;21229:497;;;21288:37;21321:3;21288:28;21299:16;;21288:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;21281:44;;21366:4;21344:18;;:26;;;;;;;:::i;:::-;;;;;;;;21396:40;21432:3;21396:31;21407:19;;21396:6;:10;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;21389:47;;21480:4;21455:21;;:29;;;;;;;:::i;:::-;;;;;;;;21510:37;21543:3;21510:28;21521:16;;21510:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;21503:44;;21588:4;21566:18;;:26;;;;;;;:::i;:::-;;;;;;;;21618:32;21646:3;21618:23;21629:11;;21618:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;21611:39;;21676:34;21705:4;21676:24;21695:4;21676:14;21685:4;21676;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;21669:41;;21229:497;20729:997;21753:16;21764:4;21753:6;:10;;:16;;;;:::i;:::-;21744:25;;21794:1;21787:4;:8;21784:52;;;21797:39;21813:4;21819:10;;;;;;;;;;;21831:4;21797:15;:39::i;:::-;21784:52;21861:1;21854:4;:8;21851:65;;;21864:52;21880:4;21894;21901:14;21910:4;21901;:8;;:14;;;;:::i;:::-;21864:15;:52::i;:::-;21851:65;20532:1396;;;;;20520:1408;21942:33;21958:4;21964:2;21968:6;21942:15;:33::i;:::-;19621:2364;;;19508:2477;;;;:::o;2718:192::-;2804:7;2837:1;2832;:6;;2840:12;2824:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2864:9;2880:1;2876;:5;;;;:::i;:::-;2864:17;;2901:1;2894:8;;;2718:192;;;;;:::o;2379:181::-;2437:7;2457:9;2473:1;2469;:5;;;;:::i;:::-;2457:17;;2498:1;2493;:6;;2485:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2551:1;2544:8;;;2379:181;;;;:::o;1214:183::-;1288:16;1307:6;;;;;;;;;;;1288:25;;1325:8;1316:6;;:17;;;;;;;;;;;;;;;;;;1380:8;1349:40;;1370:8;1349:40;;;;;;;;;;;;1277:120;1214:183;:::o;18649:312::-;18775:5;18740:40;;:25;:31;18766:4;18740:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;18732:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;18892:5;18858:25;:31;18884:4;18858:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18947:5;18913:40;;18941:4;18913:40;;;;;;;;;;;;18649:312;;:::o;10151:573::-;10309:1;10291:20;;:6;:20;;;10283:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10393:1;10372:23;;:9;:23;;;10364:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10448:47;10469:6;10477:9;10488:6;10448:20;:47::i;:::-;10528:71;10550:6;10528:71;;;;;;;;;;;;;;;;;:9;:17;10538:6;10528:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;10508:9;:17;10518:6;10508:17;;;;;;;;;;;;;;;:91;;;;10633:32;10658:6;10633:9;:20;10643:9;10633:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10610:9;:20;10620:9;10610:20;;;;;;;;;;;;;;;:55;;;;10698:9;10681:35;;10690:6;10681:35;;;10709:6;10681:35;;;;;;:::i;:::-;;;;;;;;10151:573;;;:::o;21997:993::-;22122:21;22160:1;22146:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22122:40;;22191:4;22173;22178:1;22173:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22217:11;;;;;;;;;;;22207:4;22212:1;22207:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;22257:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22242:37;;:11;;;;;;;;;;;:37;;;22239:685;;22325:15;;;;;;;;;;;:66;;;22410:6;22435:1;22483:4;22506:23;;;;;;;;;;;22564:15;22325:269;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22239:685;;;22655:15;;;;;;;;;;;:69;;;22743:6;22768:1;22817:4;22840:23;;;;;;;;;;;22882:15;22655:257;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22239:685;22976:6;22955:18;;:27;;;;:::i;:::-;22934:18;:48;;;;22051:939;21997:993;:::o;22998:779::-;23107:12;23122:13;23133:1;23122:6;:10;;:13;;;;:::i;:::-;23107:28;;23146:17;23166:16;23177:4;23166:6;:10;;:16;;;;:::i;:::-;23146:36;;23195:22;23227:11;;;;;;;;;;;23220:29;;;23258:4;23220:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23195:69;;23309:37;23327:4;23340;23309:17;:37::i;:::-;23477:18;23498:64;23547:14;23505:11;;;;;;;;;;;23498:29;;;23536:4;23498:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;:64;;;;:::i;:::-;23477:85;;23612:39;23629:9;23640:10;23612:16;:39::i;:::-;23704:6;23683:18;;:27;;;;:::i;:::-;23662:18;:48;;;;23726:43;23741:4;23747:10;23759:9;23726:43;;;;;;;;:::i;:::-;;;;;;;;23046:731;;;;22998:779;:::o;25678:369::-;25835:14;;;;;;;;;;;25820:29;;:11;;;;;;;;;;;:29;;;25817:158;;25865:39;25883:6;25898:4;25865:17;:39::i;:::-;25817:158;;;25935:28;25956:6;25935:20;:28::i;:::-;25817:158;26033:6;26009:21;;:30;;;;:::i;:::-;25985:21;:54;;;;25678:369;:::o;2918:471::-;2976:7;3226:1;3221;:6;3217:47;;3251:1;3244:8;;;;3217:47;3276:9;3292:1;3288;:5;;;;:::i;:::-;3276:17;;3321:1;3316;3312;:5;;;;:::i;:::-;:10;3304:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3380:1;3373:8;;;2918:471;;;;;:::o;3397:132::-;3455:7;3482:39;3486:1;3489;3482:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3475:46;;3397:132;;;;:::o;2568:142::-;2626:7;2653:49;2657:1;2660;2653:49;;;;;;;;;;;;;;;;;:3;:49::i;:::-;2646:56;;2568:142;;;;:::o;13579:125::-;;;;:::o;24357:689::-;24497:21;24535:1;24521:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24497:40;;24566:4;24548;24553:1;24548:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24592:11;;;;;;;;;;;24582:4;24587:1;24582:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;24640:15;;;;;;;;;;;:69;;;24724:11;24750:1;24795:4;24822:13;;;;;;;;;;;24851:15;24640:237;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24888:14;24912:11;;;;;;;;;;;24905:29;;;24943:13;;;;;;;;;;;24905:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24888:70;;24976:11;;;;;;;;;;;24969:32;;;25010:13;;;;;;;;;;;25025:4;25031:6;24969:69;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24426:620;;24357:689;;:::o;23785:564::-;23945:11;;;;;;;;;;;23938:27;;;23974:15;;;;;;;;;;;23991:10;23938:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24043:15;;;;;;;;;;;:28;;;24094:4;24114:11;;;;;;;;;;;24140;24166:10;24191:1;24234;24277:23;;;;;;;;;;;24315:15;24043:298;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23785:564;;:::o;25054:616::-;25195:21;25233:1;25219:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25195:40;;25264:4;25246;25251:1;25246:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25290:11;;;;;;;;;;;25280:4;25285:1;25280:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;25322:14;;;;;;;;;;;25312:4;25317:1;25312:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;25390:15;;;;;;;;;;;:69;;;25478:11;25508:1;25557:4;25588;25612:15;25390:252;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25373:288;25113:557;25054:616;:::o;3537:278::-;3623:7;3655:1;3651;:5;3658:12;3643:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3682:9;3698:1;3694;:5;;;;:::i;:::-;3682:17;;3806:1;3799:8;;;3537:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:147::-;7654:9;7687:37;7718:5;7687:37;:::i;:::-;7674:50;;7583:147;;;:::o;7736:173::-;7844:58;7896:5;7844:58;:::i;:::-;7839:3;7832:71;7736:173;;:::o;7915:264::-;8029:4;8067:2;8056:9;8052:18;8044:26;;8080:92;8169:1;8158:9;8154:17;8145:6;8080:92;:::i;:::-;7915:264;;;;:::o;8185:323::-;8241:6;8290:2;8278:9;8269:7;8265:23;8261:32;8258:119;;;8296:79;;:::i;:::-;8258:119;8416:1;8441:50;8483:7;8474:6;8463:9;8459:22;8441:50;:::i;:::-;8431:60;;8387:114;8185:323;;;;:::o;8514:474::-;8582:6;8590;8639:2;8627:9;8618:7;8614:23;8610:32;8607:119;;;8645:79;;:::i;:::-;8607:119;8765:1;8790:53;8835:7;8826:6;8815:9;8811:22;8790:53;:::i;:::-;8780:63;;8736:117;8892:2;8918:53;8963:7;8954:6;8943:9;8939:22;8918:53;:::i;:::-;8908:63;;8863:118;8514:474;;;;;:::o;8994:180::-;9042:77;9039:1;9032:88;9139:4;9136:1;9129:15;9163:4;9160:1;9153:15;9180:320;9224:6;9261:1;9255:4;9251:12;9241:22;;9308:1;9302:4;9298:12;9329:18;9319:81;;9385:4;9377:6;9373:17;9363:27;;9319:81;9447:2;9439:6;9436:14;9416:18;9413:38;9410:84;;9466:18;;:::i;:::-;9410:84;9231:269;9180:320;;;:::o;9506:182::-;9646:34;9642:1;9634:6;9630:14;9623:58;9506:182;:::o;9694:366::-;9836:3;9857:67;9921:2;9916:3;9857:67;:::i;:::-;9850:74;;9933:93;10022:3;9933:93;:::i;:::-;10051:2;10046:3;10042:12;10035:19;;9694:366;;;:::o;10066:419::-;10232:4;10270:2;10259:9;10255:18;10247:26;;10319:9;10313:4;10309:20;10305:1;10294:9;10290:17;10283:47;10347:131;10473:4;10347:131;:::i;:::-;10339:139;;10066:419;;;:::o;10491:231::-;10631:34;10627:1;10619:6;10615:14;10608:58;10700:14;10695:2;10687:6;10683:15;10676:39;10491:231;:::o;10728:366::-;10870:3;10891:67;10955:2;10950:3;10891:67;:::i;:::-;10884:74;;10967:93;11056:3;10967:93;:::i;:::-;11085:2;11080:3;11076:12;11069:19;;10728:366;;;:::o;11100:419::-;11266:4;11304:2;11293:9;11289:18;11281:26;;11353:9;11347:4;11343:20;11339:1;11328:9;11324:17;11317:47;11381:131;11507:4;11381:131;:::i;:::-;11373:139;;11100:419;;;:::o;11525:293::-;11665:34;11661:1;11653:6;11649:14;11642:58;11734:34;11729:2;11721:6;11717:15;11710:59;11803:7;11798:2;11790:6;11786:15;11779:32;11525:293;:::o;11824:366::-;11966:3;11987:67;12051:2;12046:3;11987:67;:::i;:::-;11980:74;;12063:93;12152:3;12063:93;:::i;:::-;12181:2;12176:3;12172:12;12165:19;;11824:366;;;:::o;12196:419::-;12362:4;12400:2;12389:9;12385:18;12377:26;;12449:9;12443:4;12439:20;12435:1;12424:9;12420:17;12413:47;12477:131;12603:4;12477:131;:::i;:::-;12469:139;;12196:419;;;:::o;12621:225::-;12761:34;12757:1;12749:6;12745:14;12738:58;12830:8;12825:2;12817:6;12813:15;12806:33;12621:225;:::o;12852:366::-;12994:3;13015:67;13079:2;13074:3;13015:67;:::i;:::-;13008:74;;13091:93;13180:3;13091:93;:::i;:::-;13209:2;13204:3;13200:12;13193:19;;12852:366;;;:::o;13224:419::-;13390:4;13428:2;13417:9;13413:18;13405:26;;13477:9;13471:4;13467:20;13463:1;13452:9;13448:17;13441:47;13505:131;13631:4;13505:131;:::i;:::-;13497:139;;13224:419;;;:::o;13649:223::-;13789:34;13785:1;13777:6;13773:14;13766:58;13858:6;13853:2;13845:6;13841:15;13834:31;13649:223;:::o;13878:366::-;14020:3;14041:67;14105:2;14100:3;14041:67;:::i;:::-;14034:74;;14117:93;14206:3;14117:93;:::i;:::-;14235:2;14230:3;14226:12;14219:19;;13878:366;;;:::o;14250:419::-;14416:4;14454:2;14443:9;14439:18;14431:26;;14503:9;14497:4;14493:20;14489:1;14478:9;14474:17;14467:47;14531:131;14657:4;14531:131;:::i;:::-;14523:139;;14250:419;;;:::o;14675:221::-;14815:34;14811:1;14803:6;14799:14;14792:58;14884:4;14879:2;14871:6;14867:15;14860:29;14675:221;:::o;14902:366::-;15044:3;15065:67;15129:2;15124:3;15065:67;:::i;:::-;15058:74;;15141:93;15230:3;15141:93;:::i;:::-;15259:2;15254:3;15250:12;15243:19;;14902:366;;;:::o;15274:419::-;15440:4;15478:2;15467:9;15463:18;15455:26;;15527:9;15521:4;15517:20;15513:1;15502:9;15498:17;15491:47;15555:131;15681:4;15555:131;:::i;:::-;15547:139;;15274:419;;;:::o;15699:224::-;15839:34;15835:1;15827:6;15823:14;15816:58;15908:7;15903:2;15895:6;15891:15;15884:32;15699:224;:::o;15929:366::-;16071:3;16092:67;16156:2;16151:3;16092:67;:::i;:::-;16085:74;;16168:93;16257:3;16168:93;:::i;:::-;16286:2;16281:3;16277:12;16270:19;;15929:366;;;:::o;16301:419::-;16467:4;16505:2;16494:9;16490:18;16482:26;;16554:9;16548:4;16544:20;16540:1;16529:9;16525:17;16518:47;16582:131;16708:4;16582:131;:::i;:::-;16574:139;;16301:419;;;:::o;16726:228::-;16866:34;16862:1;16854:6;16850:14;16843:58;16935:11;16930:2;16922:6;16918:15;16911:36;16726:228;:::o;16960:366::-;17102:3;17123:67;17187:2;17182:3;17123:67;:::i;:::-;17116:74;;17199:93;17288:3;17199:93;:::i;:::-;17317:2;17312:3;17308:12;17301:19;;16960:366;;;:::o;17332:419::-;17498:4;17536:2;17525:9;17521:18;17513:26;;17585:9;17579:4;17575:20;17571:1;17560:9;17556:17;17549:47;17613:131;17739:4;17613:131;:::i;:::-;17605:139;;17332:419;;;:::o;17757:180::-;17805:77;17802:1;17795:88;17902:4;17899:1;17892:15;17926:4;17923:1;17916:15;17943:191;17983:3;18002:20;18020:1;18002:20;:::i;:::-;17997:25;;18036:20;18054:1;18036:20;:::i;:::-;18031:25;;18079:1;18076;18072:9;18065:16;;18100:3;18097:1;18094:10;18091:36;;;18107:18;;:::i;:::-;18091:36;17943:191;;;;:::o;18140:194::-;18180:4;18200:20;18218:1;18200:20;:::i;:::-;18195:25;;18234:20;18252:1;18234:20;:::i;:::-;18229:25;;18278:1;18275;18271:9;18263:17;;18302:1;18296:4;18293:11;18290:37;;;18307:18;;:::i;:::-;18290:37;18140:194;;;;:::o;18340:177::-;18480:29;18476:1;18468:6;18464:14;18457:53;18340:177;:::o;18523:366::-;18665:3;18686:67;18750:2;18745:3;18686:67;:::i;:::-;18679:74;;18762:93;18851:3;18762:93;:::i;:::-;18880:2;18875:3;18871:12;18864:19;;18523:366;;;:::o;18895:419::-;19061:4;19099:2;19088:9;19084:18;19076:26;;19148:9;19142:4;19138:20;19134:1;19123:9;19119:17;19112:47;19176:131;19302:4;19176:131;:::i;:::-;19168:139;;18895:419;;;:::o;19320:249::-;19460:34;19456:1;19448:6;19444:14;19437:58;19529:32;19524:2;19516:6;19512:15;19505:57;19320:249;:::o;19575:366::-;19717:3;19738:67;19802:2;19797:3;19738:67;:::i;:::-;19731:74;;19814:93;19903:3;19814:93;:::i;:::-;19932:2;19927:3;19923:12;19916:19;;19575:366;;;:::o;19947:419::-;20113:4;20151:2;20140:9;20136:18;20128:26;;20200:9;20194:4;20190:20;20186:1;20175:9;20171:17;20164:47;20228:131;20354:4;20228:131;:::i;:::-;20220:139;;19947:419;;;:::o;20372:222::-;20512:34;20508:1;20500:6;20496:14;20489:58;20581:5;20576:2;20568:6;20564:15;20557:30;20372:222;:::o;20600:366::-;20742:3;20763:67;20827:2;20822:3;20763:67;:::i;:::-;20756:74;;20839:93;20928:3;20839:93;:::i;:::-;20957:2;20952:3;20948:12;20941:19;;20600:366;;;:::o;20972:419::-;21138:4;21176:2;21165:9;21161:18;21153:26;;21225:9;21219:4;21215:20;21211:1;21200:9;21196:17;21189:47;21253:131;21379:4;21253:131;:::i;:::-;21245:139;;20972:419;;;:::o;21397:180::-;21445:77;21442:1;21435:88;21542:4;21539:1;21532:15;21566:4;21563:1;21556:15;21583:180;21631:77;21628:1;21621:88;21728:4;21725:1;21718:15;21752:4;21749:1;21742:15;21769:143;21826:5;21857:6;21851:13;21842:22;;21873:33;21900:5;21873:33;:::i;:::-;21769:143;;;;:::o;21918:351::-;21988:6;22037:2;22025:9;22016:7;22012:23;22008:32;22005:119;;;22043:79;;:::i;:::-;22005:119;22163:1;22188:64;22244:7;22235:6;22224:9;22220:22;22188:64;:::i;:::-;22178:74;;22134:128;21918:351;;;;:::o;22275:85::-;22320:7;22349:5;22338:16;;22275:85;;;:::o;22366:158::-;22424:9;22457:61;22475:42;22484:32;22510:5;22484:32;:::i;:::-;22475:42;:::i;:::-;22457:61;:::i;:::-;22444:74;;22366:158;;;:::o;22530:147::-;22625:45;22664:5;22625:45;:::i;:::-;22620:3;22613:58;22530:147;;:::o;22683:114::-;22750:6;22784:5;22778:12;22768:22;;22683:114;;;:::o;22803:184::-;22902:11;22936:6;22931:3;22924:19;22976:4;22971:3;22967:14;22952:29;;22803:184;;;;:::o;22993:132::-;23060:4;23083:3;23075:11;;23113:4;23108:3;23104:14;23096:22;;22993:132;;;:::o;23131:108::-;23208:24;23226:5;23208:24;:::i;:::-;23203:3;23196:37;23131:108;;:::o;23245:179::-;23314:10;23335:46;23377:3;23369:6;23335:46;:::i;:::-;23413:4;23408:3;23404:14;23390:28;;23245:179;;;;:::o;23430:113::-;23500:4;23532;23527:3;23523:14;23515:22;;23430:113;;;:::o;23579:732::-;23698:3;23727:54;23775:5;23727:54;:::i;:::-;23797:86;23876:6;23871:3;23797:86;:::i;:::-;23790:93;;23907:56;23957:5;23907:56;:::i;:::-;23986:7;24017:1;24002:284;24027:6;24024:1;24021:13;24002:284;;;24103:6;24097:13;24130:63;24189:3;24174:13;24130:63;:::i;:::-;24123:70;;24216:60;24269:6;24216:60;:::i;:::-;24206:70;;24062:224;24049:1;24046;24042:9;24037:14;;24002:284;;;24006:14;24302:3;24295:10;;23703:608;;;23579:732;;;;:::o;24317:831::-;24580:4;24618:3;24607:9;24603:19;24595:27;;24632:71;24700:1;24689:9;24685:17;24676:6;24632:71;:::i;:::-;24713:80;24789:2;24778:9;24774:18;24765:6;24713:80;:::i;:::-;24840:9;24834:4;24830:20;24825:2;24814:9;24810:18;24803:48;24868:108;24971:4;24962:6;24868:108;:::i;:::-;24860:116;;24986:72;25054:2;25043:9;25039:18;25030:6;24986:72;:::i;:::-;25068:73;25136:3;25125:9;25121:19;25112:6;25068:73;:::i;:::-;24317:831;;;;;;;;:::o;25154:143::-;25211:5;25242:6;25236:13;25227:22;;25258:33;25285:5;25258:33;:::i;:::-;25154:143;;;;:::o;25303:351::-;25373:6;25422:2;25410:9;25401:7;25397:23;25393:32;25390:119;;;25428:79;;:::i;:::-;25390:119;25548:1;25573:64;25629:7;25620:6;25609:9;25605:22;25573:64;:::i;:::-;25563:74;;25519:128;25303:351;;;;:::o;25660:442::-;25809:4;25847:2;25836:9;25832:18;25824:26;;25860:71;25928:1;25917:9;25913:17;25904:6;25860:71;:::i;:::-;25941:72;26009:2;25998:9;25994:18;25985:6;25941:72;:::i;:::-;26023;26091:2;26080:9;26076:18;26067:6;26023:72;:::i;:::-;25660:442;;;;;;:::o;26108:410::-;26148:7;26171:20;26189:1;26171:20;:::i;:::-;26166:25;;26205:20;26223:1;26205:20;:::i;:::-;26200:25;;26260:1;26257;26253:9;26282:30;26300:11;26282:30;:::i;:::-;26271:41;;26461:1;26452:7;26448:15;26445:1;26442:22;26422:1;26415:9;26395:83;26372:139;;26491:18;;:::i;:::-;26372:139;26156:362;26108:410;;;;:::o;26524:180::-;26572:77;26569:1;26562:88;26669:4;26666:1;26659:15;26693:4;26690:1;26683:15;26710:185;26750:1;26767:20;26785:1;26767:20;:::i;:::-;26762:25;;26801:20;26819:1;26801:20;:::i;:::-;26796:25;;26840:1;26830:35;;26845:18;;:::i;:::-;26830:35;26887:1;26884;26880:9;26875:14;;26710:185;;;;:::o;26901:220::-;27041:34;27037:1;27029:6;27025:14;27018:58;27110:3;27105:2;27097:6;27093:15;27086:28;26901:220;:::o;27127:366::-;27269:3;27290:67;27354:2;27349:3;27290:67;:::i;:::-;27283:74;;27366:93;27455:3;27366:93;:::i;:::-;27484:2;27479:3;27475:12;27468:19;;27127:366;;;:::o;27499:419::-;27665:4;27703:2;27692:9;27688:18;27680:26;;27752:9;27746:4;27742:20;27738:1;27727:9;27723:17;27716:47;27780:131;27906:4;27780:131;:::i;:::-;27772:139;;27499:419;;;:::o;27924:442::-;28073:4;28111:2;28100:9;28096:18;28088:26;;28124:71;28192:1;28181:9;28177:17;28168:6;28124:71;:::i;:::-;28205:72;28273:2;28262:9;28258:18;28249:6;28205:72;:::i;:::-;28287;28355:2;28344:9;28340:18;28331:6;28287:72;:::i;:::-;27924:442;;;;;;:::o;28372:137::-;28426:5;28457:6;28451:13;28442:22;;28473:30;28497:5;28473:30;:::i;:::-;28372:137;;;;:::o;28515:345::-;28582:6;28631:2;28619:9;28610:7;28606:23;28602:32;28599:119;;;28637:79;;:::i;:::-;28599:119;28757:1;28782:61;28835:7;28826:6;28815:9;28811:22;28782:61;:::i;:::-;28772:71;;28728:125;28515:345;;;;:::o;28866:332::-;28987:4;29025:2;29014:9;29010:18;29002:26;;29038:71;29106:1;29095:9;29091:17;29082:6;29038:71;:::i;:::-;29119:72;29187:2;29176:9;29172:18;29163:6;29119:72;:::i;:::-;28866:332;;;;;:::o;29204:1029::-;29509:4;29547:3;29536:9;29532:19;29524:27;;29561:71;29629:1;29618:9;29614:17;29605:6;29561:71;:::i;:::-;29642:72;29710:2;29699:9;29695:18;29686:6;29642:72;:::i;:::-;29724;29792:2;29781:9;29777:18;29768:6;29724:72;:::i;:::-;29806;29874:2;29863:9;29859:18;29850:6;29806:72;:::i;:::-;29888:81;29964:3;29953:9;29949:19;29940:6;29888:81;:::i;:::-;29979;30055:3;30044:9;30040:19;30031:6;29979:81;:::i;:::-;30070:73;30138:3;30127:9;30123:19;30114:6;30070:73;:::i;:::-;30153;30221:3;30210:9;30206:19;30197:6;30153:73;:::i;:::-;29204:1029;;;;;;;;;;;:::o;30239:663::-;30327:6;30335;30343;30392:2;30380:9;30371:7;30367:23;30363:32;30360:119;;;30398:79;;:::i;:::-;30360:119;30518:1;30543:64;30599:7;30590:6;30579:9;30575:22;30543:64;:::i;:::-;30533:74;;30489:128;30656:2;30682:64;30738:7;30729:6;30718:9;30714:22;30682:64;:::i;:::-;30672:74;;30627:129;30795:2;30821:64;30877:7;30868:6;30857:9;30853:22;30821:64;:::i;:::-;30811:74;;30766:129;30239:663;;;;;:::o

Swarm Source

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