S Price: $0.837843 (-1.48%)

Token

Test Print (Test1)

Overview

Max Total Supply

1,000,000,000 Test1

Holders

5

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
280,599,828.884863317831953869 Test1

Value
$0.00
0x54D89a05fa595dAFf1705BA3B3D6B84414567320
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
TestPrint

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-02-23
*/

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

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

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

    function getPair(address token0, address token1, bool stable) external view returns (address);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,
        bool stable,
        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,
        route[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        route[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    }

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IDEXRouter router;
    address routerAddress = 0xF5F7231073b3B41c04BA655e1a7438b1a7b29c27; //router
    IBEP20 RewardToken = IBEP20(0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38); //wS

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 60 minutes;
    uint256 public minDistribution = 1 * (10 ** 6);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        route[] memory path = new route[](1);
        path[0].from = router.WETH();
        path[0].to = address(this);
        path[0].stable = false;

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }

    }
    
    function claimDividend(address shareholder) external onlyToken{
        distributeDividend(shareholder);
    }
    
    function rescueDividends(address to) external onlyToken {
        RewardToken.transfer(to, RewardToken.balanceOf(address(this)));
    }
    
    function setRewardToken(address _rewardToken) external onlyToken{
        RewardToken = IBEP20(_rewardToken);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
   }

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

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

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner.
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}
struct route {
    /// @dev token from
    address from;
    /// @dev token to
    address to;
    /// @dev is stable route
    bool stable;
}
contract TestPrint is IBEP20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "Test Print";
    string constant _symbol = "Test1";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0xF5F7231073b3B41c04BA655e1a7438b1a7b29c27;
    address RewardToken = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38;

    uint256 _totalSupply = 1000000000 * (10 ** _decimals);
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public liquidityFee = 1;
    uint256 public marketingFee = 34;
    uint256 public rewardsFee = 8;
    uint256 public lotteryFee = 0;
    uint256 private _gasPriceLimitB=8;
    uint256 private gasPriceLimitB = _gasPriceLimitB * 1 gwei; 
    uint256 public sellMultiplier = 15;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public lotteryWallet;

    IDEXRouter public router;
    address public pair;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 750000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public basicTransfer= true;

    uint256 public swapThreshold = _totalSupply;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);

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

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // NICE!
        autoLiquidityReceiver = msg.sender;
        marketingWallet = 0x54D89a05fa595dAFf1705BA3B3D6B84414567320;  // marketingwallet
        isFeeExempt[marketingWallet] = true;
        lotteryWallet = 0x54D89a05fa595dAFf1705BA3B3D6B84414567320;  // no tax for lotterywallet
        isFeeExempt[lotteryWallet] = true;
        
        totalFee = (liquidityFee.add(marketingFee).add(rewardsFee).add(lotteryFee));
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);

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

    receive() external payable { }

    function setPair(address _pair) external authorized{
        pair = _pair;

        isDividendExempt[pair] = true;
    }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

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

    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 claimDividend() external {
        dividendDistributor.claimDividend(msg.sender);
    }

    function changeSellFeeX10(uint256 newMulti) external authorized{
        require(newMulti <= 30);
        sellMultiplier = newMulti;
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);
    }
            
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function changeIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        
        if(exempt){
            dividendDistributor.setShare(holder, 0);
        }else{
            dividendDistributor.setShare(holder, _balances[holder]);
        }
    }

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newMarketingFee, uint256 newLotteryFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        lotteryFee = newLotteryFee;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee).add(lotteryFee);
        require(totalFee <= 10);
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);
    }

    function changeFeeReceivers(address newLiquidityReceiver, address newMarketingWallet, address newLotteryWallet) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
        lotteryWallet = newLotteryWallet;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit, bool swapByLimitOnly) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
        swapAndLiquifyByLimitOnly = swapByLimitOnly;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function setRewardToken(address _rewardToken) external authorized {
        dividendDistributor.setRewardToken(_rewardToken);
    }
    
    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 setBasicTransfer(bool flag) external authorized {
        basicTransfer = flag;
    }
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        if(inSwapAndLiquify || basicTransfer){ 
            return _basicTransfer(sender, recipient, amount); 
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){
             swapBack(); 
        }
        
        if(recipient == pair && !authorizations[sender]) {
            require(tx.gasprice <= gasPriceLimitB);
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, finalAmount);
        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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function setGas(uint256 Gas) external onlyOwner() {
        require(Gas > 7, "Max gas must be higher than 7 gwei");
        _gasPriceLimitB=Gas;
        gasPriceLimitB = _gasPriceLimitB * 1 gwei; 
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        route[] memory path = new route[](1);
        path[0].from = address(this);
        path[0].to = router.WETH();
        path[0].stable = false;

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

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBLottery = amountBNB.mul(lotteryFee).div(totalBNBFee);

        try dividendDistributor.deposit{value: amountBNBReflection}() {} catch {}

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountBNBMarketing, gas: 30000}("");
        (bool tmpSuccess1,) = payable(lotteryWallet).call{value: amountBNBLottery, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess1 = false;

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

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","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":"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":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basicTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newLotteryWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newLotteryFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMulti","type":"uint256"}],"name":"changeSellFeeX10","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[],"name":"lotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"bool","name":"flag","type":"bool"}],"name":"setBasicTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Gas","type":"uint256"}],"name":"setGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f5f7231073b3b41c04ba655e1a7438b1a7b29c2760045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073039e2fb66102314ce7b64ce5ce3e5183bc94ad3860055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a61013c9190610c71565b633b9aca0061014b9190610cbb565b6006556001600b556022600c556008600d555f600e556008600f55633b9aca00600f546101789190610cbb565b601055600f6011555f6012555f601355620b71b0601a556001601b60016101000a81548160ff0219169083151502179055505f601b60026101000a81548160ff0219169083151502179055506001601b60036101000a81548160ff021916908315150217905550600654601c553480156101f0575f5ffd5b5033805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516103d390610af3565b6103dd9190610d3b565b604051809103905ff0801580156103f6573d5f5f3e3d5ffd5b5060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503360145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507354d89a05fa595daff1705ba3b3d6b8441456732060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507354d89a05fa595daff1705ba3b3d6b8441456732060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610889600e5461087b600d5461086d600c54600b5461096f60201b90919060201c565b61096f60201b90919060201c565b61096f60201b90919060201c565b6012819055506108b9600a6108ab6011546012546109cc60201b90919060201c565b610a4360201b90919060201c565b60138190555060065460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516109629190610d63565b60405180910390a3610f92565b5f5f828461097d9190610d7c565b9050838110156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b990610e09565b60405180910390fd5b8091505092915050565b5f5f83036109dc575f9050610a3d565b5f82846109e99190610cbb565b90508284826109f89190610e54565b14610a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2f90610ef4565b60405180910390fd5b809150505b92915050565b5f610a8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a9260201b60201c565b905092915050565b5f5f83118290610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf9190610f72565b60405180910390fd5b505f8385610ae69190610e54565b9050809150509392505050565b61232d8061507783390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610b8257808604811115610b5e57610b5d610b00565b5b6001851615610b6d5780820291505b8081029050610b7b85610b2d565b9450610b42565b94509492505050565b5f82610b9a5760019050610c55565b81610ba7575f9050610c55565b8160018114610bbd5760028114610bc757610bf6565b6001915050610c55565b60ff841115610bd957610bd8610b00565b5b8360020a915084821115610bf057610bef610b00565b5b50610c55565b5060208310610133831016604e8410600b8410161715610c2b5782820a905083811115610c2657610c25610b00565b5b610c55565b610c388484846001610b39565b92509050818404811115610c4f57610c4e610b00565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610c7b82610c5c565b9150610c8683610c65565b9250610cb37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610b8b565b905092915050565b5f610cc582610c5c565b9150610cd083610c5c565b9250828202610cde81610c5c565b91508282048414831517610cf557610cf4610b00565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d2582610cfc565b9050919050565b610d3581610d1b565b82525050565b5f602082019050610d4e5f830184610d2c565b92915050565b610d5d81610c5c565b82525050565b5f602082019050610d765f830184610d54565b92915050565b5f610d8682610c5c565b9150610d9183610c5c565b9250828201905080821115610da957610da8610b00565b5b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f610df3601b83610daf565b9150610dfe82610dbf565b602082019050919050565b5f6020820190508181035f830152610e2081610de7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610e5e82610c5c565b9150610e6983610c5c565b925082610e7957610e78610e27565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610ede602183610daf565b9150610ee982610e84565b604082019050919050565b5f6020820190508181035f830152610f0b81610ed2565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f4482610f12565b610f4e8185610daf565b9350610f5e818560208601610f1c565b610f6781610f2a565b840191505092915050565b5f6020820190508181035f830152610f8a8184610f3a565b905092915050565b6140d880610f9f5f395ff3fe6080604052600436106102b1575f3560e01c80638187f51611610174578063bbb19940116100db578063dd62ed3e11610094578063f2fde38b1161006e578063f2fde38b14610a90578063f887ea4014610ab8578063fe9fbb8014610ae2578063fed0d2a114610b1e576102b8565b8063dd62ed3e14610a16578063f0b37c0414610a52578063f0fc6bca14610a7a576102b8565b8063bbb1994014610920578063ca33e64c14610948578063ca987b0e14610972578063d3877dc41461099c578063da00097d146109c4578063dd51faa2146109ee576102b8565b8063a3a2e89e1161012d578063a3a2e89e14610818578063a8aa1b3114610840578063a9059cbb1461086a578063a9f7864b146108a6578063b6a5d7de146108ce578063bad3ea6a146108f6576102b8565b80638187f51614610720578063893d20e8146107485780638aee81271461077257806395d89b411461079a57806398118cb4146107c4578063a364b077146107ee576102b8565b80633f4218e011610218578063650c4226116101d1578063650c4226146106165780636b67c4df1461063e57806370a082311461066857806375f0a874146106a4578063773fcb5c146106ce57806378aa08ed146106f6576102b8565b80633f4218e0146104e65780634355855a1461052257806344c3b95e1461055e578063479f66d8146105885780634a74bb02146105b0578063571ac8b0146105da576102b8565b80632b112e491161026a5780632b112e49146103dc5780632bb14e1d146104065780632f54bf6e14610430578063313ce5671461046c578063315dca291461049657806334c70889146104be576102b8565b80630445b667146102bc57806306fdde03146102e6578063095ea7b31461031057806318160ddd1461034c5780631df4ccfc1461037657806323b872dd146103a0576102b8565b366102b857005b5f5ffd5b3480156102c7575f5ffd5b506102d0610b48565b6040516102dd9190613363565b60405180910390f35b3480156102f1575f5ffd5b506102fa610b4e565b60405161030791906133ec565b60405180910390f35b34801561031b575f5ffd5b5061033660048036038101906103319190613494565b610b8b565b60405161034391906134ec565b60405180910390f35b348015610357575f5ffd5b50610360610c78565b60405161036d9190613363565b60405180910390f35b348015610381575f5ffd5b5061038a610c81565b6040516103979190613363565b60405180910390f35b3480156103ab575f5ffd5b506103c660048036038101906103c19190613505565b610c87565b6040516103d391906134ec565b60405180910390f35b3480156103e7575f5ffd5b506103f0610e7a565b6040516103fd9190613363565b60405180910390f35b348015610411575f5ffd5b5061041a610ef9565b6040516104279190613363565b60405180910390f35b34801561043b575f5ffd5b5061045660048036038101906104519190613555565b610eff565b60405161046391906134ec565b60405180910390f35b348015610477575f5ffd5b50610480610f56565b60405161048d919061359b565b60405180910390f35b3480156104a1575f5ffd5b506104bc60048036038101906104b791906135b4565b610f5e565b005b3480156104c9575f5ffd5b506104e460048036038101906104df919061362e565b61106b565b005b3480156104f1575f5ffd5b5061050c60048036038101906105079190613555565b6110f3565b60405161051991906134ec565b60405180910390f35b34801561052d575f5ffd5b5061054860048036038101906105439190613555565b611110565b60405161055591906134ec565b60405180910390f35b348015610569575f5ffd5b5061057261112d565b60405161057f91906134ec565b60405180910390f35b348015610593575f5ffd5b506105ae60048036038101906105a9919061367e565b611140565b005b3480156105bb575f5ffd5b506105c46111a0565b6040516105d191906134ec565b60405180910390f35b3480156105e5575f5ffd5b5061060060048036038101906105fb9190613555565b6111b3565b60405161060d91906134ec565b60405180910390f35b348015610621575f5ffd5b5061063c600480360381019061063791906136a9565b6111e5565b005b348015610649575f5ffd5b506106526112d3565b60405161065f9190613363565b60405180910390f35b348015610673575f5ffd5b5061068e60048036038101906106899190613555565b6112d9565b60405161069b9190613363565b60405180910390f35b3480156106af575f5ffd5b506106b861131f565b6040516106c5919061371c565b60405180910390f35b3480156106d9575f5ffd5b506106f460048036038101906106ef9190613735565b611344565b005b348015610701575f5ffd5b5061070a6115d0565b6040516107179190613363565b60405180910390f35b34801561072b575f5ffd5b5061074660048036038101906107419190613555565b6115d6565b005b348015610753575f5ffd5b5061075c6116d7565b604051610769919061371c565b60405180910390f35b34801561077d575f5ffd5b5061079860048036038101906107939190613555565b6116fe565b005b3480156107a5575f5ffd5b506107ae6117d0565b6040516107bb91906133ec565b60405180910390f35b3480156107cf575f5ffd5b506107d861180d565b6040516107e59190613363565b60405180910390f35b3480156107f9575f5ffd5b50610802611813565b60405161080f919061371c565b60405180910390f35b348015610823575f5ffd5b5061083e60048036038101906108399190613735565b611838565b005b34801561084b575f5ffd5b506108546118d8565b604051610861919061371c565b60405180910390f35b348015610875575f5ffd5b50610890600480360381019061088b9190613494565b6118fd565b60405161089d91906134ec565b60405180910390f35b3480156108b1575f5ffd5b506108cc60048036038101906108c79190613773565b611911565b005b3480156108d9575f5ffd5b506108f460048036038101906108ef9190613555565b6119e6565b005b348015610901575f5ffd5b5061090a611a85565b604051610917919061380c565b60405180910390f35b34801561092b575f5ffd5b506109466004803603810190610941919061367e565b611aaa565b005b348015610953575f5ffd5b5061095c611b39565b604051610969919061371c565b60405180910390f35b34801561097d575f5ffd5b50610986611b5e565b6040516109939190613363565b60405180910390f35b3480156109a7575f5ffd5b506109c260048036038101906109bd9190613825565b611b64565b005b3480156109cf575f5ffd5b506109d8611bc9565b6040516109e591906134ec565b60405180910390f35b3480156109f9575f5ffd5b50610a146004803603810190610a0f919061367e565b611bdc565b005b348015610a21575f5ffd5b50610a3c6004803603810190610a379190613850565b611c89565b604051610a499190613363565b60405180910390f35b348015610a5d575f5ffd5b50610a786004803603810190610a739190613555565b611d0b565b005b348015610a85575f5ffd5b50610a8e611daa565b005b348015610a9b575f5ffd5b50610ab66004803603810190610ab191906138c9565b611e33565b005b348015610ac3575f5ffd5b50610acc611f48565b604051610ad99190613914565b60405180910390f35b348015610aed575f5ffd5b50610b086004803603810190610b039190613555565b611f6d565b604051610b1591906134ec565b60405180910390f35b348015610b29575f5ffd5b50610b32611fbf565b604051610b3f9190613363565b60405180910390f35b601c5481565b60606040518060400160405280600a81526020017f54657374205072696e7400000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c669190613363565b60405180910390a36001905092915050565b5f600654905090565b60125481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610e6657610de9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc59092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610e71848484612027565b90509392505050565b5f610ef4610ea860035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112d9565b610ee6610ed560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112d9565b60065461271f90919063ffffffff16565b61271f90919063ffffffff16565b905090565b600d5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6012905090565b610f6733611f6d565b610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d90613977565b60405180910390fd5b8260145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61107433611f6d565b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90613977565b60405180910390fd5b82601b60016101000a81548160ff02191690831515021790555081601c8190555080601b60026101000a81548160ff021916908315150217905550505050565b6009602052805f5260405f205f915054906101000a900460ff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b601b60039054906101000a900460ff1681565b61114933611f6d565b611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90613977565b60405180910390fd5b620b71b08110611196575f5ffd5b80601a8190555050565b601b60019054906101000a900460ff1681565b5f6111de827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b8b565b9050919050565b6111ee33611f6d565b61122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490613977565b60405180910390fd5b83600b8190555082600d8190555081600c8190555080600e81905550611288600e5461127a600d5461126c600c54600b5461276890919063ffffffff16565b61276890919063ffffffff16565b61276890919063ffffffff16565b601281905550600a601254111561129d575f5ffd5b6112c7600a6112b96011546012546127c590919063ffffffff16565b61283c90919063ffffffff16565b60138190555050505050565b600c5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61134d33611f6d565b61138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138390613977565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611415575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61141d575f5ffd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156115055760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96835f6040518363ffffffff1660e01b81526004016114d39291906139ce565b5f604051808303815f87803b1580156114ea575f5ffd5b505af11580156114fc573d5f5f3e3d5ffd5b505050506115cc565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b815260040161159e9291906139f5565b5f604051808303815f87803b1580156115b5575f5ffd5b505af11580156115c7573d5f5f3e3d5ffd5b505050505b5050565b600e5481565b6115df33611f6d565b61161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590613977565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61170733611f6d565b611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90613977565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b81526004016117a0919061371c565b5f604051808303815f87803b1580156117b7575f5ffd5b505af11580156117c9573d5f5f3e3d5ffd5b5050505050565b60606040518060400160405280600581526020017f5465737431000000000000000000000000000000000000000000000000000000815250905090565b600b5481565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61184133611f6d565b611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790613977565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611909338484612027565b905092915050565b61191a33611f6d565b611959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195090613977565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016119b5929190613a1c565b5f604051808303815f87803b1580156119cc575f5ffd5b505af11580156119de573d5f5f3e3d5ffd5b505050505050565b6119ef33610eff565b611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2590613a8d565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ab333611f6d565b611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613977565b60405180910390fd5b601e811115611aff575f5ffd5b80601181905550611b30600a611b226011546012546127c590919063ffffffff16565b61283c90919063ffffffff16565b60138190555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b611b6d33611f6d565b611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390613977565b60405180910390fd5b80601b60036101000a81548160ff02191690831515021790555050565b601b60029054906101000a900460ff1681565b611be533610eff565b611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b90613a8d565b60405180910390fd5b60078111611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613b1b565b60405180910390fd5b80600f81905550633b9aca00600f54611c809190613b66565b60108190555050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611d1433610eff565b611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90613a8d565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611e04919061371c565b5f604051808303815f87803b158015611e1b575f5ffd5b505af1158015611e2d573d5f5f3e3d5ffd5b50505050565b611e3c33610eff565b611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290613a8d565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611f3d9190613bc7565b60405180910390a150565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115481565b5f83831115829061200c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200391906133ec565b60405180910390fd5b505f838561201a9190613be0565b9050809150509392505050565b5f601b5f9054906101000a900460ff168061204e5750601b60039054906101000a900460ff165b156120655761205e848484612885565b9050612718565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120ce5750601b5f9054906101000a900460ff16155b80156120e65750601b60019054906101000a900460ff165b80156121315750601c5460075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b1561213f5761213e612a4f565b5b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121e2575060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121f6576010543a11156121f5575f5ffd5b5b61227d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc59092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561235d575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6123675782612373565b6123728585856130fd565b5b90506123c58160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276890919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125175760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968660075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016124ed9291906139f5565b5f604051808303815f87803b158015612504575f5ffd5b505af1925050508015612515575060015b505b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126285760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968560075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016125fe9291906139f5565b5f604051808303815f87803b158015612615575f5ffd5b505af1925050508015612626575060015b505b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601a546040518263ffffffff1660e01b81526004016126849190613363565b5f604051808303815f87803b15801561269b575f5ffd5b505af19250505080156126ac575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161270a9190613363565b60405180910390a360019150505b9392505050565b5f61276083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc5565b905092915050565b5f5f82846127769190613c13565b9050838110156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613c90565b60405180910390fd5b8091505092915050565b5f5f83036127d5575f9050612836565b5f82846127e29190613b66565b90508284826127f19190613cdb565b14612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890613d7b565b60405180910390fd5b809150505b92915050565b5f61287d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061329e565b905092915050565b5f61290d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc59092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061299e8260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276890919063ffffffff16565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a3c9190613363565b60405180910390a3600190509392505050565b6001601b5f6101000a81548160ff0219169083151502179055505f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f612ae76002612ad9601254612acb600b54876127c590919063ffffffff16565b61283c90919063ffffffff16565b61283c90919063ffffffff16565b90505f612afd828461271f90919063ffffffff16565b90505f600167ffffffffffffffff811115612b1b57612b1a613d99565b5b604051908082528060200260200182016040528015612b5457816020015b612b416132ff565b815260200190600190039081612b395790505b50905030815f81518110612b6b57612b6a613dc6565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c369190613e07565b815f81518110612c4957612c48613dc6565b5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f81518110612c9b57612c9a613dc6565b5b6020026020010151604001901515908115158152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637af728c8835f8430426040518663ffffffff1660e01b8152600401612d13959493929190613f38565b5f604051808303815f87803b158015612d2a575f5ffd5b505af1158015612d3c573d5f5f3e3d5ffd5b505050505f4790505f612d6f612d5e6002600b5461283c90919063ffffffff16565b60125461271f90919063ffffffff16565b90505f612dac6002612d9e84612d90600b54886127c590919063ffffffff16565b61283c90919063ffffffff16565b61283c90919063ffffffff16565b90505f612dd683612dc8600d54876127c590919063ffffffff16565b61283c90919063ffffffff16565b90505f612e0084612df2600c54886127c590919063ffffffff16565b61283c90919063ffffffff16565b90505f612e2a85612e1c600e54896127c590919063ffffffff16565b61283c90919063ffffffff16565b905060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612e93575f5ffd5b505af193505050508015612ea5575060015b505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612ef090613fbd565b5f60405180830381858888f193505050503d805f8114612f2b576040519150601f19603f3d011682016040523d82523d5f602084013e612f30565b606091505b505090505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612f7e90613fbd565b5f60405180830381858888f193505050503d805f8114612fb9576040519150601f19603f3d011682016040523d82523d5f602084013e612fbe565b606091505b505090505f91505f90505f8b11156130d65760175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e0d4c087305f8f5f5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b81526004016130589796959493929190613fd1565b60606040518083038185885af1158015613074573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906130999190614052565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868c6040516130cd929190613a1c565b60405180910390a15b5050505050505050505050505f601b5f6101000a81548160ff021916908315150217905550565b5f5f8373ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461315b5760125461315f565b6013545b90505f613188606461317a84876127c590919063ffffffff16565b61283c90919063ffffffff16565b90506131da8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276890919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132789190613363565b60405180910390a3613293818561271f90919063ffffffff16565b925050509392505050565b5f5f831182906132e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132db91906133ec565b60405180910390fd5b505f83856132f29190613cdb565b9050809150509392505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f819050919050565b61335d8161334b565b82525050565b5f6020820190506133765f830184613354565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6133be8261337c565b6133c88185613386565b93506133d8818560208601613396565b6133e1816133a4565b840191505092915050565b5f6020820190508181035f83015261340481846133b4565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61343982613410565b9050919050565b6134498161342f565b8114613453575f5ffd5b50565b5f8135905061346481613440565b92915050565b6134738161334b565b811461347d575f5ffd5b50565b5f8135905061348e8161346a565b92915050565b5f5f604083850312156134aa576134a961340c565b5b5f6134b785828601613456565b92505060206134c885828601613480565b9150509250929050565b5f8115159050919050565b6134e6816134d2565b82525050565b5f6020820190506134ff5f8301846134dd565b92915050565b5f5f5f6060848603121561351c5761351b61340c565b5b5f61352986828701613456565b935050602061353a86828701613456565b925050604061354b86828701613480565b9150509250925092565b5f6020828403121561356a5761356961340c565b5b5f61357784828501613456565b91505092915050565b5f60ff82169050919050565b61359581613580565b82525050565b5f6020820190506135ae5f83018461358c565b92915050565b5f5f5f606084860312156135cb576135ca61340c565b5b5f6135d886828701613456565b93505060206135e986828701613456565b92505060406135fa86828701613456565b9150509250925092565b61360d816134d2565b8114613617575f5ffd5b50565b5f8135905061362881613604565b92915050565b5f5f5f606084860312156136455761364461340c565b5b5f6136528682870161361a565b935050602061366386828701613480565b92505060406136748682870161361a565b9150509250925092565b5f602082840312156136935761369261340c565b5b5f6136a084828501613480565b91505092915050565b5f5f5f5f608085870312156136c1576136c061340c565b5b5f6136ce87828801613480565b94505060206136df87828801613480565b93505060406136f087828801613480565b925050606061370187828801613480565b91505092959194509250565b6137168161342f565b82525050565b5f60208201905061372f5f83018461370d565b92915050565b5f5f6040838503121561374b5761374a61340c565b5b5f61375885828601613456565b92505060206137698582860161361a565b9150509250929050565b5f5f604083850312156137895761378861340c565b5b5f61379685828601613480565b92505060206137a785828601613480565b9150509250929050565b5f819050919050565b5f6137d46137cf6137ca84613410565b6137b1565b613410565b9050919050565b5f6137e5826137ba565b9050919050565b5f6137f6826137db565b9050919050565b613806816137ec565b82525050565b5f60208201905061381f5f8301846137fd565b92915050565b5f6020828403121561383a5761383961340c565b5b5f6138478482850161361a565b91505092915050565b5f5f604083850312156138665761386561340c565b5b5f61387385828601613456565b925050602061388485828601613456565b9150509250929050565b5f61389882613410565b9050919050565b6138a88161388e565b81146138b2575f5ffd5b50565b5f813590506138c38161389f565b92915050565b5f602082840312156138de576138dd61340c565b5b5f6138eb848285016138b5565b91505092915050565b5f6138fe826137db565b9050919050565b61390e816138f4565b82525050565b5f6020820190506139275f830184613905565b92915050565b7f21415554484f52495a45440000000000000000000000000000000000000000005f82015250565b5f613961600b83613386565b915061396c8261392d565b602082019050919050565b5f6020820190508181035f83015261398e81613955565b9050919050565b5f819050919050565b5f6139b86139b36139ae84613995565b6137b1565b61334b565b9050919050565b6139c88161399e565b82525050565b5f6040820190506139e15f83018561370d565b6139ee60208301846139bf565b9392505050565b5f604082019050613a085f83018561370d565b613a156020830184613354565b9392505050565b5f604082019050613a2f5f830185613354565b613a3c6020830184613354565b9392505050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613a77600683613386565b9150613a8282613a43565b602082019050919050565b5f6020820190508181035f830152613aa481613a6b565b9050919050565b7f4d617820676173206d75737420626520686967686572207468616e20372067775f8201527f6569000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b05602283613386565b9150613b1082613aab565b604082019050919050565b5f6020820190508181035f830152613b3281613af9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b708261334b565b9150613b7b8361334b565b9250828202613b898161334b565b91508282048414831517613ba057613b9f613b39565b5b5092915050565b5f613bb1826137db565b9050919050565b613bc181613ba7565b82525050565b5f602082019050613bda5f830184613bb8565b92915050565b5f613bea8261334b565b9150613bf58361334b565b9250828203905081811115613c0d57613c0c613b39565b5b92915050565b5f613c1d8261334b565b9150613c288361334b565b9250828201905080821115613c4057613c3f613b39565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c7a601b83613386565b9150613c8582613c46565b602082019050919050565b5f6020820190508181035f830152613ca781613c6e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ce58261334b565b9150613cf08361334b565b925082613d0057613cff613cae565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d65602183613386565b9150613d7082613d0b565b604082019050919050565b5f6020820190508181035f830152613d9281613d59565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613e0181613440565b92915050565b5f60208284031215613e1c57613e1b61340c565b5b5f613e2984828501613df3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e648161342f565b82525050565b613e73816134d2565b82525050565b606082015f820151613e8d5f850182613e5b565b506020820151613ea06020850182613e5b565b506040820151613eb36040850182613e6a565b50505050565b5f613ec48383613e79565b60608301905092915050565b5f602082019050919050565b5f613ee682613e32565b613ef08185613e3c565b9350613efb83613e4c565b805f5b83811015613f2b578151613f128882613eb9565b9750613f1d83613ed0565b925050600181019050613efe565b5085935050505092915050565b5f60a082019050613f4b5f830188613354565b613f5860208301876139bf565b8181036040830152613f6a8186613edc565b9050613f79606083018561370d565b613f866080830184613354565b9695505050505050565b5f81905092915050565b50565b5f613fa85f83613f90565b9150613fb382613f9a565b5f82019050919050565b5f613fc782613f9d565b9150819050919050565b5f60e082019050613fe45f83018a61370d565b613ff160208301896134dd565b613ffe6040830188613354565b61400b60608301876139bf565b61401860808301866139bf565b61402560a083018561370d565b61403260c0830184613354565b98975050505050505050565b5f8151905061404c8161346a565b92915050565b5f5f5f606084860312156140695761406861340c565b5b5f6140768682870161403e565b93505060206140878682870161403e565b92505060406140988682870161403e565b915050925092509256fea264697066735822122034ebc919bdf85888f5dd0360ac1f242277a4898a54526b6ac2ed92027d2586c564736f6c634300081c0033608060405273f5f7231073b3b41c04ba655e1a7438b1a7b29c2760025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073039e2fb66102314ce7b64ce5ce3e5183bc94ad3860035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55620f4240600e553480156100d7575f5ffd5b5060405161232d38038061232d83398181016040528101906100f99190610237565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101535760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610155565b805b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610262565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610206826101dd565b9050919050565b610216816101fc565b8114610220575f5ffd5b50565b5f815190506102318161020d565b92915050565b5f6020828403121561024c5761024b6101d9565b5b5f61025984828501610223565b91505092915050565b6120be8061026f5f395ff3fe6080604052600436106100f2575f3560e01c80638aee812711610089578063e2d2e21911610058578063e2d2e219146102ea578063efca2eed14610314578063ffb2c4791461033e578063ffd49c8414610366576100f2565b80638aee812714610250578063997664d714610278578063ce7c2ac2146102a2578063d0e30db0146102e0576100f2565b80632d48e896116100c55780632d48e896146101ac5780633a98ef39146101d45780634339a815146101fe5780634fab0ae814610226576100f2565b806311ce023d146100f657806314b6ca961461012057806315f7e05e1461014857806328fd319814610170575b5f5ffd5b348015610101575f5ffd5b5061010a610390565b604051610117919061189c565b60405180910390f35b34801561012b575f5ffd5b506101466004803603810190610141919061193d565b610396565b005b348015610153575f5ffd5b5061016e6004803603810190610169919061197b565b61063b565b005b34801561017b575f5ffd5b506101966004803603810190610191919061197b565b61069e565b6040516101a3919061189c565b60405180910390f35b3480156101b7575f5ffd5b506101d260048036038101906101cd91906119a6565b6107aa565b005b3480156101df575f5ffd5b506101e8610813565b6040516101f5919061189c565b60405180910390f35b348015610209575f5ffd5b50610224600480360381019061021f919061197b565b610819565b005b348015610231575f5ffd5b5061023a6109a8565b604051610247919061189c565b60405180910390f35b34801561025b575f5ffd5b506102766004803603810190610271919061197b565b6109ae565b005b348015610283575f5ffd5b5061028c610a48565b604051610299919061189c565b60405180910390f35b3480156102ad575f5ffd5b506102c860048036038101906102c3919061197b565b610a4e565b6040516102d7939291906119e4565b60405180910390f35b6102e8610a74565b005b3480156102f5575f5ffd5b506102fe610eb9565b60405161030b919061189c565b60405180910390f35b34801561031f575f5ffd5b50610328610ebf565b604051610335919061189c565b60405180910390f35b348015610349575f5ffd5b50610364600480360381019061035f9190611a19565b610ec5565b005b348015610371575f5ffd5b5061037a611051565b604051610387919061189c565b60405180910390f35b600c5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ed575f5ffd5b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154111561043e5761043d82611057565b5b5f8111801561048b57505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154145b1561049e57610499826112d5565b6104fb565b5f811480156104eb57505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154115b156104fa576104f98261137f565b5b5b6105618161055360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015460085461157490919063ffffffff16565b6115bd90919063ffffffff16565b6008819055508060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055506105f360075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461161a565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610692575f5ffd5b61069b81611057565b50565b5f5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154036106ed575f90506107a5565b5f61073660075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461161a565b90505f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010154905080821161078d575f925050506107a5565b6107a0818361157490919063ffffffff16565b925050505b919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610801575f5ffd5b81600d8190555080600e819055505050565b60085481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610870575f5ffd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109089190611a53565b602060405180830381865afa158015610923573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109479190611a80565b6040518363ffffffff1660e01b8152600401610964929190611aab565b6020604051808303815f875af1158015610980573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a49190611b07565b5050565b600e5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a05575f5ffd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6007602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610acb575f5ffd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b269190611a53565b602060405180830381865afa158015610b41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b659190611a80565b90505f600167ffffffffffffffff811115610b8357610b82611b32565b5b604051908082528060200260200182016040528015610bbc57816020015b610ba9611838565b815260200190600190039081610ba15790505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4d9190611b73565b815f81518110610c6057610c5f611b9e565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030815f81518110610cb157610cb0611b9e565b5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f81518110610d0357610d02611b9e565b5b6020026020010151604001901515908115158152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376c72751345f8430426040518663ffffffff1660e01b8152600401610d7a9493929190611d13565b5f604051808303818588803b158015610d91575f5ffd5b505af1158015610da3573d5f5f3e3d5ffd5b50505050505f610e548360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e079190611a53565b602060405180830381865afa158015610e22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e469190611a80565b61157490919063ffffffff16565b9050610e6b816009546115bd90919063ffffffff16565b600981905550610eae610e9d600854610e8f84600c5461164b90919063ffffffff16565b6116c290919063ffffffff16565b600b546115bd90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f1c575f5ffd5b5f60048054905090505f8103610f32575061104e565b5f5f90505f5f90505f5a90505b8482108015610f4d57508383105b156110495783600f5410610f63575f600f819055505b610fa96004600f5481548110610f7c57610f7b611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661170b565b15610ff557610ff46004600f5481548110610fc757610fc6611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611057565b5b61101a61100b5a8361157490919063ffffffff16565b836115bd90919063ffffffff16565b91505a9050600f5f81548092919061103190611d8a565b9190505550828061104190611d8a565b935050610f3f565b505050505b50565b600d5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403156112d2575f6110a88261069e565b90505f8111156112d0576110c781600a546115bd90919063ffffffff16565b600a8190555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611129929190611aab565b6020604051808303815f875af1158015611145573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111699190611b07565b504260065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506111ff8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201546115bd90919063ffffffff16565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002018190555061128b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461161a565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505b50565b60048054905060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600481908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506113939190611dd1565b815481106113a4576113a3611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548154811061141d5761141c611b9e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f600460016004805490506114b79190611dd1565b815481106114c8576114c7611b9e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600480548061153f5761153e611e04565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b5f6115b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611775565b905092915050565b5f5f82846115cb9190611e31565b905083811015611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790611ebe565b60405180910390fd5b8091505092915050565b5f611644600c54611636600b548561164b90919063ffffffff16565b6116c290919063ffffffff16565b9050919050565b5f5f830361165b575f90506116bc565b5f82846116689190611edc565b90508284826116779190611f4a565b146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90611fea565b60405180910390fd5b809150505b92915050565b5f61170383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117d7565b905092915050565b5f42600d5460065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117589190611e31565b10801561176e5750600e5461176c8361069e565b115b9050919050565b5f8383111582906117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39190612068565b60405180910390fd5b505f83856117ca9190611dd1565b9050809150509392505050565b5f5f8311829061181d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118149190612068565b60405180910390fd5b505f838561182b9190611f4a565b9050809150509392505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f819050919050565b61189681611884565b82525050565b5f6020820190506118af5f83018461188d565b92915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118e2826118b9565b9050919050565b6118f2816118d8565b81146118fc575f5ffd5b50565b5f8135905061190d816118e9565b92915050565b61191c81611884565b8114611926575f5ffd5b50565b5f8135905061193781611913565b92915050565b5f5f60408385031215611953576119526118b5565b5b5f611960858286016118ff565b925050602061197185828601611929565b9150509250929050565b5f602082840312156119905761198f6118b5565b5b5f61199d848285016118ff565b91505092915050565b5f5f604083850312156119bc576119bb6118b5565b5b5f6119c985828601611929565b92505060206119da85828601611929565b9150509250929050565b5f6060820190506119f75f83018661188d565b611a04602083018561188d565b611a11604083018461188d565b949350505050565b5f60208284031215611a2e57611a2d6118b5565b5b5f611a3b84828501611929565b91505092915050565b611a4d816118d8565b82525050565b5f602082019050611a665f830184611a44565b92915050565b5f81519050611a7a81611913565b92915050565b5f60208284031215611a9557611a946118b5565b5b5f611aa284828501611a6c565b91505092915050565b5f604082019050611abe5f830185611a44565b611acb602083018461188d565b9392505050565b5f8115159050919050565b611ae681611ad2565b8114611af0575f5ffd5b50565b5f81519050611b0181611add565b92915050565b5f60208284031215611b1c57611b1b6118b5565b5b5f611b2984828501611af3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050611b6d816118e9565b92915050565b5f60208284031215611b8857611b876118b5565b5b5f611b9584828501611b5f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f611bf7611bf2611bed84611bcb565b611bd4565b611884565b9050919050565b611c0781611bdd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611c3f816118d8565b82525050565b611c4e81611ad2565b82525050565b606082015f820151611c685f850182611c36565b506020820151611c7b6020850182611c36565b506040820151611c8e6040850182611c45565b50505050565b5f611c9f8383611c54565b60608301905092915050565b5f602082019050919050565b5f611cc182611c0d565b611ccb8185611c17565b9350611cd683611c27565b805f5b83811015611d06578151611ced8882611c94565b9750611cf883611cab565b925050600181019050611cd9565b5085935050505092915050565b5f608082019050611d265f830187611bfe565b8181036020830152611d388186611cb7565b9050611d476040830185611a44565b611d54606083018461188d565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611d9482611884565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611dc657611dc5611d5d565b5b600182019050919050565b5f611ddb82611884565b9150611de683611884565b9250828203905081811115611dfe57611dfd611d5d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f611e3b82611884565b9150611e4683611884565b9250828201905080821115611e5e57611e5d611d5d565b5b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f611ea8601b83611e64565b9150611eb382611e74565b602082019050919050565b5f6020820190508181035f830152611ed581611e9c565b9050919050565b5f611ee682611884565b9150611ef183611884565b9250828202611eff81611884565b91508282048414831517611f1657611f15611d5d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f5482611884565b9150611f5f83611884565b925082611f6f57611f6e611f1d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f611fd4602183611e64565b9150611fdf82611f7a565b604082019050919050565b5f6020820190508181035f83015261200181611fc8565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61203a82612008565b6120448185611e64565b9350612054818560208601612012565b61205d81612020565b840191505092915050565b5f6020820190508181035f8301526120808184612030565b90509291505056fea2646970667358221220a99bbc60bdcaaeedcfa5aaeefb18e7c7a21c486f288956d09d2ce0abf89e7ae064736f6c634300081c0033

