ETH Price: $3,527.17 (+6.97%)

Token

MoonDust (DUST)
 

Overview

Max Total Supply

3,000,000 DUST

Holders

237

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
laycpiratecaptain.eth
Balance
3,000 DUST

Value
$0.00
0xFf289A34eb119D20E59572f5da7a7b8cdB5e7314
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:
MOONDUST

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/* 

Author: @TonyBoyDeFi
MoonDust DeFi Platform native currecny for services and trading on the Ethereum chain.

*/

pragma solidity 0.8.21;

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

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

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV3Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

}


contract ERC20 is Context, IERC20, IERC20Metadata {
    
    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;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

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

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: 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);
    }

    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 your balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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

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 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) {

        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;

        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 Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }


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

// Uniswap Interface

interface IUniswapV3Router01 {
    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);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV3Router02 is IUniswapV3Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

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

    IUniswapV3Router02 public uniswapV3Router;
    address public uniswapV3Pair;
    bool private swapping;
    address public marketingWallet;
    uint256 public percentForMarketing = 100;

    bool public buyBackEnabled = false;

    uint256 public swapTokensAtAmount;
    uint256 private liquidityActiveBlock = 0;
    uint256 private tradingActiveBlock = 0;

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

    uint256 public feeDivisor = 100;
    uint256 public totalSellFees;
    uint256 public marketingSellFee;
    uint256 public totalBuyFees;
    uint256 public marketingBuyFee;
    uint256 private tokensForMarketing;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);

    constructor() ERC20("MoonDust", "DUST"){

        address newOwner = address(0x922D7c212320B00330268E8cf3D076F3baFb8f4E);

        // Supply of the token. Only called once and never minted again | Number in tokens
        uint256 totalSupply = 3000000 * (10**18);

        // Tokens to swap for taxes after threshold met | Number in tokens
        swapTokensAtAmount = 1500 * (10**18);

        // Fees on Sells
        marketingSellFee = 3;
        totalSellFees = marketingSellFee;

        // Fees on Buys
        marketingBuyFee = 3;
        totalBuyFees = marketingBuyFee;

        // Marketing Wallet | Can be updated later
        marketingWallet = address(0xb81383BCb3239eb9Da79C1F931eB833AAf3674F9);

        // Router settings for Binance Smart Chain:
        // Pancakeswap testnet: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
        // Pancakeswap mainnet: 0x10ED43C718714eb63d5aA57B78B54704E256024E

        // Router settings for Ethereum:
        // Uniswap V2 testnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        // Uniswap V2 mainnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

        IUniswapV3Router02 _uniswapV3Router = IUniswapV3Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        address _uniswapV3Pair = IUniswapV3Factory(_uniswapV3Router.factory())
            .createPair(address(this), _uniswapV3Router.WETH());

        uniswapV3Router = _uniswapV3Router;
        uniswapV3Pair = _uniswapV3Pair;

        _setAutomatedMarketMakerPair(_uniswapV3Pair, true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(address(newOwner), totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {

      }

    // Change SwapAndLiquify amount to swap | Number in exact tokens
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
          swapTokensAtAmount = newAmount * (10**18);
          return true;
      }


    // Exclude a wallet from all fees | Only for presale addresses, presale router and the deployer of the contract
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    // Exclude multiple wallets from all fees | Only for presale addresses, presale router and the deployer of the contract
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

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

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

    // Set a new marketing wallet | Can be updated later
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        require(newMarketingWallet != address(0), "cannot set to 0 address");
        excludeFromFees(newMarketingWallet, true);
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

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

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

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

        if(!tradingActive || tradingActiveBlock + 2 >= block.number){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is always active after deployment");
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        bool takeFee = !swapping;


        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;


        if(takeFee){

            // Sell Process
            if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount.mul(totalSellFees).div(feeDivisor);
                tokensForMarketing += fees * marketingSellFee / totalSellFees;
            }
            // Buy Process
            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
                fees = amount.mul(totalBuyFees).div(feeDivisor);
                tokensForMarketing += fees * marketingBuyFee / totalBuyFees;

                }


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

            amount -= fees;
        }

        super._transfer(from, to, amount);

    }

    function swapEthForNativeToken(uint256 ethAmount) private {
        if(ethAmount > 0){
            address[] memory path = new address[](2);
            path[0] = uniswapV3Router.WETH();
            path[1] = address(this);

            uniswapV3Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
                0,
                path,
                address(marketingWallet),
                block.timestamp
            );
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        uniswapV3Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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


        uniswapV3Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );

    }

    // Contracts Auto-Buyback feature if enabled | Can be turned On-Off while needed

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing;

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

        bool success;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

        if(buyBackEnabled){
            (success,) = address(marketingWallet).call{value: ethForMarketing * percentForMarketing / 100}("Automated BuyBack completed");
            swapEthForNativeToken(address(this).balance);
        } else {
            (success,) = address(marketingWallet).call{value: address(this).balance}("Success");
        }
    }

    // Recovery for ETH and ERC20 tokens
    // Function to recover stuck ETH from the contract address. Only Owner
    function recoverContractETH() external onlyOwner {
        (bool success,) = address(msg.sender).call{value: address(this).balance}("Stuck ETH balance from contract address recovered");
        require(success, "Failed. Either caller is not the owner or address is not the contract address");
    }

    // Function to recover stuck ERC20 tokens from the contract. Only Owner
    function recoverERC20Token(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){
    return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    //Auto-BuyBack Settings. Example: 50% = 50% Marketing 50% Buyback
    function marketingBuyBackSettings(bool _buyBackEnabled, uint256 _percentForMarketing) external onlyOwner {
        require(_percentForMarketing <= 100, "Must be set below 100%");
        percentForMarketing = _percentForMarketing;
        buyBackEnabled = _buyBackEnabled;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_buyBackEnabled","type":"bool"},{"internalType":"uint256","name":"_percentForMarketing","type":"uint256"}],"name":"marketingBuyBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"recoverERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV3Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV3Router","outputs":[{"internalType":"contract IUniswapV3Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260646009555f600a5f6101000a81548160ff0219169083151502179055505f600c555f600d556001600e5f6101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055506064600f5534801562000070575f80fd5b506040518060400160405280600881526020017f4d6f6f6e447573740000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f44555354000000000000000000000000000000000000000000000000000000008152508160039081620000ee919062000cf8565b50806004908162000100919062000cf8565b5050505f62000114620004d260201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f73922d7c212320b00330268e8cf3d076f3bafb8f4e90505f6a027b46536c66c8e30000009050685150ae84a8cdf00000600b819055506003601181905550601154601081905550600360138190555060135460128190555073b81383bcb3239eb9da79c1f931eb833aaf3674f960085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000e41565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000373919062000e41565b6040518363ffffffff1660e01b81526004016200039292919062000e82565b6020604051808303815f875af1158015620003af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d5919062000e41565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200046a816001620004d960201b60201c565b6200047d8460016200057760201b60201c565b620004903060016200057760201b60201c565b620004a561dead60016200057760201b60201c565b620004b78484620006c060201b60201c565b620004c8846200085d60201b60201c565b5050505062001165565b5f33905090565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000587620004d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000618576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060f9062000f0b565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620006b4919062000f47565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007289062000fb0565b60405180910390fd5b620007445f838362000a2d60201b60201c565b6200075b8160025462000a3260201b90919060201c565b600281905550620007b2815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000a3260201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000851919062000fe1565b60405180910390a35050565b6200086d620004d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f59062000f0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009669062001070565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b5f80828462000a429190620010bd565b90508381101562000a8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a819062001145565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b1057607f821691505b60208210810362000b265762000b2562000acb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b4d565b62000b96868362000b4d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000be062000bda62000bd48462000bae565b62000bb7565b62000bae565b9050919050565b5f819050919050565b62000bfb8362000bc0565b62000c1362000c0a8262000be7565b84845462000b59565b825550505050565b5f90565b62000c2962000c1b565b62000c3681848462000bf0565b505050565b5b8181101562000c5d5762000c515f8262000c1f565b60018101905062000c3c565b5050565b601f82111562000cac5762000c768162000b2c565b62000c818462000b3e565b8101602085101562000c91578190505b62000ca962000ca08562000b3e565b83018262000c3b565b50505b505050565b5f82821c905092915050565b5f62000cce5f198460080262000cb1565b1980831691505092915050565b5f62000ce8838362000cbd565b9150826002028217905092915050565b62000d038262000a94565b67ffffffffffffffff81111562000d1f5762000d1e62000a9e565b5b62000d2b825462000af8565b62000d3882828562000c61565b5f60209050601f83116001811462000d6e575f841562000d59578287015190505b62000d65858262000cdb565b86555062000dd4565b601f19841662000d7e8662000b2c565b5f5b8281101562000da75784890151825560018201915060208501945060208101905062000d80565b8683101562000dc7578489015162000dc3601f89168262000cbd565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e0b8262000de0565b9050919050565b62000e1d8162000dff565b811462000e28575f80fd5b50565b5f8151905062000e3b8162000e12565b92915050565b5f6020828403121562000e595762000e5862000ddc565b5b5f62000e688482850162000e2b565b91505092915050565b62000e7c8162000dff565b82525050565b5f60408201905062000e975f83018562000e71565b62000ea6602083018462000e71565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000ef360208362000ead565b915062000f008262000ebd565b602082019050919050565b5f6020820190508181035f83015262000f248162000ee5565b9050919050565b5f8115159050919050565b62000f418162000f2b565b82525050565b5f60208201905062000f5c5f83018462000f36565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f98601f8362000ead565b915062000fa58262000f62565b602082019050919050565b5f6020820190508181035f83015262000fc98162000f8a565b9050919050565b62000fdb8162000bae565b82525050565b5f60208201905062000ff65f83018462000fd0565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6200105860268362000ead565b9150620010658262000ffc565b604082019050919050565b5f6020820190508181035f83015262001089816200104a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010c98262000bae565b9150620010d68362000bae565b9250828201905080821115620010f157620010f062001090565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6200112d601b8362000ead565b91506200113a82620010f7565b602082019050919050565b5f6020820190508181035f8301526200115e816200111f565b9050919050565b6141b880620011735f395ff3fe60806040526004361061021d575f3560e01c80638da5cb5b11610122578063b9e93700116100aa578063d257b34f1161006e578063d257b34f146107d8578063dd62ed3e14610814578063e2f4560514610850578063e7f444b31461087a578063f2fde38b146108a457610224565b8063b9e937001461070a578063bbc0c74214610734578063c02466681461075e578063c492f04614610786578063d0a39814146107ae57610224565b80639a7a23d6116100f15780639a7a23d614610606578063a457c2d71461062e578063a9059cbb1461066a578063aacebbe3146106a6578063b62496f5146106ce57610224565b80638da5cb5b1461055e57806395d89b4114610588578063984f02d3146105b25780639a36f932146105dc57610224565b80636053a0e3116101a557806370a082311161017457806370a08231146104a2578063715018a6146104de57806375f0a874146104f45780638519517a1461051e578063885229981461053457610224565b80636053a0e3146103fc5780636598d2d114610426578063680789521461044e5780636ddd17131461047857610224565b80632c76d7a6116101ec5780632c76d7a6146102f4578063313ce5671461031e57806333f5b15f1461034857806339509351146103845780634fbee193146103c057610224565b806306fdde0314610228578063095ea7b31461025257806318160ddd1461028e57806323b872dd146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108cc565b6040516102499190612f59565b60405180910390f35b34801561025d575f80fd5b506102786004803603810190610273919061300e565b61095c565b6040516102859190613066565b60405180910390f35b348015610299575f80fd5b506102a2610979565b6040516102af919061308e565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d991906130a7565b610982565b6040516102eb9190613066565b60405180910390f35b3480156102ff575f80fd5b50610308610a56565b6040516103159190613152565b60405180910390f35b348015610329575f80fd5b50610332610a7b565b60405161033f9190613186565b60405180910390f35b348015610353575f80fd5b5061036e6004803603810190610369919061300e565b610a83565b60405161037b9190613066565b60405180910390f35b34801561038f575f80fd5b506103aa60048036038101906103a5919061300e565b610b9d565b6040516103b79190613066565b60405180910390f35b3480156103cb575f80fd5b506103e660048036038101906103e1919061319f565b610c4b565b6040516103f39190613066565b60405180910390f35b348015610407575f80fd5b50610410610c9d565b60405161041d9190613066565b60405180910390f35b348015610431575f80fd5b5061044c600480360381019061044791906131f4565b610caf565b005b348015610459575f80fd5b50610462610dad565b60405161046f919061308e565b60405180910390f35b348015610483575f80fd5b5061048c610db3565b6040516104999190613066565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c3919061319f565b610dc6565b6040516104d5919061308e565b60405180910390f35b3480156104e9575f80fd5b506104f2610e0b565b005b3480156104ff575f80fd5b50610508610f5e565b6040516105159190613241565b60405180910390f35b348015610529575f80fd5b50610532610f83565b005b34801561053f575f80fd5b506105486110c4565b6040516105559190613241565b60405180910390f35b348015610569575f80fd5b506105726110e9565b60405161057f9190613241565b60405180910390f35b348015610593575f80fd5b5061059c611111565b6040516105a99190612f59565b60405180910390f35b3480156105bd575f80fd5b506105c66111a1565b6040516105d3919061308e565b60405180910390f35b3480156105e7575f80fd5b506105f06111a7565b6040516105fd919061308e565b60405180910390f35b348015610611575f80fd5b5061062c6004803603810190610627919061325a565b6111ad565b005b348015610639575f80fd5b50610654600480360381019061064f919061300e565b6112e0565b6040516106619190613066565b60405180910390f35b348015610675575f80fd5b50610690600480360381019061068b919061300e565b6113a8565b60405161069d9190613066565b60405180910390f35b3480156106b1575f80fd5b506106cc60048036038101906106c7919061319f565b6113c5565b005b3480156106d9575f80fd5b506106f460048036038101906106ef919061319f565b611592565b6040516107019190613066565b60405180910390f35b348015610715575f80fd5b5061071e6115af565b60405161072b919061308e565b60405180910390f35b34801561073f575f80fd5b506107486115b5565b6040516107559190613066565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f919061325a565b6115c7565b005b348015610791575f80fd5b506107ac60048036038101906107a791906132f9565b611703565b005b3480156107b9575f80fd5b506107c2611875565b6040516107cf919061308e565b60405180910390f35b3480156107e3575f80fd5b506107fe60048036038101906107f99190613356565b61187b565b60405161080b9190613066565b60405180910390f35b34801561081f575f80fd5b5061083a60048036038101906108359190613381565b611935565b604051610847919061308e565b60405180910390f35b34801561085b575f80fd5b506108646119b7565b604051610871919061308e565b60405180910390f35b348015610885575f80fd5b5061088e6119bd565b60405161089b919061308e565b60405180910390f35b3480156108af575f80fd5b506108ca60048036038101906108c5919061319f565b6119c3565b005b6060600380546108db906133ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610907906133ec565b80156109525780601f1061092957610100808354040283529160200191610952565b820191905f5260205f20905b81548152906001019060200180831161093557829003601f168201915b5050505050905090565b5f61096f610968611b85565b8484611b8c565b6001905092915050565b5f600254905090565b5f61098e848484611d4f565b610a4b8461099a611b85565b610a46856040518060600160405280602881526020016141366028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109fd611b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233e9092919063ffffffff16565b611b8c565b600190509392505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610a8c611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1190613466565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610b55929190613484565b6020604051808303815f875af1158015610b71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9591906134bf565b905092915050565b5f610c41610ba9611b85565b84610c3c8560015f610bb9611b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a090919063ffffffff16565b611b8c565b6001905092915050565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600a5f9054906101000a900460ff1681565b610cb7611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3c90613466565b60405180910390fd5b6064811115610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090613534565b60405180910390fd5b8060098190555081600a5f6101000a81548160ff0219169083151502179055505050565b60135481565b600e60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e13611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890613466565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f8b611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613466565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161103e906135cc565b5f6040518083038185875af1925050503d805f8114611078576040519150601f19603f3d011682016040523d82523d5f602084013e61107d565b606091505b50509050806110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890613676565b60405180910390fd5b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611120906133ec565b80601f016020809104026020016040519081016040528092919081815260200182805461114c906133ec565b80156111975780601f1061116e57610100808354040283529160200191611197565b820191905f5260205f20905b81548152906001019060200180831161117a57829003601f168201915b5050505050905090565b60095481565b600f5481565b6111b5611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90613466565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c99061372a565b60405180910390fd5b6112dc82826123fd565b5050565b5f61139e6112ec611b85565b846113998560405180606001604052806025815260200161415e6025913960015f611315611b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233e9092919063ffffffff16565b611b8c565b6001905092915050565b5f6113bb6113b4611b85565b8484611d4f565b6001905092915050565b6113cd611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290613466565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613792565b60405180910390fd5b6114d48160016115c7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6016602052805f5260405f205f915054906101000a900460ff1681565b60125481565b600e5f9054906101000a900460ff1681565b6115cf611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613466565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116f79190613066565b60405180910390a25050565b61170b611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090613466565b60405180910390fd5b5f5b83839050811015611834578160155f8686858181106117bd576117bc6137b0565b5b90506020020160208101906117d2919061319f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061182c9061380a565b91505061179b565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516118689392919061390d565b60405180910390a1505050565b60105481565b5f611884611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613466565b60405180910390fd5b670de0b6b3a764000082611926919061393d565b600b8190555060019050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b60115481565b6119cb611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5090613466565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe906139ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf190613a7c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613b0a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d42919061308e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db490613b98565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2290613c26565b60405180910390fd5b5f8103611e4257611e3d83835f61249b565b612339565b600e5f9054906101000a900460ff161580611e6b5750436002600d54611e689190613c44565b10155b15611f4b5760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f0b575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4190613ce7565b60405180910390fd5b5b5f611f5530610dc6565b90505f600b548210159050808015611f795750600e60019054906101000a900460ff165b8015611f925750600760149054906101000a900460ff16155b8015611fe5575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612038575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561208b575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120ce576001600760146101000a81548160ff0219169083151502179055506120b3612724565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061217d575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612186575f90505b5f81156123295760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121e457505f601054115b1561224b57612212600f54612204601054886128f690919063ffffffff16565b61296d90919063ffffffff16565b905060105460115482612225919061393d565b61222f9190613d32565b60145f82825461223f9190613c44565b92505081905550612306565b60165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156122a257505f601254115b15612305576122d0600f546122c2601254886128f690919063ffffffff16565b61296d90919063ffffffff16565b9050601254601354826122e3919061393d565b6122ed9190613d32565b60145f8282546122fd9190613c44565b925050819055505b5b5f81111561231a5761231987308361249b565b5b80856123269190613d62565b94505b61233487878761249b565b505050505b505050565b5f838311158290612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c9190612f59565b60405180910390fd5b505f83856123939190613d62565b9050809150509392505050565b5f8082846123ae9190613c44565b9050838110156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613ddf565b60405180910390fd5b8091505092915050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250090613b98565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613c26565b60405180910390fd5b6125828383836129b6565b6125eb81604051806060016040528060268152602001614110602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233e9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061267a815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a090919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612717919061308e565b60405180910390a3505050565b5f61272e30610dc6565b90505f60145490505f82148061274357505f81145b1561274f5750506128f4565b5f8047905061275d846129bb565b5f6127718247612bf190919063ffffffff16565b90505f61279b8561278d601454856128f690919063ffffffff16565b61296d90919063ffffffff16565b9050600a5f9054906101000a900460ff16156128625760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600954836127f9919061393d565b6128039190613d32565b60405161280f90613e47565b5f6040518083038185875af1925050503d805f8114612849576040519150601f19603f3d011682016040523d82523d5f602084013e61284e565b606091505b50508094505061285d47612c3a565b6128ed565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516128a790613ea5565b5f6040518083038185875af1925050503d805f81146128e1576040519150601f19603f3d011682016040523d82523d5f602084013e6128e6565b606091505b5050809450505b5050505050505b565b5f808303612906575f9050612967565b5f8284612913919061393d565b90508284826129229190613d32565b14612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990613f29565b60405180910390fd5b809150505b92915050565b5f6129ae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e6e565b905092915050565b505050565b5f600267ffffffffffffffff8111156129d7576129d6613f47565b5b604051908082528060200260200182016040528015612a055781602001602082028036833780820191505090505b50905030815f81518110612a1c57612a1b6137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae49190613f88565b81600181518110612af857612af76137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b5e3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b8c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612bc095949392919061406d565b5f604051808303815f87803b158015612bd7575f80fd5b505af1158015612be9573d5f803e3d5ffd5b505050505050565b5f612c3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061233e565b905092915050565b5f811115612e6b575f600267ffffffffffffffff811115612c5e57612c5d613f47565b5b604051908082528060200260200182016040528015612c8c5781602001602082028036833780820191505090505b50905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d1d9190613f88565b815f81518110612d3057612d2f6137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612d7f57612d7e6137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e3b94939291906140c5565b5f604051808303818588803b158015612e52575f80fd5b505af1158015612e64573d5f803e3d5ffd5b5050505050505b50565b5f8083118290612eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eab9190612f59565b60405180910390fd5b505f8385612ec29190613d32565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f06578082015181840152602081019050612eeb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f2b82612ecf565b612f358185612ed9565b9350612f45818560208601612ee9565b612f4e81612f11565b840191505092915050565b5f6020820190508181035f830152612f718184612f21565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612faa82612f81565b9050919050565b612fba81612fa0565b8114612fc4575f80fd5b50565b5f81359050612fd581612fb1565b92915050565b5f819050919050565b612fed81612fdb565b8114612ff7575f80fd5b50565b5f8135905061300881612fe4565b92915050565b5f806040838503121561302457613023612f79565b5b5f61303185828601612fc7565b925050602061304285828601612ffa565b9150509250929050565b5f8115159050919050565b6130608161304c565b82525050565b5f6020820190506130795f830184613057565b92915050565b61308881612fdb565b82525050565b5f6020820190506130a15f83018461307f565b92915050565b5f805f606084860312156130be576130bd612f79565b5b5f6130cb86828701612fc7565b93505060206130dc86828701612fc7565b92505060406130ed86828701612ffa565b9150509250925092565b5f819050919050565b5f61311a61311561311084612f81565b6130f7565b612f81565b9050919050565b5f61312b82613100565b9050919050565b5f61313c82613121565b9050919050565b61314c81613132565b82525050565b5f6020820190506131655f830184613143565b92915050565b5f60ff82169050919050565b6131808161316b565b82525050565b5f6020820190506131995f830184613177565b92915050565b5f602082840312156131b4576131b3612f79565b5b5f6131c184828501612fc7565b91505092915050565b6131d38161304c565b81146131dd575f80fd5b50565b5f813590506131ee816131ca565b92915050565b5f806040838503121561320a57613209612f79565b5b5f613217858286016131e0565b925050602061322885828601612ffa565b9150509250929050565b61323b81612fa0565b82525050565b5f6020820190506132545f830184613232565b92915050565b5f80604083850312156132705761326f612f79565b5b5f61327d85828601612fc7565b925050602061328e858286016131e0565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126132b9576132b8613298565b5b8235905067ffffffffffffffff8111156132d6576132d561329c565b5b6020830191508360208202830111156132f2576132f16132a0565b5b9250929050565b5f805f604084860312156133105761330f612f79565b5b5f84013567ffffffffffffffff81111561332d5761332c612f7d565b5b613339868287016132a4565b9350935050602061334c868287016131e0565b9150509250925092565b5f6020828403121561336b5761336a612f79565b5b5f61337884828501612ffa565b91505092915050565b5f806040838503121561339757613396612f79565b5b5f6133a485828601612fc7565b92505060206133b585828601612fc7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061340357607f821691505b602082108103613416576134156133bf565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613450602083612ed9565b915061345b8261341c565b602082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b5f6040820190506134975f830185613232565b6134a4602083018461307f565b9392505050565b5f815190506134b9816131ca565b92915050565b5f602082840312156134d4576134d3612f79565b5b5f6134e1848285016134ab565b91505092915050565b7f4d757374206265207365742062656c6f772031303025000000000000000000005f82015250565b5f61351e601683612ed9565b9150613529826134ea565b602082019050919050565b5f6020820190508181035f83015261354b81613512565b9050919050565b5f81905092915050565b7f537475636b204554482062616c616e63652066726f6d20636f6e7472616374205f8201527f61646472657373207265636f7665726564000000000000000000000000000000602082015250565b5f6135b6603183613552565b91506135c18261355c565b603182019050919050565b5f6135d6826135aa565b9150819050919050565b7f4661696c65642e204569746865722063616c6c6572206973206e6f74207468655f8201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60208201527f7472616374206164647265737300000000000000000000000000000000000000604082015250565b5f613660604d83612ed9565b915061366b826135e0565b606082019050919050565b5f6020820190508181035f83015261368d81613654565b9050919050565b7f54686520556e695377617020706169722063616e6e6f742062652072656d6f765f8201527f65642066726f6d204175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b5f613714604183612ed9565b915061371f82613694565b606082019050919050565b5f6020820190508181035f83015261374181613708565b9050919050565b7f63616e6e6f742073657420746f203020616464726573730000000000000000005f82015250565b5f61377c601783612ed9565b915061378782613748565b602082019050919050565b5f6020820190508181035f8301526137a981613770565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61381482612fdb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613846576138456137dd565b5b600182019050919050565b5f82825260208201905092915050565b5f819050919050565b61387381612fa0565b82525050565b5f613884838361386a565b60208301905092915050565b5f61389e6020840184612fc7565b905092915050565b5f602082019050919050565b5f6138bd8385613851565b93506138c882613861565b805f5b85811015613900576138dd8284613890565b6138e78882613879565b97506138f2836138a6565b9250506001810190506138cb565b5085925050509392505050565b5f6040820190508181035f8301526139268185876138b2565b90506139356020830184613057565b949350505050565b5f61394782612fdb565b915061395283612fdb565b925082820261396081612fdb565b91508282048414831517613977576139766137dd565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6139d8602683612ed9565b91506139e38261397e565b604082019050919050565b5f6020820190508181035f830152613a05816139cc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a66602483612ed9565b9150613a7182613a0c565b604082019050919050565b5f6020820190508181035f830152613a9381613a5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613af4602283612ed9565b9150613aff82613a9a565b604082019050919050565b5f6020820190508181035f830152613b2181613ae8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b82602583612ed9565b9150613b8d82613b28565b604082019050919050565b5f6020820190508181035f830152613baf81613b76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c10602383612ed9565b9150613c1b82613bb6565b604082019050919050565b5f6020820190508181035f830152613c3d81613c04565b9050919050565b5f613c4e82612fdb565b9150613c5983612fdb565b9250828201905080821115613c7157613c706137dd565b5b92915050565b7f54726164696e6720697320616c776179732061637469766520616674657220645f8201527f65706c6f796d656e740000000000000000000000000000000000000000000000602082015250565b5f613cd1602983612ed9565b9150613cdc82613c77565b604082019050919050565b5f6020820190508181035f830152613cfe81613cc5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3c82612fdb565b9150613d4783612fdb565b925082613d5757613d56613d05565b5b828204905092915050565b5f613d6c82612fdb565b9150613d7783612fdb565b9250828203905081811115613d8f57613d8e6137dd565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613dc9601b83612ed9565b9150613dd482613d95565b602082019050919050565b5f6020820190508181035f830152613df681613dbd565b9050919050565b7f4175746f6d61746564204275794261636b20636f6d706c6574656400000000005f82015250565b5f613e31601b83613552565b9150613e3c82613dfd565b601b82019050919050565b5f613e5182613e25565b9150819050919050565b7f53756363657373000000000000000000000000000000000000000000000000005f82015250565b5f613e8f600783613552565b9150613e9a82613e5b565b600782019050919050565b5f613eaf82613e83565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f13602183612ed9565b9150613f1e82613eb9565b604082019050919050565b5f6020820190508181035f830152613f4081613f07565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613f8281612fb1565b92915050565b5f60208284031215613f9d57613f9c612f79565b5b5f613faa84828501613f74565b91505092915050565b5f819050919050565b5f613fd6613fd1613fcc84613fb3565b6130f7565b612fdb565b9050919050565b613fe681613fbc565b82525050565b5f81519050919050565b5f819050602082019050919050565b5f602082019050919050565b5f61401b82613fec565b6140258185613851565b935061403083613ff6565b805f5b838110156140605781516140478882613879565b975061405283614005565b925050600181019050614033565b5085935050505092915050565b5f60a0820190506140805f83018861307f565b61408d6020830187613fdd565b818103604083015261409f8186614011565b90506140ae6060830185613232565b6140bb608083018461307f565b9695505050505050565b5f6080820190506140d85f830187613fdd565b81810360208301526140ea8186614011565b90506140f96040830185613232565b614106606083018461307f565b9594505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220673ff1a91f83ab1e85cfeea89b324d941009f15521b2883a3a0076c91de0967264736f6c63430008150033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c80638da5cb5b11610122578063b9e93700116100aa578063d257b34f1161006e578063d257b34f146107d8578063dd62ed3e14610814578063e2f4560514610850578063e7f444b31461087a578063f2fde38b146108a457610224565b8063b9e937001461070a578063bbc0c74214610734578063c02466681461075e578063c492f04614610786578063d0a39814146107ae57610224565b80639a7a23d6116100f15780639a7a23d614610606578063a457c2d71461062e578063a9059cbb1461066a578063aacebbe3146106a6578063b62496f5146106ce57610224565b80638da5cb5b1461055e57806395d89b4114610588578063984f02d3146105b25780639a36f932146105dc57610224565b80636053a0e3116101a557806370a082311161017457806370a08231146104a2578063715018a6146104de57806375f0a874146104f45780638519517a1461051e578063885229981461053457610224565b80636053a0e3146103fc5780636598d2d114610426578063680789521461044e5780636ddd17131461047857610224565b80632c76d7a6116101ec5780632c76d7a6146102f4578063313ce5671461031e57806333f5b15f1461034857806339509351146103845780634fbee193146103c057610224565b806306fdde0314610228578063095ea7b31461025257806318160ddd1461028e57806323b872dd146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108cc565b6040516102499190612f59565b60405180910390f35b34801561025d575f80fd5b506102786004803603810190610273919061300e565b61095c565b6040516102859190613066565b60405180910390f35b348015610299575f80fd5b506102a2610979565b6040516102af919061308e565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d991906130a7565b610982565b6040516102eb9190613066565b60405180910390f35b3480156102ff575f80fd5b50610308610a56565b6040516103159190613152565b60405180910390f35b348015610329575f80fd5b50610332610a7b565b60405161033f9190613186565b60405180910390f35b348015610353575f80fd5b5061036e6004803603810190610369919061300e565b610a83565b60405161037b9190613066565b60405180910390f35b34801561038f575f80fd5b506103aa60048036038101906103a5919061300e565b610b9d565b6040516103b79190613066565b60405180910390f35b3480156103cb575f80fd5b506103e660048036038101906103e1919061319f565b610c4b565b6040516103f39190613066565b60405180910390f35b348015610407575f80fd5b50610410610c9d565b60405161041d9190613066565b60405180910390f35b348015610431575f80fd5b5061044c600480360381019061044791906131f4565b610caf565b005b348015610459575f80fd5b50610462610dad565b60405161046f919061308e565b60405180910390f35b348015610483575f80fd5b5061048c610db3565b6040516104999190613066565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c3919061319f565b610dc6565b6040516104d5919061308e565b60405180910390f35b3480156104e9575f80fd5b506104f2610e0b565b005b3480156104ff575f80fd5b50610508610f5e565b6040516105159190613241565b60405180910390f35b348015610529575f80fd5b50610532610f83565b005b34801561053f575f80fd5b506105486110c4565b6040516105559190613241565b60405180910390f35b348015610569575f80fd5b506105726110e9565b60405161057f9190613241565b60405180910390f35b348015610593575f80fd5b5061059c611111565b6040516105a99190612f59565b60405180910390f35b3480156105bd575f80fd5b506105c66111a1565b6040516105d3919061308e565b60405180910390f35b3480156105e7575f80fd5b506105f06111a7565b6040516105fd919061308e565b60405180910390f35b348015610611575f80fd5b5061062c6004803603810190610627919061325a565b6111ad565b005b348015610639575f80fd5b50610654600480360381019061064f919061300e565b6112e0565b6040516106619190613066565b60405180910390f35b348015610675575f80fd5b50610690600480360381019061068b919061300e565b6113a8565b60405161069d9190613066565b60405180910390f35b3480156106b1575f80fd5b506106cc60048036038101906106c7919061319f565b6113c5565b005b3480156106d9575f80fd5b506106f460048036038101906106ef919061319f565b611592565b6040516107019190613066565b60405180910390f35b348015610715575f80fd5b5061071e6115af565b60405161072b919061308e565b60405180910390f35b34801561073f575f80fd5b506107486115b5565b6040516107559190613066565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f919061325a565b6115c7565b005b348015610791575f80fd5b506107ac60048036038101906107a791906132f9565b611703565b005b3480156107b9575f80fd5b506107c2611875565b6040516107cf919061308e565b60405180910390f35b3480156107e3575f80fd5b506107fe60048036038101906107f99190613356565b61187b565b60405161080b9190613066565b60405180910390f35b34801561081f575f80fd5b5061083a60048036038101906108359190613381565b611935565b604051610847919061308e565b60405180910390f35b34801561085b575f80fd5b506108646119b7565b604051610871919061308e565b60405180910390f35b348015610885575f80fd5b5061088e6119bd565b60405161089b919061308e565b60405180910390f35b3480156108af575f80fd5b506108ca60048036038101906108c5919061319f565b6119c3565b005b6060600380546108db906133ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610907906133ec565b80156109525780601f1061092957610100808354040283529160200191610952565b820191905f5260205f20905b81548152906001019060200180831161093557829003601f168201915b5050505050905090565b5f61096f610968611b85565b8484611b8c565b6001905092915050565b5f600254905090565b5f61098e848484611d4f565b610a4b8461099a611b85565b610a46856040518060600160405280602881526020016141366028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109fd611b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233e9092919063ffffffff16565b611b8c565b600190509392505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610a8c611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1190613466565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610b55929190613484565b6020604051808303815f875af1158015610b71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9591906134bf565b905092915050565b5f610c41610ba9611b85565b84610c3c8560015f610bb9611b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a090919063ffffffff16565b611b8c565b6001905092915050565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600a5f9054906101000a900460ff1681565b610cb7611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3c90613466565b60405180910390fd5b6064811115610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090613534565b60405180910390fd5b8060098190555081600a5f6101000a81548160ff0219169083151502179055505050565b60135481565b600e60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e13611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890613466565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f8b611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613466565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161103e906135cc565b5f6040518083038185875af1925050503d805f8114611078576040519150601f19603f3d011682016040523d82523d5f602084013e61107d565b606091505b50509050806110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890613676565b60405180910390fd5b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611120906133ec565b80601f016020809104026020016040519081016040528092919081815260200182805461114c906133ec565b80156111975780601f1061116e57610100808354040283529160200191611197565b820191905f5260205f20905b81548152906001019060200180831161117a57829003601f168201915b5050505050905090565b60095481565b600f5481565b6111b5611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90613466565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c99061372a565b60405180910390fd5b6112dc82826123fd565b5050565b5f61139e6112ec611b85565b846113998560405180606001604052806025815260200161415e6025913960015f611315611b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233e9092919063ffffffff16565b611b8c565b6001905092915050565b5f6113bb6113b4611b85565b8484611d4f565b6001905092915050565b6113cd611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290613466565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613792565b60405180910390fd5b6114d48160016115c7565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6016602052805f5260405f205f915054906101000a900460ff1681565b60125481565b600e5f9054906101000a900460ff1681565b6115cf611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613466565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116f79190613066565b60405180910390a25050565b61170b611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090613466565b60405180910390fd5b5f5b83839050811015611834578160155f8686858181106117bd576117bc6137b0565b5b90506020020160208101906117d2919061319f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061182c9061380a565b91505061179b565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516118689392919061390d565b60405180910390a1505050565b60105481565b5f611884611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613466565b60405180910390fd5b670de0b6b3a764000082611926919061393d565b600b8190555060019050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b60115481565b6119cb611b85565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5090613466565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe906139ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf190613a7c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613b0a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d42919061308e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db490613b98565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2290613c26565b60405180910390fd5b5f8103611e4257611e3d83835f61249b565b612339565b600e5f9054906101000a900460ff161580611e6b5750436002600d54611e689190613c44565b10155b15611f4b5760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f0b575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4190613ce7565b60405180910390fd5b5b5f611f5530610dc6565b90505f600b548210159050808015611f795750600e60019054906101000a900460ff165b8015611f925750600760149054906101000a900460ff16155b8015611fe5575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612038575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561208b575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120ce576001600760146101000a81548160ff0219169083151502179055506120b3612724565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061217d575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612186575f90505b5f81156123295760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121e457505f601054115b1561224b57612212600f54612204601054886128f690919063ffffffff16565b61296d90919063ffffffff16565b905060105460115482612225919061393d565b61222f9190613d32565b60145f82825461223f9190613c44565b92505081905550612306565b60165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156122a257505f601254115b15612305576122d0600f546122c2601254886128f690919063ffffffff16565b61296d90919063ffffffff16565b9050601254601354826122e3919061393d565b6122ed9190613d32565b60145f8282546122fd9190613c44565b925050819055505b5b5f81111561231a5761231987308361249b565b5b80856123269190613d62565b94505b61233487878761249b565b505050505b505050565b5f838311158290612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c9190612f59565b60405180910390fd5b505f83856123939190613d62565b9050809150509392505050565b5f8082846123ae9190613c44565b9050838110156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613ddf565b60405180910390fd5b8091505092915050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250090613b98565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613c26565b60405180910390fd5b6125828383836129b6565b6125eb81604051806060016040528060268152602001614110602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233e9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061267a815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a090919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612717919061308e565b60405180910390a3505050565b5f61272e30610dc6565b90505f60145490505f82148061274357505f81145b1561274f5750506128f4565b5f8047905061275d846129bb565b5f6127718247612bf190919063ffffffff16565b90505f61279b8561278d601454856128f690919063ffffffff16565b61296d90919063ffffffff16565b9050600a5f9054906101000a900460ff16156128625760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600954836127f9919061393d565b6128039190613d32565b60405161280f90613e47565b5f6040518083038185875af1925050503d805f8114612849576040519150601f19603f3d011682016040523d82523d5f602084013e61284e565b606091505b50508094505061285d47612c3a565b6128ed565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516128a790613ea5565b5f6040518083038185875af1925050503d805f81146128e1576040519150601f19603f3d011682016040523d82523d5f602084013e6128e6565b606091505b5050809450505b5050505050505b565b5f808303612906575f9050612967565b5f8284612913919061393d565b90508284826129229190613d32565b14612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990613f29565b60405180910390fd5b809150505b92915050565b5f6129ae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e6e565b905092915050565b505050565b5f600267ffffffffffffffff8111156129d7576129d6613f47565b5b604051908082528060200260200182016040528015612a055781602001602082028036833780820191505090505b50905030815f81518110612a1c57612a1b6137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae49190613f88565b81600181518110612af857612af76137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b5e3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b8c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612bc095949392919061406d565b5f604051808303815f87803b158015612bd7575f80fd5b505af1158015612be9573d5f803e3d5ffd5b505050505050565b5f612c3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061233e565b905092915050565b5f811115612e6b575f600267ffffffffffffffff811115612c5e57612c5d613f47565b5b604051908082528060200260200182016040528015612c8c5781602001602082028036833780820191505090505b50905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d1d9190613f88565b815f81518110612d3057612d2f6137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612d7f57612d7e6137b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e3b94939291906140c5565b5f604051808303818588803b158015612e52575f80fd5b505af1158015612e64573d5f803e3d5ffd5b5050505050505b50565b5f8083118290612eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eab9190612f59565b60405180910390fd5b505f8385612ec29190613d32565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f06578082015181840152602081019050612eeb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f2b82612ecf565b612f358185612ed9565b9350612f45818560208601612ee9565b612f4e81612f11565b840191505092915050565b5f6020820190508181035f830152612f718184612f21565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612faa82612f81565b9050919050565b612fba81612fa0565b8114612fc4575f80fd5b50565b5f81359050612fd581612fb1565b92915050565b5f819050919050565b612fed81612fdb565b8114612ff7575f80fd5b50565b5f8135905061300881612fe4565b92915050565b5f806040838503121561302457613023612f79565b5b5f61303185828601612fc7565b925050602061304285828601612ffa565b9150509250929050565b5f8115159050919050565b6130608161304c565b82525050565b5f6020820190506130795f830184613057565b92915050565b61308881612fdb565b82525050565b5f6020820190506130a15f83018461307f565b92915050565b5f805f606084860312156130be576130bd612f79565b5b5f6130cb86828701612fc7565b93505060206130dc86828701612fc7565b92505060406130ed86828701612ffa565b9150509250925092565b5f819050919050565b5f61311a61311561311084612f81565b6130f7565b612f81565b9050919050565b5f61312b82613100565b9050919050565b5f61313c82613121565b9050919050565b61314c81613132565b82525050565b5f6020820190506131655f830184613143565b92915050565b5f60ff82169050919050565b6131808161316b565b82525050565b5f6020820190506131995f830184613177565b92915050565b5f602082840312156131b4576131b3612f79565b5b5f6131c184828501612fc7565b91505092915050565b6131d38161304c565b81146131dd575f80fd5b50565b5f813590506131ee816131ca565b92915050565b5f806040838503121561320a57613209612f79565b5b5f613217858286016131e0565b925050602061322885828601612ffa565b9150509250929050565b61323b81612fa0565b82525050565b5f6020820190506132545f830184613232565b92915050565b5f80604083850312156132705761326f612f79565b5b5f61327d85828601612fc7565b925050602061328e858286016131e0565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126132b9576132b8613298565b5b8235905067ffffffffffffffff8111156132d6576132d561329c565b5b6020830191508360208202830111156132f2576132f16132a0565b5b9250929050565b5f805f604084860312156133105761330f612f79565b5b5f84013567ffffffffffffffff81111561332d5761332c612f7d565b5b613339868287016132a4565b9350935050602061334c868287016131e0565b9150509250925092565b5f6020828403121561336b5761336a612f79565b5b5f61337884828501612ffa565b91505092915050565b5f806040838503121561339757613396612f79565b5b5f6133a485828601612fc7565b92505060206133b585828601612fc7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061340357607f821691505b602082108103613416576134156133bf565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613450602083612ed9565b915061345b8261341c565b602082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b5f6040820190506134975f830185613232565b6134a4602083018461307f565b9392505050565b5f815190506134b9816131ca565b92915050565b5f602082840312156134d4576134d3612f79565b5b5f6134e1848285016134ab565b91505092915050565b7f4d757374206265207365742062656c6f772031303025000000000000000000005f82015250565b5f61351e601683612ed9565b9150613529826134ea565b602082019050919050565b5f6020820190508181035f83015261354b81613512565b9050919050565b5f81905092915050565b7f537475636b204554482062616c616e63652066726f6d20636f6e7472616374205f8201527f61646472657373207265636f7665726564000000000000000000000000000000602082015250565b5f6135b6603183613552565b91506135c18261355c565b603182019050919050565b5f6135d6826135aa565b9150819050919050565b7f4661696c65642e204569746865722063616c6c6572206973206e6f74207468655f8201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60208201527f7472616374206164647265737300000000000000000000000000000000000000604082015250565b5f613660604d83612ed9565b915061366b826135e0565b606082019050919050565b5f6020820190508181035f83015261368d81613654565b9050919050565b7f54686520556e695377617020706169722063616e6e6f742062652072656d6f765f8201527f65642066726f6d204175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b5f613714604183612ed9565b915061371f82613694565b606082019050919050565b5f6020820190508181035f83015261374181613708565b9050919050565b7f63616e6e6f742073657420746f203020616464726573730000000000000000005f82015250565b5f61377c601783612ed9565b915061378782613748565b602082019050919050565b5f6020820190508181035f8301526137a981613770565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61381482612fdb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613846576138456137dd565b5b600182019050919050565b5f82825260208201905092915050565b5f819050919050565b61387381612fa0565b82525050565b5f613884838361386a565b60208301905092915050565b5f61389e6020840184612fc7565b905092915050565b5f602082019050919050565b5f6138bd8385613851565b93506138c882613861565b805f5b85811015613900576138dd8284613890565b6138e78882613879565b97506138f2836138a6565b9250506001810190506138cb565b5085925050509392505050565b5f6040820190508181035f8301526139268185876138b2565b90506139356020830184613057565b949350505050565b5f61394782612fdb565b915061395283612fdb565b925082820261396081612fdb565b91508282048414831517613977576139766137dd565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6139d8602683612ed9565b91506139e38261397e565b604082019050919050565b5f6020820190508181035f830152613a05816139cc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a66602483612ed9565b9150613a7182613a0c565b604082019050919050565b5f6020820190508181035f830152613a9381613a5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613af4602283612ed9565b9150613aff82613a9a565b604082019050919050565b5f6020820190508181035f830152613b2181613ae8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b82602583612ed9565b9150613b8d82613b28565b604082019050919050565b5f6020820190508181035f830152613baf81613b76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c10602383612ed9565b9150613c1b82613bb6565b604082019050919050565b5f6020820190508181035f830152613c3d81613c04565b9050919050565b5f613c4e82612fdb565b9150613c5983612fdb565b9250828201905080821115613c7157613c706137dd565b5b92915050565b7f54726164696e6720697320616c776179732061637469766520616674657220645f8201527f65706c6f796d656e740000000000000000000000000000000000000000000000602082015250565b5f613cd1602983612ed9565b9150613cdc82613c77565b604082019050919050565b5f6020820190508181035f830152613cfe81613cc5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3c82612fdb565b9150613d4783612fdb565b925082613d5757613d56613d05565b5b828204905092915050565b5f613d6c82612fdb565b9150613d7783612fdb565b9250828203905081811115613d8f57613d8e6137dd565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613dc9601b83612ed9565b9150613dd482613d95565b602082019050919050565b5f6020820190508181035f830152613df681613dbd565b9050919050565b7f4175746f6d61746564204275794261636b20636f6d706c6574656400000000005f82015250565b5f613e31601b83613552565b9150613e3c82613dfd565b601b82019050919050565b5f613e5182613e25565b9150819050919050565b7f53756363657373000000000000000000000000000000000000000000000000005f82015250565b5f613e8f600783613552565b9150613e9a82613e5b565b600782019050919050565b5f613eaf82613e83565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f13602183612ed9565b9150613f1e82613eb9565b604082019050919050565b5f6020820190508181035f830152613f4081613f07565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613f8281612fb1565b92915050565b5f60208284031215613f9d57613f9c612f79565b5b5f613faa84828501613f74565b91505092915050565b5f819050919050565b5f613fd6613fd1613fcc84613fb3565b6130f7565b612fdb565b9050919050565b613fe681613fbc565b82525050565b5f81519050919050565b5f819050602082019050919050565b5f602082019050919050565b5f61401b82613fec565b6140258185613851565b935061403083613ff6565b805f5b838110156140605781516140478882613879565b975061405283614005565b925050600181019050614033565b5085935050505092915050565b5f60a0820190506140805f83018861307f565b61408d6020830187613fdd565b818103604083015261409f8186614011565b90506140ae6060830185613232565b6140bb608083018461307f565b9695505050505050565b5f6080820190506140d85f830187613fdd565b81810360208301526140ea8186614011565b90506140f96040830185613232565b614106606083018461307f565b9594505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220673ff1a91f83ab1e85cfeea89b324d941009f15521b2883a3a0076c91de0967264736f6c63430008150033

Deployed Bytecode Sourcemap

16141:10431:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4948:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5862:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5269:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6039:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16219:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5168:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26032:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6402:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21051:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16416:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26287:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16816:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16632;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5385:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10845:150;;;;;;;;;;;;;:::i;:::-;;16330:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25646:301;;;;;;;;;;;;;:::i;:::-;;16267:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10631:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5056:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16367:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16671:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20194:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6628:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5520:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20704:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16956:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16782:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16593:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19563:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19880:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16709:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19262:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5703:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16459:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16744:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11005:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4948:100;5002:13;5035:5;5028:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4948:100;:::o;5862:169::-;5945:4;5962:39;5971:12;:10;:12::i;:::-;5985:7;5994:6;5962:8;:39::i;:::-;6019:4;6012:11;;5862:169;;;;:::o;5269:108::-;5330:7;5357:12;;5350:19;;5269:108;:::o;6039:355::-;6179:4;6196:36;6206:6;6214:9;6225:6;6196:9;:36::i;:::-;6243:121;6252:6;6260:12;:10;:12::i;:::-;6274:89;6312:6;6274:89;;;;;;;;;;;;;;;;;:11;:19;6286:6;6274:19;;;;;;;;;;;;;;;:33;6294:12;:10;:12::i;:::-;6274:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6243:8;:121::i;:::-;6382:4;6375:11;;6039:355;;;;;:::o;16219:41::-;;;;;;;;;;;;;:::o;5168:93::-;5226:5;5251:2;5244:9;;5168:93;:::o;26032:176::-;26125:12;10768;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26158:12:::1;26152:28;;;26181:10;26193:6;26152:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26145:55;;26032:176:::0;;;;:::o;6402:218::-;6490:4;6507:83;6516:12;:10;:12::i;:::-;6530:7;6539:50;6578:10;6539:11;:25;6551:12;:10;:12::i;:::-;6539:25;;;;;;;;;;;;;;;:34;6565:7;6539:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6507:8;:83::i;:::-;6608:4;6601:11;;6402:218;;;;:::o;21051:125::-;21116:4;21140:19;:28;21160:7;21140:28;;;;;;;;;;;;;;;;;;;;;;;;;21133:35;;21051:125;;;:::o;16416:34::-;;;;;;;;;;;;;:::o;26287:282::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26435:3:::1;26411:20;:27;;26403:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;26498:20;26476:19;:42;;;;26546:15;26529:14;;:32;;;;;;;;;;;;;;;;;;26287:282:::0;;:::o;16816:30::-;;;;:::o;16632:::-;;;;;;;;;;;;;:::o;5385:127::-;5459:7;5486:9;:18;5496:7;5486:18;;;;;;;;;;;;;;;;5479:25;;5385:127;;;:::o;10845:150::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10954:1:::1;10917:40;;10938:6;;;;;;;;;;;10917:40;;;;;;;;;;;;10985:1;10968:6;;:19;;;;;;;;;;;;;;;;;;10845:150::o:0;16330:30::-;;;;;;;;;;;;;:::o;25646:301::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25707:12:::1;25732:10;25724:24;;25756:21;25724:107;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25706:125;;;25850:7;25842:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;25695:252;25646:301::o:0;16267:28::-;;;;;;;;;;;;;:::o;10631:79::-;10669:7;10696:6;;;;;;;;;;;10689:13;;10631:79;:::o;5056:104::-;5112:13;5145:7;5138:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5056:104;:::o;16367:40::-;;;;:::o;16671:31::-;;;;:::o;20194:250::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20301:13:::1;;;;;;;;;;;20293:21;;:4;:21;;::::0;20285:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20395:41;20424:4;20430:5;20395:28;:41::i;:::-;20194:250:::0;;:::o;6628:269::-;6721:4;6738:129;6747:12;:10;:12::i;:::-;6761:7;6770:96;6809:15;6770:96;;;;;;;;;;;;;;;;;:11;:25;6782:12;:10;:12::i;:::-;6770:25;;;;;;;;;;;;;;;:34;6796:7;6770:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6738:8;:129::i;:::-;6885:4;6878:11;;6628:269;;;;:::o;5520:175::-;5606:4;5623:42;5633:12;:10;:12::i;:::-;5647:9;5658:6;5623:9;:42::i;:::-;5683:4;5676:11;;5520:175;;;;:::o;20704:339::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20831:1:::1;20801:32;;:18;:32;;::::0;20793:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20872:41;20888:18;20908:4;20872:15;:41::i;:::-;20972:15;;;;;;;;;;;20929:59;;20952:18;20929:59;;;;;;;;;;;;21017:18;20999:15;;:36;;;;;;;;;;;;;;;;;;20704:339:::0;:::o;16956:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;16782:27::-;;;;:::o;16593:32::-;;;;;;;;;;;;;:::o;19563:184::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19679:8:::1;19648:19;:28;19668:7;19648:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19721:7;19705:34;;;19730:8;19705:34;;;;;;:::i;:::-;;;;;;;;19563:184:::0;;:::o;19880:306::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19999:9:::1;19995:115;20018:8;;:15;;20014:1;:19;19995:115;;;20090:8;20055:19;:32;20075:8;;20084:1;20075:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20055:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;20035:3;;;;;:::i;:::-;;;;19995:115;;;;20127:51;20159:8;;20169;20127:51;;;;;;;;:::i;:::-;;;;;;;;19880:306:::0;;;:::o;16709:28::-;;;;:::o;19262:174::-;19343:4;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19395:6:::1;19382:9;:20;;;;:::i;:::-;19361:18;:41;;;;19422:4;19415:11;;19262:174:::0;;;:::o;5703:151::-;5792:7;5819:11;:18;5831:5;5819:18;;;;;;;;;;;;;;;:27;5838:7;5819:27;;;;;;;;;;;;;;;;5812:34;;5703:151;;;;:::o;16459:33::-;;;;:::o;16744:31::-;;;;:::o;11005:244::-;10768:12;:10;:12::i;:::-;10758:22;;:6;;;;;;;;;;;:22;;;10750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11114:1:::1;11094:22;;:8;:22;;::::0;11086:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11204:8;11175:38;;11196:6;;;;;;;;;;;11175:38;;;;;;;;;;;;11233:8;11224:6;;:17;;;;;;;;;;;;;;;;;;11005:244:::0;:::o;218:98::-;271:7;298:10;291:17;;218:98;:::o;8318:380::-;8471:1;8454:19;;:5;:19;;;8446:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8552:1;8533:21;;:7;:21;;;8525:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8636:6;8606:11;:18;8618:5;8606:18;;;;;;;;;;;;;;;:27;8625:7;8606:27;;;;;;;;;;;;;;;:36;;;;8674:7;8658:32;;8667:5;8658:32;;;8683:6;8658:32;;;;;;:::i;:::-;;;;;;;;8318:380;;;:::o;21184:1990::-;21332:1;21316:18;;:4;:18;;;21308:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21409:1;21395:16;;:2;:16;;;21387:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21478:1;21468:6;:11;21465:92;;21496:28;21512:4;21518:2;21522:1;21496:15;:28::i;:::-;21539:7;;21465:92;21573:13;;;;;;;;;;;21572:14;:56;;;;21616:12;21611:1;21590:18;;:22;;;;:::i;:::-;:38;;21572:56;21569:193;;;21652:19;:25;21672:4;21652:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21681:19;:23;21701:2;21681:23;;;;;;;;;;;;;;;;;;;;;;;;;21652:52;21644:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;21569:193;21774:28;21805:24;21823:4;21805:9;:24::i;:::-;21774:55;;21842:12;21881:18;;21857:20;:42;;21842:57;;21929:7;:35;;;;;21953:11;;;;;;;;;;;21929:35;:61;;;;;21982:8;;;;;;;;;;;21981:9;21929:61;:110;;;;;22008:25;:31;22034:4;22008:31;;;;;;;;;;;;;;;;;;;;;;;;;22007:32;21929:110;:153;;;;;22057:19;:25;22077:4;22057:25;;;;;;;;;;;;;;;;;;;;;;;;;22056:26;21929:153;:194;;;;;22100:19;:23;22120:2;22100:23;;;;;;;;;;;;;;;;;;;;;;;;;22099:24;21929:194;21912:321;;;22161:4;22150:8;;:15;;;;;;;;;;;;;;;;;;22180:10;:8;:10::i;:::-;22216:5;22205:8;;:16;;;;;;;;;;;;;;;;;;21912:321;22245:12;22261:8;;;;;;;;;;;22260:9;22245:24;;22287:19;:25;22307:4;22287:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22316:19;:23;22336:2;22316:23;;;;;;;;;;;;;;;;;;;;;;;;;22287:52;22284:99;;;22366:5;22356:15;;22284:99;22395:12;22429:7;22426:693;;;22487:25;:29;22513:2;22487:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22536:1;22520:13;;:17;22487:50;22483:487;;;22564:41;22594:10;;22564:25;22575:13;;22564:6;:10;;:25;;;;:::i;:::-;:29;;:41;;;;:::i;:::-;22557:48;;22672:13;;22653:16;;22646:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22624:18;;:61;;;;;;;:::i;:::-;;;;;;;;22483:487;;;22751:25;:31;22777:4;22751:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;22801:1;22786:12;;:16;22751:51;22748:222;;;22830:40;22859:10;;22830:24;22841:12;;22830:6;:10;;:24;;;;:::i;:::-;:28;;:40;;;;:::i;:::-;22823:47;;22936:12;;22918:15;;22911:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22889:18;;:59;;;;;;;:::i;:::-;;;;;;;;22748:222;22483:487;22998:1;22991:4;:8;22988:89;;;23019:42;23035:4;23049;23056;23019:15;:42::i;:::-;22988:89;23103:4;23093:14;;;;;:::i;:::-;;;22426:693;23131:33;23147:4;23153:2;23157:6;23131:15;:33::i;:::-;21297:1877;;;;21184:1990;;;;:::o;9199:192::-;9285:7;9318:1;9313;:6;;9321:12;9305:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9345:9;9361:1;9357;:5;;;;:::i;:::-;9345:17;;9382:1;9375:8;;;9199:192;;;;;:::o;8864:181::-;8922:7;8942:9;8958:1;8954;:5;;;;:::i;:::-;8942:17;;8983:1;8978;:6;;8970:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9036:1;9029:8;;;8864:181;;;;:::o;20452:186::-;20569:5;20535:25;:31;20561:4;20535:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20624:5;20590:40;;20618:4;20590:40;;;;;;;;;;;;20452:186;;:::o;6905:573::-;7063:1;7045:20;;:6;:20;;;7037:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7147:1;7126:23;;:9;:23;;;7118:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7202:47;7223:6;7231:9;7242:6;7202:20;:47::i;:::-;7282:71;7304:6;7282:71;;;;;;;;;;;;;;;;;:9;:17;7292:6;7282:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7262:9;:17;7272:6;7262:17;;;;;;;;;;;;;;;:91;;;;7387:32;7412:6;7387:9;:20;7397:9;7387:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7364:9;:20;7374:9;7364:20;;;;;;;;;;;;;;;:55;;;;7452:9;7435:35;;7444:6;7435:35;;;7463:6;7435:35;;;;;;:::i;:::-;;;;;;;;6905:573;;;:::o;24630:890::-;24669:23;24695:24;24713:4;24695:9;:24::i;:::-;24669:50;;24730:25;24758:18;;24730:46;;24811:1;24792:15;:20;:46;;;;24837:1;24816:17;:22;24792:46;24789:60;;;24841:7;;;;24789:60;24861:12;24886:25;24914:21;24886:49;;24948:33;24965:15;24948:16;:33::i;:::-;24994:18;25015:44;25041:17;25015:21;:25;;:44;;;;:::i;:::-;24994:65;;25072:23;25098:57;25137:17;25098:34;25113:18;;25098:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;25072:83;;25171:14;;;;;;;;;;;25168:345;;;25222:15;;;;;;;;;;;25214:29;;25291:3;25269:19;;25251:15;:37;;;;:::i;:::-;:43;;;;:::i;:::-;25214:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25201:125;;;;;25341:44;25363:21;25341;:44::i;:::-;25168:345;;;25439:15;;;;;;;;;;;25431:29;;25468:21;25431:70;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25418:83;;;;;25168:345;24658:862;;;;;;24630:890;:::o;9401:252::-;9459:7;9490:1;9485;:6;9481:47;;9515:1;9508:8;;;;9481:47;9540:9;9556:1;9552;:5;;;;:::i;:::-;9540:17;;9585:1;9580;9576;:5;;;;:::i;:::-;:10;9568:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9644:1;9637:8;;;9401:252;;;;;:::o;9661:132::-;9719:7;9746:39;9750:1;9753;9746:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9739:46;;9661:132;;;;:::o;8706:125::-;;;;:::o;23671:479::-;23739:21;23777:1;23763:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23739:40;;23808:4;23790;23795:1;23790:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23834:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23824:4;23829:1;23824:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23869:62;23886:4;23901:15;;;;;;;;;;;23919:11;23869:8;:62::i;:::-;23944:15;;;;;;;;;;;:66;;;24025:11;24051:1;24067:4;24094;24114:15;23944:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23726:424;23671:479;:::o;9055:136::-;9113:7;9140:43;9144:1;9147;9140:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9133:50;;9055:136;;;;:::o;23182:481::-;23266:1;23254:9;:13;23251:405;;;23283:21;23321:1;23307:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23283:40;;23348:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23338:4;23343:1;23338:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23403:4;23385;23390:1;23385:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23425:15;;;;;;;;;;;:66;;;23499:9;23528:1;23548:4;23579:15;;;;;;;;;;;23614;23425:219;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23268:388;23251:405;23182:481;:::o;9801:191::-;9887:7;9919:1;9915;:5;9922:12;9907:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9946:9;9962:1;9958;:5;;;;:::i;:::-;9946:17;;9983:1;9976:8;;;9801:191;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:60::-;4451:3;4472:5;4465:12;;4423:60;;;:::o;4489:142::-;4539:9;4572:53;4590:34;4599:24;4617:5;4599:24;:::i;:::-;4590:34;:::i;:::-;4572:53;:::i;:::-;4559:66;;4489:142;;;:::o;4637:126::-;4687:9;4720:37;4751:5;4720:37;:::i;:::-;4707:50;;4637:126;;;:::o;4769:153::-;4846:9;4879:37;4910:5;4879:37;:::i;:::-;4866:50;;4769:153;;;:::o;4928:185::-;5042:64;5100:5;5042:64;:::i;:::-;5037:3;5030:77;4928:185;;:::o;5119:276::-;5239:4;5277:2;5266:9;5262:18;5254:26;;5290:98;5385:1;5374:9;5370:17;5361:6;5290:98;:::i;:::-;5119:276;;;;:::o;5401:86::-;5436:7;5476:4;5469:5;5465:16;5454:27;;5401:86;;;:::o;5493:112::-;5576:22;5592:5;5576:22;:::i;:::-;5571:3;5564:35;5493:112;;:::o;5611:214::-;5700:4;5738:2;5727:9;5723:18;5715:26;;5751:67;5815:1;5804:9;5800:17;5791:6;5751:67;:::i;:::-;5611:214;;;;:::o;5831:329::-;5890:6;5939:2;5927:9;5918:7;5914:23;5910:32;5907:119;;;5945:79;;:::i;:::-;5907:119;6065:1;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6036:117;5831:329;;;;:::o;6166:116::-;6236:21;6251:5;6236:21;:::i;:::-;6229:5;6226:32;6216:60;;6272:1;6269;6262:12;6216:60;6166:116;:::o;6288:133::-;6331:5;6369:6;6356:20;6347:29;;6385:30;6409:5;6385:30;:::i;:::-;6288:133;;;;:::o;6427:468::-;6492:6;6500;6549:2;6537:9;6528:7;6524:23;6520:32;6517:119;;;6555:79;;:::i;:::-;6517:119;6675:1;6700:50;6742:7;6733:6;6722:9;6718:22;6700:50;:::i;:::-;6690:60;;6646:114;6799:2;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6770:118;6427:468;;;;;:::o;6901:118::-;6988:24;7006:5;6988:24;:::i;:::-;6983:3;6976:37;6901:118;;:::o;7025:222::-;7118:4;7156:2;7145:9;7141:18;7133:26;;7169:71;7237:1;7226:9;7222:17;7213:6;7169:71;:::i;:::-;7025:222;;;;:::o;7253:468::-;7318:6;7326;7375:2;7363:9;7354:7;7350:23;7346:32;7343:119;;;7381:79;;:::i;:::-;7343:119;7501:1;7526:53;7571:7;7562:6;7551:9;7547:22;7526:53;:::i;:::-;7516:63;;7472:117;7628:2;7654:50;7696:7;7687:6;7676:9;7672:22;7654:50;:::i;:::-;7644:60;;7599:115;7253:468;;;;;:::o;7727:117::-;7836:1;7833;7826:12;7850:117;7959:1;7956;7949:12;7973:117;8082:1;8079;8072:12;8113:568;8186:8;8196:6;8246:3;8239:4;8231:6;8227:17;8223:27;8213:122;;8254:79;;:::i;:::-;8213:122;8367:6;8354:20;8344:30;;8397:18;8389:6;8386:30;8383:117;;;8419:79;;:::i;:::-;8383:117;8533:4;8525:6;8521:17;8509:29;;8587:3;8579:4;8571:6;8567:17;8557:8;8553:32;8550:41;8547:128;;;8594:79;;:::i;:::-;8547:128;8113:568;;;;;:::o;8687:698::-;8779:6;8787;8795;8844:2;8832:9;8823:7;8819:23;8815:32;8812:119;;;8850:79;;:::i;:::-;8812:119;8998:1;8987:9;8983:17;8970:31;9028:18;9020:6;9017:30;9014:117;;;9050:79;;:::i;:::-;9014:117;9163:80;9235:7;9226:6;9215:9;9211:22;9163:80;:::i;:::-;9145:98;;;;8941:312;9292:2;9318:50;9360:7;9351:6;9340:9;9336:22;9318:50;:::i;:::-;9308:60;;9263:115;8687:698;;;;;:::o;9391:329::-;9450:6;9499:2;9487:9;9478:7;9474:23;9470:32;9467:119;;;9505:79;;:::i;:::-;9467:119;9625:1;9650:53;9695:7;9686:6;9675:9;9671:22;9650:53;:::i;:::-;9640:63;;9596:117;9391:329;;;;:::o;9726:474::-;9794:6;9802;9851:2;9839:9;9830:7;9826:23;9822:32;9819:119;;;9857:79;;:::i;:::-;9819:119;9977:1;10002:53;10047:7;10038:6;10027:9;10023:22;10002:53;:::i;:::-;9992:63;;9948:117;10104:2;10130:53;10175:7;10166:6;10155:9;10151:22;10130:53;:::i;:::-;10120:63;;10075:118;9726:474;;;;;:::o;10206:180::-;10254:77;10251:1;10244:88;10351:4;10348:1;10341:15;10375:4;10372:1;10365:15;10392:320;10436:6;10473:1;10467:4;10463:12;10453:22;;10520:1;10514:4;10510:12;10541:18;10531:81;;10597:4;10589:6;10585:17;10575:27;;10531:81;10659:2;10651:6;10648:14;10628:18;10625:38;10622:84;;10678:18;;:::i;:::-;10622:84;10443:269;10392:320;;;:::o;10718:182::-;10858:34;10854:1;10846:6;10842:14;10835:58;10718:182;:::o;10906:366::-;11048:3;11069:67;11133:2;11128:3;11069:67;:::i;:::-;11062:74;;11145:93;11234:3;11145:93;:::i;:::-;11263:2;11258:3;11254:12;11247:19;;10906:366;;;:::o;11278:419::-;11444:4;11482:2;11471:9;11467:18;11459:26;;11531:9;11525:4;11521:20;11517:1;11506:9;11502:17;11495:47;11559:131;11685:4;11559:131;:::i;:::-;11551:139;;11278:419;;;:::o;11703:332::-;11824:4;11862:2;11851:9;11847:18;11839:26;;11875:71;11943:1;11932:9;11928:17;11919:6;11875:71;:::i;:::-;11956:72;12024:2;12013:9;12009:18;12000:6;11956:72;:::i;:::-;11703:332;;;;;:::o;12041:137::-;12095:5;12126:6;12120:13;12111:22;;12142:30;12166:5;12142:30;:::i;:::-;12041:137;;;;:::o;12184:345::-;12251:6;12300:2;12288:9;12279:7;12275:23;12271:32;12268:119;;;12306:79;;:::i;:::-;12268:119;12426:1;12451:61;12504:7;12495:6;12484:9;12480:22;12451:61;:::i;:::-;12441:71;;12397:125;12184:345;;;;:::o;12535:172::-;12675:24;12671:1;12663:6;12659:14;12652:48;12535:172;:::o;12713:366::-;12855:3;12876:67;12940:2;12935:3;12876:67;:::i;:::-;12869:74;;12952:93;13041:3;12952:93;:::i;:::-;13070:2;13065:3;13061:12;13054:19;;12713:366;;;:::o;13085:419::-;13251:4;13289:2;13278:9;13274:18;13266:26;;13338:9;13332:4;13328:20;13324:1;13313:9;13309:17;13302:47;13366:131;13492:4;13366:131;:::i;:::-;13358:139;;13085:419;;;:::o;13510:147::-;13611:11;13648:3;13633:18;;13510:147;;;;:::o;13663:236::-;13803:34;13799:1;13791:6;13787:14;13780:58;13872:19;13867:2;13859:6;13855:15;13848:44;13663:236;:::o;13905:400::-;14064:3;14085:84;14166:2;14161:3;14085:84;:::i;:::-;14078:91;;14178:93;14267:3;14178:93;:::i;:::-;14296:2;14291:3;14287:12;14280:19;;13905:400;;;:::o;14311:379::-;14495:3;14517:147;14660:3;14517:147;:::i;:::-;14510:154;;14681:3;14674:10;;14311:379;;;:::o;14696:301::-;14836:34;14832:1;14824:6;14820:14;14813:58;14905:34;14900:2;14892:6;14888:15;14881:59;14974:15;14969:2;14961:6;14957:15;14950:40;14696:301;:::o;15003:366::-;15145:3;15166:67;15230:2;15225:3;15166:67;:::i;:::-;15159:74;;15242:93;15331:3;15242:93;:::i;:::-;15360:2;15355:3;15351:12;15344:19;;15003:366;;;:::o;15375:419::-;15541:4;15579:2;15568:9;15564:18;15556:26;;15628:9;15622:4;15618:20;15614:1;15603:9;15599:17;15592:47;15656:131;15782:4;15656:131;:::i;:::-;15648:139;;15375:419;;;:::o;15800:289::-;15940:34;15936:1;15928:6;15924:14;15917:58;16009:34;16004:2;15996:6;15992:15;15985:59;16078:3;16073:2;16065:6;16061:15;16054:28;15800:289;:::o;16095:366::-;16237:3;16258:67;16322:2;16317:3;16258:67;:::i;:::-;16251:74;;16334:93;16423:3;16334:93;:::i;:::-;16452:2;16447:3;16443:12;16436:19;;16095:366;;;:::o;16467:419::-;16633:4;16671:2;16660:9;16656:18;16648:26;;16720:9;16714:4;16710:20;16706:1;16695:9;16691:17;16684:47;16748:131;16874:4;16748:131;:::i;:::-;16740:139;;16467:419;;;:::o;16892:173::-;17032:25;17028:1;17020:6;17016:14;17009:49;16892:173;:::o;17071:366::-;17213:3;17234:67;17298:2;17293:3;17234:67;:::i;:::-;17227:74;;17310:93;17399:3;17310:93;:::i;:::-;17428:2;17423:3;17419:12;17412:19;;17071:366;;;:::o;17443:419::-;17609:4;17647:2;17636:9;17632:18;17624:26;;17696:9;17690:4;17686:20;17682:1;17671:9;17667:17;17660:47;17724:131;17850:4;17724:131;:::i;:::-;17716:139;;17443:419;;;:::o;17868:180::-;17916:77;17913:1;17906:88;18013:4;18010:1;18003:15;18037:4;18034:1;18027:15;18054:180;18102:77;18099:1;18092:88;18199:4;18196:1;18189:15;18223:4;18220:1;18213:15;18240:233;18279:3;18302:24;18320:5;18302:24;:::i;:::-;18293:33;;18348:66;18341:5;18338:77;18335:103;;18418:18;;:::i;:::-;18335:103;18465:1;18458:5;18454:13;18447:20;;18240:233;;;:::o;18479:184::-;18578:11;18612:6;18607:3;18600:19;18652:4;18647:3;18643:14;18628:29;;18479:184;;;;:::o;18669:102::-;18738:4;18761:3;18753:11;;18669:102;;;:::o;18777:108::-;18854:24;18872:5;18854:24;:::i;:::-;18849:3;18842:37;18777:108;;:::o;18891:179::-;18960:10;18981:46;19023:3;19015:6;18981:46;:::i;:::-;19059:4;19054:3;19050:14;19036:28;;18891:179;;;;:::o;19076:122::-;19128:5;19153:39;19188:2;19183:3;19179:12;19174:3;19153:39;:::i;:::-;19144:48;;19076:122;;;;:::o;19204:115::-;19276:4;19308;19303:3;19299:14;19291:22;;19204:115;;;:::o;19355:699::-;19484:3;19507:86;19586:6;19581:3;19507:86;:::i;:::-;19500:93;;19617:58;19669:5;19617:58;:::i;:::-;19698:7;19729:1;19714:315;19739:6;19736:1;19733:13;19714:315;;;19809:42;19844:6;19835:7;19809:42;:::i;:::-;19871:63;19930:3;19915:13;19871:63;:::i;:::-;19864:70;;19957:62;20012:6;19957:62;:::i;:::-;19947:72;;19774:255;19761:1;19758;19754:9;19749:14;;19714:315;;;19718:14;20045:3;20038:10;;19489:565;;19355:699;;;;;:::o;20060:491::-;20235:4;20273:2;20262:9;20258:18;20250:26;;20322:9;20316:4;20312:20;20308:1;20297:9;20293:17;20286:47;20350:118;20463:4;20454:6;20446;20350:118;:::i;:::-;20342:126;;20478:66;20540:2;20529:9;20525:18;20516:6;20478:66;:::i;:::-;20060:491;;;;;;:::o;20557:410::-;20597:7;20620:20;20638:1;20620:20;:::i;:::-;20615:25;;20654:20;20672:1;20654:20;:::i;:::-;20649:25;;20709:1;20706;20702:9;20731:30;20749:11;20731:30;:::i;:::-;20720:41;;20910:1;20901:7;20897:15;20894:1;20891:22;20871:1;20864:9;20844:83;20821:139;;20940:18;;:::i;:::-;20821:139;20605:362;20557:410;;;;:::o;20973:225::-;21113:34;21109:1;21101:6;21097:14;21090:58;21182:8;21177:2;21169:6;21165:15;21158:33;20973:225;:::o;21204:366::-;21346:3;21367:67;21431:2;21426:3;21367:67;:::i;:::-;21360:74;;21443:93;21532:3;21443:93;:::i;:::-;21561:2;21556:3;21552:12;21545:19;;21204:366;;;:::o;21576:419::-;21742:4;21780:2;21769:9;21765:18;21757:26;;21829:9;21823:4;21819:20;21815:1;21804:9;21800:17;21793:47;21857:131;21983:4;21857:131;:::i;:::-;21849:139;;21576:419;;;:::o;22001:223::-;22141:34;22137:1;22129:6;22125:14;22118:58;22210:6;22205:2;22197:6;22193:15;22186:31;22001:223;:::o;22230:366::-;22372:3;22393:67;22457:2;22452:3;22393:67;:::i;:::-;22386:74;;22469:93;22558:3;22469:93;:::i;:::-;22587:2;22582:3;22578:12;22571:19;;22230:366;;;:::o;22602:419::-;22768:4;22806:2;22795:9;22791:18;22783:26;;22855:9;22849:4;22845:20;22841:1;22830:9;22826:17;22819:47;22883:131;23009:4;22883:131;:::i;:::-;22875:139;;22602:419;;;:::o;23027:221::-;23167:34;23163:1;23155:6;23151:14;23144:58;23236:4;23231:2;23223:6;23219:15;23212:29;23027:221;:::o;23254:366::-;23396:3;23417:67;23481:2;23476:3;23417:67;:::i;:::-;23410:74;;23493:93;23582:3;23493:93;:::i;:::-;23611:2;23606:3;23602:12;23595:19;;23254:366;;;:::o;23626:419::-;23792:4;23830:2;23819:9;23815:18;23807:26;;23879:9;23873:4;23869:20;23865:1;23854:9;23850:17;23843:47;23907:131;24033:4;23907:131;:::i;:::-;23899:139;;23626:419;;;:::o;24051:224::-;24191:34;24187:1;24179:6;24175:14;24168:58;24260:7;24255:2;24247:6;24243:15;24236:32;24051:224;:::o;24281:366::-;24423:3;24444:67;24508:2;24503:3;24444:67;:::i;:::-;24437:74;;24520:93;24609:3;24520:93;:::i;:::-;24638:2;24633:3;24629:12;24622:19;;24281:366;;;:::o;24653:419::-;24819:4;24857:2;24846:9;24842:18;24834:26;;24906:9;24900:4;24896:20;24892:1;24881:9;24877:17;24870:47;24934:131;25060:4;24934:131;:::i;:::-;24926:139;;24653:419;;;:::o;25078:222::-;25218:34;25214:1;25206:6;25202:14;25195:58;25287:5;25282:2;25274:6;25270:15;25263:30;25078:222;:::o;25306:366::-;25448:3;25469:67;25533:2;25528:3;25469:67;:::i;:::-;25462:74;;25545:93;25634:3;25545:93;:::i;:::-;25663:2;25658:3;25654:12;25647:19;;25306:366;;;:::o;25678:419::-;25844:4;25882:2;25871:9;25867:18;25859:26;;25931:9;25925:4;25921:20;25917:1;25906:9;25902:17;25895:47;25959:131;26085:4;25959:131;:::i;:::-;25951:139;;25678:419;;;:::o;26103:191::-;26143:3;26162:20;26180:1;26162:20;:::i;:::-;26157:25;;26196:20;26214:1;26196:20;:::i;:::-;26191:25;;26239:1;26236;26232:9;26225:16;;26260:3;26257:1;26254:10;26251:36;;;26267:18;;:::i;:::-;26251:36;26103:191;;;;:::o;26300:228::-;26440:34;26436:1;26428:6;26424:14;26417:58;26509:11;26504:2;26496:6;26492:15;26485:36;26300:228;:::o;26534:366::-;26676:3;26697:67;26761:2;26756:3;26697:67;:::i;:::-;26690:74;;26773:93;26862:3;26773:93;:::i;:::-;26891:2;26886:3;26882:12;26875:19;;26534:366;;;:::o;26906:419::-;27072:4;27110:2;27099:9;27095:18;27087:26;;27159:9;27153:4;27149:20;27145:1;27134:9;27130:17;27123:47;27187:131;27313:4;27187:131;:::i;:::-;27179:139;;26906:419;;;:::o;27331:180::-;27379:77;27376:1;27369:88;27476:4;27473:1;27466:15;27500:4;27497:1;27490:15;27517:185;27557:1;27574:20;27592:1;27574:20;:::i;:::-;27569:25;;27608:20;27626:1;27608:20;:::i;:::-;27603:25;;27647:1;27637:35;;27652:18;;:::i;:::-;27637:35;27694:1;27691;27687:9;27682:14;;27517:185;;;;:::o;27708:194::-;27748:4;27768:20;27786:1;27768:20;:::i;:::-;27763:25;;27802:20;27820:1;27802:20;:::i;:::-;27797:25;;27846:1;27843;27839:9;27831:17;;27870:1;27864:4;27861:11;27858:37;;;27875:18;;:::i;:::-;27858:37;27708:194;;;;:::o;27908:177::-;28048:29;28044:1;28036:6;28032:14;28025:53;27908:177;:::o;28091:366::-;28233:3;28254:67;28318:2;28313:3;28254:67;:::i;:::-;28247:74;;28330:93;28419:3;28330:93;:::i;:::-;28448:2;28443:3;28439:12;28432:19;;28091:366;;;:::o;28463:419::-;28629:4;28667:2;28656:9;28652:18;28644:26;;28716:9;28710:4;28706:20;28702:1;28691:9;28687:17;28680:47;28744:131;28870:4;28744:131;:::i;:::-;28736:139;;28463:419;;;:::o;28888:177::-;29028:29;29024:1;29016:6;29012:14;29005:53;28888:177;:::o;29071:400::-;29230:3;29251:84;29332:2;29327:3;29251:84;:::i;:::-;29244:91;;29344:93;29433:3;29344:93;:::i;:::-;29462:2;29457:3;29453:12;29446:19;;29071:400;;;:::o;29477:379::-;29661:3;29683:147;29826:3;29683:147;:::i;:::-;29676:154;;29847:3;29840:10;;29477:379;;;:::o;29862:157::-;30002:9;29998:1;29990:6;29986:14;29979:33;29862:157;:::o;30025:398::-;30184:3;30205:83;30286:1;30281:3;30205:83;:::i;:::-;30198:90;;30297:93;30386:3;30297:93;:::i;:::-;30415:1;30410:3;30406:11;30399:18;;30025:398;;;:::o;30429:379::-;30613:3;30635:147;30778:3;30635:147;:::i;:::-;30628:154;;30799:3;30792:10;;30429:379;;;:::o;30814:220::-;30954:34;30950:1;30942:6;30938:14;30931:58;31023:3;31018:2;31010:6;31006:15;30999:28;30814:220;:::o;31040:366::-;31182:3;31203:67;31267:2;31262:3;31203:67;:::i;:::-;31196:74;;31279:93;31368:3;31279:93;:::i;:::-;31397:2;31392:3;31388:12;31381:19;;31040:366;;;:::o;31412:419::-;31578:4;31616:2;31605:9;31601:18;31593:26;;31665:9;31659:4;31655:20;31651:1;31640:9;31636:17;31629:47;31693:131;31819:4;31693:131;:::i;:::-;31685:139;;31412:419;;;:::o;31837:180::-;31885:77;31882:1;31875:88;31982:4;31979:1;31972:15;32006:4;32003:1;31996:15;32023:143;32080:5;32111:6;32105:13;32096:22;;32127:33;32154:5;32127:33;:::i;:::-;32023:143;;;;:::o;32172:351::-;32242:6;32291:2;32279:9;32270:7;32266:23;32262:32;32259:119;;;32297:79;;:::i;:::-;32259:119;32417:1;32442:64;32498:7;32489:6;32478:9;32474:22;32442:64;:::i;:::-;32432:74;;32388:128;32172:351;;;;:::o;32529:85::-;32574:7;32603:5;32592:16;;32529:85;;;:::o;32620:158::-;32678:9;32711:61;32729:42;32738:32;32764:5;32738:32;:::i;:::-;32729:42;:::i;:::-;32711:61;:::i;:::-;32698:74;;32620:158;;;:::o;32784:147::-;32879:45;32918:5;32879:45;:::i;:::-;32874:3;32867:58;32784:147;;:::o;32937:114::-;33004:6;33038:5;33032:12;33022:22;;32937:114;;;:::o;33057:132::-;33124:4;33147:3;33139:11;;33177:4;33172:3;33168:14;33160:22;;33057:132;;;:::o;33195:113::-;33265:4;33297;33292:3;33288:14;33280:22;;33195:113;;;:::o;33344:732::-;33463:3;33492:54;33540:5;33492:54;:::i;:::-;33562:86;33641:6;33636:3;33562:86;:::i;:::-;33555:93;;33672:56;33722:5;33672:56;:::i;:::-;33751:7;33782:1;33767:284;33792:6;33789:1;33786:13;33767:284;;;33868:6;33862:13;33895:63;33954:3;33939:13;33895:63;:::i;:::-;33888:70;;33981:60;34034:6;33981:60;:::i;:::-;33971:70;;33827:224;33814:1;33811;33807:9;33802:14;;33767:284;;;33771:14;34067:3;34060:10;;33468:608;;;33344:732;;;;:::o;34082:831::-;34345:4;34383:3;34372:9;34368:19;34360:27;;34397:71;34465:1;34454:9;34450:17;34441:6;34397:71;:::i;:::-;34478:80;34554:2;34543:9;34539:18;34530:6;34478:80;:::i;:::-;34605:9;34599:4;34595:20;34590:2;34579:9;34575:18;34568:48;34633:108;34736:4;34727:6;34633:108;:::i;:::-;34625:116;;34751:72;34819:2;34808:9;34804:18;34795:6;34751:72;:::i;:::-;34833:73;34901:3;34890:9;34886:19;34877:6;34833:73;:::i;:::-;34082:831;;;;;;;;:::o;34919:720::-;35154:4;35192:3;35181:9;35177:19;35169:27;;35206:79;35282:1;35271:9;35267:17;35258:6;35206:79;:::i;:::-;35332:9;35326:4;35322:20;35317:2;35306:9;35302:18;35295:48;35360:108;35463:4;35454:6;35360:108;:::i;:::-;35352:116;;35478:72;35546:2;35535:9;35531:18;35522:6;35478:72;:::i;:::-;35560;35628:2;35617:9;35613:18;35604:6;35560:72;:::i;:::-;34919:720;;;;;;;:::o

Swarm Source

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