ETH Price: $3,403.92 (+3.30%)

Token

Animalympics (ANIMAL)
 

Overview

Max Total Supply

100,000,000 ANIMAL

Holders

236

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,513.770430527020630972 ANIMAL

Value
$0.00
0x93c0749cae0d3527caffa6c96e8a41c68f326b54
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:
Animalympics

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/**

Animalympics - Paris 2024 - Real animals competing in Olympic Events. Live streams and live betting.

Telegram: https://t.me/animalympics
X: https://x.com/AnimalympicsETH
Website: animalympics.org

*/

pragma solidity 0.8.20;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }

    mapping (address => bool) internal authorizations;

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

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

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

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

interface IDEXRouter {
    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 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;
}

interface InterfaceLP {
    function sync() external;
}

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

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

    address WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Animalympics";
    string constant _symbol = "ANIMAL";
    uint8 constant _decimals = 18;

    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address buybackFeeReceiver, address burnFeeReceiver, address devFeeReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTX(uint256 maxTX);
    event set_SwapBack(uint256 Amount, bool Enabled);

    uint256 _totalSupply = 100000000 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isexemptfromfees;
    mapping (address => bool) isexemptfrommaxTX;
    mapping (address => bool) public isBlacklisted;

    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 5;
    uint256 private devFee = 15;
    uint256 private buybackFee = 0;
    uint256 private burnFee = 0;
    uint256 public totalFee = buybackFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator = 100;

    uint256 sellpercent = 100;
    uint256 buypercent = 100;
    uint256 transferpercent = 100;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private buybackFeeReceiver;
    address private burnFeeReceiver;

    uint256 setRatio = 30;
    uint256 setRatioDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;

    bool public TradingOpen = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 6 / 1000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);

        _allowances[address(this)][address(router)] = type(uint256).max;

        isexemptfromfees[msg.sender] = true;
        isexemptfromfees[marketingFeeReceiver] = true;
        isexemptfrommaxTX[msg.sender] = true;
        isexemptfrommaxTX[pair] = true;
        isexemptfrommaxTX[marketingFeeReceiver] = true;
        isexemptfrommaxTX[address(this)] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x13f3bFEE5FeCFA8294284Ea12ef29aA3177c99d6;
        devFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function maxWalletRule(uint256 maxWallPercent) external onlyOwner {
        require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent) / 1000;
        emit set_MaxWallet(_maxWalletToken);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxWalletToken = _totalSupply;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen, "Trading not open yet");
        }
        require(!isBlacklisted[sender] && !isBlacklisted[recipient], "Blacklisted address");


        if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken, "Total Holding is currently limited, you cannot buy that much.");
        }

        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isexemptfrommaxTX[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isexemptfromfees[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 percent = transferpercent;
        if(recipient == pair) {
            percent = sellpercent;
        } else if(sender == pair) {
            percent = buypercent;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);

        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function manualSend() external {
        payable(autoLiquidityReceiver).transfer(address(this).balance);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setStructure(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner {
        sellpercent = _percentonsell;
        buypercent = _percentonbuy;
        transferpercent = _wallettransfer;
    }

    function startTrading() public onlyOwner {
        TradingOpen = true;
        buypercent = 100;
        sellpercent = 100;
        transferpercent = 100;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHbuyback = amountETH.mul(buybackFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback}("");

        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function set_fees() internal {
        emit EditTax(
            uint8(totalFee.mul(buypercent).div(100)),
            uint8(totalFee.mul(sellpercent).div(100)),
            uint8(totalFee.mul(transferpercent).div(100))
        );
    }

    function setParameters(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2, "Fees can not be more than 50%");
        set_fees();
    }

    function setWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit set_Receivers(marketingFeeReceiver, buybackFeeReceiver, burnFeeReceiver, devFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit set_SwapBack(swapThreshold, swapEnabled);
    }

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }

    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    // Blacklist functionality
    event Blacklisted(address indexed account, bool isBlacklisted);

    function blacklistAddress(address account, bool value) external onlyOwner {
        isBlacklisted[account] = value;
        emit Blacklisted(account, value);
    }
}

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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000d71565b6305f5e10062000025919062000dc1565b60035562000055606462000046600260035462000aa160201b90919060201c565b62000b2160201b90919060201c565b60045562000085606462000076600260035462000aa160201b90919060201c565b62000b2160201b90919060201c565b6005555f600b556005600c55600f600d555f600e555f600f55600f54600d54600b54600c54600e54620000b9919062000e0b565b620000c5919062000e0b565b620000d1919062000e0b565b620000dd919062000e0b565b6010556064601155606460125560646013556064601455601e601a556064601b555f601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff0219169083151502179055506103e8600660035462000147919062000dc1565b62000153919062000e72565b601f5534801562000162575f80fd5b505f6200017462000b7260201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000343573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000369919062000f0e565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000413573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000439919062000f0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200049692919062000f4f565b6020604051808303815f875af1158015620004b3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004d9919062000f0e565b601e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507313f3bfee5fecfa8294284ea12ef29aa3177c99d660165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000a93919062000f8b565b60405180910390a3620010f0565b5f80830362000ab3575f905062000b1b565b5f828462000ac2919062000dc1565b905082848262000ad3919062000e72565b1462000b16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b0d906200102a565b60405180910390fd5b809150505b92915050565b5f62000b6a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b7960201b60201c565b905092915050565b5f33905090565b5f808311829062000bc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bb99190620010ce565b60405180910390fd5b505f838562000bd2919062000e72565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c695780860481111562000c415762000c4062000bdf565b5b600185161562000c515780820291505b808102905062000c618562000c0c565b945062000c21565b94509492505050565b5f8262000c83576001905062000d55565b8162000c92575f905062000d55565b816001811462000cab576002811462000cb65762000cec565b600191505062000d55565b60ff84111562000ccb5762000cca62000bdf565b5b8360020a91508482111562000ce55762000ce462000bdf565b5b5062000d55565b5060208310610133831016604e8410600b841016171562000d265782820a90508381111562000d205762000d1f62000bdf565b5b62000d55565b62000d35848484600162000c18565b9250905081840481111562000d4f5762000d4e62000bdf565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000d7d8262000d5c565b915062000d8a8362000d65565b925062000db97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c72565b905092915050565b5f62000dcd8262000d5c565b915062000dda8362000d5c565b925082820262000dea8162000d5c565b9150828204841483151762000e045762000e0362000bdf565b5b5092915050565b5f62000e178262000d5c565b915062000e248362000d5c565b925082820190508082111562000e3f5762000e3e62000bdf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e7e8262000d5c565b915062000e8b8362000d5c565b92508262000e9e5762000e9d62000e45565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ed88262000ead565b9050919050565b62000eea8162000ecc565b811462000ef5575f80fd5b50565b5f8151905062000f088162000edf565b92915050565b5f6020828403121562000f265762000f2562000ea9565b5b5f62000f358482850162000ef8565b91505092915050565b62000f498162000ecc565b82525050565b5f60408201905062000f645f83018562000f3e565b62000f73602083018462000f3e565b9392505050565b62000f858162000d5c565b82525050565b5f60208201905062000fa05f83018462000f7a565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200101260218362000fa6565b91506200101f8262000fb6565b604082019050919050565b5f6020820190508181035f830152620010438162001004565b9050919050565b5f81519050919050565b5f5b838110156200107357808201518184015260208101905062001056565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200109a826200104a565b620010a6818562000fa6565b9350620010b881856020860162001054565b620010c3816200107e565b840191505092915050565b5f6020820190508181035f830152620010e881846200108e565b905092915050565b61432580620010fe5f395ff3fe60806040526004361061021d575f3560e01c8063751039fc11610122578063a9059cbb116100aa578063df20fd491161006e578063df20fd49146107c4578063f2fde38b146107ec578063f429389014610814578063f887ea401461082a578063fe575a871461085457610224565b8063a9059cbb146106be578063b2bdfa7b146106fa578063c0cbdea414610724578063dd62ed3e1461074c578063ded1e4381461078857610224565b806382528791116100f157806382528791146105ee578063893d20e8146106165780638da5cb5b1461064057806395d89b411461066a578063a8aa1b311461069457610224565b8063751039fc1461054857806377b54bad1461055e57806378109e541461059a5780637d1db4a5146105c457610224565b806330c9a6a0116101a5578063571ac8b011610174578063571ac8b0146104685780635d83e1d5146104a45780636ddd1713146104cc57806370a08231146104f6578063715018a61461053257610224565b806330c9a6a0146103b0578063313ce567146103ec578063455a439614610416578063552656691461043e57610224565b806318160ddd116101ec57806318160ddd146102e25780631df4ccfc1461030c57806323b872dd14610336578063282c874914610372578063293230b81461039a57610224565b80630445b6671461022857806306fdde031461025257806308fd3d051461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c610890565b6040516102499190613403565b60405180910390f35b34801561025d575f80fd5b50610266610896565b60405161027391906134a6565b60405180910390f35b348015610287575f80fd5b506102906108d3565b60405161029d91906134e0565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190613581565b6108e6565b6040516102d991906134e0565b60405180910390f35b3480156102ed575f80fd5b506102f66109d3565b6040516103039190613403565b60405180910390f35b348015610317575f80fd5b506103206109dc565b60405161032d9190613403565b60405180910390f35b348015610341575f80fd5b5061035c600480360381019061035791906135bf565b6109e2565b60405161036991906134e0565b60405180910390f35b34801561037d575f80fd5b506103986004803603810190610393919061360f565b610bd5565b005b3480156103a5575f80fd5b506103ae610d44565b005b3480156103bb575f80fd5b506103d660048036038101906103d19190613698565b610e0d565b6040516103e39190613403565b60405180910390f35b3480156103f7575f80fd5b50610400610e7d565b60405161040d91906136de565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190613721565b610e85565b005b348015610449575f80fd5b50610452610fbf565b60405161045f9190613403565b60405180910390f35b348015610473575f80fd5b5061048e6004803603810190610489919061375f565b610ffe565b60405161049b91906134e0565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190613698565b611030565b005b3480156104d7575f80fd5b506104e061112e565b6040516104ed91906134e0565b60405180910390f35b348015610501575f80fd5b5061051c6004803603810190610517919061375f565b611141565b6040516105299190613403565b60405180910390f35b34801561053d575f80fd5b50610546611187565b005b348015610553575f80fd5b5061055c6112d5565b005b348015610569575f80fd5b50610584600480360381019061057f9190613581565b61137d565b60405161059191906134e0565b60405180910390f35b3480156105a5575f80fd5b506105ae6114dd565b6040516105bb9190613403565b60405180910390f35b3480156105cf575f80fd5b506105d86114e3565b6040516105e59190613403565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f919061378a565b6114e9565b005b348015610621575f80fd5b5061062a611785565b6040516106379190613810565b60405180910390f35b34801561064b575f80fd5b50610654611793565b6040516106619190613810565b60405180910390f35b348015610675575f80fd5b5061067e6117ba565b60405161068b91906134a6565b60405180910390f35b34801561069f575f80fd5b506106a86117f7565b6040516106b59190613810565b60405180910390f35b3480156106c9575f80fd5b506106e460048036038101906106df9190613581565b61181c565b6040516106f191906134e0565b60405180910390f35b348015610705575f80fd5b5061070e611830565b60405161071b9190613810565b60405180910390f35b34801561072f575f80fd5b5061074a60048036038101906107459190613829565b611853565b005b348015610757575f80fd5b50610772600480360381019061076d9190613879565b611901565b60405161077f9190613403565b60405180910390f35b348015610793575f80fd5b506107ae60048036038101906107a991906138b7565b611983565b6040516107bb91906134e0565b60405180910390f35b3480156107cf575f80fd5b506107ea60048036038101906107e591906138f5565b611997565b005b3480156107f7575f80fd5b50610812600480360381019061080d919061375f565b611a9a565b005b34801561081f575f80fd5b50610828611c57565b005b348015610835575f80fd5b5061083e611cbe565b60405161084b919061398e565b60405180910390f35b34801561085f575f80fd5b5061087a6004803603810190610875919061375f565b611ce3565b60405161088791906134e0565b60405180910390f35b601f5481565b60606040518060400160405280600c81526020017f416e696d616c796d706963730000000000000000000000000000000000000000815250905090565b601e60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109c19190613403565b60405180910390a36001905092915050565b5f600354905090565b60105481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610bc157610b44826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d009092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610bcc848484611d62565b90509392505050565b610bdd612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c60906139f1565b60405180910390fd5b85600b8190555084600e8190555083600c8190555082600d8190555081600f81905550610cd582610cc785610cb988610cab8b8d61247d90919063ffffffff16565b61247d90919063ffffffff16565b61247d90919063ffffffff16565b61247d90919063ffffffff16565b601081905550806011819055506002601154610cf19190613a69565b60105410610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90613ae3565b60405180910390fd5b610d3c6124da565b505050505050565b610d4c612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf906139f1565b60405180910390fd5b6001601e60146101000a81548160ff021916908315150217905550606460138190555060646012819055506064601481905550565b5f610e76610e19610fbf565b610e68610e596002610e4b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611141565b61259290919063ffffffff16565b8561259290919063ffffffff16565b61260990919063ffffffff16565b9050919050565b5f6012905090565b610e8d612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f10906139f1565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd882604051610fb391906134e0565b60405180910390a25050565b5f610ff9610fcc5f611141565b610feb610fda61dead611141565b60035461265290919063ffffffff16565b61265290919063ffffffff16565b905090565b5f611029827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108e6565b9050919050565b611038612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906139f1565b60405180910390fd5b60018110156110d1575f80fd5b6103e8816003546110e29190613b01565b6110ec9190613a69565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be516005546040516111239190613403565b60405180910390a150565b601e60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61118f612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906139f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112dd612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611360906139f1565b60405180910390fd5b600354600481905550600354600581905550565b5f808203611400578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113be9190613810565b602060405180830381865afa1580156113d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fd9190613b56565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611431929190613b81565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611495929190613b81565b6020604051808303815f875af11580156114b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d59190613bbc565b905092915050565b60055481565b60045481565b6114f1612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611574906139f1565b60405180910390fd5b8460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516117769493929190613be7565b60405180910390a15050505050565b5f61178e611793565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f414e494d414c0000000000000000000000000000000000000000000000000000815250905090565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611828338484611d62565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61185b612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906139f1565b60405180910390fd5b816012819055508260138190555080601481905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8261198e83610e0d565b11905092915050565b61199f612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22906139f1565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601f54601e60159054906101000a900460ff16604051611a8e929190613c2a565b60405180910390a15050565b611aa2612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b25906139f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390613cc1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611cbb573d5f803e3d5ffd5b50565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f838311158290611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e91906134a6565b60405180910390fd5b505f8385611d559190613cdf565b9050809150509392505050565b5f60205f9054906101000a900460ff1615611d8957611d8284848461269b565b905061246f565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e27575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e7c57601e60149054906101000a900460ff16611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290613d5c565b60405180910390fd5b5b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f1a5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613dc4565b60405180910390fd5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fdc57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612016575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561206f5750601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120c8575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612121575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612174575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121d7575f61218384611141565b905060055483826121949190613de2565b11156121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613e85565b60405180910390fd5b505b6121e18483612865565b6121e96128ff565b156121f7576121f66129d1565b5b61227e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d009092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061235b575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61236f5761236a858486612fcc565b612371565b825b90506123c38160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124619190613403565b60405180910390a360019150505b9392505050565b5f33905090565b5f80828461248b9190613de2565b9050838110156124d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c790613eed565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b932800612525606461251760135460105461259290919063ffffffff16565b61260990919063ffffffff16565b61254f606461254160125460105461259290919063ffffffff16565b61260990919063ffffffff16565b612579606461256b60145460105461259290919063ffffffff16565b61260990919063ffffffff16565b60405161258893929190613f0b565b60405180910390a1565b5f8083036125a2575f9050612603565b5f82846125af9190613b01565b90508284826125be9190613a69565b146125fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f590613fb0565b60405180910390fd5b809150505b92915050565b5f61264a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061338a565b905092915050565b5f61269383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d00565b905092915050565b5f612723826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d009092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127b48260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128529190613403565b60405180910390a3600190509392505050565b600454811115806128bc575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6128fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f290614018565b60405180910390fd5b5050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612969575060205f9054906101000a900460ff16155b80156129815750601e60159054906101000a900460ff165b80156129cc5750601f5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160205f6101000a81548160ff0219169083151502179055505f6129fa601a54601b54611983565b612a0657600b54612a08565b5f5b90505f612a476002612a39601054612a2b86601f5461259290919063ffffffff16565b61260990919063ffffffff16565b61260990919063ffffffff16565b90505f612a5f82601f5461265290919063ffffffff16565b90505f600267ffffffffffffffff811115612a7d57612a7c614036565b5b604051908082528060200260200182016040528015612aab5781602001602082028036833780820191505090505b50905030815f81518110612ac257612ac1614063565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612b3257612b31614063565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401612bd2959493929190614180565b5f604051808303815f87803b158015612be9575f80fd5b505af1158015612bfb573d5f803e3d5ffd5b505050505f612c13824761265290919063ffffffff16565b90505f612c3e612c2d60028961260990919063ffffffff16565b60105461265290919063ffffffff16565b90505f612c796002612c6b84612c5d8c8861259290919063ffffffff16565b61260990919063ffffffff16565b61260990919063ffffffff16565b90505f612ca383612c95600c548761259290919063ffffffff16565b61260990919063ffffffff16565b90505f612ccd84612cbf600e548861259290919063ffffffff16565b61260990919063ffffffff16565b90505f612cf785612ce9600d548961259290919063ffffffff16565b61260990919063ffffffff16565b90505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612d3f90614205565b5f6040518083038185875af1925050503d805f8114612d79576040519150601f19603f3d011682016040523d82523d5f602084013e612d7e565b606091505b5050905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612dc790614205565b5f6040518083038185875af1925050503d805f8114612e01576040519150601f19603f3d011682016040523d82523d5f602084013e612e06565b606091505b50508091505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e5190614205565b5f6040518083038185875af1925050503d805f8114612e8b576040519150601f19603f3d011682016040523d82523d5f602084013e612e90565b606091505b5050809150505f90505f8b1115612fa557601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f2796959493929190614219565b60606040518083038185885af1158015612f43573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f689190614278565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612f9c9291906142c8565b60405180910390a15b5050505050505050505050505f60205f6101000a81548160ff021916908315150217905550565b5f806014549050601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361303157601254905061308c565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361308b5760135490505b5b5f6130d4606460115461309f9190613b01565b6130c6846130b86010548a61259290919063ffffffff16565b61259290919063ffffffff16565b61260990919063ffffffff16565b90505f6131006010546130f2600f548561259290919063ffffffff16565b61260990919063ffffffff16565b90505f613116828461265290919063ffffffff16565b90506131688160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061321a8260065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132d99190613403565b60405180910390a35f82111561336a576132fe8260035461265290919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133619190613403565b60405180910390a35b61337d838861265290919063ffffffff16565b9450505050509392505050565b5f80831182906133d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c791906134a6565b60405180910390fd5b505f83856133de9190613a69565b9050809150509392505050565b5f819050919050565b6133fd816133eb565b82525050565b5f6020820190506134165f8301846133f4565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613453578082015181840152602081019050613438565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134788261341c565b6134828185613426565b9350613492818560208601613436565b61349b8161345e565b840191505092915050565b5f6020820190508181035f8301526134be818461346e565b905092915050565b5f8115159050919050565b6134da816134c6565b82525050565b5f6020820190506134f35f8301846134d1565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613526826134fd565b9050919050565b6135368161351c565b8114613540575f80fd5b50565b5f813590506135518161352d565b92915050565b613560816133eb565b811461356a575f80fd5b50565b5f8135905061357b81613557565b92915050565b5f8060408385031215613597576135966134f9565b5b5f6135a485828601613543565b92505060206135b58582860161356d565b9150509250929050565b5f805f606084860312156135d6576135d56134f9565b5b5f6135e386828701613543565b93505060206135f486828701613543565b92505060406136058682870161356d565b9150509250925092565b5f805f805f8060c08789031215613629576136286134f9565b5b5f61363689828a0161356d565b965050602061364789828a0161356d565b955050604061365889828a0161356d565b945050606061366989828a0161356d565b935050608061367a89828a0161356d565b92505060a061368b89828a0161356d565b9150509295509295509295565b5f602082840312156136ad576136ac6134f9565b5b5f6136ba8482850161356d565b91505092915050565b5f60ff82169050919050565b6136d8816136c3565b82525050565b5f6020820190506136f15f8301846136cf565b92915050565b613700816134c6565b811461370a575f80fd5b50565b5f8135905061371b816136f7565b92915050565b5f8060408385031215613737576137366134f9565b5b5f61374485828601613543565b92505060206137558582860161370d565b9150509250929050565b5f60208284031215613774576137736134f9565b5b5f61378184828501613543565b91505092915050565b5f805f805f60a086880312156137a3576137a26134f9565b5b5f6137b088828901613543565b95505060206137c188828901613543565b94505060406137d288828901613543565b93505060606137e388828901613543565b92505060806137f488828901613543565b9150509295509295909350565b61380a8161351c565b82525050565b5f6020820190506138235f830184613801565b92915050565b5f805f606084860312156138405761383f6134f9565b5b5f61384d8682870161356d565b935050602061385e8682870161356d565b925050604061386f8682870161356d565b9150509250925092565b5f806040838503121561388f5761388e6134f9565b5b5f61389c85828601613543565b92505060206138ad85828601613543565b9150509250929050565b5f80604083850312156138cd576138cc6134f9565b5b5f6138da8582860161356d565b92505060206138eb8582860161356d565b9150509250929050565b5f806040838503121561390b5761390a6134f9565b5b5f6139188582860161370d565b92505060206139298582860161356d565b9150509250929050565b5f819050919050565b5f61395661395161394c846134fd565b613933565b6134fd565b9050919050565b5f6139678261393c565b9050919050565b5f6139788261395d565b9050919050565b6139888161396e565b82525050565b5f6020820190506139a15f83018461397f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139db602083613426565b91506139e6826139a7565b602082019050919050565b5f6020820190508181035f830152613a08816139cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a73826133eb565b9150613a7e836133eb565b925082613a8e57613a8d613a0f565b5b828204905092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e203530250000005f82015250565b5f613acd601d83613426565b9150613ad882613a99565b602082019050919050565b5f6020820190508181035f830152613afa81613ac1565b9050919050565b5f613b0b826133eb565b9150613b16836133eb565b9250828202613b24816133eb565b91508282048414831517613b3b57613b3a613a3c565b5b5092915050565b5f81519050613b5081613557565b92915050565b5f60208284031215613b6b57613b6a6134f9565b5b5f613b7884828501613b42565b91505092915050565b5f604082019050613b945f830185613801565b613ba160208301846133f4565b9392505050565b5f81519050613bb6816136f7565b92915050565b5f60208284031215613bd157613bd06134f9565b5b5f613bde84828501613ba8565b91505092915050565b5f608082019050613bfa5f830187613801565b613c076020830186613801565b613c146040830185613801565b613c216060830184613801565b95945050505050565b5f604082019050613c3d5f8301856133f4565b613c4a60208301846134d1565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613cab602683613426565b9150613cb682613c51565b604082019050919050565b5f6020820190508181035f830152613cd881613c9f565b9050919050565b5f613ce9826133eb565b9150613cf4836133eb565b9250828203905081811115613d0c57613d0b613a3c565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613d46601483613426565b9150613d5182613d12565b602082019050919050565b5f6020820190508181035f830152613d7381613d3a565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f613dae601383613426565b9150613db982613d7a565b602082019050919050565b5f6020820190508181035f830152613ddb81613da2565b9050919050565b5f613dec826133eb565b9150613df7836133eb565b9250828201905080821115613e0f57613e0e613a3c565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e6e6f74206275792074686174206d7563682e000000602082015250565b5f613e6f603d83613426565b9150613e7a82613e15565b604082019050919050565b5f6020820190508181035f830152613e9c81613e63565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ed7601b83613426565b9150613ee282613ea3565b602082019050919050565b5f6020820190508181035f830152613f0481613ecb565b9050919050565b5f606082019050613f1e5f8301866136cf565b613f2b60208301856136cf565b613f3860408301846136cf565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f9a602183613426565b9150613fa582613f40565b604082019050919050565b5f6020820190508181035f830152613fc781613f8e565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f614002601183613426565b915061400d82613fce565b602082019050919050565b5f6020820190508181035f83015261402f81613ff6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6140b36140ae6140a984614090565b613933565b6133eb565b9050919050565b6140c381614099565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140fb8161351c565b82525050565b5f61410c83836140f2565b60208301905092915050565b5f602082019050919050565b5f61412e826140c9565b61413881856140d3565b9350614143836140e3565b805f5b8381101561417357815161415a8882614101565b975061416583614118565b925050600181019050614146565b5085935050505092915050565b5f60a0820190506141935f8301886133f4565b6141a060208301876140ba565b81810360408301526141b28186614124565b90506141c16060830185613801565b6141ce60808301846133f4565b9695505050505050565b5f81905092915050565b50565b5f6141f05f836141d8565b91506141fb826141e2565b5f82019050919050565b5f61420f826141e5565b9150819050919050565b5f60c08201905061422c5f830189613801565b61423960208301886133f4565b61424660408301876140ba565b61425360608301866140ba565b6142606080830185613801565b61426d60a08301846133f4565b979650505050505050565b5f805f6060848603121561428f5761428e6134f9565b5b5f61429c86828701613b42565b93505060206142ad86828701613b42565b92505060406142be86828701613b42565b9150509250925092565b5f6040820190506142db5f8301856133f4565b6142e860208301846133f4565b939250505056fea2646970667358221220bc51faa6ca04b62687cfaf00778f68988e8bd814383862d6e2e84c25bfafa57864736f6c63430008140033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c8063751039fc11610122578063a9059cbb116100aa578063df20fd491161006e578063df20fd49146107c4578063f2fde38b146107ec578063f429389014610814578063f887ea401461082a578063fe575a871461085457610224565b8063a9059cbb146106be578063b2bdfa7b146106fa578063c0cbdea414610724578063dd62ed3e1461074c578063ded1e4381461078857610224565b806382528791116100f157806382528791146105ee578063893d20e8146106165780638da5cb5b1461064057806395d89b411461066a578063a8aa1b311461069457610224565b8063751039fc1461054857806377b54bad1461055e57806378109e541461059a5780637d1db4a5146105c457610224565b806330c9a6a0116101a5578063571ac8b011610174578063571ac8b0146104685780635d83e1d5146104a45780636ddd1713146104cc57806370a08231146104f6578063715018a61461053257610224565b806330c9a6a0146103b0578063313ce567146103ec578063455a439614610416578063552656691461043e57610224565b806318160ddd116101ec57806318160ddd146102e25780631df4ccfc1461030c57806323b872dd14610336578063282c874914610372578063293230b81461039a57610224565b80630445b6671461022857806306fdde031461025257806308fd3d051461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c610890565b6040516102499190613403565b60405180910390f35b34801561025d575f80fd5b50610266610896565b60405161027391906134a6565b60405180910390f35b348015610287575f80fd5b506102906108d3565b60405161029d91906134e0565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190613581565b6108e6565b6040516102d991906134e0565b60405180910390f35b3480156102ed575f80fd5b506102f66109d3565b6040516103039190613403565b60405180910390f35b348015610317575f80fd5b506103206109dc565b60405161032d9190613403565b60405180910390f35b348015610341575f80fd5b5061035c600480360381019061035791906135bf565b6109e2565b60405161036991906134e0565b60405180910390f35b34801561037d575f80fd5b506103986004803603810190610393919061360f565b610bd5565b005b3480156103a5575f80fd5b506103ae610d44565b005b3480156103bb575f80fd5b506103d660048036038101906103d19190613698565b610e0d565b6040516103e39190613403565b60405180910390f35b3480156103f7575f80fd5b50610400610e7d565b60405161040d91906136de565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190613721565b610e85565b005b348015610449575f80fd5b50610452610fbf565b60405161045f9190613403565b60405180910390f35b348015610473575f80fd5b5061048e6004803603810190610489919061375f565b610ffe565b60405161049b91906134e0565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190613698565b611030565b005b3480156104d7575f80fd5b506104e061112e565b6040516104ed91906134e0565b60405180910390f35b348015610501575f80fd5b5061051c6004803603810190610517919061375f565b611141565b6040516105299190613403565b60405180910390f35b34801561053d575f80fd5b50610546611187565b005b348015610553575f80fd5b5061055c6112d5565b005b348015610569575f80fd5b50610584600480360381019061057f9190613581565b61137d565b60405161059191906134e0565b60405180910390f35b3480156105a5575f80fd5b506105ae6114dd565b6040516105bb9190613403565b60405180910390f35b3480156105cf575f80fd5b506105d86114e3565b6040516105e59190613403565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f919061378a565b6114e9565b005b348015610621575f80fd5b5061062a611785565b6040516106379190613810565b60405180910390f35b34801561064b575f80fd5b50610654611793565b6040516106619190613810565b60405180910390f35b348015610675575f80fd5b5061067e6117ba565b60405161068b91906134a6565b60405180910390f35b34801561069f575f80fd5b506106a86117f7565b6040516106b59190613810565b60405180910390f35b3480156106c9575f80fd5b506106e460048036038101906106df9190613581565b61181c565b6040516106f191906134e0565b60405180910390f35b348015610705575f80fd5b5061070e611830565b60405161071b9190613810565b60405180910390f35b34801561072f575f80fd5b5061074a60048036038101906107459190613829565b611853565b005b348015610757575f80fd5b50610772600480360381019061076d9190613879565b611901565b60405161077f9190613403565b60405180910390f35b348015610793575f80fd5b506107ae60048036038101906107a991906138b7565b611983565b6040516107bb91906134e0565b60405180910390f35b3480156107cf575f80fd5b506107ea60048036038101906107e591906138f5565b611997565b005b3480156107f7575f80fd5b50610812600480360381019061080d919061375f565b611a9a565b005b34801561081f575f80fd5b50610828611c57565b005b348015610835575f80fd5b5061083e611cbe565b60405161084b919061398e565b60405180910390f35b34801561085f575f80fd5b5061087a6004803603810190610875919061375f565b611ce3565b60405161088791906134e0565b60405180910390f35b601f5481565b60606040518060400160405280600c81526020017f416e696d616c796d706963730000000000000000000000000000000000000000815250905090565b601e60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109c19190613403565b60405180910390a36001905092915050565b5f600354905090565b60105481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610bc157610b44826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d009092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610bcc848484611d62565b90509392505050565b610bdd612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c60906139f1565b60405180910390fd5b85600b8190555084600e8190555083600c8190555082600d8190555081600f81905550610cd582610cc785610cb988610cab8b8d61247d90919063ffffffff16565b61247d90919063ffffffff16565b61247d90919063ffffffff16565b61247d90919063ffffffff16565b601081905550806011819055506002601154610cf19190613a69565b60105410610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90613ae3565b60405180910390fd5b610d3c6124da565b505050505050565b610d4c612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf906139f1565b60405180910390fd5b6001601e60146101000a81548160ff021916908315150217905550606460138190555060646012819055506064601481905550565b5f610e76610e19610fbf565b610e68610e596002610e4b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611141565b61259290919063ffffffff16565b8561259290919063ffffffff16565b61260990919063ffffffff16565b9050919050565b5f6012905090565b610e8d612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f10906139f1565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd882604051610fb391906134e0565b60405180910390a25050565b5f610ff9610fcc5f611141565b610feb610fda61dead611141565b60035461265290919063ffffffff16565b61265290919063ffffffff16565b905090565b5f611029827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108e6565b9050919050565b611038612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906139f1565b60405180910390fd5b60018110156110d1575f80fd5b6103e8816003546110e29190613b01565b6110ec9190613a69565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be516005546040516111239190613403565b60405180910390a150565b601e60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61118f612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906139f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112dd612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611360906139f1565b60405180910390fd5b600354600481905550600354600581905550565b5f808203611400578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113be9190613810565b602060405180830381865afa1580156113d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fd9190613b56565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611431929190613b81565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611495929190613b81565b6020604051808303815f875af11580156114b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d59190613bbc565b905092915050565b60055481565b60045481565b6114f1612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611574906139f1565b60405180910390fd5b8460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516117769493929190613be7565b60405180910390a15050505050565b5f61178e611793565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f414e494d414c0000000000000000000000000000000000000000000000000000815250905090565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611828338484611d62565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61185b612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906139f1565b60405180910390fd5b816012819055508260138190555080601481905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8261198e83610e0d565b11905092915050565b61199f612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22906139f1565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601f54601e60159054906101000a900460ff16604051611a8e929190613c2a565b60405180910390a15050565b611aa2612476565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b25906139f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390613cc1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611cbb573d5f803e3d5ffd5b50565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f838311158290611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e91906134a6565b60405180910390fd5b505f8385611d559190613cdf565b9050809150509392505050565b5f60205f9054906101000a900460ff1615611d8957611d8284848461269b565b905061246f565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e27575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e7c57601e60149054906101000a900460ff16611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290613d5c565b60405180910390fd5b5b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f1a5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613dc4565b60405180910390fd5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fdc57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612016575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561206f5750601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120c8575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612121575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612174575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121d7575f61218384611141565b905060055483826121949190613de2565b11156121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613e85565b60405180910390fd5b505b6121e18483612865565b6121e96128ff565b156121f7576121f66129d1565b5b61227e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d009092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061235b575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61236f5761236a858486612fcc565b612371565b825b90506123c38160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124619190613403565b60405180910390a360019150505b9392505050565b5f33905090565b5f80828461248b9190613de2565b9050838110156124d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c790613eed565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b932800612525606461251760135460105461259290919063ffffffff16565b61260990919063ffffffff16565b61254f606461254160125460105461259290919063ffffffff16565b61260990919063ffffffff16565b612579606461256b60145460105461259290919063ffffffff16565b61260990919063ffffffff16565b60405161258893929190613f0b565b60405180910390a1565b5f8083036125a2575f9050612603565b5f82846125af9190613b01565b90508284826125be9190613a69565b146125fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f590613fb0565b60405180910390fd5b809150505b92915050565b5f61264a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061338a565b905092915050565b5f61269383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d00565b905092915050565b5f612723826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d009092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127b48260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128529190613403565b60405180910390a3600190509392505050565b600454811115806128bc575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6128fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f290614018565b60405180910390fd5b5050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612969575060205f9054906101000a900460ff16155b80156129815750601e60159054906101000a900460ff165b80156129cc5750601f5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160205f6101000a81548160ff0219169083151502179055505f6129fa601a54601b54611983565b612a0657600b54612a08565b5f5b90505f612a476002612a39601054612a2b86601f5461259290919063ffffffff16565b61260990919063ffffffff16565b61260990919063ffffffff16565b90505f612a5f82601f5461265290919063ffffffff16565b90505f600267ffffffffffffffff811115612a7d57612a7c614036565b5b604051908082528060200260200182016040528015612aab5781602001602082028036833780820191505090505b50905030815f81518110612ac257612ac1614063565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612b3257612b31614063565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401612bd2959493929190614180565b5f604051808303815f87803b158015612be9575f80fd5b505af1158015612bfb573d5f803e3d5ffd5b505050505f612c13824761265290919063ffffffff16565b90505f612c3e612c2d60028961260990919063ffffffff16565b60105461265290919063ffffffff16565b90505f612c796002612c6b84612c5d8c8861259290919063ffffffff16565b61260990919063ffffffff16565b61260990919063ffffffff16565b90505f612ca383612c95600c548761259290919063ffffffff16565b61260990919063ffffffff16565b90505f612ccd84612cbf600e548861259290919063ffffffff16565b61260990919063ffffffff16565b90505f612cf785612ce9600d548961259290919063ffffffff16565b61260990919063ffffffff16565b90505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612d3f90614205565b5f6040518083038185875af1925050503d805f8114612d79576040519150601f19603f3d011682016040523d82523d5f602084013e612d7e565b606091505b5050905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612dc790614205565b5f6040518083038185875af1925050503d805f8114612e01576040519150601f19603f3d011682016040523d82523d5f602084013e612e06565b606091505b50508091505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e5190614205565b5f6040518083038185875af1925050503d805f8114612e8b576040519150601f19603f3d011682016040523d82523d5f602084013e612e90565b606091505b5050809150505f90505f8b1115612fa557601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f2796959493929190614219565b60606040518083038185885af1158015612f43573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f689190614278565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612f9c9291906142c8565b60405180910390a15b5050505050505050505050505f60205f6101000a81548160ff021916908315150217905550565b5f806014549050601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361303157601254905061308c565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361308b5760135490505b5b5f6130d4606460115461309f9190613b01565b6130c6846130b86010548a61259290919063ffffffff16565b61259290919063ffffffff16565b61260990919063ffffffff16565b90505f6131006010546130f2600f548561259290919063ffffffff16565b61260990919063ffffffff16565b90505f613116828461265290919063ffffffff16565b90506131688160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061321a8260065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247d90919063ffffffff16565b60065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132d99190613403565b60405180910390a35f82111561336a576132fe8260035461265290919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133619190613403565b60405180910390a35b61337d838861265290919063ffffffff16565b9450505050509392505050565b5f80831182906133d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c791906134a6565b60405180910390fd5b505f83856133de9190613a69565b9050809150509392505050565b5f819050919050565b6133fd816133eb565b82525050565b5f6020820190506134165f8301846133f4565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613453578082015181840152602081019050613438565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134788261341c565b6134828185613426565b9350613492818560208601613436565b61349b8161345e565b840191505092915050565b5f6020820190508181035f8301526134be818461346e565b905092915050565b5f8115159050919050565b6134da816134c6565b82525050565b5f6020820190506134f35f8301846134d1565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613526826134fd565b9050919050565b6135368161351c565b8114613540575f80fd5b50565b5f813590506135518161352d565b92915050565b613560816133eb565b811461356a575f80fd5b50565b5f8135905061357b81613557565b92915050565b5f8060408385031215613597576135966134f9565b5b5f6135a485828601613543565b92505060206135b58582860161356d565b9150509250929050565b5f805f606084860312156135d6576135d56134f9565b5b5f6135e386828701613543565b93505060206135f486828701613543565b92505060406136058682870161356d565b9150509250925092565b5f805f805f8060c08789031215613629576136286134f9565b5b5f61363689828a0161356d565b965050602061364789828a0161356d565b955050604061365889828a0161356d565b945050606061366989828a0161356d565b935050608061367a89828a0161356d565b92505060a061368b89828a0161356d565b9150509295509295509295565b5f602082840312156136ad576136ac6134f9565b5b5f6136ba8482850161356d565b91505092915050565b5f60ff82169050919050565b6136d8816136c3565b82525050565b5f6020820190506136f15f8301846136cf565b92915050565b613700816134c6565b811461370a575f80fd5b50565b5f8135905061371b816136f7565b92915050565b5f8060408385031215613737576137366134f9565b5b5f61374485828601613543565b92505060206137558582860161370d565b9150509250929050565b5f60208284031215613774576137736134f9565b5b5f61378184828501613543565b91505092915050565b5f805f805f60a086880312156137a3576137a26134f9565b5b5f6137b088828901613543565b95505060206137c188828901613543565b94505060406137d288828901613543565b93505060606137e388828901613543565b92505060806137f488828901613543565b9150509295509295909350565b61380a8161351c565b82525050565b5f6020820190506138235f830184613801565b92915050565b5f805f606084860312156138405761383f6134f9565b5b5f61384d8682870161356d565b935050602061385e8682870161356d565b925050604061386f8682870161356d565b9150509250925092565b5f806040838503121561388f5761388e6134f9565b5b5f61389c85828601613543565b92505060206138ad85828601613543565b9150509250929050565b5f80604083850312156138cd576138cc6134f9565b5b5f6138da8582860161356d565b92505060206138eb8582860161356d565b9150509250929050565b5f806040838503121561390b5761390a6134f9565b5b5f6139188582860161370d565b92505060206139298582860161356d565b9150509250929050565b5f819050919050565b5f61395661395161394c846134fd565b613933565b6134fd565b9050919050565b5f6139678261393c565b9050919050565b5f6139788261395d565b9050919050565b6139888161396e565b82525050565b5f6020820190506139a15f83018461397f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139db602083613426565b91506139e6826139a7565b602082019050919050565b5f6020820190508181035f830152613a08816139cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a73826133eb565b9150613a7e836133eb565b925082613a8e57613a8d613a0f565b5b828204905092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e203530250000005f82015250565b5f613acd601d83613426565b9150613ad882613a99565b602082019050919050565b5f6020820190508181035f830152613afa81613ac1565b9050919050565b5f613b0b826133eb565b9150613b16836133eb565b9250828202613b24816133eb565b91508282048414831517613b3b57613b3a613a3c565b5b5092915050565b5f81519050613b5081613557565b92915050565b5f60208284031215613b6b57613b6a6134f9565b5b5f613b7884828501613b42565b91505092915050565b5f604082019050613b945f830185613801565b613ba160208301846133f4565b9392505050565b5f81519050613bb6816136f7565b92915050565b5f60208284031215613bd157613bd06134f9565b5b5f613bde84828501613ba8565b91505092915050565b5f608082019050613bfa5f830187613801565b613c076020830186613801565b613c146040830185613801565b613c216060830184613801565b95945050505050565b5f604082019050613c3d5f8301856133f4565b613c4a60208301846134d1565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613cab602683613426565b9150613cb682613c51565b604082019050919050565b5f6020820190508181035f830152613cd881613c9f565b9050919050565b5f613ce9826133eb565b9150613cf4836133eb565b9250828203905081811115613d0c57613d0b613a3c565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613d46601483613426565b9150613d5182613d12565b602082019050919050565b5f6020820190508181035f830152613d7381613d3a565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f613dae601383613426565b9150613db982613d7a565b602082019050919050565b5f6020820190508181035f830152613ddb81613da2565b9050919050565b5f613dec826133eb565b9150613df7836133eb565b9250828201905080821115613e0f57613e0e613a3c565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e6e6f74206275792074686174206d7563682e000000602082015250565b5f613e6f603d83613426565b9150613e7a82613e15565b604082019050919050565b5f6020820190508181035f830152613e9c81613e63565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ed7601b83613426565b9150613ee282613ea3565b602082019050919050565b5f6020820190508181035f830152613f0481613ecb565b9050919050565b5f606082019050613f1e5f8301866136cf565b613f2b60208301856136cf565b613f3860408301846136cf565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f9a602183613426565b9150613fa582613f40565b604082019050919050565b5f6020820190508181035f830152613fc781613f8e565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f614002601183613426565b915061400d82613fce565b602082019050919050565b5f6020820190508181035f83015261402f81613ff6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6140b36140ae6140a984614090565b613933565b6133eb565b9050919050565b6140c381614099565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140fb8161351c565b82525050565b5f61410c83836140f2565b60208301905092915050565b5f602082019050919050565b5f61412e826140c9565b61413881856140d3565b9350614143836140e3565b805f5b8381101561417357815161415a8882614101565b975061416583614118565b925050600181019050614146565b5085935050505092915050565b5f60a0820190506141935f8301886133f4565b6141a060208301876140ba565b81810360408301526141b28186614124565b90506141c16060830185613801565b6141ce60808301846133f4565b9695505050505050565b5f81905092915050565b50565b5f6141f05f836141d8565b91506141fb826141e2565b5f82019050919050565b5f61420f826141e5565b9150819050919050565b5f60c08201905061422c5f830189613801565b61423960208301886133f4565b61424660408301876140ba565b61425360608301866140ba565b6142606080830185613801565b61426d60a08301846133f4565b979650505050505050565b5f805f6060848603121561428f5761428e6134f9565b5b5f61429c86828701613b42565b93505060206142ad86828701613b42565b92505060406142be86828701613b42565b9150509250925092565b5f6040820190506142db5f8301856133f4565b6142e860208301846133f4565b939250505056fea2646970667358221220bc51faa6ca04b62687cfaf00778f68988e8bd814383862d6e2e84c25bfafa57864736f6c63430008140033

Deployed Bytecode Sourcemap

5192:13616:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7514:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8945:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7437:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9367:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8675:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6826:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9885:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16724:590;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14455:165;;;;;;;;;;;;;:::i;:::-;;18239:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8769:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18639:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18396:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9591:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10263:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7477:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9115:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2098:148;;;;;;;;;;;;;:::i;:::-;;10498:130;;;;;;;;;;;;;:::i;:::-;;13865:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6306:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6241:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17322:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9031:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1884:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8855:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7409:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9721:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1502:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14206:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9226:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18096:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17877:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2254:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13745:112;;;;;;;;;;;;;:::i;:::-;;7339:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6588:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7514:54;;;;:::o;8945:80::-;8993:13;9017:5;;;;;;;;;;;;;;;;;9010:12;;8945:80;:::o;7437:31::-;;;;;;;;;;;;;:::o;9367:216::-;9442:4;9494:6;9459:11;:23;9471:10;9459:23;;;;;;;;;;;;;;;:32;9483:7;9459:32;;;;;;;;;;;;;;;:41;;;;9537:7;9516:37;;9525:10;9516:37;;;9546:6;9516:37;;;;;;:::i;:::-;;;;;;;;9571:4;9564:11;;9367:216;;;;:::o;8675:88::-;8730:7;8748:12;;8741:19;;8675:88;:::o;6826:85::-;;;;:::o;9885:370::-;9985:4;10040:17;10005:11;:19;10017:6;10005:19;;;;;;;;;;;;;;;:31;10025:10;10005:31;;;;;;;;;;;;;;;;:52;10002:186;;10107:69;10143:6;10107:69;;;;;;;;;;;;;;;;;:11;:19;10119:6;10107:19;;;;;;;;;;;;;;;:31;10127:10;10107:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;10073:11;:19;10085:6;10073:19;;;;;;;;;;;;;;;:31;10093:10;10073:31;;;;;;;;;;;;;;;:103;;;;10002:186;10207:40;10221:6;10229:9;10240:6;10207:13;:40::i;:::-;10200:47;;9885:370;;;;;:::o;16724:590::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16919:13:::1;16904:12;:28;;;;16956:11;16943:10;:24;;;;16993:13;16978:12;:28;;;;17026:7;17017:6;:16;;;;17054:8;17044:7;:18;;;;17084:76;17151:8;17084:62;17138:7;17084:49;17119:13;17084:30;17102:11;17084:13;:17;;:30;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:53;;:62;;;;:::i;:::-;:66;;:76;;;;:::i;:::-;17073:8;:87;;;;17188:15;17171:14;:32;;;;17250:1;17233:14;;:18;;;;:::i;:::-;17222:8;;:29;17214:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17296:10;:8;:10::i;:::-;16724:590:::0;;;;;;:::o;14455:165::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14521:4:::1;14507:11;;:18;;;;;;;;;;;;;;;;;;14549:3;14536:10;:16;;;;14577:3;14563:11;:17;;;;14609:3;14591:15;:21;;;;14455:165::o:0;18239:149::-;18299:7;18326:54;18367:12;:10;:12::i;:::-;18326:36;18339:22;18359:1;18339:15;18349:4;;;;;;;;;;;18339:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;18326:8;:12;;:36;;;;:::i;:::-;:40;;:54;;;;:::i;:::-;18319:61;;18239:149;;;:::o;8769:80::-;8821:5;5554:2;8830:16;;8769:80;:::o;18639:166::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18749:5:::1;18724:13;:22;18738:7;18724:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;18782:7;18770:27;;;18791:5;18770:27;;;;;;:::i;:::-;;;;;;;;18639:166:::0;;:::o;18396:132::-;18439:7;18466:54;18504:15;5390:42;18504:9;:15::i;:::-;18466:33;18483:15;5317:42;18483:9;:15::i;:::-;18466:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18459:61;;18396:132;:::o;9591:122::-;9646:4;9670:35;9678:7;9687:17;9670:7;:35::i;:::-;9663:42;;9591:122;;;:::o;10263:227::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10366:1:::1;10348:14;:19;;10340:28;;;::::0;::::1;;10432:4;10414:14;10399:12;;:29;;;;:::i;:::-;10398:38;;;;:::i;:::-;10380:15;:56;;;;10452:30;10466:15;;10452:30;;;;;;:::i;:::-;;;;;;;;10263:227:::0;:::o;7477:30::-;;;;;;;;;;;;;:::o;9115:105::-;9181:7;9199:9;:18;9209:7;9199:18;;;;;;;;;;;;;;;;9192:25;;9115:105;;;:::o;2098:148::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2205:1:::1;2168:40;;2189:6;::::0;::::1;;;;;;;;2168:40;;;;;;;;;;;;2236:1;2219:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2098:148::o:0;10498:130::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10567:12:::1;;10552;:27;;;;10608:12;;10590:15;:30;;;;10498:130::o:0;13865:333::-;13946:12;13984:1;13974:6;:11;13971:95;;14016:12;14010:29;;;14048:4;14010:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14001:53;;13971:95;14081:32;14092:12;14106:6;14081:32;;;;;;;:::i;:::-;;;;;;;;14137:12;14131:28;;;14160:21;;;;;;;;;;;14183:6;14131:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14124:66;;13865:333;;;;:::o;6306:61::-;;;;:::o;6241:58::-;;;;:::o;17322:547::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17539:22:::1;17515:21;;:46;;;;;;;;;;;;;;;;;;17595:21;17572:20;;:44;;;;;;;;;;;;;;;;;;17644:15;17627:14;;:32;;;;;;;;;;;;;;;;;;17688:16;17670:15;;:34;;;;;;;;;;;;;;;;;;17736:19;17715:18;;:40;;;;;;;;;;;;;;;;;;17773:88;17787:20;;;;;;;;;;;17809:18;;;;;;;;;;;17829:15;;;;;;;;;;;17846:14;;;;;;;;;;;17773:88;;;;;;;;;:::i;:::-;;;;;;;;17322:547:::0;;;;;:::o;9031:78::-;9083:7;9100;:5;:7::i;:::-;9093:14;;9031:78;:::o;1884:79::-;1922:7;1949:6;;;;;;;;;;;1942:13;;1884:79;:::o;8855:84::-;8905:13;8929:7;;;;;;;;;;;;;;;;;8922:14;;8855:84;:::o;7409:19::-;;;;;;;;;;;;;:::o;9721:156::-;9801:4;9825:44;9839:10;9851:9;9862:6;9825:13;:44::i;:::-;9818:51;;9721:156;;;;:::o;1502:21::-;;;;;;;;;;;;:::o;14206:241::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14344:14:::1;14330:11;:28;;;;14382:13;14369:10;:26;;;;14424:15;14406;:33;;;;14206:241:::0;;;:::o;9226:133::-;9310:7;9328:11;:19;9340:6;9328:19;;;;;;;;;;;;;;;:28;9348:7;9328:28;;;;;;;;;;;;;;;;9321:35;;9226:133;;;;:::o;18096:135::-;18170:4;18218:5;18194:21;18206:8;18194:11;:21::i;:::-;:29;18187:36;;18096:135;;;;:::o;17877:211::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17982:8:::1;17968:11;;:22;;;;;;;;;;;;;;;;;;18017:7;18001:13;:23;;;;18040:40;18053:13;;18068:11;;;;;;;;;;;18040:40;;;;;;;:::i;:::-;;;;;;;;17877:211:::0;;:::o;2254:244::-;2021:12;:10;:12::i;:::-;2011:22;;:6;;;;;;;;;;:22;;;2003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2363:1:::1;2343:22;;:8;:22;;::::0;2335:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2453:8;2424:38;;2445:6;::::0;::::1;;;;;;;;2424:38;;;;;;;;;;;;2482:8;2473:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2254:244:::0;:::o;13745:112::-;13795:21;;;;;;;;;;;13787:39;;:62;13827:21;13787:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13745:112::o;7339:24::-;;;;;;;;;;;;;:::o;6588:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4398:192::-;4484:7;4517:1;4512;:6;;4520:12;4504:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4544:9;4560:1;4556;:5;;;;:::i;:::-;4544:17;;4581:1;4574:8;;;4398:192;;;;;:::o;10636:1305::-;10728:4;10748:6;;;;;;;;;;;10745:63;;;10764:41;10779:6;10787:9;10798:6;10764:14;:41::i;:::-;10757:48;;;;10745:63;10824:14;:22;10839:6;10824:22;;;;;;;;;;;;;;;;;;;;;;;;;10823:23;:53;;;;;10851:14;:25;10866:9;10851:25;;;;;;;;;;;;;;;;;;;;;;;;;10850:26;10823:53;10820:128;;;10900:11;;;;;;;;;;;10892:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10820:128;10967:13;:21;10981:6;10967:21;;;;;;;;;;;;;;;;;;;;;;;;;10966:22;:51;;;;;10993:13;:24;11007:9;10993:24;;;;;;;;;;;;;;;;;;;;;;;;;10992:25;10966:51;10958:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;11061:14;:22;11076:6;11061:22;;;;;;;;;;;;;;;;;;;;;;;;;11060:23;:53;;;;;11108:4;11087:26;;:9;:26;;;;11060:53;:83;;;;;5317:42;11117:26;;:9;:26;;;;11060:83;:104;;;;;11160:4;;;;;;;;;;;11147:17;;:9;:17;;;;11060:104;:136;;;;;11181:15;;;;;;;;;;;11168:28;;:9;:28;;;;11060:136;:173;;;;;11213:20;;;;;;;;;;;11200:33;;:9;:33;;;;11060:173;:206;;;;;11238:17;:28;11256:9;11238:28;;;;;;;;;;;;;;;;;;;;;;;;;11237:29;11060:206;11056:408;;;11282:18;11303:20;11313:9;11303;:20::i;:::-;11282:41;;11371:15;;11360:6;11347:10;:19;;;;:::i;:::-;11346:40;;11338:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;11267:197;11056:408;11476:28;11489:6;11497;11476:12;:28::i;:::-;11520:16;:14;:16::i;:::-;11517:35;;;11539:10;:8;:10::i;:::-;11517:35;11582:53;11604:6;11582:53;;;;;;;;;;;;;;;;;:9;:17;11592:6;11582:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11562:9;:17;11572:6;11562:17;;;;;;;;;;;;;;;:73;;;;11648:22;11674:16;:24;11691:6;11674:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;11702:16;:27;11719:9;11702:27;;;;;;;;;;;;;;;;;;;;;;;;;11674:55;11673:103;;11742:34;11750:6;11758;11766:9;11742:7;:34::i;:::-;11673:103;;;11733:6;11673:103;11648:128;;11810:40;11835:14;11810:9;:20;11820:9;11810:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11787:9;:20;11797:9;11787:20;;;;;;;;;;;;;;;:63;;;;11885:9;11868:43;;11877:6;11868:43;;;11896:14;11868:43;;;;;;:::i;:::-;;;;;;;;11929:4;11922:11;;;10636:1305;;;;;;:::o;1223:115::-;1276:15;1319:10;1304:26;;1223:115;:::o;4065:181::-;4123:7;4143:9;4159:1;4155;:5;;;;:::i;:::-;4143:17;;4184:1;4179;:6;;4171:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4237:1;4230:8;;;4065:181;;;;:::o;16474:242::-;16519:189;16547:33;16576:3;16547:24;16560:10;;16547:8;;:12;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;16602:34;16632:3;16602:25;16615:11;;16602:8;;:12;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;16658:38;16692:3;16658:29;16671:15;;16658:8;;:12;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;16519:189;;;;;;;;:::i;:::-;;;;;;;;16474:242::o;4598:250::-;4656:7;4685:1;4680;:6;4676:47;;4710:1;4703:8;;;;4676:47;4735:9;4751:1;4747;:5;;;;:::i;:::-;4735:17;;4780:1;4775;4771;:5;;;;:::i;:::-;:10;4763:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4839:1;4832:8;;;4598:250;;;;;:::o;4856:132::-;4914:7;4941:39;4945:1;4948;4941:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4934:46;;4856:132;;;;:::o;4254:136::-;4312:7;4339:43;4343:1;4346;4339:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4332:50;;4254:136;;;;:::o;11949:330::-;12042:4;12079:53;12101:6;12079:53;;;;;;;;;;;;;;;;;:9;:17;12089:6;12079:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12059:9;:17;12069:6;12059:17;;;;;;;;;;;;;;;:73;;;;12166:32;12191:6;12166:9;:20;12176:9;12166:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12143:9;:20;12153:9;12143:20;;;;;;;;;;;;;;;:55;;;;12231:9;12214:35;;12223:6;12214:35;;;12242:6;12214:35;;;;;;:::i;:::-;;;;;;;;12267:4;12260:11;;11949:330;;;;;:::o;12287:168::-;12384:12;;12374:6;:22;;:51;;;;12400:17;:25;12418:6;12400:25;;;;;;;;;;;;;;;;;;;;;;;;;12374:51;12366:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12287:168;;:::o;13540:197::-;13589:4;13627;;;;;;;;;;;13613:18;;:10;:18;;;;:38;;;;;13645:6;;;;;;;;;;;13644:7;13613:38;:62;;;;;13664:11;;;;;;;;;;;13613:62;:116;;;;;13716:13;;13688:9;:24;13706:4;13688:24;;;;;;;;;;;;;;;;:41;;13613:116;13606:123;;13540:197;:::o;14628:1838::-;7624:4;7615:6;;:13;;;;;;;;;;;;;;;;;;14677:27:::1;14707:41;14718:8;;14728:19;;14707:10;:41::i;:::-;:60;;14755:12;;14707:60;;;14751:1;14707:60;14677:90;;14778:23;14804:59;14861:1;14804:52;14847:8;;14804:38;14822:19;14804:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;14778:85;;14874:20;14897:34;14915:15;14897:13;;:17;;:34;;;;:::i;:::-;14874:57;;14944:21;14982:1;14968:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14944:40;;15013:4;14995;15000:1;14995:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15039:4;;;;;;;;;;;15029;15034:1;15029:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15056:21;15080;15056:45;;15114:6;;;;;;;;;;;:57;;;15186:12;15213:1;15229:4;15256;15276:15;15114:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15315:17;15335:40;15361:13;15335:21;:25;;:40;;;;:::i;:::-;15315:60;;15388:19;15410:40;15423:26;15447:1;15423:19;:23;;:26;;;;:::i;:::-;15410:8;;:12;;:40;;;;:::i;:::-;15388:62;;15463:26;15492:58;15548:1;15492:51;15531:11;15492:34;15506:19;15492:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15463:87;;15561:26;15590:44;15622:11;15590:27;15604:12;;15590:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;15561:73;;15645:24;15672:42;15702:11;15672:25;15686:10;;15672:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;15645:69;;15725:20;15748:38;15774:11;15748:21;15762:6;;15748:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;15725:61;;15800:15;15828:20;;;;;;;;;;;15820:34;;15862:18;15820:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15799:86;;;15920:14;;;;;;;;;;;15912:28;;15948:12;15912:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15896:69;;;;;16000:18;;;;;;;;;;;15992:32;;16032:16;15992:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15976:77;;;;;16079:5;16066:18;;16118:1;16100:15;:19;16097:362;;;16135:6;;;;;;;;;;;:22;;;16165:18;16211:4;16235:15;16269:1;16289::::0;16309:21:::1;;;;;;;;;;;16349:15;16135:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16399:48;16411:18;16431:15;16399:48;;;;;;;:::i;:::-;;;;;;;;16097:362;14666:1800;;;;;;;;;;;;7642:5:::0;7633:6;;:14;;;;;;;;;;;;;;;;;;14628:1838::o;12590:942::-;12676:7;12696:15;12714;;12696:33;;12756:4;;;;;;;;;;;12743:17;;:9;:17;;;12740:142;;12787:11;;12777:21;;12740:142;;;12829:4;;;;;;;;;;;12819:14;;:6;:14;;;12816:66;;12860:10;;12850:20;;12816:66;12740:142;12894:17;12914:59;12969:3;12952:14;;:20;;;;:::i;:::-;12914:33;12939:7;12914:20;12925:8;;12914:6;:10;;:20;;;;:::i;:::-;:24;;:33;;;;:::i;:::-;:37;;:59;;;;:::i;:::-;12894:79;;12984:18;13005:36;13032:8;;13005:22;13019:7;;13005:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;12984:57;;13052:22;13077:25;13091:10;13077:9;:13;;:25;;;;:::i;:::-;13052:50;;13140:44;13169:14;13140:9;:24;13158:4;13140:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;13113:9;:24;13131:4;13113:24;;;;;;;;;;;;;;;:71;;;;13224:42;13255:10;13224:9;:26;13234:15;;;;;;;;;;;13224:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;13195:9;:26;13205:15;;;;;;;;;;;13195:26;;;;;;;;;;;;;;;:71;;;;13307:4;13282:47;;13291:6;13282:47;;;13314:14;13282:47;;;;;;:::i;:::-;;;;;;;;13358:1;13345:10;:14;13342:142;;;13390:28;13407:10;13390:12;;:16;;:28;;;;:::i;:::-;13375:12;:43;;;;5390:42;13438:34;;13447:6;13438:34;;;13461:10;13438:34;;;;;;:::i;:::-;;;;;;;;13342:142;13503:21;13514:9;13503:6;:10;;:21;;;;:::i;:::-;13496:28;;;;;;12590:942;;;;;:::o;4996:189::-;5082:7;5114:1;5110;:5;5117:12;5102:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5141:9;5157:1;5153;:5;;;;:::i;:::-;5141:17;;5176:1;5169:8;;;4996:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::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:1057::-;4527:6;4535;4543;4551;4559;4567;4616:3;4604:9;4595:7;4591:23;4587:33;4584:120;;;4623:79;;:::i;:::-;4584:120;4743:1;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;:::i;:::-;4758:63;;4714:117;4870:2;4896:53;4941:7;4932:6;4921:9;4917:22;4896:53;:::i;:::-;4886:63;;4841:118;4998:2;5024:53;5069:7;5060:6;5049:9;5045:22;5024:53;:::i;:::-;5014:63;;4969:118;5126:2;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;:::i;:::-;5142:63;;5097:118;5254:3;5281:53;5326:7;5317:6;5306:9;5302:22;5281:53;:::i;:::-;5271:63;;5225:119;5383:3;5410:53;5455:7;5446:6;5435:9;5431:22;5410:53;:::i;:::-;5400:63;;5354:119;4423:1057;;;;;;;;:::o;5486:329::-;5545:6;5594:2;5582:9;5573:7;5569:23;5565:32;5562:119;;;5600:79;;:::i;:::-;5562:119;5720:1;5745:53;5790:7;5781:6;5770:9;5766:22;5745:53;:::i;:::-;5735:63;;5691:117;5486:329;;;;:::o;5821:86::-;5856:7;5896:4;5889:5;5885:16;5874:27;;5821:86;;;:::o;5913:112::-;5996:22;6012:5;5996:22;:::i;:::-;5991:3;5984:35;5913:112;;:::o;6031:214::-;6120:4;6158:2;6147:9;6143:18;6135:26;;6171:67;6235:1;6224:9;6220:17;6211:6;6171:67;:::i;:::-;6031:214;;;;:::o;6251:116::-;6321:21;6336:5;6321:21;:::i;:::-;6314:5;6311:32;6301:60;;6357:1;6354;6347:12;6301:60;6251:116;:::o;6373:133::-;6416:5;6454:6;6441:20;6432:29;;6470:30;6494:5;6470:30;:::i;:::-;6373:133;;;;:::o;6512:468::-;6577:6;6585;6634:2;6622:9;6613:7;6609:23;6605:32;6602:119;;;6640:79;;:::i;:::-;6602:119;6760:1;6785:53;6830:7;6821:6;6810:9;6806:22;6785:53;:::i;:::-;6775:63;;6731:117;6887:2;6913:50;6955:7;6946:6;6935:9;6931:22;6913:50;:::i;:::-;6903:60;;6858:115;6512:468;;;;;:::o;6986:329::-;7045:6;7094:2;7082:9;7073:7;7069:23;7065:32;7062:119;;;7100:79;;:::i;:::-;7062:119;7220:1;7245:53;7290:7;7281:6;7270:9;7266:22;7245:53;:::i;:::-;7235:63;;7191:117;6986:329;;;;:::o;7321:911::-;7416:6;7424;7432;7440;7448;7497:3;7485:9;7476:7;7472:23;7468:33;7465:120;;;7504:79;;:::i;:::-;7465:120;7624:1;7649:53;7694:7;7685:6;7674:9;7670:22;7649:53;:::i;:::-;7639:63;;7595:117;7751:2;7777:53;7822:7;7813:6;7802:9;7798:22;7777:53;:::i;:::-;7767:63;;7722:118;7879:2;7905:53;7950:7;7941:6;7930:9;7926:22;7905:53;:::i;:::-;7895:63;;7850:118;8007:2;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7978:118;8135:3;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8106:119;7321:911;;;;;;;;:::o;8238:118::-;8325:24;8343:5;8325:24;:::i;:::-;8320:3;8313:37;8238:118;;:::o;8362:222::-;8455:4;8493:2;8482:9;8478:18;8470:26;;8506:71;8574:1;8563:9;8559:17;8550:6;8506:71;:::i;:::-;8362:222;;;;:::o;8590:619::-;8667:6;8675;8683;8732:2;8720:9;8711:7;8707:23;8703:32;8700:119;;;8738:79;;:::i;:::-;8700:119;8858:1;8883:53;8928:7;8919:6;8908:9;8904:22;8883:53;:::i;:::-;8873:63;;8829:117;8985:2;9011:53;9056:7;9047:6;9036:9;9032:22;9011:53;:::i;:::-;9001:63;;8956:118;9113:2;9139:53;9184:7;9175:6;9164:9;9160:22;9139:53;:::i;:::-;9129:63;;9084:118;8590:619;;;;;:::o;9215:474::-;9283:6;9291;9340:2;9328:9;9319:7;9315:23;9311:32;9308:119;;;9346:79;;:::i;:::-;9308:119;9466:1;9491:53;9536:7;9527:6;9516:9;9512:22;9491:53;:::i;:::-;9481:63;;9437:117;9593:2;9619:53;9664:7;9655:6;9644:9;9640:22;9619:53;:::i;:::-;9609:63;;9564:118;9215:474;;;;;:::o;9695:::-;9763:6;9771;9820:2;9808:9;9799:7;9795:23;9791:32;9788:119;;;9826:79;;:::i;:::-;9788:119;9946:1;9971:53;10016:7;10007:6;9996:9;9992:22;9971:53;:::i;:::-;9961:63;;9917:117;10073:2;10099:53;10144:7;10135:6;10124:9;10120:22;10099:53;:::i;:::-;10089:63;;10044:118;9695:474;;;;;:::o;10175:468::-;10240:6;10248;10297:2;10285:9;10276:7;10272:23;10268:32;10265:119;;;10303:79;;:::i;:::-;10265:119;10423:1;10448:50;10490:7;10481:6;10470:9;10466:22;10448:50;:::i;:::-;10438:60;;10394:114;10547:2;10573:53;10618:7;10609:6;10598:9;10594:22;10573:53;:::i;:::-;10563:63;;10518:118;10175:468;;;;;:::o;10649:60::-;10677:3;10698:5;10691:12;;10649:60;;;:::o;10715:142::-;10765:9;10798:53;10816:34;10825:24;10843:5;10825:24;:::i;:::-;10816:34;:::i;:::-;10798:53;:::i;:::-;10785:66;;10715:142;;;:::o;10863:126::-;10913:9;10946:37;10977:5;10946:37;:::i;:::-;10933:50;;10863:126;;;:::o;10995:144::-;11063:9;11096:37;11127:5;11096:37;:::i;:::-;11083:50;;10995:144;;;:::o;11145:167::-;11250:55;11299:5;11250:55;:::i;:::-;11245:3;11238:68;11145:167;;:::o;11318:258::-;11429:4;11467:2;11456:9;11452:18;11444:26;;11480:89;11566:1;11555:9;11551:17;11542:6;11480:89;:::i;:::-;11318:258;;;;:::o;11582:182::-;11722:34;11718:1;11710:6;11706:14;11699:58;11582:182;:::o;11770:366::-;11912:3;11933:67;11997:2;11992:3;11933:67;:::i;:::-;11926:74;;12009:93;12098:3;12009:93;:::i;:::-;12127:2;12122:3;12118:12;12111:19;;11770:366;;;:::o;12142:419::-;12308:4;12346:2;12335:9;12331:18;12323:26;;12395:9;12389:4;12385:20;12381:1;12370:9;12366:17;12359:47;12423:131;12549:4;12423:131;:::i;:::-;12415:139;;12142:419;;;:::o;12567:180::-;12615:77;12612:1;12605:88;12712:4;12709:1;12702:15;12736:4;12733:1;12726:15;12753:180;12801:77;12798:1;12791:88;12898:4;12895:1;12888:15;12922:4;12919:1;12912:15;12939:185;12979:1;12996:20;13014:1;12996:20;:::i;:::-;12991:25;;13030:20;13048:1;13030:20;:::i;:::-;13025:25;;13069:1;13059:35;;13074:18;;:::i;:::-;13059:35;13116:1;13113;13109:9;13104:14;;12939:185;;;;:::o;13130:179::-;13270:31;13266:1;13258:6;13254:14;13247:55;13130:179;:::o;13315:366::-;13457:3;13478:67;13542:2;13537:3;13478:67;:::i;:::-;13471:74;;13554:93;13643:3;13554:93;:::i;:::-;13672:2;13667:3;13663:12;13656:19;;13315:366;;;:::o;13687:419::-;13853:4;13891:2;13880:9;13876:18;13868:26;;13940:9;13934:4;13930:20;13926:1;13915:9;13911:17;13904:47;13968:131;14094:4;13968:131;:::i;:::-;13960:139;;13687:419;;;:::o;14112:410::-;14152:7;14175:20;14193:1;14175:20;:::i;:::-;14170:25;;14209:20;14227:1;14209:20;:::i;:::-;14204:25;;14264:1;14261;14257:9;14286:30;14304:11;14286:30;:::i;:::-;14275:41;;14465:1;14456:7;14452:15;14449:1;14446:22;14426:1;14419:9;14399:83;14376:139;;14495:18;;:::i;:::-;14376:139;14160:362;14112:410;;;;:::o;14528:143::-;14585:5;14616:6;14610:13;14601:22;;14632:33;14659:5;14632:33;:::i;:::-;14528:143;;;;:::o;14677:351::-;14747:6;14796:2;14784:9;14775:7;14771:23;14767:32;14764:119;;;14802:79;;:::i;:::-;14764:119;14922:1;14947:64;15003:7;14994:6;14983:9;14979:22;14947:64;:::i;:::-;14937:74;;14893:128;14677:351;;;;:::o;15034:332::-;15155:4;15193:2;15182:9;15178:18;15170:26;;15206:71;15274:1;15263:9;15259:17;15250:6;15206:71;:::i;:::-;15287:72;15355:2;15344:9;15340:18;15331:6;15287:72;:::i;:::-;15034:332;;;;;:::o;15372:137::-;15426:5;15457:6;15451:13;15442:22;;15473:30;15497:5;15473:30;:::i;:::-;15372:137;;;;:::o;15515:345::-;15582:6;15631:2;15619:9;15610:7;15606:23;15602:32;15599:119;;;15637:79;;:::i;:::-;15599:119;15757:1;15782:61;15835:7;15826:6;15815:9;15811:22;15782:61;:::i;:::-;15772:71;;15728:125;15515:345;;;;:::o;15866:553::-;16043:4;16081:3;16070:9;16066:19;16058:27;;16095:71;16163:1;16152:9;16148:17;16139:6;16095:71;:::i;:::-;16176:72;16244:2;16233:9;16229:18;16220:6;16176:72;:::i;:::-;16258;16326:2;16315:9;16311:18;16302:6;16258:72;:::i;:::-;16340;16408:2;16397:9;16393:18;16384:6;16340:72;:::i;:::-;15866:553;;;;;;;:::o;16425:320::-;16540:4;16578:2;16567:9;16563:18;16555:26;;16591:71;16659:1;16648:9;16644:17;16635:6;16591:71;:::i;:::-;16672:66;16734:2;16723:9;16719:18;16710:6;16672:66;:::i;:::-;16425:320;;;;;:::o;16751:225::-;16891:34;16887:1;16879:6;16875:14;16868:58;16960:8;16955:2;16947:6;16943:15;16936:33;16751:225;:::o;16982:366::-;17124:3;17145:67;17209:2;17204:3;17145:67;:::i;:::-;17138:74;;17221:93;17310:3;17221:93;:::i;:::-;17339:2;17334:3;17330:12;17323:19;;16982:366;;;:::o;17354:419::-;17520:4;17558:2;17547:9;17543:18;17535:26;;17607:9;17601:4;17597:20;17593:1;17582:9;17578:17;17571:47;17635:131;17761:4;17635:131;:::i;:::-;17627:139;;17354:419;;;:::o;17779:194::-;17819:4;17839:20;17857:1;17839:20;:::i;:::-;17834:25;;17873:20;17891:1;17873:20;:::i;:::-;17868:25;;17917:1;17914;17910:9;17902:17;;17941:1;17935:4;17932:11;17929:37;;;17946:18;;:::i;:::-;17929:37;17779:194;;;;:::o;17979:170::-;18119:22;18115:1;18107:6;18103:14;18096:46;17979:170;:::o;18155:366::-;18297:3;18318:67;18382:2;18377:3;18318:67;:::i;:::-;18311:74;;18394:93;18483:3;18394:93;:::i;:::-;18512:2;18507:3;18503:12;18496:19;;18155:366;;;:::o;18527:419::-;18693:4;18731:2;18720:9;18716:18;18708:26;;18780:9;18774:4;18770:20;18766:1;18755:9;18751:17;18744:47;18808:131;18934:4;18808:131;:::i;:::-;18800:139;;18527:419;;;:::o;18952:169::-;19092:21;19088:1;19080:6;19076:14;19069:45;18952:169;:::o;19127:366::-;19269:3;19290:67;19354:2;19349:3;19290:67;:::i;:::-;19283:74;;19366:93;19455:3;19366:93;:::i;:::-;19484:2;19479:3;19475:12;19468:19;;19127:366;;;:::o;19499:419::-;19665:4;19703:2;19692:9;19688:18;19680:26;;19752:9;19746:4;19742:20;19738:1;19727:9;19723:17;19716:47;19780:131;19906:4;19780:131;:::i;:::-;19772:139;;19499:419;;;:::o;19924:191::-;19964:3;19983:20;20001:1;19983:20;:::i;:::-;19978:25;;20017:20;20035:1;20017:20;:::i;:::-;20012:25;;20060:1;20057;20053:9;20046:16;;20081:3;20078:1;20075:10;20072:36;;;20088:18;;:::i;:::-;20072:36;19924:191;;;;:::o;20121:248::-;20261:34;20257:1;20249:6;20245:14;20238:58;20330:31;20325:2;20317:6;20313:15;20306:56;20121:248;:::o;20375:366::-;20517:3;20538:67;20602:2;20597:3;20538:67;:::i;:::-;20531:74;;20614:93;20703:3;20614:93;:::i;:::-;20732:2;20727:3;20723:12;20716:19;;20375:366;;;:::o;20747:419::-;20913:4;20951:2;20940:9;20936:18;20928:26;;21000:9;20994:4;20990:20;20986:1;20975:9;20971:17;20964:47;21028:131;21154:4;21028:131;:::i;:::-;21020:139;;20747:419;;;:::o;21172:177::-;21312:29;21308:1;21300:6;21296:14;21289:53;21172:177;:::o;21355:366::-;21497:3;21518:67;21582:2;21577:3;21518:67;:::i;:::-;21511:74;;21594:93;21683:3;21594:93;:::i;:::-;21712:2;21707:3;21703:12;21696:19;;21355:366;;;:::o;21727:419::-;21893:4;21931:2;21920:9;21916:18;21908:26;;21980:9;21974:4;21970:20;21966:1;21955:9;21951:17;21944:47;22008:131;22134:4;22008:131;:::i;:::-;22000:139;;21727:419;;;:::o;22152:418::-;22289:4;22327:2;22316:9;22312:18;22304:26;;22340:67;22404:1;22393:9;22389:17;22380:6;22340:67;:::i;:::-;22417:68;22481:2;22470:9;22466:18;22457:6;22417:68;:::i;:::-;22495;22559:2;22548:9;22544:18;22535:6;22495:68;:::i;:::-;22152:418;;;;;;:::o;22576:220::-;22716:34;22712:1;22704:6;22700:14;22693:58;22785:3;22780:2;22772:6;22768:15;22761:28;22576:220;:::o;22802:366::-;22944:3;22965:67;23029:2;23024:3;22965:67;:::i;:::-;22958:74;;23041:93;23130:3;23041:93;:::i;:::-;23159:2;23154:3;23150:12;23143:19;;22802:366;;;:::o;23174:419::-;23340:4;23378:2;23367:9;23363:18;23355:26;;23427:9;23421:4;23417:20;23413:1;23402:9;23398:17;23391:47;23455:131;23581:4;23455:131;:::i;:::-;23447:139;;23174:419;;;:::o;23599:167::-;23739:19;23735:1;23727:6;23723:14;23716:43;23599:167;:::o;23772:366::-;23914:3;23935:67;23999:2;23994:3;23935:67;:::i;:::-;23928:74;;24011:93;24100:3;24011:93;:::i;:::-;24129:2;24124:3;24120:12;24113:19;;23772:366;;;:::o;24144:419::-;24310:4;24348:2;24337:9;24333:18;24325:26;;24397:9;24391:4;24387:20;24383:1;24372:9;24368:17;24361:47;24425:131;24551:4;24425:131;:::i;:::-;24417:139;;24144:419;;;:::o;24569:180::-;24617:77;24614:1;24607:88;24714:4;24711:1;24704:15;24738:4;24735:1;24728:15;24755:180;24803:77;24800:1;24793:88;24900:4;24897:1;24890:15;24924:4;24921:1;24914:15;24941:85;24986:7;25015:5;25004:16;;24941:85;;;:::o;25032:158::-;25090:9;25123:61;25141:42;25150:32;25176:5;25150:32;:::i;:::-;25141:42;:::i;:::-;25123:61;:::i;:::-;25110:74;;25032:158;;;:::o;25196:147::-;25291:45;25330:5;25291:45;:::i;:::-;25286:3;25279:58;25196:147;;:::o;25349:114::-;25416:6;25450:5;25444:12;25434:22;;25349:114;;;:::o;25469:184::-;25568:11;25602:6;25597:3;25590:19;25642:4;25637:3;25633:14;25618:29;;25469:184;;;;:::o;25659:132::-;25726:4;25749:3;25741:11;;25779:4;25774:3;25770:14;25762:22;;25659:132;;;:::o;25797:108::-;25874:24;25892:5;25874:24;:::i;:::-;25869:3;25862:37;25797:108;;:::o;25911:179::-;25980:10;26001:46;26043:3;26035:6;26001:46;:::i;:::-;26079:4;26074:3;26070:14;26056:28;;25911:179;;;;:::o;26096:113::-;26166:4;26198;26193:3;26189:14;26181:22;;26096:113;;;:::o;26245:732::-;26364:3;26393:54;26441:5;26393:54;:::i;:::-;26463:86;26542:6;26537:3;26463:86;:::i;:::-;26456:93;;26573:56;26623:5;26573:56;:::i;:::-;26652:7;26683:1;26668:284;26693:6;26690:1;26687:13;26668:284;;;26769:6;26763:13;26796:63;26855:3;26840:13;26796:63;:::i;:::-;26789:70;;26882:60;26935:6;26882:60;:::i;:::-;26872:70;;26728:224;26715:1;26712;26708:9;26703:14;;26668:284;;;26672:14;26968:3;26961:10;;26369:608;;;26245:732;;;;:::o;26983:831::-;27246:4;27284:3;27273:9;27269:19;27261:27;;27298:71;27366:1;27355:9;27351:17;27342:6;27298:71;:::i;:::-;27379:80;27455:2;27444:9;27440:18;27431:6;27379:80;:::i;:::-;27506:9;27500:4;27496:20;27491:2;27480:9;27476:18;27469:48;27534:108;27637:4;27628:6;27534:108;:::i;:::-;27526:116;;27652:72;27720:2;27709:9;27705:18;27696:6;27652:72;:::i;:::-;27734:73;27802:3;27791:9;27787:19;27778:6;27734:73;:::i;:::-;26983:831;;;;;;;;:::o;27820:147::-;27921:11;27958:3;27943:18;;27820:147;;;;:::o;27973:114::-;;:::o;28093:398::-;28252:3;28273:83;28354:1;28349:3;28273:83;:::i;:::-;28266:90;;28365:93;28454:3;28365:93;:::i;:::-;28483:1;28478:3;28474:11;28467:18;;28093:398;;;:::o;28497:379::-;28681:3;28703:147;28846:3;28703:147;:::i;:::-;28696:154;;28867:3;28860:10;;28497:379;;;:::o;28882:807::-;29131:4;29169:3;29158:9;29154:19;29146:27;;29183:71;29251:1;29240:9;29236:17;29227:6;29183:71;:::i;:::-;29264:72;29332:2;29321:9;29317:18;29308:6;29264:72;:::i;:::-;29346:80;29422:2;29411:9;29407:18;29398:6;29346:80;:::i;:::-;29436;29512:2;29501:9;29497:18;29488:6;29436:80;:::i;:::-;29526:73;29594:3;29583:9;29579:19;29570:6;29526:73;:::i;:::-;29609;29677:3;29666:9;29662:19;29653:6;29609:73;:::i;:::-;28882:807;;;;;;;;;:::o;29695:663::-;29783:6;29791;29799;29848:2;29836:9;29827:7;29823:23;29819:32;29816:119;;;29854:79;;:::i;:::-;29816:119;29974:1;29999:64;30055:7;30046:6;30035:9;30031:22;29999:64;:::i;:::-;29989:74;;29945:128;30112:2;30138:64;30194:7;30185:6;30174:9;30170:22;30138:64;:::i;:::-;30128:74;;30083:129;30251:2;30277:64;30333:7;30324:6;30313:9;30309:22;30277:64;:::i;:::-;30267:74;;30222:129;29695:663;;;;;:::o;30364:332::-;30485:4;30523:2;30512:9;30508:18;30500:26;;30536:71;30604:1;30593:9;30589:17;30580:6;30536:71;:::i;:::-;30617:72;30685:2;30674:9;30670:18;30661:6;30617:72;:::i;:::-;30364:332;;;;;:::o

Swarm Source

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