Deployed Bytecode

0x6080604052600436106102b1575f3560e01c80638187f51611610174578063bbb19940116100db578063dd62ed3e11610094578063f2fde38b1161006e578063f2fde38b14610a90578063f887ea4014610ab8578063fe9fbb8014610ae2578063fed0d2a114610b1e576102b8565b8063dd62ed3e14610a16578063f0b37c0414610a52578063f0fc6bca14610a7a576102b8565b8063bbb1994014610920578063ca33e64c14610948578063ca987b0e14610972578063d3877dc41461099c578063da00097d146109c4578063dd51faa2146109ee576102b8565b8063a3a2e89e1161012d578063a3a2e89e14610818578063a8aa1b3114610840578063a9059cbb1461086a578063a9f7864b146108a6578063b6a5d7de146108ce578063bad3ea6a146108f6576102b8565b80638187f51614610720578063893d20e8146107485780638aee81271461077257806395d89b411461079a57806398118cb4146107c4578063a364b077146107ee576102b8565b80633f4218e011610218578063650c4226116101d1578063650c4226146106165780636b67c4df1461063e57806370a082311461066857806375f0a874146106a4578063773fcb5c146106ce57806378aa08ed146106f6576102b8565b80633f4218e0146104e65780634355855a1461052257806344c3b95e1461055e578063479f66d8146105885780634a74bb02146105b0578063571ac8b0146105da576102b8565b80632b112e491161026a5780632b112e49146103dc5780632bb14e1d146104065780632f54bf6e14610430578063313ce5671461046c578063315dca291461049657806334c70889146104be576102b8565b80630445b667146102bc57806306fdde03146102e6578063095ea7b31461031057806318160ddd1461034c5780631df4ccfc1461037657806323b872dd146103a0576102b8565b366102b857005b5f5ffd5b3480156102c7575f5ffd5b506102d0610b48565b6040516102dd9190613363565b60405180910390f35b3480156102f1575f5ffd5b506102fa610b4e565b60405161030791906133ec565b60405180910390f35b34801561031b575f5ffd5b5061033660048036038101906103319190613494565b610b8b565b60405161034391906134ec565b60405180910390f35b348015610357575f5ffd5b50610360610c78565b60405161036d9190613363565b60405180910390f35b348015610381575f5ffd5b5061038a610c81565b6040516103979190613363565b60405180910390f35b3480156103ab575f5ffd5b506103c660048036038101906103c19190613505565b610c87565b6040516103d391906134ec565b60405180910390f35b3480156103e7575f5ffd5b506103f0610e7a565b6040516103fd9190613363565b60405180910390f35b348015610411575f5ffd5b5061041a610ef9565b6040516104279190613363565b60405180910390f35b34801561043b575f5ffd5b5061045660048036038101906104519190613555565b610eff565b60405161046391906134ec565b60405180910390f35b348015610477575f5ffd5b50610480610f56565b60405161048d919061359b565b60405180910390f35b3480156104a1575f5ffd5b506104bc60048036038101906104b791906135b4565b610f5e565b005b3480156104c9575f5ffd5b506104e460048036038101906104df919061362e565b61106b565b005b3480156104f1575f5ffd5b5061050c60048036038101906105079190613555565b6110f3565b60405161051991906134ec565b60405180910390f35b34801561052d575f5ffd5b5061054860048036038101906105439190613555565b611110565b60405161055591906134ec565b60405180910390f35b348015610569575f5ffd5b5061057261112d565b60405161057f91906134ec565b60405180910390f35b348015610593575f5ffd5b506105ae60048036038101906105a9919061367e565b611140565b005b3480156105bb575f5ffd5b506105c46111a0565b6040516105d191906134ec565b60405180910390f35b3480156105e5575f5ffd5b5061060060048036038101906105fb9190613555565b6111b3565b60405161060d91906134ec565b60405180910390f35b348015610621575f5ffd5b5061063c600480360381019061063791906136a9565b6111e5565b005b348015610649575f5ffd5b506106526112d3565b60405161065f9190613363565b60405180910390f35b348015610673575f5ffd5b5061068e60048036038101906106899190613555565b6112d9565b60405161069b9190613363565b60405180910390f35b3480156106af575f5ffd5b506106b861131f565b6040516106c5919061371c565b60405180910390f35b3480156106d9575f5ffd5b506106f460048036038101906106ef9190613735565b611344565b005b348015610701575f5ffd5b5061070a6115d0565b6040516107179190613363565b60405180910390f35b34801561072b575f5ffd5b5061074660048036038101906107419190613555565b6115d6565b005b348015610753575f5ffd5b5061075c6116d7565b604051610769919061371c565b60405180910390f35b34801561077d575f5ffd5b5061079860048036038101906107939190613555565b6116fe565b005b3480156107a5575f5ffd5b506107ae6117d0565b6040516107bb91906133ec565b60405180910390f35b3480156107cf575f5ffd5b506107d861180d565b6040516107e59190613363565b60405180910390f35b3480156107f9575f5ffd5b50610802611813565b60405161080f919061371c565b60405180910390f35b348015610823575f5ffd5b5061083e60048036038101906108399190613735565b611838565b005b34801561084b575f5ffd5b506108546118d8565b604051610861919061371c565b60405180910390f35b348015610875575f5ffd5b50610890600480360381019061088b9190613494565b6118fd565b60405161089d91906134ec565b60405180910390f35b3480156108b1575f5ffd5b506108cc60048036038101906108c79190613773565b611911565b005b3480156108d9575f5ffd5b506108f460048036038101906108ef9190613555565b6119e6565b005b348015610901575f5ffd5b5061090a611a85565b604051610917919061380c565b60405180910390f35b34801561092b575f5ffd5b506109466004803603810190610941919061367e565b611aaa565b005b348015610953575f5ffd5b5061095c611b39565b604051610969919061371c565b60405180910390f35b34801561097d575f5ffd5b50610986611b5e565b6040516109939190613363565b60405180910390f35b3480156109a7575f5ffd5b506109c260048036038101906109bd9190613825565b611b64565b005b3480156109cf575f5ffd5b506109d8611bc9565b6040516109e591906134ec565b60405180910390f35b3480156109f9575f5ffd5b50610a146004803603810190610a0f919061367e565b611bdc565b005b348015610a21575f5ffd5b50610a3c6004803603810190610a379190613850565b611c89565b604051610a499190613363565b60405180910390f35b348015610a5d575f5ffd5b50610a786004803603810190610a739190613555565b611d0b565b005b348015610a85575f5ffd5b50610a8e611daa565b005b348015610a9b575f5ffd5b50610ab66004803603810190610ab191906138c9565b611e33565b005b348015610ac3575f5ffd5b50610acc611f48565b604051610ad99190613914565b60405180910390f35b348015610aed575f5ffd5b50610b086004803603810190610b039190613555565b611f6d565b604051610b1591906134ec565b60405180910390f35b348015610b29575f5ffd5b50610b32611fbf565b604051610b3f9190613363565b60405180910390f35b601c5481565b60606040518060400160405280600a81526020017f54657374205072696e7400000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c669190613363565b60405180910390a36001905092915050565b5f600654905090565b60125481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610e6657610de9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc59092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610e71848484612027565b90509392505050565b5f610ef4610ea860035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112d9565b610ee6610ed560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112d9565b60065461271f90919063ffffffff16565b61271f90919063ffffffff16565b905090565b600d5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6012905090565b610f6733611f6d565b610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d90613977565b60405180910390fd5b8260145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61107433611f6d565b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90613977565b60405180910390fd5b82601b60016101000a81548160ff02191690831515021790555081601c8190555080601b60026101000a81548160ff021916908315150217905550505050565b6009602052805f5260405f205f915054906101000a900460ff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b601b60039054906101000a900460ff1681565b61114933611f6d565b611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90613977565b60405180910390fd5b620b71b08110611196575f5ffd5b80601a8190555050565b601b60019054906101000a900460ff1681565b5f6111de827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b8b565b9050919050565b6111ee33611f6d565b61122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490613977565b60405180910390fd5b83600b8190555082600d8190555081600c8190555080600e81905550611288600e5461127a600d5461126c600c54600b5461276890919063ffffffff16565b61276890919063ffffffff16565b61276890919063ffffffff16565b601281905550600a601254111561129d575f5ffd5b6112c7600a6112b96011546012546127c590919063ffffffff16565b61283c90919063ffffffff16565b60138190555050505050565b600c5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61134d33611f6d565b61138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138390613977565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611415575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61141d575f5ffd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156115055760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96835f6040518363ffffffff1660e01b81526004016114d39291906139ce565b5f604051808303815f87803b1580156114ea575f5ffd5b505af11580156114fc573d5f5f3e3d5ffd5b505050506115cc565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b815260040161159e9291906139f5565b5f604051808303815f87803b1580156115b5575f5ffd5b505af11580156115c7573d5f5f3e3d5ffd5b505050505b5050565b600e5481565b6115df33611f6d565b61161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590613977565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61170733611f6d565b611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90613977565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b81526004016117a0919061371c565b5f604051808303815f87803b1580156117b7575f5ffd5b505af11580156117c9573d5f5f3e3d5ffd5b5050505050565b60606040518060400160405280600581526020017f5465737431000000000000000000000000000000000000000000000000000000815250905090565b600b5481565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61184133611f6d565b611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790613977565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611909338484612027565b905092915050565b61191a33611f6d565b611959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195090613977565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016119b5929190613a1c565b5f604051808303815f87803b1580156119cc575f5ffd5b505af11580156119de573d5f5f3e3d5ffd5b505050505050565b6119ef33610eff565b611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2590613a8d565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ab333611f6d565b611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613977565b60405180910390fd5b601e811115611aff575f5ffd5b80601181905550611b30600a611b226011546012546127c590919063ffffffff16565b61283c90919063ffffffff16565b60138190555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b611b6d33611f6d565b611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390613977565b60405180910390fd5b80601b60036101000a81548160ff02191690831515021790555050565b601b60029054906101000a900460ff1681565b611be533610eff565b611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b90613a8d565b60405180910390fd5b60078111611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613b1b565b60405180910390fd5b80600f81905550633b9aca00600f54611c809190613b66565b60108190555050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611d1433610eff565b611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90613a8d565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611e04919061371c565b5f604051808303815f87803b158015611e1b575f5ffd5b505af1158015611e2d573d5f5f3e3d5ffd5b50505050565b611e3c33610eff565b611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290613a8d565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611f3d9190613bc7565b60405180910390a150565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115481565b5f83831115829061200c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200391906133ec565b60405180910390fd5b505f838561201a9190613be0565b9050809150509392505050565b5f601b5f9054906101000a900460ff168061204e5750601b60039054906101000a900460ff165b156120655761205e848484612885565b9050612718565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120ce5750601b5f9054906101000a900460ff16155b80156120e65750601b60019054906101000a900460ff165b80156121315750601c5460075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b1561213f5761213e612a4f565b5b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121e2575060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121f6576010543a11156121f5575f5ffd5b5b61227d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc59092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561235d575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6123675782612373565b6123728585856130fd565b5b90506123c58160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276890919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125175760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968660075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016124ed9291906139f5565b5f604051808303815f87803b158015612504575f5ffd5b505af1925050508015612515575060015b505b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126285760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968560075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016125fe9291906139f5565b5f604051808303815f87803b158015612615575f5ffd5b505af1925050508015612626575060015b505b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601a546040518263ffffffff1660e01b81526004016126849190613363565b5f604051808303815f87803b15801561269b575f5ffd5b505af19250505080156126ac575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161270a9190613363565b60405180910390a360019150505b9392505050565b5f61276083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc5565b905092915050565b5f5f82846127769190613c13565b9050838110156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613c90565b60405180910390fd5b8091505092915050565b5f5f83036127d5575f9050612836565b5f82846127e29190613b66565b90508284826127f19190613cdb565b14612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890613d7b565b60405180910390fd5b809150505b92915050565b5f61287d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061329e565b905092915050565b5f61290d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc59092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061299e8260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276890919063ffffffff16565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a3c9190613363565b60405180910390a3600190509392505050565b6001601b5f6101000a81548160ff0219169083151502179055505f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f612ae76002612ad9601254612acb600b54876127c590919063ffffffff16565b61283c90919063ffffffff16565b61283c90919063ffffffff16565b90505f612afd828461271f90919063ffffffff16565b90505f600167ffffffffffffffff811115612b1b57612b1a613d99565b5b604051908082528060200260200182016040528015612b5457816020015b612b416132ff565b815260200190600190039081612b395790505b50905030815f81518110612b6b57612b6a613dc6565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c369190613e07565b815f81518110612c4957612c48613dc6565b5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f81518110612c9b57612c9a613dc6565b5b6020026020010151604001901515908115158152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637af728c8835f8430426040518663ffffffff1660e01b8152600401612d13959493929190613f38565b5f604051808303815f87803b158015612d2a575f5ffd5b505af1158015612d3c573d5f5f3e3d5ffd5b505050505f4790505f612d6f612d5e6002600b5461283c90919063ffffffff16565b60125461271f90919063ffffffff16565b90505f612dac6002612d9e84612d90600b54886127c590919063ffffffff16565b61283c90919063ffffffff16565b61283c90919063ffffffff16565b90505f612dd683612dc8600d54876127c590919063ffffffff16565b61283c90919063ffffffff16565b90505f612e0084612df2600c54886127c590919063ffffffff16565b61283c90919063ffffffff16565b90505f612e2a85612e1c600e54896127c590919063ffffffff16565b61283c90919063ffffffff16565b905060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612e93575f5ffd5b505af193505050508015612ea5575060015b505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612ef090613fbd565b5f60405180830381858888f193505050503d805f8114612f2b576040519150601f19603f3d011682016040523d82523d5f602084013e612f30565b606091505b505090505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612f7e90613fbd565b5f60405180830381858888f193505050503d805f8114612fb9576040519150601f19603f3d011682016040523d82523d5f602084013e612fbe565b606091505b505090505f91505f90505f8b11156130d65760175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e0d4c087305f8f5f5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b81526004016130589796959493929190613fd1565b60606040518083038185885af1158015613074573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906130999190614052565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868c6040516130cd929190613a1c565b60405180910390a15b5050505050505050505050505f601b5f6101000a81548160ff021916908315150217905550565b5f5f8373ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461315b5760125461315f565b6013545b90505f613188606461317a84876127c590919063ffffffff16565b61283c90919063ffffffff16565b90506131da8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276890919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132789190613363565b60405180910390a3613293818561271f90919063ffffffff16565b925050509392505050565b5f5f831182906132e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132db91906133ec565b60405180910390fd5b505f83856132f29190613cdb565b9050809150509392505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f819050919050565b61335d8161334b565b82525050565b5f6020820190506133765f830184613354565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6133be8261337c565b6133c88185613386565b93506133d8818560208601613396565b6133e1816133a4565b840191505092915050565b5f6020820190508181035f83015261340481846133b4565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61343982613410565b9050919050565b6134498161342f565b8114613453575f5ffd5b50565b5f8135905061346481613440565b92915050565b6134738161334b565b811461347d575f5ffd5b50565b5f8135905061348e8161346a565b92915050565b5f5f604083850312156134aa576134a961340c565b5b5f6134b785828601613456565b92505060206134c885828601613480565b9150509250929050565b5f8115159050919050565b6134e6816134d2565b82525050565b5f6020820190506134ff5f8301846134dd565b92915050565b5f5f5f6060848603121561351c5761351b61340c565b5b5f61352986828701613456565b935050602061353a86828701613456565b925050604061354b86828701613480565b9150509250925092565b5f6020828403121561356a5761356961340c565b5b5f61357784828501613456565b91505092915050565b5f60ff82169050919050565b61359581613580565b82525050565b5f6020820190506135ae5f83018461358c565b92915050565b5f5f5f606084860312156135cb576135ca61340c565b5b5f6135d886828701613456565b93505060206135e986828701613456565b92505060406135fa86828701613456565b9150509250925092565b61360d816134d2565b8114613617575f5ffd5b50565b5f8135905061362881613604565b92915050565b5f5f5f606084860312156136455761364461340c565b5b5f6136528682870161361a565b935050602061366386828701613480565b92505060406136748682870161361a565b9150509250925092565b5f602082840312156136935761369261340c565b5b5f6136a084828501613480565b91505092915050565b5f5f5f5f608085870312156136c1576136c061340c565b5b5f6136ce87828801613480565b94505060206136df87828801613480565b93505060406136f087828801613480565b925050606061370187828801613480565b91505092959194509250565b6137168161342f565b82525050565b5f60208201905061372f5f83018461370d565b92915050565b5f5f6040838503121561374b5761374a61340c565b5b5f61375885828601613456565b92505060206137698582860161361a565b9150509250929050565b5f5f604083850312156137895761378861340c565b5b5f61379685828601613480565b92505060206137a785828601613480565b9150509250929050565b5f819050919050565b5f6137d46137cf6137ca84613410565b6137b1565b613410565b9050919050565b5f6137e5826137ba565b9050919050565b5f6137f6826137db565b9050919050565b613806816137ec565b82525050565b5f60208201905061381f5f8301846137fd565b92915050565b5f6020828403121561383a5761383961340c565b5b5f6138478482850161361a565b91505092915050565b5f5f604083850312156138665761386561340c565b5b5f61387385828601613456565b925050602061388485828601613456565b9150509250929050565b5f61389882613410565b9050919050565b6138a88161388e565b81146138b2575f5ffd5b50565b5f813590506138c38161389f565b92915050565b5f602082840312156138de576138dd61340c565b5b5f6138eb848285016138b5565b91505092915050565b5f6138fe826137db565b9050919050565b61390e816138f4565b82525050565b5f6020820190506139275f830184613905565b92915050565b7f21415554484f52495a45440000000000000000000000000000000000000000005f82015250565b5f613961600b83613386565b915061396c8261392d565b602082019050919050565b5f6020820190508181035f83015261398e81613955565b9050919050565b5f819050919050565b5f6139b86139b36139ae84613995565b6137b1565b61334b565b9050919050565b6139c88161399e565b82525050565b5f6040820190506139e15f83018561370d565b6139ee60208301846139bf565b9392505050565b5f604082019050613a085f83018561370d565b613a156020830184613354565b9392505050565b5f604082019050613a2f5f830185613354565b613a3c6020830184613354565b9392505050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613a77600683613386565b9150613a8282613a43565b602082019050919050565b5f6020820190508181035f830152613aa481613a6b565b9050919050565b7f4d617820676173206d75737420626520686967686572207468616e20372067775f8201527f6569000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b05602283613386565b9150613b1082613aab565b604082019050919050565b5f6020820190508181035f830152613b3281613af9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b708261334b565b9150613b7b8361334b565b9250828202613b898161334b565b91508282048414831517613ba057613b9f613b39565b5b5092915050565b5f613bb1826137db565b9050919050565b613bc181613ba7565b82525050565b5f602082019050613bda5f830184613bb8565b92915050565b5f613bea8261334b565b9150613bf58361334b565b9250828203905081811115613c0d57613c0c613b39565b5b92915050565b5f613c1d8261334b565b9150613c288361334b565b9250828201905080821115613c4057613c3f613b39565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c7a601b83613386565b9150613c8582613c46565b602082019050919050565b5f6020820190508181035f830152613ca781613c6e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ce58261334b565b9150613cf08361334b565b925082613d0057613cff613cae565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d65602183613386565b9150613d7082613d0b565b604082019050919050565b5f6020820190508181035f830152613d9281613d59565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613e0181613440565b92915050565b5f60208284031215613e1c57613e1b61340c565b5b5f613e2984828501613df3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e648161342f565b82525050565b613e73816134d2565b82525050565b606082015f820151613e8d5f850182613e5b565b506020820151613ea06020850182613e5b565b506040820151613eb36040850182613e6a565b50505050565b5f613ec48383613e79565b60608301905092915050565b5f602082019050919050565b5f613ee682613e32565b613ef08185613e3c565b9350613efb83613e4c565b805f5b83811015613f2b578151613f128882613eb9565b9750613f1d83613ed0565b925050600181019050613efe565b5085935050505092915050565b5f60a082019050613f4b5f830188613354565b613f5860208301876139bf565b8181036040830152613f6a8186613edc565b9050613f79606083018561370d565b613f866080830184613354565b9695505050505050565b5f81905092915050565b50565b5f613fa85f83613f90565b9150613fb382613f9a565b5f82019050919050565b5f613fc782613f9d565b9150819050919050565b5f60e082019050613fe45f83018a61370d565b613ff160208301896134dd565b613ffe6040830188613354565b61400b60608301876139bf565b61401860808301866139bf565b61402560a083018561370d565b61403260c0830184613354565b98975050505050505050565b5f8151905061404c8161346a565b92915050565b5f5f5f606084860312156140695761406861340c565b5b5f6140768682870161403e565b93505060206140878682870161403e565b92505060406140988682870161403e565b915050925092509256fea264697066735822122034ebc919bdf85888f5dd0360ac1f242277a4898a54526b6ac2ed92027d2586c564736f6c634300081c0033

