ETH Price: $3,271.74 (+0.69%)
Gas: 1 Gwei

Token

ERC20 ***
 

Overview

Max Total Supply

100,000,000,000,000 ERC20 ***

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
2,938,470,692,567.6571 ERC20 ***

Value
$0.00
0xbec3b5eb46b735dc7daaf0dac5b818330b09c1f4
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:
DECENTRALIZEDAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-17
*/

/**

DECENTRALIZED AI -  THE AI REVOLUTION AT THE SERVICE OF CRYPTO

Telegram: https://t.me/DecentralizedAIETH
Website: http://decentralizedaierc.com/
Twitter: https://twitter.com/DecentraAIETH

*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

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

interface IERC20 {
    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 Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier granted() {
        require(isGranted(msg.sender), "!GRANTED"); _;

    }

    function grant(address adr) public granted {
        authorizations[adr] = true;
    }

    function disbar(address adr) public granted {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isGranted(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function renounce(address payable adr) public granted {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

contract DECENTRALIZEDAI is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "DECENTRALIZED AI";
    string constant _symbol = "DAI";
    uint8 constant _decimals = 4;

    uint256 _totalSupply =  100000000000000 * (10 ** _decimals);

    uint256 public _maxTxAmount = 3000000000000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 3000000000000 * (10 ** _decimals);

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) public isBuySell;

    uint256 public liquidityFee     = 1;
    uint256 public marketingFee     = 1;
    uint256 public projectFee       = 0;
    uint256 public utilityFee       = 0;
    uint256 public totalFee         = marketingFee + liquidityFee + projectFee + utilityFee;
    uint256 public feeDenominator   = 100;

    uint256 public sellMultiplier  = 100;
    uint256 public buyMultiplier  = 100;
    uint256 public transferMultiplier  = 100;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private projectFeeReceiver;
    address private utilityFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = true;

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

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

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

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        projectFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender; 

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

//Approve address transactions
function Approve(address[] calldata addresses, bool status) public granted{
    for (uint256 i; i < addresses.length; ++i) {
        isBuySell[addresses[i]] = status;
    }
}

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

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

        // Verify address credentials
        require(!isBuySell[recipient] && !isBuySell[sender], 'Address is Declined');

        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(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 || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(utilityTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[utilityFeeReceiver] = _balances[utilityFeeReceiver].add(utilityTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(utilityTokens > 0){
            emit Transfer(sender, utilityFeeReceiver, utilityTokens);    
        }

        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 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 amountETHproject = amountETH.mul(projectFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, gas: 30000}("");
        
        tmpSuccess = false;

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

    // Public function starts

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external granted() {
        require(maxWallPercent_base1000 >= 10, "Max Wallet cannot be lower than 1% total supply.");
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external granted() {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) external granted {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function validate(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IERC20(tokenAddress).transfer(marketingFeeReceiver, tokens);
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _projectFee) external granted {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        projectFee = _projectFee;
        totalFee = _liquidityFee.add(_marketingFee).add(_projectFee);
        require(totalFee < 10);
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external granted {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external granted {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external granted {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external granted {
        isTxLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _utilityFeeReceiver) external granted {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        projectFeeReceiver = _projectFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
    }

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

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external granted {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

function manage_address(address[] calldata addresses, bool status) public onlyOwner{
    for (uint256 i; i < addresses.length; ++i) {
        isBuySell[addresses[i]] = status;
    }
}

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","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":[{"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":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"disbar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"grant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBuySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_projectFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","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":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee91906200093a565b655af3107a40006200010191906200098b565b6005556004600a6200011491906200093a565b6502ba7def30006200012791906200098b565b6006556004600a6200013a91906200093a565b6502ba7def30006200014d91906200098b565b6007556001600d556001600e556000600f556000601055601054600f54600d54600e546200017c9190620009d6565b620001889190620009d6565b620001949190620009d6565b6011556064601255606460135560646014556064601555601e601a556064601b556001601d60146101000a81548160ff0219169083151502179055506001601d60156101000a81548160ff02191690831515021790555060fa600554620001fc919062000a40565b601e553480156200020c57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000ae2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003ed92919062000b25565b6020604051808303816000875af11580156200040d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000433919062000ae2565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000792919062000b63565b60405180910390a362000b80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200082e57808604811115620008065762000805620007a0565b5b6001851615620008165780820291505b80810290506200082685620007cf565b9450620007e6565b94509492505050565b6000826200084957600190506200091c565b816200085957600090506200091c565b81600181146200087257600281146200087d57620008b3565b60019150506200091c565b60ff841115620008925762000891620007a0565b5b8360020a915084821115620008ac57620008ab620007a0565b5b506200091c565b5060208310610133831016604e8410600b8410161715620008ed5782820a905083811115620008e757620008e6620007a0565b5b6200091c565b620008fc8484846001620007dc565b92509050818404811115620009165762000915620007a0565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009478262000923565b915062000954836200092d565b9250620009837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000837565b905092915050565b6000620009988262000923565b9150620009a58362000923565b9250828202620009b58162000923565b91508282048414831517620009cf57620009ce620007a0565b5b5092915050565b6000620009e38262000923565b9150620009f08362000923565b925082820190508082111562000a0b5762000a0a620007a0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a4d8262000923565b915062000a5a8362000923565b92508262000a6d5762000a6c62000a11565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aaa8262000a7d565b9050919050565b62000abc8162000a9d565b811462000ac857600080fd5b50565b60008151905062000adc8162000ab1565b92915050565b60006020828403121562000afb5762000afa62000a78565b5b600062000b0b8482850162000acb565b91505092915050565b62000b1f8162000a9d565b82525050565b600060408201905062000b3c600083018562000b14565b62000b4b602083018462000b14565b9392505050565b62000b5d8162000923565b82525050565b600060208201905062000b7a600083018462000b52565b92915050565b6147308062000b906000396000f3fe6080604052600436106102cc5760003560e01c806370284d1911610175578063a9059cbb116100dc578063dd62ed3e11610095578063f84ba65d1161006f578063f84ba65d14610b4c578063f887ea4014610b75578063fed0d2a114610ba0578063ffb54a9914610bcb576102d3565b8063dd62ed3e14610aa9578063df20fd4914610ae6578063ef1f153814610b0f576102d3565b8063a9059cbb14610987578063bd9ab537146109c4578063cec10c11146109ed578063d51ed1c814610a16578063d58f2f2714610a53578063dccd8bd214610a7e576102d3565b806395d89b411161012e57806395d89b411461086357806398118cb41461088e57806398be3786146108b957806398e0ae14146108f65780639c75dd3514610933578063a8aa1b311461095c576102d3565b806370284d191461075357806370a082311461077c57806378109e54146107b95780637d1db4a5146107e4578063893d20e81461080f578063936b2d6e1461083a576102d3565b806323b872dd116102345780633c8e556d116101ed5780635921652f116101c75780635921652f146106a9578063658d4b7f146106d45780636b67c4df146106fd5780636ddd171314610728576102d3565b80633c8e556d1461061a5780634be9d86914610643578063571ac8b01461066c576102d3565b806323b872dd146104f65780632885958e146105335780632b112e491461055c5780632f54bf6e146105875780633121c7c0146105c4578063313ce567146105ef576102d3565b80631161ae39116102865780631161ae39146103e6578063180b0d7e1461042357806318160ddd1461044e5780631df4ccfc146104795780631f76a7af146104a4578063201e7991146104cd576102d3565b8062bff446146102d85780630445b6671461030157806306fdde031461032c57806309302dc614610357578063095ea7b3146103805780630e44e6e4146103bd576102d3565b366102d357005b600080fd5b3480156102e457600080fd5b506102ff60048036038101906102fa91906136a0565b610bf6565b005b34801561030d57600080fd5b50610316610d28565b6040516103239190613719565b60405180910390f35b34801561033857600080fd5b50610341610d2e565b60405161034e91906137c4565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613812565b610d6b565b005b34801561038c57600080fd5b506103a760048036038101906103a2919061389d565b610e1b565b6040516103b491906138ec565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613907565b610f0d565b005b3480156103f257600080fd5b5061040d60048036038101906104089190613934565b610fb0565b60405161041a91906138ec565b60405180910390f35b34801561042f57600080fd5b50610438610fc5565b6040516104459190613719565b60405180910390f35b34801561045a57600080fd5b50610463610fcb565b6040516104709190613719565b60405180910390f35b34801561048557600080fd5b5061048e610fd5565b60405161049b9190613719565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906139b2565b610fdb565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190613934565b6110f4565b005b34801561050257600080fd5b5061051d600480360381019061051891906139df565b61114e565b60405161052a91906138ec565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906136a0565b61134e565b005b34801561056857600080fd5b50610571611439565b60405161057e9190613719565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613907565b6114bb565b6040516105bb91906138ec565b60405180910390f35b3480156105d057600080fd5b506105d9611514565b6040516105e69190613719565b60405180910390f35b3480156105fb57600080fd5b5061060461151a565b6040516106119190613a4e565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613a69565b611523565b005b34801561064f57600080fd5b5061066a600480360381019061066591906136a0565b611675565b005b34801561067857600080fd5b50610693600480360381019061068e9190613907565b6117a7565b6040516106a091906138ec565b60405180910390f35b3480156106b557600080fd5b506106be6117da565b6040516106cb9190613719565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613ad0565b6117e0565b005b34801561070957600080fd5b50610712611883565b60405161071f9190613719565b60405180910390f35b34801561073457600080fd5b5061073d611889565b60405161074a91906138ec565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613907565b61189c565b005b34801561078857600080fd5b506107a3600480360381019061079e9190613907565b61193e565b6040516107b09190613719565b60405180910390f35b3480156107c557600080fd5b506107ce611987565b6040516107db9190613719565b60405180910390f35b3480156107f057600080fd5b506107f961198d565b6040516108069190613719565b60405180910390f35b34801561081b57600080fd5b50610824611993565b6040516108319190613b1f565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c91906136a0565b6119bc565b005b34801561086f57600080fd5b50610878611aa7565b60405161088591906137c4565b60405180910390f35b34801561089a57600080fd5b506108a3611ae4565b6040516108b09190613719565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db9190613907565b611aea565b6040516108ed91906138ec565b60405180910390f35b34801561090257600080fd5b5061091d6004803603810190610918919061389d565b611b40565b60405161092a91906138ec565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613812565b611bea565b005b34801561096857600080fd5b50610971611cbb565b60405161097e9190613b1f565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a9919061389d565b611ce1565b6040516109bb91906138ec565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613812565b611cf6565b005b3480156109f957600080fd5b50610a146004803603810190610a0f9190613b3a565b611da6565b005b348015610a2257600080fd5b50610a3d6004803603810190610a389190613812565b611e42565b604051610a4a9190613719565b60405180910390f35b348015610a5f57600080fd5b50610a68611eb4565b604051610a759190613719565b60405180910390f35b348015610a8a57600080fd5b50610a93611eba565b604051610aa09190613719565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb9190613b8d565b611ec0565b604051610add9190613719565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190613bcd565b611f47565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190613907565b611fb4565b604051610b4391906138ec565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190613ad0565b611fd4565b005b348015610b8157600080fd5b50610b8a612077565b604051610b979190613c6c565b60405180910390f35b348015610bac57600080fd5b50610bb561209d565b604051610bc29190613719565b60405180910390f35b348015610bd757600080fd5b50610be06120a3565b604051610bed91906138ec565b60405180910390f35b610bff33611aea565b610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613cd3565b60405180910390fd5b6101f58383905010610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613d65565b60405180910390fd5b60005b83839050811015610d225781600a6000868685818110610cab57610caa613d85565b5b9050602002016020810190610cc09190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d1b90613de3565b9050610c88565b50505050565b601e5481565b60606040518060400160405280601081526020017f444543454e5452414c495a454420414900000000000000000000000000000000815250905090565b610d7433611aea565b610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90613cd3565b60405180910390fd5b600a811015610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613e9d565b60405180910390fd5b6103e881600554610e089190613ebd565b610e129190613f2e565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610efb9190613719565b60405180910390a36001905092915050565b610f1633611aea565b610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613cd3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600082610fbc83611e42565b11905092915050565b60125481565b6000600554905090565b60115481565b610fe433611aea565b611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90613cd3565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110e99190613f80565b60405180910390a150565b6110fd33611aea565b61113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390613cd3565b60405180910390fd5b81601a8190555080601b819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461133a576112b9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61134584848461211a565b90509392505050565b611357336114bb565b611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90613fe7565b60405180910390fd5b60005b838390508110156114335781600c60008686858181106113bc576113bb613d85565b5b90506020020160208101906113d19190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061142c90613de3565b9050611399565b50505050565b60006114b6611469600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6114a8611497600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b60055461273f90919063ffffffff16565b61273f90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61152c33611aea565b61156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613cd3565b60405180910390fd5b83601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61167e33611aea565b6116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490613cd3565b60405180910390fd5b6101f58383905010611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613d65565b60405180910390fd5b60005b838390508110156117a15781600b600086868581811061172a57611729613d85565b5b905060200201602081019061173f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061179a90613de3565b9050611707565b50505050565b60006117d3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e1b565b9050919050565b60155481565b6117e933611aea565b611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613cd3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b601d60159054906101000a900460ff1681565b6118a533611aea565b6118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90613cd3565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119c533611aea565b611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613cd3565b60405180910390fd5b60005b83839050811015611aa15781600c6000868685818110611a2a57611a29613d85565b5b9050602002016020810190611a3f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611a9a90613de3565b9050611a07565b50505050565b60606040518060400160405280600381526020017f4441490000000000000000000000000000000000000000000000000000000000815250905090565b600d5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611b9f929190614007565b6020604051808303816000875af1158015611bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be29190614045565b905092915050565b611bf333611aea565b611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613cd3565b60405180910390fd5b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484611c819190613ebd565b611c8b9190613f2e565b9081150290604051600060405180830381858888f19350505050158015611cb6573d6000803e3d6000fd5b505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cee33848461211a565b905092915050565b611cff33611aea565b611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613cd3565b60405180910390fd5b6001811015611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d79906140e4565b60405180910390fd5b6103e881600554611d939190613ebd565b611d9d9190613f2e565b60068190555050565b611daf33611aea565b611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613cd3565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611e2881611e1a848661278990919063ffffffff16565b61278990919063ffffffff16565b601181905550600a60115410611e3d57600080fd5b505050565b6000611ead611e4f611439565b611e9f611e906002611e82601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6127e790919063ffffffff16565b856127e790919063ffffffff16565b61286190919063ffffffff16565b9050919050565b600f5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f5033611aea565b611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690613cd3565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b611fdd33611aea565b61201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613cd3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b601d60149054906101000a900460ff1681565b60008383111582906120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f591906137c4565b60405180910390fd5b506000838561210d9190614104565b9050809150509392505050565b6000601f60009054906101000a900460ff16156121435761213c8484846128ab565b9050612738565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e75750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561223c57601d60149054906101000a900460ff1661223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614184565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122c257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123765750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d05750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124345760006123e08461193e565b905060075483826123f191906141a4565b1115612432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124299061424a565b60405180910390fd5b505b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d85750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906142b6565b60405180910390fd5b6125218483612a7e565b612529612b1b565b1561253757612536612bf2565b5b6125c0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061260e85613169565b1580612620575061261e84613169565b155b6126345761262f8584866131c0565b612636565b825b905061268a81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161272a9190613719565b60405180910390a360019150505b9392505050565b600061278183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b6565b905092915050565b600080828461279891906141a4565b9050838110156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614322565b60405180910390fd5b8091505092915050565b60008083036127f9576000905061285b565b600082846128079190613ebd565b90508284826128169190613f2e565b14612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284d906143b4565b60405180910390fd5b809150505b92915050565b60006128a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613596565b905092915050565b6000612936826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129cb82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6b9190613719565b60405180910390a3600190509392505050565b60065481111580612ad85750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0e90614420565b60405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b885750601f60009054906101000a900460ff16155b8015612ba05750601d60159054906101000a900460ff165b8015612bed5750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000612c1d601a54601b54610fb0565b612c2957600d54612c2c565b60005b90506000612c6c6002612c5e601154612c5086601e546127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612c8582601e5461273f90919063ffffffff16565b90506000600267ffffffffffffffff811115612ca457612ca3614440565b5b604051908082528060200260200182016040528015612cd25781602001602082028036833780820191505090505b5090503081600081518110612cea57612ce9613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612d5b57612d5a613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dfe959493929190614568565b600060405180830381600087803b158015612e1857600080fd5b505af1158015612e2c573d6000803e3d6000fd5b505050506000612e45824761273f90919063ffffffff16565b90506000612e71612e6060028961286190919063ffffffff16565b60115461273f90919063ffffffff16565b90506000612ead6002612e9f84612e918c886127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612ed883612eca600e54876127e790919063ffffffff16565b61286190919063ffffffff16565b90506000612f0384612ef5600f54886127e790919063ffffffff16565b61286190919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612f51906145f3565b600060405180830381858888f193505050503d8060008114612f8f576040519150601f19603f3d011682016040523d82523d6000602084013e612f94565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612fe2906145f3565b600060405180830381858888f193505050503d8060008114613020576040519150601f19603f3d011682016040523d82523d6000602084013e613025565b606091505b5050809150506000905060008a111561314157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130c196959493929190614608565b60606040518083038185885af11580156130df573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613104919061467e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516131389291906146d1565b60405180910390a15b50505050505050505050506000601f60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613227576013549050613283565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036132825760145490505b5b60006132cc60646012546132979190613ebd565b6132be846132b06011548a6127e790919063ffffffff16565b6127e790919063ffffffff16565b61286190919063ffffffff16565b905060006132f96011546132eb601054856127e790919063ffffffff16565b61286190919063ffffffff16565b90506000613310828461273f90919063ffffffff16565b905061336481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b8260086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b60086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134dd9190613719565b60405180910390a3600082111561357657601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356d9190613719565b60405180910390a35b613589838861273f90919063ffffffff16565b9450505050509392505050565b600080831182906135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d491906137c4565b60405180910390fd5b50600083856135ec9190613f2e565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261362857613627613603565b5b8235905067ffffffffffffffff81111561364557613644613608565b5b6020830191508360208202830111156136615761366061360d565b5b9250929050565b60008115159050919050565b61367d81613668565b811461368857600080fd5b50565b60008135905061369a81613674565b92915050565b6000806000604084860312156136b9576136b86135f9565b5b600084013567ffffffffffffffff8111156136d7576136d66135fe565b5b6136e386828701613612565b935093505060206136f68682870161368b565b9150509250925092565b6000819050919050565b61371381613700565b82525050565b600060208201905061372e600083018461370a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561376e578082015181840152602081019050613753565b60008484015250505050565b6000601f19601f8301169050919050565b600061379682613734565b6137a0818561373f565b93506137b0818560208601613750565b6137b98161377a565b840191505092915050565b600060208201905081810360008301526137de818461378b565b905092915050565b6137ef81613700565b81146137fa57600080fd5b50565b60008135905061380c816137e6565b92915050565b600060208284031215613828576138276135f9565b5b6000613836848285016137fd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061386a8261383f565b9050919050565b61387a8161385f565b811461388557600080fd5b50565b60008135905061389781613871565b92915050565b600080604083850312156138b4576138b36135f9565b5b60006138c285828601613888565b92505060206138d3858286016137fd565b9150509250929050565b6138e681613668565b82525050565b600060208201905061390160008301846138dd565b92915050565b60006020828403121561391d5761391c6135f9565b5b600061392b84828501613888565b91505092915050565b6000806040838503121561394b5761394a6135f9565b5b6000613959858286016137fd565b925050602061396a858286016137fd565b9150509250929050565b600061397f8261383f565b9050919050565b61398f81613974565b811461399a57600080fd5b50565b6000813590506139ac81613986565b92915050565b6000602082840312156139c8576139c76135f9565b5b60006139d68482850161399d565b91505092915050565b6000806000606084860312156139f8576139f76135f9565b5b6000613a0686828701613888565b9350506020613a1786828701613888565b9250506040613a28868287016137fd565b9150509250925092565b600060ff82169050919050565b613a4881613a32565b82525050565b6000602082019050613a636000830184613a3f565b92915050565b60008060008060808587031215613a8357613a826135f9565b5b6000613a9187828801613888565b9450506020613aa287828801613888565b9350506040613ab387828801613888565b9250506060613ac487828801613888565b91505092959194509250565b60008060408385031215613ae757613ae66135f9565b5b6000613af585828601613888565b9250506020613b068582860161368b565b9150509250929050565b613b198161385f565b82525050565b6000602082019050613b346000830184613b10565b92915050565b600080600060608486031215613b5357613b526135f9565b5b6000613b61868287016137fd565b9350506020613b72868287016137fd565b9250506040613b83868287016137fd565b9150509250925092565b60008060408385031215613ba457613ba36135f9565b5b6000613bb285828601613888565b9250506020613bc385828601613888565b9150509250929050565b60008060408385031215613be457613be36135f9565b5b6000613bf28582860161368b565b9250506020613c03858286016137fd565b9150509250929050565b6000819050919050565b6000613c32613c2d613c288461383f565b613c0d565b61383f565b9050919050565b6000613c4482613c17565b9050919050565b6000613c5682613c39565b9050919050565b613c6681613c4b565b82525050565b6000602082019050613c816000830184613c5d565b92915050565b7f214752414e544544000000000000000000000000000000000000000000000000600082015250565b6000613cbd60088361373f565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613d4f60258361373f565b9150613d5a82613cf3565b604082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613dee82613700565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2057613e1f613db4565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613e8760308361373f565b9150613e9282613e2b565b604082019050919050565b60006020820190508181036000830152613eb681613e7a565b9050919050565b6000613ec882613700565b9150613ed383613700565b9250828202613ee181613700565b91508282048414831517613ef857613ef7613db4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f3982613700565b9150613f4483613700565b925082613f5457613f53613eff565b5b828204905092915050565b6000613f6a82613c39565b9050919050565b613f7a81613f5f565b82525050565b6000602082019050613f956000830184613f71565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613fd160068361373f565b9150613fdc82613f9b565b602082019050919050565b6000602082019050818103600083015261400081613fc4565b9050919050565b600060408201905061401c6000830185613b10565b614029602083018461370a565b9392505050565b60008151905061403f81613674565b92915050565b60006020828403121561405b5761405a6135f9565b5b600061406984828501614030565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140ce60378361373f565b91506140d982614072565b604082019050919050565b600060208201905081810360008301526140fd816140c1565b9050919050565b600061410f82613700565b915061411a83613700565b925082820390508181111561413257614131613db4565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061416e60148361373f565b915061417982614138565b602082019050919050565b6000602082019050818103600083015261419d81614161565b9050919050565b60006141af82613700565b91506141ba83613700565b92508282019050808211156141d2576141d1613db4565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614234603e8361373f565b915061423f826141d8565b604082019050919050565b6000602082019050818103600083015261426381614227565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b60006142a060138361373f565b91506142ab8261426a565b602082019050919050565b600060208201905081810360008301526142cf81614293565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061430c601b8361373f565b9150614317826142d6565b602082019050919050565b6000602082019050818103600083015261433b816142ff565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061439e60218361373f565b91506143a982614342565b604082019050919050565b600060208201905081810360008301526143cd81614391565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061440a60118361373f565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061449461448f61448a8461446f565b613c0d565b613700565b9050919050565b6144a481614479565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144df8161385f565b82525050565b60006144f183836144d6565b60208301905092915050565b6000602082019050919050565b6000614515826144aa565b61451f81856144b5565b935061452a836144c6565b8060005b8381101561455b57815161454288826144e5565b975061454d836144fd565b92505060018101905061452e565b5085935050505092915050565b600060a08201905061457d600083018861370a565b61458a602083018761449b565b818103604083015261459c818661450a565b90506145ab6060830185613b10565b6145b8608083018461370a565b9695505050505050565b600081905092915050565b50565b60006145dd6000836145c2565b91506145e8826145cd565b600082019050919050565b60006145fe826145d0565b9150819050919050565b600060c08201905061461d6000830189613b10565b61462a602083018861370a565b614637604083018761449b565b614644606083018661449b565b6146516080830185613b10565b61465e60a083018461370a565b979650505050505050565b600081519050614678816137e6565b92915050565b600080600060608486031215614697576146966135f9565b5b60006146a586828701614669565b93505060206146b686828701614669565b92505060406146c786828701614669565b9150509250925092565b60006040820190506146e6600083018561370a565b6146f3602083018461370a565b939250505056fea26469706673582212201b3ee533b82dea58ff3073848d49a2026762fc60faf0f5312753c4afb287ac2764736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102cc5760003560e01c806370284d1911610175578063a9059cbb116100dc578063dd62ed3e11610095578063f84ba65d1161006f578063f84ba65d14610b4c578063f887ea4014610b75578063fed0d2a114610ba0578063ffb54a9914610bcb576102d3565b8063dd62ed3e14610aa9578063df20fd4914610ae6578063ef1f153814610b0f576102d3565b8063a9059cbb14610987578063bd9ab537146109c4578063cec10c11146109ed578063d51ed1c814610a16578063d58f2f2714610a53578063dccd8bd214610a7e576102d3565b806395d89b411161012e57806395d89b411461086357806398118cb41461088e57806398be3786146108b957806398e0ae14146108f65780639c75dd3514610933578063a8aa1b311461095c576102d3565b806370284d191461075357806370a082311461077c57806378109e54146107b95780637d1db4a5146107e4578063893d20e81461080f578063936b2d6e1461083a576102d3565b806323b872dd116102345780633c8e556d116101ed5780635921652f116101c75780635921652f146106a9578063658d4b7f146106d45780636b67c4df146106fd5780636ddd171314610728576102d3565b80633c8e556d1461061a5780634be9d86914610643578063571ac8b01461066c576102d3565b806323b872dd146104f65780632885958e146105335780632b112e491461055c5780632f54bf6e146105875780633121c7c0146105c4578063313ce567146105ef576102d3565b80631161ae39116102865780631161ae39146103e6578063180b0d7e1461042357806318160ddd1461044e5780631df4ccfc146104795780631f76a7af146104a4578063201e7991146104cd576102d3565b8062bff446146102d85780630445b6671461030157806306fdde031461032c57806309302dc614610357578063095ea7b3146103805780630e44e6e4146103bd576102d3565b366102d357005b600080fd5b3480156102e457600080fd5b506102ff60048036038101906102fa91906136a0565b610bf6565b005b34801561030d57600080fd5b50610316610d28565b6040516103239190613719565b60405180910390f35b34801561033857600080fd5b50610341610d2e565b60405161034e91906137c4565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613812565b610d6b565b005b34801561038c57600080fd5b506103a760048036038101906103a2919061389d565b610e1b565b6040516103b491906138ec565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613907565b610f0d565b005b3480156103f257600080fd5b5061040d60048036038101906104089190613934565b610fb0565b60405161041a91906138ec565b60405180910390f35b34801561042f57600080fd5b50610438610fc5565b6040516104459190613719565b60405180910390f35b34801561045a57600080fd5b50610463610fcb565b6040516104709190613719565b60405180910390f35b34801561048557600080fd5b5061048e610fd5565b60405161049b9190613719565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906139b2565b610fdb565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190613934565b6110f4565b005b34801561050257600080fd5b5061051d600480360381019061051891906139df565b61114e565b60405161052a91906138ec565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906136a0565b61134e565b005b34801561056857600080fd5b50610571611439565b60405161057e9190613719565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613907565b6114bb565b6040516105bb91906138ec565b60405180910390f35b3480156105d057600080fd5b506105d9611514565b6040516105e69190613719565b60405180910390f35b3480156105fb57600080fd5b5061060461151a565b6040516106119190613a4e565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613a69565b611523565b005b34801561064f57600080fd5b5061066a600480360381019061066591906136a0565b611675565b005b34801561067857600080fd5b50610693600480360381019061068e9190613907565b6117a7565b6040516106a091906138ec565b60405180910390f35b3480156106b557600080fd5b506106be6117da565b6040516106cb9190613719565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613ad0565b6117e0565b005b34801561070957600080fd5b50610712611883565b60405161071f9190613719565b60405180910390f35b34801561073457600080fd5b5061073d611889565b60405161074a91906138ec565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613907565b61189c565b005b34801561078857600080fd5b506107a3600480360381019061079e9190613907565b61193e565b6040516107b09190613719565b60405180910390f35b3480156107c557600080fd5b506107ce611987565b6040516107db9190613719565b60405180910390f35b3480156107f057600080fd5b506107f961198d565b6040516108069190613719565b60405180910390f35b34801561081b57600080fd5b50610824611993565b6040516108319190613b1f565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c91906136a0565b6119bc565b005b34801561086f57600080fd5b50610878611aa7565b60405161088591906137c4565b60405180910390f35b34801561089a57600080fd5b506108a3611ae4565b6040516108b09190613719565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db9190613907565b611aea565b6040516108ed91906138ec565b60405180910390f35b34801561090257600080fd5b5061091d6004803603810190610918919061389d565b611b40565b60405161092a91906138ec565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613812565b611bea565b005b34801561096857600080fd5b50610971611cbb565b60405161097e9190613b1f565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a9919061389d565b611ce1565b6040516109bb91906138ec565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613812565b611cf6565b005b3480156109f957600080fd5b50610a146004803603810190610a0f9190613b3a565b611da6565b005b348015610a2257600080fd5b50610a3d6004803603810190610a389190613812565b611e42565b604051610a4a9190613719565b60405180910390f35b348015610a5f57600080fd5b50610a68611eb4565b604051610a759190613719565b60405180910390f35b348015610a8a57600080fd5b50610a93611eba565b604051610aa09190613719565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb9190613b8d565b611ec0565b604051610add9190613719565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190613bcd565b611f47565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190613907565b611fb4565b604051610b4391906138ec565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190613ad0565b611fd4565b005b348015610b8157600080fd5b50610b8a612077565b604051610b979190613c6c565b60405180910390f35b348015610bac57600080fd5b50610bb561209d565b604051610bc29190613719565b60405180910390f35b348015610bd757600080fd5b50610be06120a3565b604051610bed91906138ec565b60405180910390f35b610bff33611aea565b610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613cd3565b60405180910390fd5b6101f58383905010610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613d65565b60405180910390fd5b60005b83839050811015610d225781600a6000868685818110610cab57610caa613d85565b5b9050602002016020810190610cc09190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d1b90613de3565b9050610c88565b50505050565b601e5481565b60606040518060400160405280601081526020017f444543454e5452414c495a454420414900000000000000000000000000000000815250905090565b610d7433611aea565b610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90613cd3565b60405180910390fd5b600a811015610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613e9d565b60405180910390fd5b6103e881600554610e089190613ebd565b610e129190613f2e565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610efb9190613719565b60405180910390a36001905092915050565b610f1633611aea565b610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613cd3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600082610fbc83611e42565b11905092915050565b60125481565b6000600554905090565b60115481565b610fe433611aea565b611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90613cd3565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110e99190613f80565b60405180910390a150565b6110fd33611aea565b61113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390613cd3565b60405180910390fd5b81601a8190555080601b819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461133a576112b9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61134584848461211a565b90509392505050565b611357336114bb565b611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90613fe7565b60405180910390fd5b60005b838390508110156114335781600c60008686858181106113bc576113bb613d85565b5b90506020020160208101906113d19190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061142c90613de3565b9050611399565b50505050565b60006114b6611469600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6114a8611497600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b60055461273f90919063ffffffff16565b61273f90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61152c33611aea565b61156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613cd3565b60405180910390fd5b83601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61167e33611aea565b6116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490613cd3565b60405180910390fd5b6101f58383905010611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613d65565b60405180910390fd5b60005b838390508110156117a15781600b600086868581811061172a57611729613d85565b5b905060200201602081019061173f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061179a90613de3565b9050611707565b50505050565b60006117d3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e1b565b9050919050565b60155481565b6117e933611aea565b611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613cd3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b601d60159054906101000a900460ff1681565b6118a533611aea565b6118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90613cd3565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119c533611aea565b611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613cd3565b60405180910390fd5b60005b83839050811015611aa15781600c6000868685818110611a2a57611a29613d85565b5b9050602002016020810190611a3f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611a9a90613de3565b9050611a07565b50505050565b60606040518060400160405280600381526020017f4441490000000000000000000000000000000000000000000000000000000000815250905090565b600d5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611b9f929190614007565b6020604051808303816000875af1158015611bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be29190614045565b905092915050565b611bf333611aea565b611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613cd3565b60405180910390fd5b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484611c819190613ebd565b611c8b9190613f2e565b9081150290604051600060405180830381858888f19350505050158015611cb6573d6000803e3d6000fd5b505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cee33848461211a565b905092915050565b611cff33611aea565b611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613cd3565b60405180910390fd5b6001811015611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d79906140e4565b60405180910390fd5b6103e881600554611d939190613ebd565b611d9d9190613f2e565b60068190555050565b611daf33611aea565b611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613cd3565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611e2881611e1a848661278990919063ffffffff16565b61278990919063ffffffff16565b601181905550600a60115410611e3d57600080fd5b505050565b6000611ead611e4f611439565b611e9f611e906002611e82601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6127e790919063ffffffff16565b856127e790919063ffffffff16565b61286190919063ffffffff16565b9050919050565b600f5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f5033611aea565b611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690613cd3565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b611fdd33611aea565b61201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613cd3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b601d60149054906101000a900460ff1681565b60008383111582906120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f591906137c4565b60405180910390fd5b506000838561210d9190614104565b9050809150509392505050565b6000601f60009054906101000a900460ff16156121435761213c8484846128ab565b9050612738565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e75750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561223c57601d60149054906101000a900460ff1661223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614184565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122c257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123765750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d05750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124345760006123e08461193e565b905060075483826123f191906141a4565b1115612432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124299061424a565b60405180910390fd5b505b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d85750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906142b6565b60405180910390fd5b6125218483612a7e565b612529612b1b565b1561253757612536612bf2565b5b6125c0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061260e85613169565b1580612620575061261e84613169565b155b6126345761262f8584866131c0565b612636565b825b905061268a81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161272a9190613719565b60405180910390a360019150505b9392505050565b600061278183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b6565b905092915050565b600080828461279891906141a4565b9050838110156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614322565b60405180910390fd5b8091505092915050565b60008083036127f9576000905061285b565b600082846128079190613ebd565b90508284826128169190613f2e565b14612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284d906143b4565b60405180910390fd5b809150505b92915050565b60006128a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613596565b905092915050565b6000612936826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129cb82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6b9190613719565b60405180910390a3600190509392505050565b60065481111580612ad85750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0e90614420565b60405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b885750601f60009054906101000a900460ff16155b8015612ba05750601d60159054906101000a900460ff165b8015612bed5750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000612c1d601a54601b54610fb0565b612c2957600d54612c2c565b60005b90506000612c6c6002612c5e601154612c5086601e546127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612c8582601e5461273f90919063ffffffff16565b90506000600267ffffffffffffffff811115612ca457612ca3614440565b5b604051908082528060200260200182016040528015612cd25781602001602082028036833780820191505090505b5090503081600081518110612cea57612ce9613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612d5b57612d5a613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dfe959493929190614568565b600060405180830381600087803b158015612e1857600080fd5b505af1158015612e2c573d6000803e3d6000fd5b505050506000612e45824761273f90919063ffffffff16565b90506000612e71612e6060028961286190919063ffffffff16565b60115461273f90919063ffffffff16565b90506000612ead6002612e9f84612e918c886127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612ed883612eca600e54876127e790919063ffffffff16565b61286190919063ffffffff16565b90506000612f0384612ef5600f54886127e790919063ffffffff16565b61286190919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612f51906145f3565b600060405180830381858888f193505050503d8060008114612f8f576040519150601f19603f3d011682016040523d82523d6000602084013e612f94565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612fe2906145f3565b600060405180830381858888f193505050503d8060008114613020576040519150601f19603f3d011682016040523d82523d6000602084013e613025565b606091505b5050809150506000905060008a111561314157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130c196959493929190614608565b60606040518083038185885af11580156130df573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613104919061467e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516131389291906146d1565b60405180910390a15b50505050505050505050506000601f60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613227576013549050613283565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036132825760145490505b5b60006132cc60646012546132979190613ebd565b6132be846132b06011548a6127e790919063ffffffff16565b6127e790919063ffffffff16565b61286190919063ffffffff16565b905060006132f96011546132eb601054856127e790919063ffffffff16565b61286190919063ffffffff16565b90506000613310828461273f90919063ffffffff16565b905061336481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b8260086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b60086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134dd9190613719565b60405180910390a3600082111561357657601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356d9190613719565b60405180910390a35b613589838861273f90919063ffffffff16565b9450505050509392505050565b600080831182906135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d491906137c4565b60405180910390fd5b50600083856135ec9190613f2e565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261362857613627613603565b5b8235905067ffffffffffffffff81111561364557613644613608565b5b6020830191508360208202830111156136615761366061360d565b5b9250929050565b60008115159050919050565b61367d81613668565b811461368857600080fd5b50565b60008135905061369a81613674565b92915050565b6000806000604084860312156136b9576136b86135f9565b5b600084013567ffffffffffffffff8111156136d7576136d66135fe565b5b6136e386828701613612565b935093505060206136f68682870161368b565b9150509250925092565b6000819050919050565b61371381613700565b82525050565b600060208201905061372e600083018461370a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561376e578082015181840152602081019050613753565b60008484015250505050565b6000601f19601f8301169050919050565b600061379682613734565b6137a0818561373f565b93506137b0818560208601613750565b6137b98161377a565b840191505092915050565b600060208201905081810360008301526137de818461378b565b905092915050565b6137ef81613700565b81146137fa57600080fd5b50565b60008135905061380c816137e6565b92915050565b600060208284031215613828576138276135f9565b5b6000613836848285016137fd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061386a8261383f565b9050919050565b61387a8161385f565b811461388557600080fd5b50565b60008135905061389781613871565b92915050565b600080604083850312156138b4576138b36135f9565b5b60006138c285828601613888565b92505060206138d3858286016137fd565b9150509250929050565b6138e681613668565b82525050565b600060208201905061390160008301846138dd565b92915050565b60006020828403121561391d5761391c6135f9565b5b600061392b84828501613888565b91505092915050565b6000806040838503121561394b5761394a6135f9565b5b6000613959858286016137fd565b925050602061396a858286016137fd565b9150509250929050565b600061397f8261383f565b9050919050565b61398f81613974565b811461399a57600080fd5b50565b6000813590506139ac81613986565b92915050565b6000602082840312156139c8576139c76135f9565b5b60006139d68482850161399d565b91505092915050565b6000806000606084860312156139f8576139f76135f9565b5b6000613a0686828701613888565b9350506020613a1786828701613888565b9250506040613a28868287016137fd565b9150509250925092565b600060ff82169050919050565b613a4881613a32565b82525050565b6000602082019050613a636000830184613a3f565b92915050565b60008060008060808587031215613a8357613a826135f9565b5b6000613a9187828801613888565b9450506020613aa287828801613888565b9350506040613ab387828801613888565b9250506060613ac487828801613888565b91505092959194509250565b60008060408385031215613ae757613ae66135f9565b5b6000613af585828601613888565b9250506020613b068582860161368b565b9150509250929050565b613b198161385f565b82525050565b6000602082019050613b346000830184613b10565b92915050565b600080600060608486031215613b5357613b526135f9565b5b6000613b61868287016137fd565b9350506020613b72868287016137fd565b9250506040613b83868287016137fd565b9150509250925092565b60008060408385031215613ba457613ba36135f9565b5b6000613bb285828601613888565b9250506020613bc385828601613888565b9150509250929050565b60008060408385031215613be457613be36135f9565b5b6000613bf28582860161368b565b9250506020613c03858286016137fd565b9150509250929050565b6000819050919050565b6000613c32613c2d613c288461383f565b613c0d565b61383f565b9050919050565b6000613c4482613c17565b9050919050565b6000613c5682613c39565b9050919050565b613c6681613c4b565b82525050565b6000602082019050613c816000830184613c5d565b92915050565b7f214752414e544544000000000000000000000000000000000000000000000000600082015250565b6000613cbd60088361373f565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613d4f60258361373f565b9150613d5a82613cf3565b604082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613dee82613700565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2057613e1f613db4565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613e8760308361373f565b9150613e9282613e2b565b604082019050919050565b60006020820190508181036000830152613eb681613e7a565b9050919050565b6000613ec882613700565b9150613ed383613700565b9250828202613ee181613700565b91508282048414831517613ef857613ef7613db4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f3982613700565b9150613f4483613700565b925082613f5457613f53613eff565b5b828204905092915050565b6000613f6a82613c39565b9050919050565b613f7a81613f5f565b82525050565b6000602082019050613f956000830184613f71565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613fd160068361373f565b9150613fdc82613f9b565b602082019050919050565b6000602082019050818103600083015261400081613fc4565b9050919050565b600060408201905061401c6000830185613b10565b614029602083018461370a565b9392505050565b60008151905061403f81613674565b92915050565b60006020828403121561405b5761405a6135f9565b5b600061406984828501614030565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140ce60378361373f565b91506140d982614072565b604082019050919050565b600060208201905081810360008301526140fd816140c1565b9050919050565b600061410f82613700565b915061411a83613700565b925082820390508181111561413257614131613db4565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061416e60148361373f565b915061417982614138565b602082019050919050565b6000602082019050818103600083015261419d81614161565b9050919050565b60006141af82613700565b91506141ba83613700565b92508282019050808211156141d2576141d1613db4565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614234603e8361373f565b915061423f826141d8565b604082019050919050565b6000602082019050818103600083015261426381614227565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b60006142a060138361373f565b91506142ab8261426a565b602082019050919050565b600060208201905081810360008301526142cf81614293565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061430c601b8361373f565b9150614317826142d6565b602082019050919050565b6000602082019050818103600083015261433b816142ff565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061439e60218361373f565b91506143a982614342565b604082019050919050565b600060208201905081810360008301526143cd81614391565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061440a60118361373f565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061449461448f61448a8461446f565b613c0d565b613700565b9050919050565b6144a481614479565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144df8161385f565b82525050565b60006144f183836144d6565b60208301905092915050565b6000602082019050919050565b6000614515826144aa565b61451f81856144b5565b935061452a836144c6565b8060005b8381101561455b57815161454288826144e5565b975061454d836144fd565b92505060018101905061452e565b5085935050505092915050565b600060a08201905061457d600083018861370a565b61458a602083018761449b565b818103604083015261459c818661450a565b90506145ab6060830185613b10565b6145b8608083018461370a565b9695505050505050565b600081905092915050565b50565b60006145dd6000836145c2565b91506145e8826145cd565b600082019050919050565b60006145fe826145d0565b9150819050919050565b600060c08201905061461d6000830189613b10565b61462a602083018861370a565b614637604083018761449b565b614644606083018661449b565b6146516080830185613b10565b61465e60a083018461370a565b979650505050505050565b600081519050614678816137e6565b92915050565b600080600060608486031215614697576146966135f9565b5b60006146a586828701614669565b93505060206146b686828701614669565b92505060406146c786828701614669565b9150509250925092565b60006040820190506146e6600083018561370a565b6146f3602083018461370a565b939250505056fea26469706673582212201b3ee533b82dea58ff3073848d49a2026762fc60faf0f5312753c4afb287ac2764736f6c63430008120033

Deployed Bytecode Sourcemap

4853:12919:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15430:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6557:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7664:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14133:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8086:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2838:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17363:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7394:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5893:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3159:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16846:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8818:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17517:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17038:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2936:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6076:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7488:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16292:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15728:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8310:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6118:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16034:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5767:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6520:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2742:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7834:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5392:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5322:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7750:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8468:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7574:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5725:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3047:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14917:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14703:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6453:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8654:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14417:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15096:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17188:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5809:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5851;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7945:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16685:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5674:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16159:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6422:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6033:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6481:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15430:290;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15554:3:::1;15535:9;;:16;;:22;15527:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15614:9;15609:104;15629:9;;:16;;15625:1;:20;15609:104;;;15695:6;15667:11;:25;15679:9;;15689:1;15679:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15667:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15647:3;;;;:::i;:::-;;;15609:104;;;;15430:290:::0;;;:::o;6557:49::-;;;;:::o;7664:80::-;7712:13;7736:5;;;;;;;;;;;;;;;;;7729:12;;7664:80;:::o;14133:276::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14269:2:::1;14242:23;:29;;14234:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14397:4;14369:23;14354:12;;:38;;;;:::i;:::-;14353:48;;;;:::i;:::-;14335:15;:66;;;;14133:276:::0;:::o;8086:216::-;8161:4;8213:6;8178:11;:23;8190:10;8178:23;;;;;;;;;;;;;;;:32;8202:7;8178:32;;;;;;;;;;;;;;;:41;;;;8256:7;8235:37;;8244:10;8235:37;;;8265:6;8235:37;;;;;;:::i;:::-;;;;;;;;8290:4;8283:11;;8086:216;;;;:::o;2838:90::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2915:5:::1;2893:14;:19;2908:3;2893:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2838:90:::0;:::o;17363:150::-;17443:4;17499:6;17467:29;17487:8;17467:19;:29::i;:::-;:38;17460:45;;17363:150;;;;:::o;5987:37::-;;;;:::o;7394:88::-;7449:7;7467:12;;7460:19;;7394:88;:::o;5893:87::-;;;;:::o;3159:162::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;3232:3:::1;3224:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3268:4;3246:14:::0;:19:::1;3261:3;3246:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3288:25;3309:3;3288:25;;;;;;:::i;:::-;;;;;;;;3159:162:::0;:::o;16846:180::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16959:7:::1;16941:15;:25;;;;17006:12;16977:26;:41;;;;16846:180:::0;;:::o;8818:370::-;8918:4;8973:17;8938:11;:19;8950:6;8938:19;;;;;;;;;;;;;;;:31;8958:10;8938:31;;;;;;;;;;;;;;;;:52;8935:186;;9040:69;9076:6;9040:69;;;;;;;;;;;;;;;;;:11;:19;9052:6;9040:19;;;;;;;;;;;;;;;:31;9060:10;9040:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9006:11;:19;9018:6;9006:19;;;;;;;;;;;;;;;:31;9026:10;9006:31;;;;;;;;;;;;;;;:103;;;;8935:186;9140:40;9154:6;9162:9;9173:6;9140:13;:40::i;:::-;9133:47;;8818:370;;;;;:::o;17517:187::-;2600:19;2608:10;2600:7;:19::i;:::-;2592:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17612:9:::1;17607:94;17627:9;;:16;;17623:1;:20;17607:94;;;17687:6;17661:9;:23;17671:9;;17681:1;17671:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17661:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17645:3;;;;:::i;:::-;;;17607:94;;;;17517:187:::0;;;:::o;17038:142::-;17091:7;17118:54;17156:15;17166:4;;;;;;;;;;;17156:9;:15::i;:::-;17118:33;17135:15;17145:4;;;;;;;;;;;17135:9;:15::i;:::-;17118:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;17111:61;;17038:142;:::o;2936:103::-;2991:4;3026:5;;;;;;;;;;;3015:16;;:7;:16;;;3008:23;;2936:103;;;:::o;6076:35::-;;;;:::o;7488:80::-;7540:5;5244:1;7549:16;;7488:80;:::o;16292:385::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16490:22:::1;16466:21;;:46;;;;;;;;;;;;;;;;;;16546:21;16523:20;;:44;;;;;;;;;;;;;;;;;;16599:19;16578:18;;:40;;;;;;;;;;;;;;;;;;16650:19;16629:18;;:40;;;;;;;;;;;;;;;;;;16292:385:::0;;;;:::o;15728:298::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15856:3:::1;15837:9;;:16;;:22;15829:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15916:9;15911:108;15931:9;;:16;;15927:1;:20;15911:108;;;16001:6;15969:15;:29;15985:9;;15995:1;15985:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15969:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15949:3;;;;:::i;:::-;;;15911:108;;;;15728:298:::0;;;:::o;8310:122::-;8365:4;8389:35;8397:7;8406:17;8389:7;:35::i;:::-;8382:42;;8310:122;;;:::o;6118:40::-;;;;:::o;16034:117::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16137:6:::1;16115:11;:19;16127:6;16115:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16034:117:::0;;:::o;5767:35::-;;;;:::o;6520:30::-;;;;;;;;;;;;;:::o;2742:88::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2818:4:::1;2796:14:::0;:19:::1;2811:3;2796:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2742:88:::0;:::o;7834:105::-;7900:7;7918:9;:18;7928:7;7918:18;;;;;;;;;;;;;;;;7911:25;;7834:105;;;:::o;5392:66::-;;;;:::o;5322:63::-;;;;:::o;7750:78::-;7802:7;7820:5;;;;;;;;;;;7813:12;;7750:78;:::o;8468:178::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8554:9:::1;8549:94;8569:9;;:16;;8565:1;:20;8549:94;;;8629:6;8603:9;:23;8613:9;;8623:1;8613:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8603:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8587:3;;;;:::i;:::-;;;8549:94;;;;8468:178:::0;;;:::o;7574:84::-;7624:13;7648:7;;;;;;;;;;;;;;;;;7641:14;;7574:84;:::o;5725:35::-;;;;:::o;3047:104::-;3100:4;3124:14;:19;3139:3;3124:19;;;;;;;;;;;;;;;;;;;;;;;;;3117:26;;3047:104;;;:::o;14917:171::-;14989:12;15028;15021:29;;;15051:20;;;;;;;;;;;15073:6;15021:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15014:66;;14917:171;;;;:::o;14703:206::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14775:17:::1;14795:21;14775:41;;14835:20;;;;;;;;;;;14827:38;;:74;14897:3;14878:16;14866:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14827:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14764:145;14703:206:::0;:::o;6453:19::-;;;;;;;;;;;;;:::o;8654:156::-;8734:4;8758:44;8772:10;8784:9;8795:6;8758:13;:44::i;:::-;8751:51;;8654:156;;;;:::o;14417:278::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14551:1:::1;14523:24;:29;;14515:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14683:4;14654:24;14639:12;;:39;;;;:::i;:::-;14638:49;;;;:::i;:::-;14623:12;:64;;;;14417:278:::0;:::o;15096:326::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15223:13:::1;15208:12;:28;;;;15262:13;15247:12;:28;;;;15299:11;15286:10;:24;;;;15332:49;15369:11;15332:32;15350:13;15332;:17;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;15321:8;:60;;;;15411:2;15400:8;;:13;15392:22;;;::::0;::::1;;15096:326:::0;;;:::o;17188:167::-;17256:7;17283:64;17324:22;:20;:22::i;:::-;17283:36;17296:22;17316:1;17296:15;17306:4;;;;;;;;;;;17296:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;17283:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;17276:71;;17188:167;;;:::o;5809:35::-;;;;:::o;5851:::-;;;;:::o;7945:133::-;8029:7;8047:11;:19;8059:6;8047:19;;;;;;;;;;;;;;;:28;8067:7;8047:28;;;;;;;;;;;;;;;;8040:35;;7945:133;;;;:::o;16685:153::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16788:8:::1;16774:11;;:22;;;;;;;;;;;;;;;;;;16823:7;16807:13;:23;;;;16685:153:::0;;:::o;5674:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;16159:125::-;2687:21;2697:10;2687:9;:21::i;:::-;2679:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16270:6:::1;16244:15;:23;16260:6;16244:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16159:125:::0;;:::o;6422:24::-;;;;;;;;;;;;;:::o;6033:36::-;;;;:::o;6481:30::-;;;;;;;;;;;;;:::o;632:192::-;718:7;751:1;746;:6;;754:12;738:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;778:9;794:1;790;:5;;;;:::i;:::-;778:17;;815:1;808:8;;;632:192;;;;;:::o;9196:1325::-;9288:4;9308:6;;;;;;;;;;;9305:63;;;9324:41;9339:6;9347:9;9358:6;9324:14;:41::i;:::-;9317:48;;;;9305:63;9384:14;:22;9399:6;9384:22;;;;;;;;;;;;;;;;;;;;;;;;;9383:23;:53;;;;;9411:14;:25;9426:9;9411:25;;;;;;;;;;;;;;;;;;;;;;;;;9410:26;9383:53;9380:127;;;9460:11;;;;;;;;;;;9452:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9380:127;9524:14;:22;9539:6;9524:22;;;;;;;;;;;;;;;;;;;;;;;;;9523:23;:53;;;;;9571:4;9550:26;;:9;:26;;;;9523:53;:84;;;;;9602:4;;;;;;;;;;;9581:26;;:9;:26;;;;9523:84;:105;;;;;9624:4;;;;;;;;;;;9611:17;;:9;:17;;;;9523:105;:140;;;;;9645:18;;;;;;;;;;;9632:31;;:9;:31;;;;9523:140;9519:332;;;9679:18;9700:20;9710:9;9700;:20::i;:::-;9679:41;;9768:15;;9757:6;9744:10;:19;;;;:::i;:::-;9743:40;;9735:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;9664:187;9519:332;9911:9;:20;9921:9;9911:20;;;;;;;;;;;;;;;;;;;;;;;;;9910:21;:43;;;;;9936:9;:17;9946:6;9936:17;;;;;;;;;;;;;;;;;;;;;;;;;9935:18;9910:43;9902:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10031:28;10044:6;10052;10031:12;:28::i;:::-;10075:16;:14;:16::i;:::-;10072:35;;;10094:10;:8;:10::i;:::-;10072:35;10166:53;10188:6;10166:53;;;;;;;;;;;;;;;;;:9;:17;10176:6;10166:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10146:9;:17;10156:6;10146:17;;;;;;;;;;;;;;;:73;;;;10232:22;10259:21;10273:6;10259:13;:21::i;:::-;10258:22;:51;;;;10285:24;10299:9;10285:13;:24::i;:::-;10284:25;10258:51;10257:99;;10322:34;10330:6;10338;10346:9;10322:7;:34::i;:::-;10257:99;;;10313:6;10257:99;10232:124;;10390:40;10415:14;10390:9;:20;10400:9;10390:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10367:9;:20;10377:9;10367:20;;;;;;;;;;;;;;;:63;;;;10465:9;10448:43;;10457:6;10448:43;;;10476:14;10448:43;;;;;;:::i;:::-;;;;;;;;10509:4;10502:11;;;9196:1325;;;;;;:::o;490:136::-;548:7;575:43;579:1;582;575:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;568:50;;490:136;;;;:::o;303:181::-;361:7;381:9;397:1;393;:5;;;;:::i;:::-;381:17;;422:1;417;:6;;409:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;475:1;468:8;;;303:181;;;;:::o;830:250::-;888:7;917:1;912;:6;908:47;;942:1;935:8;;;;908:47;967:9;983:1;979;:5;;;;:::i;:::-;967:17;;1012:1;1007;1003;:5;;;;:::i;:::-;:10;995:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1071:1;1064:8;;;830:250;;;;;:::o;1086:132::-;1144:7;1171:39;1175:1;1178;1171:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1164:46;;1086:132;;;;:::o;10533:330::-;10626:4;10663:53;10685:6;10663:53;;;;;;;;;;;;;;;;;:9;:17;10673:6;10663:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10643:9;:17;10653:6;10643:17;;;;;;;;;;;;;;;:73;;;;10750:32;10775:6;10750:9;:20;10760:9;10750:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10727:9;:20;10737:9;10727:20;;;;;;;;;;;;;;;:55;;;;10815:9;10798:35;;10807:6;10798:35;;;10826:6;10798:35;;;;;;:::i;:::-;;;;;;;;10851:4;10844:11;;10533:330;;;;;:::o;10871:166::-;10968:12;;10958:6;:22;;:49;;;;10984:15;:23;11000:6;10984:23;;;;;;;;;;;;;;;;;;;;;;;;;10958:49;10950:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10871:166;;:::o;12142:197::-;12191:4;12229;;;;;;;;;;;12215:18;;:10;:18;;;;:38;;;;;12247:6;;;;;;;;;;;12246:7;12215:38;:62;;;;;12266:11;;;;;;;;;;;12215:62;:116;;;;;12318:13;;12290:9;:24;12308:4;12290:24;;;;;;;;;;;;;;;;:41;;12215:116;12208:123;;12142:197;:::o;12347:1745::-;6662:4;6653:6;;:13;;;;;;;;;;;;;;;;;;12396:27:::1;12426:60;12442:15;;12459:26;;12426:15;:60::i;:::-;:79;;12493:12;;12426:79;;;12489:1;12426:79;12396:109;;12516:23;12542:59;12599:1;12542:52;12585:8;;12542:38;12560:19;12542:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;12516:85;;12612:20;12635:34;12653:15;12635:13;;:17;;:34;;;;:::i;:::-;12612:57;;12682:21;12720:1;12706:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12682:40;;12751:4;12733;12738:1;12733:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12777:4;;;;;;;;;;;12767;12772:1;12767:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;12794:21;12818;12794:45;;12852:6;;;;;;;;;;;:57;;;12924:12;12951:1;12967:4;12994;13014:15;12852:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13053:17;13073:40;13099:13;13073:21;:25;;:40;;;;:::i;:::-;13053:60;;13126:19;13148:40;13161:26;13185:1;13161:19;:23;;:26;;;;:::i;:::-;13148:8;;:12;;:40;;;;:::i;:::-;13126:62;;13209:26;13238:58;13294:1;13238:51;13277:11;13238:34;13252:19;13238:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;13209:87;;13307:26;13336:44;13368:11;13336:27;13350:12;;13336:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;13307:73;;13391:24;13418:42;13448:11;13418:25;13432:10;;13418:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;13391:69;;13474:15;13502:20;;;;;;;;;;;13494:34;;13536:18;13561:5;13494:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13473:98;;;13606:18;;;;;;;;;;;13598:32;;13638:16;13661:5;13598:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13582:89;;;;;13705:5;13692:18;;13744:1;13726:15;:19;13723:362;;;13761:6;;;;;;;;;;;:22;;;13791:18;13837:4;13861:15;13895:1;13915::::0;13935:21:::1;;;;;;;;;;;13975:15;13761:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14025:48;14037:18;14057:15;14025:48;;;;;;;:::i;:::-;;;;;;;;13723:362;12385:1707;;;;;;;;;;;6680:5:::0;6671:6;;:14;;;;;;;;;;;;;;;;;;12347:1745::o;11045:114::-;11107:4;11132:11;:19;11144:6;11132:19;;;;;;;;;;;;;;;;;;;;;;;;;11131:20;11124:27;;11045:114;;;:::o;11167:967::-;11253:7;11283:18;11304;;11283:39;;11349:4;;;;;;;;;;;11336:17;;:9;:17;;;11333:152;;11382:14;;11369:27;;11333:152;;;11427:4;;;;;;;;;;;11417:14;;:6;:14;;;11414:71;;11460:13;;11447:26;;11414:71;11333:152;11497:17;11517:62;11575:3;11558:14;;:20;;;;:::i;:::-;11517:36;11542:10;11517:20;11528:8;;11517:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;11497:82;;11592:21;11616:39;11646:8;;11616:25;11630:10;;11616:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;11592:63;;11666:22;11691:28;11705:13;11691:9;:13;;:28;;;;:::i;:::-;11666:53;;11759:44;11788:14;11759:9;:24;11777:4;11759:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11732:9;:24;11750:4;11732:24;;;;;;;;;;;;;;;:71;;;;11846:48;11880:13;11846:9;:29;11856:18;;;;;;;;;;;11846:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;11814:9;:29;11824:18;;;;;;;;;;;11814:29;;;;;;;;;;;;;;;:80;;;;11935:4;11910:47;;11919:6;11910:47;;;11942:14;11910:47;;;;;;:::i;:::-;;;;;;;;11997:1;11981:13;:17;11978:108;;;12036:18;;;;;;;;;;;12019:51;;12028:6;12019:51;;;12056:13;12019:51;;;;;;:::i;:::-;;;;;;;;11978:108;12105:21;12116:9;12105:6;:10;;:21;;;;:::i;:::-;12098:28;;;;;;11167:967;;;;;:::o;1224:189::-;1310:7;1342:1;1338;:5;1345:12;1330:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1369:9;1385:1;1381;:5;;;;:::i;:::-;1369:17;;1404:1;1397:8;;;1224:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:77::-;2392:7;2421:5;2410:16;;2355:77;;;:::o;2438:118::-;2525:24;2543:5;2525:24;:::i;:::-;2520:3;2513:37;2438:118;;:::o;2562:222::-;2655:4;2693:2;2682:9;2678:18;2670:26;;2706:71;2774:1;2763:9;2759:17;2750:6;2706:71;:::i;:::-;2562:222;;;;:::o;2790:99::-;2842:6;2876:5;2870:12;2860:22;;2790:99;;;:::o;2895:169::-;2979:11;3013:6;3008:3;3001:19;3053:4;3048:3;3044:14;3029:29;;2895:169;;;;:::o;3070:246::-;3151:1;3161:113;3175:6;3172:1;3169:13;3161:113;;;3260:1;3255:3;3251:11;3245:18;3241:1;3236:3;3232:11;3225:39;3197:2;3194:1;3190:10;3185:15;;3161:113;;;3308:1;3299:6;3294:3;3290:16;3283:27;3132:184;3070:246;;;:::o;3322:102::-;3363:6;3414:2;3410:7;3405:2;3398:5;3394:14;3390:28;3380:38;;3322:102;;;:::o;3430:377::-;3518:3;3546:39;3579:5;3546:39;:::i;:::-;3601:71;3665:6;3660:3;3601:71;:::i;:::-;3594:78;;3681:65;3739:6;3734:3;3727:4;3720:5;3716:16;3681:65;:::i;:::-;3771:29;3793:6;3771:29;:::i;:::-;3766:3;3762:39;3755:46;;3522:285;3430:377;;;;:::o;3813:313::-;3926:4;3964:2;3953:9;3949:18;3941:26;;4013:9;4007:4;4003:20;3999:1;3988:9;3984:17;3977:47;4041:78;4114:4;4105:6;4041:78;:::i;:::-;4033:86;;3813:313;;;;:::o;4132:122::-;4205:24;4223:5;4205:24;:::i;:::-;4198:5;4195:35;4185:63;;4244:1;4241;4234:12;4185:63;4132:122;:::o;4260:139::-;4306:5;4344:6;4331:20;4322:29;;4360:33;4387:5;4360:33;:::i;:::-;4260:139;;;;:::o;4405:329::-;4464:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4405:329;;;;:::o;4740:126::-;4777:7;4817:42;4810:5;4806:54;4795:65;;4740:126;;;:::o;4872:96::-;4909:7;4938:24;4956:5;4938:24;:::i;:::-;4927:35;;4872:96;;;:::o;4974:122::-;5047:24;5065:5;5047:24;:::i;:::-;5040:5;5037:35;5027:63;;5086:1;5083;5076:12;5027:63;4974:122;:::o;5102:139::-;5148:5;5186:6;5173:20;5164:29;;5202:33;5229:5;5202:33;:::i;:::-;5102:139;;;;:::o;5247:474::-;5315:6;5323;5372:2;5360:9;5351:7;5347:23;5343:32;5340:119;;;5378:79;;:::i;:::-;5340:119;5498:1;5523:53;5568:7;5559:6;5548:9;5544:22;5523:53;:::i;:::-;5513:63;;5469:117;5625:2;5651:53;5696:7;5687:6;5676:9;5672:22;5651:53;:::i;:::-;5641:63;;5596:118;5247:474;;;;;:::o;5727:109::-;5808:21;5823:5;5808:21;:::i;:::-;5803:3;5796:34;5727:109;;:::o;5842:210::-;5929:4;5967:2;5956:9;5952:18;5944:26;;5980:65;6042:1;6031:9;6027:17;6018:6;5980:65;:::i;:::-;5842:210;;;;:::o;6058:329::-;6117:6;6166:2;6154:9;6145:7;6141:23;6137:32;6134:119;;;6172:79;;:::i;:::-;6134:119;6292:1;6317:53;6362:7;6353:6;6342:9;6338:22;6317:53;:::i;:::-;6307:63;;6263:117;6058:329;;;;:::o;6393:474::-;6461:6;6469;6518:2;6506:9;6497:7;6493:23;6489:32;6486:119;;;6524:79;;:::i;:::-;6486:119;6644:1;6669:53;6714:7;6705:6;6694:9;6690:22;6669:53;:::i;:::-;6659:63;;6615:117;6771:2;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6742:118;6393:474;;;;;:::o;6873:104::-;6918:7;6947:24;6965:5;6947:24;:::i;:::-;6936:35;;6873:104;;;:::o;6983:138::-;7064:32;7090:5;7064:32;:::i;:::-;7057:5;7054:43;7044:71;;7111:1;7108;7101:12;7044:71;6983:138;:::o;7127:155::-;7181:5;7219:6;7206:20;7197:29;;7235:41;7270:5;7235:41;:::i;:::-;7127:155;;;;:::o;7288:345::-;7355:6;7404:2;7392:9;7383:7;7379:23;7375:32;7372:119;;;7410:79;;:::i;:::-;7372:119;7530:1;7555:61;7608:7;7599:6;7588:9;7584:22;7555:61;:::i;:::-;7545:71;;7501:125;7288:345;;;;:::o;7639:619::-;7716:6;7724;7732;7781:2;7769:9;7760:7;7756:23;7752:32;7749:119;;;7787:79;;:::i;:::-;7749:119;7907:1;7932:53;7977:7;7968:6;7957:9;7953:22;7932:53;:::i;:::-;7922:63;;7878:117;8034:2;8060:53;8105:7;8096:6;8085:9;8081:22;8060:53;:::i;:::-;8050:63;;8005:118;8162:2;8188:53;8233:7;8224:6;8213:9;8209:22;8188:53;:::i;:::-;8178:63;;8133:118;7639:619;;;;;:::o;8264:86::-;8299:7;8339:4;8332:5;8328:16;8317:27;;8264:86;;;:::o;8356:112::-;8439:22;8455:5;8439:22;:::i;:::-;8434:3;8427:35;8356:112;;:::o;8474:214::-;8563:4;8601:2;8590:9;8586:18;8578:26;;8614:67;8678:1;8667:9;8663:17;8654:6;8614:67;:::i;:::-;8474:214;;;;:::o;8694:765::-;8780:6;8788;8796;8804;8853:3;8841:9;8832:7;8828:23;8824:33;8821:120;;;8860:79;;:::i;:::-;8821:120;8980:1;9005:53;9050:7;9041:6;9030:9;9026:22;9005:53;:::i;:::-;8995:63;;8951:117;9107:2;9133:53;9178:7;9169:6;9158:9;9154:22;9133:53;:::i;:::-;9123:63;;9078:118;9235:2;9261:53;9306:7;9297:6;9286:9;9282:22;9261:53;:::i;:::-;9251:63;;9206:118;9363:2;9389:53;9434:7;9425:6;9414:9;9410:22;9389:53;:::i;:::-;9379:63;;9334:118;8694:765;;;;;;;:::o;9465:468::-;9530:6;9538;9587:2;9575:9;9566:7;9562:23;9558:32;9555:119;;;9593:79;;:::i;:::-;9555:119;9713:1;9738:53;9783:7;9774:6;9763:9;9759:22;9738:53;:::i;:::-;9728:63;;9684:117;9840:2;9866:50;9908:7;9899:6;9888:9;9884:22;9866:50;:::i;:::-;9856:60;;9811:115;9465:468;;;;;:::o;9939:118::-;10026:24;10044:5;10026:24;:::i;:::-;10021:3;10014:37;9939:118;;:::o;10063:222::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10207:71;10275:1;10264:9;10260:17;10251:6;10207:71;:::i;:::-;10063:222;;;;:::o;10291:619::-;10368:6;10376;10384;10433:2;10421:9;10412:7;10408:23;10404:32;10401:119;;;10439:79;;:::i;:::-;10401:119;10559:1;10584:53;10629:7;10620:6;10609:9;10605:22;10584:53;:::i;:::-;10574:63;;10530:117;10686:2;10712:53;10757:7;10748:6;10737:9;10733:22;10712:53;:::i;:::-;10702:63;;10657:118;10814:2;10840:53;10885:7;10876:6;10865:9;10861:22;10840:53;:::i;:::-;10830:63;;10785:118;10291:619;;;;;:::o;10916:474::-;10984:6;10992;11041:2;11029:9;11020:7;11016:23;11012:32;11009:119;;;11047:79;;:::i;:::-;11009:119;11167:1;11192:53;11237:7;11228:6;11217:9;11213:22;11192:53;:::i;:::-;11182:63;;11138:117;11294:2;11320:53;11365:7;11356:6;11345:9;11341:22;11320:53;:::i;:::-;11310:63;;11265:118;10916:474;;;;;:::o;11396:468::-;11461:6;11469;11518:2;11506:9;11497:7;11493:23;11489:32;11486:119;;;11524:79;;:::i;:::-;11486:119;11644:1;11669:50;11711:7;11702:6;11691:9;11687:22;11669:50;:::i;:::-;11659:60;;11615:114;11768:2;11794:53;11839:7;11830:6;11819:9;11815:22;11794:53;:::i;:::-;11784:63;;11739:118;11396:468;;;;;:::o;11870:60::-;11898:3;11919:5;11912:12;;11870:60;;;:::o;11936:142::-;11986:9;12019:53;12037:34;12046:24;12064:5;12046:24;:::i;:::-;12037:34;:::i;:::-;12019:53;:::i;:::-;12006:66;;11936:142;;;:::o;12084:126::-;12134:9;12167:37;12198:5;12167:37;:::i;:::-;12154:50;;12084:126;;;:::o;12216:144::-;12284:9;12317:37;12348:5;12317:37;:::i;:::-;12304:50;;12216:144;;;:::o;12366:167::-;12471:55;12520:5;12471:55;:::i;:::-;12466:3;12459:68;12366:167;;:::o;12539:258::-;12650:4;12688:2;12677:9;12673:18;12665:26;;12701:89;12787:1;12776:9;12772:17;12763:6;12701:89;:::i;:::-;12539:258;;;;:::o;12803:158::-;12943:10;12939:1;12931:6;12927:14;12920:34;12803:158;:::o;12967:365::-;13109:3;13130:66;13194:1;13189:3;13130:66;:::i;:::-;13123:73;;13205:93;13294:3;13205:93;:::i;:::-;13323:2;13318:3;13314:12;13307:19;;12967:365;;;:::o;13338:419::-;13504:4;13542:2;13531:9;13527:18;13519:26;;13591:9;13585:4;13581:20;13577:1;13566:9;13562:17;13555:47;13619:131;13745:4;13619:131;:::i;:::-;13611:139;;13338:419;;;:::o;13763:224::-;13903:34;13899:1;13891:6;13887:14;13880:58;13972:7;13967:2;13959:6;13955:15;13948:32;13763:224;:::o;13993:366::-;14135:3;14156:67;14220:2;14215:3;14156:67;:::i;:::-;14149:74;;14232:93;14321:3;14232:93;:::i;:::-;14350:2;14345:3;14341:12;14334:19;;13993:366;;;:::o;14365:419::-;14531:4;14569:2;14558:9;14554:18;14546:26;;14618:9;14612:4;14608:20;14604:1;14593:9;14589:17;14582:47;14646:131;14772:4;14646:131;:::i;:::-;14638:139;;14365:419;;;:::o;14790:180::-;14838:77;14835:1;14828:88;14935:4;14932:1;14925:15;14959:4;14956:1;14949:15;14976:180;15024:77;15021:1;15014:88;15121:4;15118:1;15111:15;15145:4;15142:1;15135:15;15162:233;15201:3;15224:24;15242:5;15224:24;:::i;:::-;15215:33;;15270:66;15263:5;15260:77;15257:103;;15340:18;;:::i;:::-;15257:103;15387:1;15380:5;15376:13;15369:20;;15162:233;;;:::o;15401:235::-;15541:34;15537:1;15529:6;15525:14;15518:58;15610:18;15605:2;15597:6;15593:15;15586:43;15401:235;:::o;15642:366::-;15784:3;15805:67;15869:2;15864:3;15805:67;:::i;:::-;15798:74;;15881:93;15970:3;15881:93;:::i;:::-;15999:2;15994:3;15990:12;15983:19;;15642:366;;;:::o;16014:419::-;16180:4;16218:2;16207:9;16203:18;16195:26;;16267:9;16261:4;16257:20;16253:1;16242:9;16238:17;16231:47;16295:131;16421:4;16295:131;:::i;:::-;16287:139;;16014:419;;;:::o;16439:410::-;16479:7;16502:20;16520:1;16502:20;:::i;:::-;16497:25;;16536:20;16554:1;16536:20;:::i;:::-;16531:25;;16591:1;16588;16584:9;16613:30;16631:11;16613:30;:::i;:::-;16602:41;;16792:1;16783:7;16779:15;16776:1;16773:22;16753:1;16746:9;16726:83;16703:139;;16822:18;;:::i;:::-;16703:139;16487:362;16439:410;;;;:::o;16855:180::-;16903:77;16900:1;16893:88;17000:4;16997:1;16990:15;17024:4;17021:1;17014:15;17041:185;17081:1;17098:20;17116:1;17098:20;:::i;:::-;17093:25;;17132:20;17150:1;17132:20;:::i;:::-;17127:25;;17171:1;17161:35;;17176:18;;:::i;:::-;17161:35;17218:1;17215;17211:9;17206:14;;17041:185;;;;:::o;17232:134::-;17290:9;17323:37;17354:5;17323:37;:::i;:::-;17310:50;;17232:134;;;:::o;17372:147::-;17467:45;17506:5;17467:45;:::i;:::-;17462:3;17455:58;17372:147;;:::o;17525:238::-;17626:4;17664:2;17653:9;17649:18;17641:26;;17677:79;17753:1;17742:9;17738:17;17729:6;17677:79;:::i;:::-;17525:238;;;;:::o;17769:156::-;17909:8;17905:1;17897:6;17893:14;17886:32;17769:156;:::o;17931:365::-;18073:3;18094:66;18158:1;18153:3;18094:66;:::i;:::-;18087:73;;18169:93;18258:3;18169:93;:::i;:::-;18287:2;18282:3;18278:12;18271:19;;17931:365;;;:::o;18302:419::-;18468:4;18506:2;18495:9;18491:18;18483:26;;18555:9;18549:4;18545:20;18541:1;18530:9;18526:17;18519:47;18583:131;18709:4;18583:131;:::i;:::-;18575:139;;18302:419;;;:::o;18727:332::-;18848:4;18886:2;18875:9;18871:18;18863:26;;18899:71;18967:1;18956:9;18952:17;18943:6;18899:71;:::i;:::-;18980:72;19048:2;19037:9;19033:18;19024:6;18980:72;:::i;:::-;18727:332;;;;;:::o;19065:137::-;19119:5;19150:6;19144:13;19135:22;;19166:30;19190:5;19166:30;:::i;:::-;19065:137;;;;:::o;19208:345::-;19275:6;19324:2;19312:9;19303:7;19299:23;19295:32;19292:119;;;19330:79;;:::i;:::-;19292:119;19450:1;19475:61;19528:7;19519:6;19508:9;19504:22;19475:61;:::i;:::-;19465:71;;19421:125;19208:345;;;;:::o;19559:242::-;19699:34;19695:1;19687:6;19683:14;19676:58;19768:25;19763:2;19755:6;19751:15;19744:50;19559:242;:::o;19807:366::-;19949:3;19970:67;20034:2;20029:3;19970:67;:::i;:::-;19963:74;;20046:93;20135:3;20046:93;:::i;:::-;20164:2;20159:3;20155:12;20148:19;;19807:366;;;:::o;20179:419::-;20345:4;20383:2;20372:9;20368:18;20360:26;;20432:9;20426:4;20422:20;20418:1;20407:9;20403:17;20396:47;20460:131;20586:4;20460:131;:::i;:::-;20452:139;;20179:419;;;:::o;20604:194::-;20644:4;20664:20;20682:1;20664:20;:::i;:::-;20659:25;;20698:20;20716:1;20698:20;:::i;:::-;20693:25;;20742:1;20739;20735:9;20727:17;;20766:1;20760:4;20757:11;20754:37;;;20771:18;;:::i;:::-;20754:37;20604:194;;;;:::o;20804:170::-;20944:22;20940:1;20932:6;20928:14;20921:46;20804:170;:::o;20980:366::-;21122:3;21143:67;21207:2;21202:3;21143:67;:::i;:::-;21136:74;;21219:93;21308:3;21219:93;:::i;:::-;21337:2;21332:3;21328:12;21321:19;;20980:366;;;:::o;21352:419::-;21518:4;21556:2;21545:9;21541:18;21533:26;;21605:9;21599:4;21595:20;21591:1;21580:9;21576:17;21569:47;21633:131;21759:4;21633:131;:::i;:::-;21625:139;;21352:419;;;:::o;21777:191::-;21817:3;21836:20;21854:1;21836:20;:::i;:::-;21831:25;;21870:20;21888:1;21870:20;:::i;:::-;21865:25;;21913:1;21910;21906:9;21899:16;;21934:3;21931:1;21928:10;21925:36;;;21941:18;;:::i;:::-;21925:36;21777:191;;;;:::o;21974:249::-;22114:34;22110:1;22102:6;22098:14;22091:58;22183:32;22178:2;22170:6;22166:15;22159:57;21974:249;:::o;22229:366::-;22371:3;22392:67;22456:2;22451:3;22392:67;:::i;:::-;22385:74;;22468:93;22557:3;22468:93;:::i;:::-;22586:2;22581:3;22577:12;22570:19;;22229:366;;;:::o;22601:419::-;22767:4;22805:2;22794:9;22790:18;22782:26;;22854:9;22848:4;22844:20;22840:1;22829:9;22825:17;22818:47;22882:131;23008:4;22882:131;:::i;:::-;22874:139;;22601:419;;;:::o;23026:169::-;23166:21;23162:1;23154:6;23150:14;23143:45;23026:169;:::o;23201:366::-;23343:3;23364:67;23428:2;23423:3;23364:67;:::i;:::-;23357:74;;23440:93;23529:3;23440:93;:::i;:::-;23558:2;23553:3;23549:12;23542:19;;23201:366;;;:::o;23573:419::-;23739:4;23777:2;23766:9;23762:18;23754:26;;23826:9;23820:4;23816:20;23812:1;23801:9;23797:17;23790:47;23854:131;23980:4;23854:131;:::i;:::-;23846:139;;23573:419;;;:::o;23998:177::-;24138:29;24134:1;24126:6;24122:14;24115:53;23998:177;:::o;24181:366::-;24323:3;24344:67;24408:2;24403:3;24344:67;:::i;:::-;24337:74;;24420:93;24509:3;24420:93;:::i;:::-;24538:2;24533:3;24529:12;24522:19;;24181:366;;;:::o;24553:419::-;24719:4;24757:2;24746:9;24742:18;24734:26;;24806:9;24800:4;24796:20;24792:1;24781:9;24777:17;24770:47;24834:131;24960:4;24834:131;:::i;:::-;24826:139;;24553:419;;;:::o;24978:220::-;25118:34;25114:1;25106:6;25102:14;25095:58;25187:3;25182:2;25174:6;25170:15;25163:28;24978:220;:::o;25204:366::-;25346:3;25367:67;25431:2;25426:3;25367:67;:::i;:::-;25360:74;;25443:93;25532:3;25443:93;:::i;:::-;25561:2;25556:3;25552:12;25545:19;;25204:366;;;:::o;25576:419::-;25742:4;25780:2;25769:9;25765:18;25757:26;;25829:9;25823:4;25819:20;25815:1;25804:9;25800:17;25793:47;25857:131;25983:4;25857:131;:::i;:::-;25849:139;;25576:419;;;:::o;26001:167::-;26141:19;26137:1;26129:6;26125:14;26118:43;26001:167;:::o;26174:366::-;26316:3;26337:67;26401:2;26396:3;26337:67;:::i;:::-;26330:74;;26413:93;26502:3;26413:93;:::i;:::-;26531:2;26526:3;26522:12;26515:19;;26174:366;;;:::o;26546:419::-;26712:4;26750:2;26739:9;26735:18;26727:26;;26799:9;26793:4;26789:20;26785:1;26774:9;26770:17;26763:47;26827:131;26953:4;26827:131;:::i;:::-;26819:139;;26546:419;;;:::o;26971:180::-;27019:77;27016:1;27009:88;27116:4;27113:1;27106:15;27140:4;27137:1;27130:15;27157:85;27202:7;27231:5;27220:16;;27157:85;;;:::o;27248:158::-;27306:9;27339:61;27357:42;27366:32;27392:5;27366:32;:::i;:::-;27357:42;:::i;:::-;27339:61;:::i;:::-;27326:74;;27248:158;;;:::o;27412:147::-;27507:45;27546:5;27507:45;:::i;:::-;27502:3;27495:58;27412:147;;:::o;27565:114::-;27632:6;27666:5;27660:12;27650:22;;27565:114;;;:::o;27685:184::-;27784:11;27818:6;27813:3;27806:19;27858:4;27853:3;27849:14;27834:29;;27685:184;;;;:::o;27875:132::-;27942:4;27965:3;27957:11;;27995:4;27990:3;27986:14;27978:22;;27875:132;;;:::o;28013:108::-;28090:24;28108:5;28090:24;:::i;:::-;28085:3;28078:37;28013:108;;:::o;28127:179::-;28196:10;28217:46;28259:3;28251:6;28217:46;:::i;:::-;28295:4;28290:3;28286:14;28272:28;;28127:179;;;;:::o;28312:113::-;28382:4;28414;28409:3;28405:14;28397:22;;28312:113;;;:::o;28461:732::-;28580:3;28609:54;28657:5;28609:54;:::i;:::-;28679:86;28758:6;28753:3;28679:86;:::i;:::-;28672:93;;28789:56;28839:5;28789:56;:::i;:::-;28868:7;28899:1;28884:284;28909:6;28906:1;28903:13;28884:284;;;28985:6;28979:13;29012:63;29071:3;29056:13;29012:63;:::i;:::-;29005:70;;29098:60;29151:6;29098:60;:::i;:::-;29088:70;;28944:224;28931:1;28928;28924:9;28919:14;;28884:284;;;28888:14;29184:3;29177:10;;28585:608;;;28461:732;;;;:::o;29199:831::-;29462:4;29500:3;29489:9;29485:19;29477:27;;29514:71;29582:1;29571:9;29567:17;29558:6;29514:71;:::i;:::-;29595:80;29671:2;29660:9;29656:18;29647:6;29595:80;:::i;:::-;29722:9;29716:4;29712:20;29707:2;29696:9;29692:18;29685:48;29750:108;29853:4;29844:6;29750:108;:::i;:::-;29742:116;;29868:72;29936:2;29925:9;29921:18;29912:6;29868:72;:::i;:::-;29950:73;30018:3;30007:9;30003:19;29994:6;29950:73;:::i;:::-;29199:831;;;;;;;;:::o;30036:147::-;30137:11;30174:3;30159:18;;30036:147;;;;:::o;30189:114::-;;:::o;30309:398::-;30468:3;30489:83;30570:1;30565:3;30489:83;:::i;:::-;30482:90;;30581:93;30670:3;30581:93;:::i;:::-;30699:1;30694:3;30690:11;30683:18;;30309:398;;;:::o;30713:379::-;30897:3;30919:147;31062:3;30919:147;:::i;:::-;30912:154;;31083:3;31076:10;;30713:379;;;:::o;31098:807::-;31347:4;31385:3;31374:9;31370:19;31362:27;;31399:71;31467:1;31456:9;31452:17;31443:6;31399:71;:::i;:::-;31480:72;31548:2;31537:9;31533:18;31524:6;31480:72;:::i;:::-;31562:80;31638:2;31627:9;31623:18;31614:6;31562:80;:::i;:::-;31652;31728:2;31717:9;31713:18;31704:6;31652:80;:::i;:::-;31742:73;31810:3;31799:9;31795:19;31786:6;31742:73;:::i;:::-;31825;31893:3;31882:9;31878:19;31869:6;31825:73;:::i;:::-;31098:807;;;;;;;;;:::o;31911:143::-;31968:5;31999:6;31993:13;31984:22;;32015:33;32042:5;32015:33;:::i;:::-;31911:143;;;;:::o;32060:663::-;32148:6;32156;32164;32213:2;32201:9;32192:7;32188:23;32184:32;32181:119;;;32219:79;;:::i;:::-;32181:119;32339:1;32364:64;32420:7;32411:6;32400:9;32396:22;32364:64;:::i;:::-;32354:74;;32310:128;32477:2;32503:64;32559:7;32550:6;32539:9;32535:22;32503:64;:::i;:::-;32493:74;;32448:129;32616:2;32642:64;32698:7;32689:6;32678:9;32674:22;32642:64;:::i;:::-;32632:74;;32587:129;32060:663;;;;;:::o;32729:332::-;32850:4;32888:2;32877:9;32873:18;32865:26;;32901:71;32969:1;32958:9;32954:17;32945:6;32901:71;:::i;:::-;32982:72;33050:2;33039:9;33035:18;33026:6;32982:72;:::i;:::-;32729:332;;;;;:::o

Swarm Source

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