Deployed Bytecode Sourcemap

11803:11656:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13383:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14871:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15715:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15133:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12868:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18656:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15313:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12648:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11052:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15047:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17411:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17704:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12462:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12513:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13343:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18196:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13244:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15939:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16922:481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12609:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15463:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12990:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16538:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12684:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14739:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15227:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18347:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14957:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12571:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13027:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16407:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13095:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18492:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17988:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10725:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13123:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16179:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12947:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12902;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19042:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13291:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21267:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15574:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10895:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16073:98;;;;;;;;;;;;;:::i;:::-;;11424:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13064:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11226:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12825:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13383:43;;;;:::o;14871:80::-;14919:13;14943:5;;;;;;;;;;;;;;;;;14936:12;;14871:80;:::o;15715:216::-;15790:4;15842:6;15807:11;:23;15819:10;15807:23;;;;;;;;;;;;;;;:32;15831:7;15807:32;;;;;;;;;;;;;;;:41;;;;15885:7;15864:37;;15873:10;15864:37;;;15894:6;15864:37;;;;;;:::i;:::-;;;;;;;;15919:4;15912:11;;15715:216;;;;:::o;15133:88::-;15188:7;15206:12;;15199:19;;15133:88;:::o;12868:27::-;;;;:::o;18656:378::-;18756:4;18821:17;18786:11;:19;18798:6;18786:19;;;;;;;;;;;;;;;:31;18806:10;18786:31;;;;;;;;;;;;;;;;:52;18783:186;;18888:69;18924:6;18888:69;;;;;;;;;;;;;;;;;:11;:19;18900:6;18888:19;;;;;;;;;;;;;;;:31;18908:10;18888:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18854:11;:19;18866:6;18854:19;;;;;;;;;;;;;;;:31;18874:10;18854:31;;;;;;;;;;;;;;;:103;;;;18783:186;18986:40;19000:6;19008:9;19019:6;18986:13;:40::i;:::-;18979:47;;18656:378;;;;;:::o;15313:142::-;15366:7;15393:54;15431:15;15441:4;;;;;;;;;;;15431:9;:15::i;:::-;15393:33;15410:15;15420:4;;;;;;;;;;;15410:9;:15::i;:::-;15393:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15386:61;;15313:142;:::o;12648:29::-;;;;:::o;11052:103::-;11107:4;11142:5;;;;;;;;;;;11131:16;;:7;:16;;;11124:23;;11052:103;;;:::o;15047:80::-;15099:5;11996:2;15108:16;;15047:80;:::o;17411:285::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17578:20:::1;17554:21;;:44;;;;;;;;;;;;;;;;;;17627:18;17609:15;;:36;;;;;;;;;;;;;;;;;;17672:16;17656:13;;:32;;;;;;;;;;;;;;;;;;17411:285:::0;;;:::o;17704:276::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17861:14:::1;17836:21;;:39;;;;;;;;;;;;;;;;;;17902:16;17886:13;:32;;;;17957:15;17929:25;;:43;;;;;;;;;;;;;;;;;;17704:276:::0;;;:::o;12462:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12513:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;13343:31::-;;;;;;;;;;;;;:::o;18196:139::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18289:6:::1;18283:3;:12;18275:21;;;;;;18324:3;18307:14;:20;;;;18196:139:::0;:::o;13244:40::-;;;;;;;;;;;;;:::o;15939:122::-;15994:4;16018:35;16026:7;16035:17;16018:7;:35::i;:::-;16011:42;;15939:122;;;:::o;16922:481::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17077:9:::1;17062:12;:24;;;;17110:12;17097:10;:25;;;;17148:15;17133:12;:30;;;;17187:13;17174:10;:26;;;;17232:62;17283:10;;17232:46;17267:10;;17232:30;17249:12;;17232;;:16;;:30;;;;:::i;:::-;:34;;:46;;;;:::i;:::-;:50;;:62;;;;:::i;:::-;17221:8;:73;;;;17325:2;17313:8;;:14;;17305:23;;;;;;17359:36;17392:2;17359:28;17372:14;;17359:8;;:12;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;17339:17;:56;;;;16922:481:::0;;;;:::o;12609:32::-;;;;:::o;15463:105::-;15529:7;15547:9;:18;15557:7;15547:18;;;;;;;;;;;;;;;;15540:25;;15463:105;;;:::o;12990:30::-;;;;;;;;;;;;;:::o;16538:376::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16656:4:::1;16638:23;;:6;:23;;;;:41;;;;;16675:4;;;;;;;;;;;16665:14;;:6;:14;;;;16638:41;16630:50;;;;;;16718:6;16691:16;:24;16708:6;16691:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16748:6;16745:162;;;16770:19;;;;;;;;;;;:28;;;16799:6;16807:1;16770:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16745:162;;;16840:19;;;;;;;;;;;:28;;;16869:6;16877:9;:17;16887:6;16877:17;;;;;;;;;;;;;;;;16840:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16745:162;16538:376:::0;;:::o;12684:29::-;;;;:::o;14739:124::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14808:5:::1;14801:4;;:12;;;;;;;;;;;;;;;;;;14851:4;14826:16;:22;14843:4;;;;;;;;;;;14826:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14739:124:::0;:::o;15227:78::-;15279:7;15297:5;;;;;;;;;;;15290:12;;15227:78;:::o;18347:133::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18424:19:::1;;;;;;;;;;;:34;;;18459:12;18424:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18347:133:::0;:::o;14957:84::-;15007:13;15031:7;;;;;;;;;;;;;;;;;15024:14;;14957:84;:::o;12571:31::-;;;;:::o;13027:28::-;;;;;;;;;;;;;:::o;16407:123::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16516:6:::1;16494:11;:19;16506:6;16494:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16407:123:::0;;:::o;13095:19::-;;;;;;;;;;;;;:::o;18492:156::-;18572:4;18596:44;18610:10;18622:9;18633:6;18596:13;:44::i;:::-;18589:51;;18492:156;;;;:::o;17988:200::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18104:19:::1;;;;;;;;;;;:43;;;18148:11;18161:18;18104:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17988:200:::0;;:::o;10725:94::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10807:4:::1;10785:14:::0;:19:::1;10800:3;10785:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10725:94:::0;:::o;13123:46::-;;;;;;;;;;;;;:::o;16179:208::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16273:2:::1;16261:8;:14;;16253:23;;;;;;16304:8;16287:14;:25;;;;16343:36;16376:2;16343:28;16356:14;;16343:8;;:12;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;16323:17;:56;;;;16179:208:::0;:::o;12947:36::-;;;;;;;;;;;;;:::o;12902:::-;;;;:::o;19042:96::-;10610:24;10623:10;10610:12;:24::i;:::-;10602:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19126:4:::1;19110:13;;:20;;;;;;;;;;;;;;;;;;19042:96:::0;:::o;13291:45::-;;;;;;;;;;;;;:::o;21267:206::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21342:1:::1;21336:3;:7;21328:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21409:3;21393:15;:19;;;;21458:6;21440:15;;:24;;;;:::i;:::-;21423:14;:41;;;;21267:206:::0;:::o;15574:133::-;15658:7;15676:11;:19;15688:6;15676:19;;;;;;;;;;;;;;;:28;15696:7;15676:28;;;;;;;;;;;;;;;;15669:35;;15574:133;;;;:::o;10895:97::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10979:5:::1;10957:14;:19;10972:3;10957:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10895:97:::0;:::o;16073:98::-;16118:19;;;;;;;;;;;:33;;;16152:10;16118:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16073:98::o;11424:173::-;10441:19;10449:10;10441:7;:19::i;:::-;10433:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11508:3:::1;11500:5;;:11;;;;;;;;;;;;;;;;;;11544:4;11522:14:::0;:19:::1;11537:3;11522:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11564:25;11585:3;11564:25;;;;;;:::i;:::-;;;;;;;;11424:173:::0;:::o;13064:24::-;;;;;;;;;;;;;:::o;11226:107::-;11282:4;11306:14;:19;11321:3;11306:19;;;;;;;;;;;;;;;;;;;;;;;;;11299:26;;11226:107;;;:::o;12825:34::-;;;;:::o;417:190::-;503:7;536:1;531;:6;;539:12;523:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;563:9;579:1;575;:5;;;;:::i;:::-;563:17;;598:1;591:8;;;417:190;;;;;:::o;19144:1326::-;19236:4;19266:16;;;;;;;;;;;:33;;;;19286:13;;;;;;;;;;;19266:33;19263:114;;;19323:41;19338:6;19346:9;19357:6;19323:14;:41::i;:::-;19316:48;;;;19263:114;19406:4;;;;;;;;;;;19392:18;;:10;:18;;;;:39;;;;;19415:16;;;;;;;;;;;19414:17;19392:39;:64;;;;;19435:21;;;;;;;;;;;19392:64;:109;;;;;19488:13;;19460:9;:24;19478:4;19460:24;;;;;;;;;;;;;;;;:41;;19392:109;19389:152;;;19518:10;:8;:10::i;:::-;19389:152;19577:4;;;;;;;;;;;19564:17;;:9;:17;;;:44;;;;;19586:14;:22;19601:6;19586:22;;;;;;;;;;;;;;;;;;;;;;;;;19585:23;19564:44;19561:114;;;19648:14;;19633:11;:29;;19625:38;;;;;;19561:114;19734:53;19756:6;19734:53;;;;;;;;;;;;;;;;;:9;:17;19744:6;19734:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19714:9;:17;19724:6;19714:17;;;;;;;;;;;;;;;:73;;;;19808:19;19831:11;:19;19843:6;19831:19;;;;;;;;;;;;;;;;;;;;;;;;;19830:20;:47;;;;;19855:11;:22;19867:9;19855:22;;;;;;;;;;;;;;;;;;;;;;;;;19854:23;19830:47;:93;;19917:6;19830:93;;;19880:34;19888:6;19896:9;19907:6;19880:7;:34::i;:::-;19830:93;19808:115;;19957:37;19982:11;19957:9;:20;19967:9;19957:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19934:9;:20;19944:9;19934:20;;;;;;;;;;;;;;;:60;;;;20040:16;:24;20057:6;20040:24;;;;;;;;;;;;;;;;;;;;;;;;;20036:127;;20085:19;;;;;;;;;;;:28;;;20114:6;20122:9;:17;20132:6;20122:17;;;;;;;;;;;;;;;;20085:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20081:71;20036:127;20179:16;:27;20196:9;20179:27;;;;;;;;;;;;;;;;;;;;;;;;;20175:137;;20227:19;;;;;;;;;;;:28;;;20256:9;20267;:20;20277:9;20267:20;;;;;;;;;;;;;;;;20227:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20223:77;20175:137;20328:19;;;;;;;;;;;:27;;;20356:14;;20328:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20324:59;20417:9;20400:40;;20409:6;20400:40;;;20428:11;20400:40;;;;;;:::i;:::-;;;;;;;;20458:4;20451:11;;;19144:1326;;;;;;:::o;273:136::-;331:7;358:43;362:1;365;358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;351:50;;273:136;;;;:::o;86:179::-;144:7;164:9;180:1;176;:5;;;;:::i;:::-;164:17;;205:1;200;:6;;192:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;256:1;249:8;;;86:179;;;;:::o;615:224::-;673:7;702:1;697;:6;693:25;;714:1;707:8;;;;693:25;728:9;744:1;740;:5;;;;:::i;:::-;728:17;;773:1;768;764;:5;;;;:::i;:::-;:10;756:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;830:1;823:8;;;615:224;;;;;:::o;847:132::-;905:7;932:39;936:1;939;932:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;925:46;;847:132;;;;:::o;20482:330::-;20575:4;20612:53;20634:6;20612:53;;;;;;;;;;;;;;;;;:9;:17;20622:6;20612:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20592:9;:17;20602:6;20592:17;;;;;;;;;;;;;;;:73;;;;20699:32;20724:6;20699:9;:20;20709:9;20699:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20676:9;:20;20686:9;20676:20;;;;;;;;;;;;;;;:55;;;;20764:9;20747:35;;20756:6;20747:35;;;20775:6;20747:35;;;;;;:::i;:::-;;;;;;;;20800:4;20793:11;;20482:330;;;;;:::o;21481:1909::-;13490:4;13471:16;;:23;;;;;;;;;;;;;;;;;;21543::::1;21569:9;:24;21587:4;21569:24;;;;;;;;;;;;;;;;21543:50;;21604:23;21630:54;21682:1;21630:47;21668:8;;21630:33;21650:12;;21630:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;21604:80;;21695:20;21718:36;21738:15;21718;:19;;:36;;;;:::i;:::-;21695:59;;21767:19;21801:1;21789:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;21767:36;;21837:4;21814;21819:1;21814:7;;;;;;;;:::i;:::-;;;;;;;;:12;;:28;;;;;;;;;::::0;::::1;21866:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21853:4;21858:1;21853:7;;;;;;;;:::i;:::-;;;;;;;;:10;;:26;;;;;;;;;::::0;::::1;21907:5;21890:4;21895:1;21890:7;;;;;;;;:::i;:::-;;;;;;;;:14;;:22;;;;;;;;;::::0;::::1;21925:6;;;;;;;;;;;:57;;;21997:12;22024:1;22040:4;22067;22087:15;21925:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22126:17;22146:21;22126:41;;22180:19;22202:33;22215:19;22232:1;22215:12;;:16;;:19;;;;:::i;:::-;22202:8;;:12;;:33;;;;:::i;:::-;22180:55;;22256:26;22285:51;22334:1;22285:44;22317:11;22285:27;22299:12;;22285:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;22256:80;;22347:27;22377:42;22407:11;22377:25;22391:10;;22377:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;22347:72;;22430:26;22459:44;22491:11;22459:27;22473:12;;22459:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22430:73;;22514:24;22541:42;22571:11;22541:25;22555:10;;22541:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;22514:69;;22600:19;;;;;;;;;;;:27;;;22635:19;22600:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22596:73:::0;22682:15:::1;22710;;;;;;;;;;;22702:29;;22739:18;22764:5;22702:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22681:93;;;22786:16;22815:13;;;;;;;;;;;22807:27;;22842:16;22865:5;22807:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22785:90;;;22949:5;22936:18;;22979:5;22965:19;;23018:1;23000:15;:19;22997:386;;;23035:6;;;;;;;;;;;:22;;;23065:18;23111:4;23135:5;23159:15;23193:1;23213;23233:21;;;;;;;;;;;23273:15;23035:268;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23323:48;23335:18;23355:15;23323:48;;;;;;;:::i;:::-;;;;;;;;22997:386;21522:1868;;;;;;;;;;;;13536:5:::0;13517:16;;:24;;;;;;;;;;;;;;;;;;21481:1909::o;20820:439::-;20906:7;20936:21;20968:9;20960:17;;:4;;;;;;;;;;;:17;;;:48;;21000:8;;20960:48;;;20980:17;;20960:48;20936:72;;21019:17;21039:34;21069:3;21039:25;21050:13;21039:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21019:54;;21113:39;21142:9;21113;:24;21131:4;21113:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21086:9;:24;21104:4;21086:24;;;;;;;;;;;;;;;:66;;;;21193:4;21168:42;;21177:6;21168:42;;;21200:9;21168:42;;;;;;:::i;:::-;;;;;;;;21230:21;21241:9;21230:6;:10;;:21;;;;:::i;:::-;21223:28;;;;20820:439;;;;;:::o;987:189::-;1073:7;1105:1;1101;:5;1108:12;1093:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1132:9;1148:1;1144;:5;;;;:::i;:::-;1132:17;;1167:1;1160:8;;;987:189;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:139::-;811:6;806:3;801;795:23;852:1;843:6;838:3;834:16;827:27;722:139;;;:::o;867:102::-;908:6;959:2;955:7;950:2;943:5;939:14;935:28;925:38;;867:102;;;:::o;975:377::-;1063:3;1091:39;1124:5;1091:39;:::i;:::-;1146:71;1210:6;1205:3;1146:71;:::i;:::-;1139:78;;1226:65;1284:6;1279:3;1272:4;1265:5;1261:16;1226:65;:::i;:::-;1316:29;1338:6;1316:29;:::i;:::-;1311:3;1307:39;1300:46;;1067:285;975:377;;;;:::o;1358:313::-;1471:4;1509:2;1498:9;1494:18;1486:26;;1558:9;1552:4;1548:20;1544:1;1533:9;1529:17;1522:47;1586:78;1659:4;1650:6;1586:78;:::i;:::-;1578:86;;1358:313;;;;:::o;1758:117::-;1867:1;1864;1857:12;2004:126;2041:7;2081:42;2074:5;2070:54;2059:65;;2004:126;;;:::o;2136:96::-;2173:7;2202:24;2220:5;2202:24;:::i;:::-;2191:35;;2136:96;;;:::o;2238:122::-;2311:24;2329:5;2311:24;:::i;:::-;2304:5;2301:35;2291:63;;2350:1;2347;2340:12;2291:63;2238:122;:::o;2366:139::-;2412:5;2450:6;2437:20;2428:29;;2466:33;2493:5;2466:33;:::i;:::-;2366:139;;;;:::o;2511:122::-;2584:24;2602:5;2584:24;:::i;:::-;2577:5;2574:35;2564:63;;2623:1;2620;2613:12;2564:63;2511:122;:::o;2639:139::-;2685:5;2723:6;2710:20;2701:29;;2739:33;2766:5;2739:33;:::i;:::-;2639:139;;;;:::o;2784:474::-;2852:6;2860;2909:2;2897:9;2888:7;2884:23;2880:32;2877:119;;;2915:79;;:::i;:::-;2877:119;3035:1;3060:53;3105:7;3096:6;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3006:117;3162:2;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3133:118;2784:474;;;;;:::o;3264:90::-;3298:7;3341:5;3334:13;3327:21;3316:32;;3264:90;;;:::o;3360:109::-;3441:21;3456:5;3441:21;:::i;:::-;3436:3;3429:34;3360:109;;:::o;3475:210::-;3562:4;3600:2;3589:9;3585:18;3577:26;;3613:65;3675:1;3664:9;3660:17;3651:6;3613:65;:::i;:::-;3475:210;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:619::-;5158:6;5166;5174;5223:2;5211:9;5202:7;5198:23;5194:32;5191:119;;;5229:79;;:::i;:::-;5191:119;5349:1;5374:53;5419:7;5410:6;5399:9;5395:22;5374:53;:::i;:::-;5364:63;;5320:117;5476:2;5502:53;5547:7;5538:6;5527:9;5523:22;5502:53;:::i;:::-;5492:63;;5447:118;5604:2;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5575:118;5081:619;;;;;:::o;5706:116::-;5776:21;5791:5;5776:21;:::i;:::-;5769:5;5766:32;5756:60;;5812:1;5809;5802:12;5756:60;5706:116;:::o;5828:133::-;5871:5;5909:6;5896:20;5887:29;;5925:30;5949:5;5925:30;:::i;:::-;5828:133;;;;:::o;5967:607::-;6038:6;6046;6054;6103:2;6091:9;6082:7;6078:23;6074:32;6071:119;;;6109:79;;:::i;:::-;6071:119;6229:1;6254:50;6296:7;6287:6;6276:9;6272:22;6254:50;:::i;:::-;6244:60;;6200:114;6353:2;6379:53;6424:7;6415:6;6404:9;6400:22;6379:53;:::i;:::-;6369:63;;6324:118;6481:2;6507:50;6549:7;6540:6;6529:9;6525:22;6507:50;:::i;:::-;6497:60;;6452:115;5967:607;;;;;:::o;6580:329::-;6639:6;6688:2;6676:9;6667:7;6663:23;6659:32;6656:119;;;6694:79;;:::i;:::-;6656:119;6814:1;6839:53;6884:7;6875:6;6864:9;6860:22;6839:53;:::i;:::-;6829:63;;6785:117;6580:329;;;;:::o;6915:765::-;7001:6;7009;7017;7025;7074:3;7062:9;7053:7;7049:23;7045:33;7042:120;;;7081:79;;:::i;:::-;7042:120;7201:1;7226:53;7271:7;7262:6;7251:9;7247:22;7226:53;:::i;:::-;7216:63;;7172:117;7328:2;7354:53;7399:7;7390:6;7379:9;7375:22;7354:53;:::i;:::-;7344:63;;7299:118;7456:2;7482:53;7527:7;7518:6;7507:9;7503:22;7482:53;:::i;:::-;7472:63;;7427:118;7584:2;7610:53;7655:7;7646:6;7635:9;7631:22;7610:53;:::i;:::-;7600:63;;7555:118;6915:765;;;;;;;:::o;7686:118::-;7773:24;7791:5;7773:24;:::i;:::-;7768:3;7761:37;7686:118;;:::o;7810:222::-;7903:4;7941:2;7930:9;7926:18;7918:26;;7954:71;8022:1;8011:9;8007:17;7998:6;7954:71;:::i;:::-;7810:222;;;;:::o;8038:468::-;8103:6;8111;8160:2;8148:9;8139:7;8135:23;8131:32;8128:119;;;8166:79;;:::i;:::-;8128:119;8286:1;8311:53;8356:7;8347:6;8336:9;8332:22;8311:53;:::i;:::-;8301:63;;8257:117;8413:2;8439:50;8481:7;8472:6;8461:9;8457:22;8439:50;:::i;:::-;8429:60;;8384:115;8038:468;;;;;:::o;8512:474::-;8580:6;8588;8637:2;8625:9;8616:7;8612:23;8608:32;8605:119;;;8643:79;;:::i;:::-;8605:119;8763:1;8788:53;8833:7;8824:6;8813:9;8809:22;8788:53;:::i;:::-;8778:63;;8734:117;8890:2;8916:53;8961:7;8952:6;8941:9;8937:22;8916:53;:::i;:::-;8906:63;;8861:118;8512:474;;;;;:::o;8992:60::-;9020:3;9041:5;9034:12;;8992:60;;;:::o;9058:142::-;9108:9;9141:53;9159:34;9168:24;9186:5;9168:24;:::i;:::-;9159:34;:::i;:::-;9141:53;:::i;:::-;9128:66;;9058:142;;;:::o;9206:126::-;9256:9;9289:37;9320:5;9289:37;:::i;:::-;9276:50;;9206:126;;;:::o;9338:154::-;9416:9;9449:37;9480:5;9449:37;:::i;:::-;9436:50;;9338:154;;;:::o;9498:187::-;9613:65;9672:5;9613:65;:::i;:::-;9608:3;9601:78;9498:187;;:::o;9691:278::-;9812:4;9850:2;9839:9;9835:18;9827:26;;9863:99;9959:1;9948:9;9944:17;9935:6;9863:99;:::i;:::-;9691:278;;;;:::o;9975:323::-;10031:6;10080:2;10068:9;10059:7;10055:23;10051:32;10048:119;;;10086:79;;:::i;:::-;10048:119;10206:1;10231:50;10273:7;10264:6;10253:9;10249:22;10231:50;:::i;:::-;10221:60;;10177:114;9975:323;;;;:::o;10304:474::-;10372:6;10380;10429:2;10417:9;10408:7;10404:23;10400:32;10397:119;;;10435:79;;:::i;:::-;10397:119;10555:1;10580:53;10625:7;10616:6;10605:9;10601:22;10580:53;:::i;:::-;10570:63;;10526:117;10682:2;10708:53;10753:7;10744:6;10733:9;10729:22;10708:53;:::i;:::-;10698:63;;10653:118;10304:474;;;;;:::o;10784:104::-;10829:7;10858:24;10876:5;10858:24;:::i;:::-;10847:35;;10784:104;;;:::o;10894:138::-;10975:32;11001:5;10975:32;:::i;:::-;10968:5;10965:43;10955:71;;11022:1;11019;11012:12;10955:71;10894:138;:::o;11038:155::-;11092:5;11130:6;11117:20;11108:29;;11146:41;11181:5;11146:41;:::i;:::-;11038:155;;;;:::o;11199:345::-;11266:6;11315:2;11303:9;11294:7;11290:23;11286:32;11283:119;;;11321:79;;:::i;:::-;11283:119;11441:1;11466:61;11519:7;11510:6;11499:9;11495:22;11466:61;:::i;:::-;11456:71;;11412:125;11199:345;;;;:::o;11550:144::-;11618:9;11651:37;11682:5;11651:37;:::i;:::-;11638:50;;11550:144;;;:::o;11700:167::-;11805:55;11854:5;11805:55;:::i;:::-;11800:3;11793:68;11700:167;;:::o;11873:258::-;11984:4;12022:2;12011:9;12007:18;11999:26;;12035:89;12121:1;12110:9;12106:17;12097:6;12035:89;:::i;:::-;11873:258;;;;:::o;12137:161::-;12277:13;12273:1;12265:6;12261:14;12254:37;12137:161;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:85::-;13146:7;13175:5;13164:16;;13101:85;;;:::o;13192:158::-;13250:9;13283:61;13301:42;13310:32;13336:5;13310:32;:::i;:::-;13301:42;:::i;:::-;13283:61;:::i;:::-;13270:74;;13192:158;;;:::o;13356:147::-;13451:45;13490:5;13451:45;:::i;:::-;13446:3;13439:58;13356:147;;:::o;13509:348::-;13638:4;13676:2;13665:9;13661:18;13653:26;;13689:71;13757:1;13746:9;13742:17;13733:6;13689:71;:::i;:::-;13770:80;13846:2;13835:9;13831:18;13822:6;13770:80;:::i;:::-;13509:348;;;;;:::o;13863:332::-;13984:4;14022:2;14011:9;14007:18;13999:26;;14035:71;14103:1;14092:9;14088:17;14079:6;14035:71;:::i;:::-;14116:72;14184:2;14173:9;14169:18;14160:6;14116:72;:::i;:::-;13863:332;;;;;:::o;14201:::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14373:71;14441:1;14430:9;14426:17;14417:6;14373:71;:::i;:::-;14454:72;14522:2;14511:9;14507:18;14498:6;14454:72;:::i;:::-;14201:332;;;;;:::o;14539:156::-;14679:8;14675:1;14667:6;14663:14;14656:32;14539:156;:::o;14701:365::-;14843:3;14864:66;14928:1;14923:3;14864:66;:::i;:::-;14857:73;;14939:93;15028:3;14939:93;:::i;:::-;15057:2;15052:3;15048:12;15041:19;;14701:365;;;:::o;15072:419::-;15238:4;15276:2;15265:9;15261:18;15253:26;;15325:9;15319:4;15315:20;15311:1;15300:9;15296:17;15289:47;15353:131;15479:4;15353:131;:::i;:::-;15345:139;;15072:419;;;:::o;15497:221::-;15637:34;15633:1;15625:6;15621:14;15614:58;15706:4;15701:2;15693:6;15689:15;15682:29;15497:221;:::o;15724:366::-;15866:3;15887:67;15951:2;15946:3;15887:67;:::i;:::-;15880:74;;15963:93;16052:3;15963:93;:::i;:::-;16081:2;16076:3;16072:12;16065:19;;15724:366;;;:::o;16096:419::-;16262:4;16300:2;16289:9;16285:18;16277:26;;16349:9;16343:4;16339:20;16335:1;16324:9;16320:17;16313:47;16377:131;16503:4;16377:131;:::i;:::-;16369:139;;16096:419;;;:::o;16521:180::-;16569:77;16566:1;16559:88;16666:4;16663:1;16656:15;16690:4;16687:1;16680:15;16707:410;16747:7;16770:20;16788:1;16770:20;:::i;:::-;16765:25;;16804:20;16822:1;16804:20;:::i;:::-;16799:25;;16859:1;16856;16852:9;16881:30;16899:11;16881:30;:::i;:::-;16870:41;;17060:1;17051:7;17047:15;17044:1;17041:22;17021:1;17014:9;16994:83;16971:139;;17090:18;;:::i;:::-;16971:139;16755:362;16707:410;;;;:::o;17123:134::-;17181:9;17214:37;17245:5;17214:37;:::i;:::-;17201:50;;17123:134;;;:::o;17263:147::-;17358:45;17397:5;17358:45;:::i;:::-;17353:3;17346:58;17263:147;;:::o;17416:238::-;17517:4;17555:2;17544:9;17540:18;17532:26;;17568:79;17644:1;17633:9;17629:17;17620:6;17568:79;:::i;:::-;17416:238;;;;:::o;17660:194::-;17700:4;17720:20;17738:1;17720:20;:::i;:::-;17715:25;;17754:20;17772:1;17754:20;:::i;:::-;17749:25;;17798:1;17795;17791:9;17783:17;;17822:1;17816:4;17813:11;17810:37;;;17827:18;;:::i;:::-;17810:37;17660:194;;;;:::o;17860:191::-;17900:3;17919:20;17937:1;17919:20;:::i;:::-;17914:25;;17953:20;17971:1;17953:20;:::i;:::-;17948:25;;17996:1;17993;17989:9;17982:16;;18017:3;18014:1;18011:10;18008:36;;;18024:18;;:::i;:::-;18008:36;17860:191;;;;:::o;18057:177::-;18197:29;18193:1;18185:6;18181:14;18174:53;18057:177;:::o;18240:366::-;18382:3;18403:67;18467:2;18462:3;18403:67;:::i;:::-;18396:74;;18479:93;18568:3;18479:93;:::i;:::-;18597:2;18592:3;18588:12;18581:19;;18240:366;;;:::o;18612:419::-;18778:4;18816:2;18805:9;18801:18;18793:26;;18865:9;18859:4;18855:20;18851:1;18840:9;18836:17;18829:47;18893:131;19019:4;18893:131;:::i;:::-;18885:139;;18612:419;;;:::o;19037:180::-;19085:77;19082:1;19075:88;19182:4;19179:1;19172:15;19206:4;19203:1;19196:15;19223:185;19263:1;19280:20;19298:1;19280:20;:::i;:::-;19275:25;;19314:20;19332:1;19314:20;:::i;:::-;19309:25;;19353:1;19343:35;;19358:18;;:::i;:::-;19343:35;19400:1;19397;19393:9;19388:14;;19223:185;;;;:::o;19414:220::-;19554:34;19550:1;19542:6;19538:14;19531:58;19623:3;19618:2;19610:6;19606:15;19599:28;19414:220;:::o;19640:366::-;19782:3;19803:67;19867:2;19862:3;19803:67;:::i;:::-;19796:74;;19879:93;19968:3;19879:93;:::i;:::-;19997:2;19992:3;19988:12;19981:19;;19640:366;;;:::o;20012:419::-;20178:4;20216:2;20205:9;20201:18;20193:26;;20265:9;20259:4;20255:20;20251:1;20240:9;20236:17;20229:47;20293:131;20419:4;20293:131;:::i;:::-;20285:139;;20012:419;;;:::o;20437:180::-;20485:77;20482:1;20475:88;20582:4;20579:1;20572:15;20606:4;20603:1;20596:15;20623:180;20671:77;20668:1;20661:88;20768:4;20765:1;20758:15;20792:4;20789:1;20782:15;20809:143;20866:5;20897:6;20891:13;20882:22;;20913:33;20940:5;20913:33;:::i;:::-;20809:143;;;;:::o;20958:351::-;21028:6;21077:2;21065:9;21056:7;21052:23;21048:32;21045:119;;;21083:79;;:::i;:::-;21045:119;21203:1;21228:64;21284:7;21275:6;21264:9;21260:22;21228:64;:::i;:::-;21218:74;;21174:128;20958:351;;;;:::o;21315:137::-;21405:6;21439:5;21433:12;21423:22;;21315:137;;;:::o;21458:207::-;21580:11;21614:6;21609:3;21602:19;21654:4;21649:3;21645:14;21630:29;;21458:207;;;;:::o;21671:155::-;21761:4;21784:3;21776:11;;21814:4;21809:3;21805:14;21797:22;;21671:155;;;:::o;21832:108::-;21909:24;21927:5;21909:24;:::i;:::-;21904:3;21897:37;21832:108;;:::o;21946:99::-;22017:21;22032:5;22017:21;:::i;:::-;22012:3;22005:34;21946:99;;:::o;22087:661::-;22220:4;22215:3;22211:14;22307:4;22300:5;22296:16;22290:23;22326:63;22383:4;22378:3;22374:14;22360:12;22326:63;:::i;:::-;22235:164;22479:4;22472:5;22468:16;22462:23;22498:63;22555:4;22550:3;22546:14;22532:12;22498:63;:::i;:::-;22409:162;22655:4;22648:5;22644:16;22638:23;22674:57;22725:4;22720:3;22716:14;22702:12;22674:57;:::i;:::-;22581:160;22189:559;22087:661;;:::o;22754:271::-;22869:10;22890:92;22978:3;22970:6;22890:92;:::i;:::-;23014:4;23009:3;23005:14;22991:28;;22754:271;;;;:::o;23031:136::-;23124:4;23156;23151:3;23147:14;23139:22;;23031:136;;;:::o;23213:916::-;23378:3;23407:77;23478:5;23407:77;:::i;:::-;23500:109;23602:6;23597:3;23500:109;:::i;:::-;23493:116;;23633:79;23706:5;23633:79;:::i;:::-;23735:7;23766:1;23751:353;23776:6;23773:1;23770:13;23751:353;;;23852:6;23846:13;23879:109;23984:3;23969:13;23879:109;:::i;:::-;23872:116;;24011:83;24087:6;24011:83;:::i;:::-;24001:93;;23811:293;23798:1;23795;23791:9;23786:14;;23751:353;;;23755:14;24120:3;24113:10;;23383:746;;;23213:916;;;;:::o;24135:923::-;24444:4;24482:3;24471:9;24467:19;24459:27;;24496:71;24564:1;24553:9;24549:17;24540:6;24496:71;:::i;:::-;24577:80;24653:2;24642:9;24638:18;24629:6;24577:80;:::i;:::-;24704:9;24698:4;24694:20;24689:2;24678:9;24674:18;24667:48;24732:154;24881:4;24872:6;24732:154;:::i;:::-;24724:162;;24896:72;24964:2;24953:9;24949:18;24940:6;24896:72;:::i;:::-;24978:73;25046:3;25035:9;25031:19;25022:6;24978:73;:::i;:::-;24135:923;;;;;;;;:::o;25064:147::-;25165:11;25202:3;25187:18;;25064:147;;;;:::o;25217:114::-;;:::o;25337:398::-;25496:3;25517:83;25598:1;25593:3;25517:83;:::i;:::-;25510:90;;25609:93;25698:3;25609:93;:::i;:::-;25727:1;25722:3;25718:11;25711:18;;25337:398;;;:::o;25741:379::-;25925:3;25947:147;26090:3;25947:147;:::i;:::-;25940:154;;26111:3;26104:10;;25741:379;;;:::o;26126:906::-;26397:4;26435:3;26424:9;26420:19;26412:27;;26449:71;26517:1;26506:9;26502:17;26493:6;26449:71;:::i;:::-;26530:66;26592:2;26581:9;26577:18;26568:6;26530:66;:::i;:::-;26606:72;26674:2;26663:9;26659:18;26650:6;26606:72;:::i;:::-;26688:80;26764:2;26753:9;26749:18;26740:6;26688:80;:::i;:::-;26778:81;26854:3;26843:9;26839:19;26830:6;26778:81;:::i;:::-;26869:73;26937:3;26926:9;26922:19;26913:6;26869:73;:::i;:::-;26952;27020:3;27009:9;27005:19;26996:6;26952:73;:::i;:::-;26126:906;;;;;;;;;;:::o;27038:143::-;27095:5;27126:6;27120:13;27111:22;;27142:33;27169:5;27142:33;:::i;:::-;27038:143;;;;:::o;27187:663::-;27275:6;27283;27291;27340:2;27328:9;27319:7;27315:23;27311:32;27308:119;;;27346:79;;:::i;:::-;27308:119;27466:1;27491:64;27547:7;27538:6;27527:9;27523:22;27491:64;:::i;:::-;27481:74;;27437:128;27604:2;27630:64;27686:7;27677:6;27666:9;27662:22;27630:64;:::i;:::-;27620:74;;27575:129;27743:2;27769:64;27825:7;27816:6;27805:9;27801:22;27769:64;:::i;:::-;27759:74;;27714:129;27187:663;;;;;:::o

Swarm Source

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