Contract 0xcf74ae52ae2c848387e6cd0048e1ec5a93ee2c66 2

 

Contract Overview

Crypto Bomber: CBOMBER Token
Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf24a057acb93e66aa5c3c8ebb1fa3f9fa84161d0d017f025f3928d60f83e03a0Approve316046082022-08-07 0:00:321 day 13 hrs ago0xb8b5e60ee697dce43bc4d482b3f519f41b3dd679 IN  Crypto Bomber: CBOMBER Token0 MATIC0.001640942414 35.020966677
0xf72eb8c8820696c9c4c9374137e7a878d8b7b50ee487692ad892f0560da053fcTransfer315699762022-08-06 1:49:482 days 11 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.00796686000233.000000012
0xe143e46ad2a13ad69a4c54014c933cf647f884a993f77d1408f7e2430d2f0402Approve314190572022-08-02 3:54:216 days 9 hrs ago0x4e2dce45e0483e40a27a47d0f7584fff43f06b31 IN  Crypto Bomber: CBOMBER Token0 MATIC0.011714250
0x89f0fa120810b5e56a0c82821f9bce29154be0b3ad066ea1935da88f41ecd684Approve314133892022-08-02 0:30:586 days 13 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.011714 250
0x6bf32c800291bfa341f470d21d40f4868473ff20d8a7e2646421c09618b410d1Approve309934432022-07-22 0:32:4417 days 13 hrs ago0x4e2dce45e0483e40a27a47d0f7584fff43f06b31 IN  Crypto Bomber: CBOMBER Token0 MATIC0.011711250
0x9db1b33a28da8bc1e63809650d1b047255f2ae2fe5b3417d256f757970065e29Transfer309933032022-07-22 0:27:5617 days 13 hrs ago0x8da00a61c85f09b76d9cd2f0c0a367529f1e4c6a IN  Crypto Bomber: CBOMBER Token0 MATIC0.00999705508640.131409213
0xa1873fd6c6eaba61b188ab36d228228fcc4f65baad29891f49ea6fda1dfc4033Transfer309932802022-07-22 0:27:1017 days 13 hrs ago0x8da00a61c85f09b76d9cd2f0c0a367529f1e4c6a IN  Crypto Bomber: CBOMBER Token0 MATIC0.01323963281940.131409213
0x830ce1c5c6469594040a3cb89900694b351d7735cecb67bb3be19a2dc2d2a39aTransfer309932772022-07-22 0:27:0017 days 13 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.006887292943 30.070000017
0x73ec2eb54b2f923f2ffffe82e137a215227e1fb82e737484ff01df1133a8b9e6Transfer309927552022-07-21 23:56:1517 days 13 hrs ago0x40627e944b6377af3e284dec8520b8a8fe26e997 IN  Crypto Bomber: CBOMBER Token0 MATIC0.008873367392 30.914424947
0xdfd6e7e4416ae9dd4a0b20d015e2cf279c829fdf52662fb9ec50dd22fa30265aSet Fees309926632022-07-21 23:53:0717 days 13 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.00114606 30.000000018
0x61fceaae73f13f2a26c9cc0294b26478584072c23f0fd02419718eac124b426bApprove309767282022-07-21 13:40:5917 days 23 hrs ago0x154221562a2937a403c5ecd6ada46f8709d7e868 IN  Crypto Bomber: CBOMBER Token0 MATIC0.011711 250
0x16ff046d6edceff8e4e1778725ed592ded526249a4e5d44ff6713db9f82c9501Transfer309764572022-07-21 13:27:2518 days 7 mins agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.01097044848247.897103949
0x06cc699fd6ab9f8387883183b5b5ceeefec02a2e7e5f7d5fe1c71a7ca6094605Approve298440492022-06-21 22:11:2247 days 15 hrs ago0x477755de55597cfa24c1d34f90c52dd3029f51c6 IN  Crypto Bomber: CBOMBER Token0 MATIC0.011711 250
0xcf44d3f60d2c4e7b81708cb1e1ee9132644c5be9dd162284acd0e9c7543b38e2Approve289967942022-05-31 15:18:1868 days 22 hrs ago0x656d1d5b57579ea443c7cf4605b690eaa7a96f26 IN  Crypto Bomber: CBOMBER Token0 MATIC0.011711 250
0xbe97ed4a2022bea1225d9b774924a011373435b6ce4603b1928fc597ee17166eApprove287710542022-05-25 23:47:3074 days 13 hrs ago0x775f3bc20b091b37d8b2d1dd8f3c82574dca0b9f IN  Crypto Bomber: CBOMBER Token0 MATIC0.0016067492 34.300000014
0x7f6a0f1b3af1bd593a478e639c6b9231bc3cd6fe6674e8fabd7a2c0c64dfd8c9Approve284425372022-05-17 20:46:5482 days 16 hrs ago0x6e6db5639970697a65caa42a635f0b6318eb3114 IN  Crypto Bomber: CBOMBER Token0 MATIC0.0046844 100
0xaed0ad9f18a26890819fa7d42e60c39bfc880848d32d8b867e122432cf9dadcbTransfer284417782022-05-17 20:18:1482 days 17 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.01018525085833.202236437
0x2dafd63bf4606b0907f370422788deb5581c0a4ae05a6aff4679b3a8cd591158Approve282383112022-05-12 18:44:1487 days 18 hrs ago0x8da00a61c85f09b76d9cd2f0c0a367529f1e4c6a IN  Crypto Bomber: CBOMBER Token0 MATIC0.011711 250
0x351fa84ebd69e2759ea035daf586b00746afea2b41f8e7a8d90bfb2346bdb585Approve282056762022-05-11 22:15:5488 days 15 hrs ago0x83b229e578dcca30fa9f8633a05861cf0334d7c4 IN  Crypto Bomber: CBOMBER Token0 MATIC0.011711 250
0x5ebb1594923a4ee05943879b0bea4285296321f6df599ba35cb9c6ac1ad45738Approve282002382022-05-11 18:35:1088 days 18 hrs ago0x14cec53511895b6664b59e3b2929d4041db4971d IN  Crypto Bomber: CBOMBER Token0 MATIC0.052826509631 1,127.711331898
0xa249749b62f40459cf5ecefc6d538669ff78d23a6ca5aec4e568113a4267055aTransfer282001932022-05-11 18:32:1088 days 19 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.376598313495 1,180.078066918
0x4b0e6606a907b40c811e4b4f37e20699acb63ff139000be2fe345aaf0a52c489Transfer281577802022-05-10 15:57:5489 days 21 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.040023710048130.475791678
0xf2408fd5372a446720e19a41d66dad0c3f7a5deb5abb914a2b199b9b30b7a5ebTransfer281233762022-05-09 19:35:5590 days 17 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.055999150526 258.473921554
0x750e7a5704fe6c780083bb3e78b4319e5f79c2f1089dab990c4ac27a68b50b32Set Lock Transfe...279227502022-05-04 17:59:2895 days 19 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.001331437248 55.129694365
0x9ef1c0bdb32b392eca1a8416e928f21ad05e9ebdd12c12791bad7ae0998bc240Set Lock Transfe...278874592022-05-03 20:28:1096 days 17 hrs agoCrypto Bomber: Deployer IN  Crypto Bomber: CBOMBER Token0 MATIC0.001382308805 30.009092018
[ Download CSV Export 

OVERVIEW

CRYPTO BOMBER NFT Earn CBOMBER tokens by defeating enemies, earning, and HODL your gains.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x66920cdc3198b86f59e2e127c102d03810220b1f95ca89e8d2151d73f21a335b250258832022-02-16 22:40:20172 days 14 hrs ago Crypto Bomber: CBOMBER Token  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CBomber

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-02-16
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.5;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
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 {
    using SafeMath for uint256;

    address _token;

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

    IBEP20 USDT = IBEP20(0xc2132D05D31c914a87C6611C10748AEb04B58e8F);
    address WBNB = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270;
    IDEXRouter router;

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

    mapping (address => Share) public shares;

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

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 8);

    uint256 currentIndex;

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

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

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

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

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = USDT.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(USDT);

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

        uint256 amount = USDT.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

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

        if(shareholderCount == 0) { return; }

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

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

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            USDT.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend(address shareholder) external onlyToken{
        distributeDividend(shareholder);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

contract CBomber is IBEP20, Auth {
    using SafeMath for uint256;

    address USDT = 0xc2132D05D31c914a87C6611C10748AEb04B58e8F;
    address WBNB = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "CBomber Token";
    string constant _symbol = "CBOMBER";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 1000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply / 40; // 2,5%
    uint256 public maxWalletTokens =  1000000 * (10**9); // Anti-Whale
    bool public lockTransfer = false;

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

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

    uint256 liquidityFee = 300;
    uint256 buybackFee = 0;
    uint256 reflectionFee = 300;
    uint256 marketingFee = 0;
    uint256 totalFee = 600;
    uint256 feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    uint256 buybackMultiplierNumerator = 200;
    uint256 buybackMultiplierDenominator = 100;
    uint256 buybackMultiplierTriggeredAt;
    uint256 buybackMultiplierLength = 30 minutes;

    bool public autoBuybackEnabled = false;
    bool public autoBuybackMultiplier = true;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

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

    mapping(address => bool) isBlacklisted;

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

        distributor = new DividendDistributor(address(router));
        
        address _presaler = 0x89d4c05848811155ce16a447c762421eaC93d927;
        isFeeExempt[_presaler] = true;
        isTxLimitExempt[_presaler] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;

        _balances[_presaler] = _totalSupply;
        emit Transfer(address(0), _presaler, _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) {
        require(!isBlacklisted[msg.sender], "Recipient is backlisted");

        require(!lockTransfer, "Blocked transfers.");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(!isBlacklisted[msg.sender], "Recipient is backlisted");
        
        require(!lockTransfer, "Blocked transfers.");

        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

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

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

        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

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

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

        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].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling && buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp){ return getMultipliedFee(); }
        return totalFee;
    }

    function getMultipliedFee() public view returns (uint256) {
        uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp);
        uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee);
        return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength));
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

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

        return amount.sub(feeAmount);
    }

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

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

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool success, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");

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

    function shouldAutoBuyback() internal view returns (bool) {
        return msg.sender != pair
            && !inSwap
            && autoBuybackEnabled
            && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number
            && address(this).balance >= autoBuybackAmount;
    }

    function triggerManualBuyback(uint256 amount, bool triggerBuybackMultiplier) external authorized {
        buyTokens(amount, DEAD);
        if(triggerBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
    }
     
    function removeMaxWallet() public onlyOwner {
         maxWalletTokens = 2000000000 * 10**9;
    }
    
    function clearBuybackMultiplier() external authorized {
        buybackMultiplierTriggeredAt = 0;
    }

    function triggerAutoBuyback() internal {
        buyTokens(autoBuybackAmount, DEAD);
        if(autoBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
        autoBuybackBlockLast = block.number;
        autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount);
        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function setLockTransfer(bool _value) public onlyOwner {
        lockTransfer = _value;
    }

    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period, bool _autoBuybackMultiplier) external authorized {
        autoBuybackEnabled = _enabled;
        autoBuybackCap = _cap;
        autoBuybackAccumulator = 0;
        autoBuybackAmount = _amount;
        autoBuybackBlockPeriod = _period;
        autoBuybackBlockLast = block.number;
        autoBuybackMultiplier = _autoBuybackMultiplier;
    }

    function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized {
        require(numerator / denominator <= 2 && numerator > denominator);
        buybackMultiplierNumerator = numerator;
        buybackMultiplierDenominator = denominator;
        buybackMultiplierLength = length;
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _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 setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

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

    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }

    function updateManualSend() public onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
    
    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        return distributor.getUnpaidEarnings(shareholder);
    } 

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

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

    function blackList(address _user) public onlyOwner {
        require(!isBlacklisted[_user], "user already blacklisted");
        isBlacklisted[_user] = true;
        // emit events as well
    }
    
    function removeFromBlacklist(address _user) public onlyOwner {
        require(isBlacklisted[_user], "user already whitelisted");
        isBlacklisted[_user] = false;
        // emit events as well
    }
    
    
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
    event BuybackMultiplierActive(uint256 duration);
}

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":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoBuybackMultiplier","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_user","type":"address"}],"name":"blackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","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":"getMultipliedFee","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":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"lockTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"},{"internalType":"bool","name":"_autoBuybackMultiplier","type":"bool"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","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":"_buybackFee","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":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setLockTransfer","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerManualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateManualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c2132d05d31c914a87c6611c10748aeb04b58e8f600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d500b1d8e8ef31e21c99d1db9a6444d3adf1270600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000143919062000aeb565b620f424062000153919062000c28565b600655602860065462000167919062000a58565b60075566038d7ea4c680006008556000600960006101000a81548160ff02191690831515021790555061012c600f55600060105561012c60115560006012556102586013556127106014556019601755606460185560c8601c556064601d55610708601f556000602060006101000a81548160ff0219169083151502179055506001602060016101000a81548160ff0219169083151502179055506207a1206027556001602860006101000a81548160ff02191690831515021790555060c860065462000235919062000a58565b6029553480156200024557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505073a5e0829caced8ffdd4de3c43696c57f7d7a678ff601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039d57600080fd5b505afa158015620003b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d891906200099d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200043692919062000a0e565b602060405180830381600087803b1580156200045157600080fd5b505af115801562000466573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048c91906200099d565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005c09062000978565b620005cc9190620009f1565b604051809103906000f080158015620005e9573d6000803e3d6000fd5b50602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060007389d4c05848811155ce16a447c762421eac93d92790506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000969919062000a3b565b60405180910390a35062000d5e565b6120a18062005e0183390190565b600081519050620009978162000d44565b92915050565b600060208284031215620009b657620009b562000d32565b5b6000620009c68482850162000986565b91505092915050565b620009da8162000c89565b82525050565b620009eb8162000cbd565b82525050565b600060208201905062000a086000830184620009cf565b92915050565b600060408201905062000a256000830185620009cf565b62000a346020830184620009cf565b9392505050565b600060208201905062000a526000830184620009e0565b92915050565b600062000a658262000cbd565b915062000a728362000cbd565b92508262000a855762000a8462000d03565b5b828204905092915050565b6000808291508390505b600185111562000ae25780860481111562000aba5762000ab962000cd4565b5b600185161562000aca5780820291505b808102905062000ada8562000d37565b945062000a9a565b94509492505050565b600062000af88262000cbd565b915062000b058362000cc7565b925062000b347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b3c565b905092915050565b60008262000b4e576001905062000c21565b8162000b5e576000905062000c21565b816001811462000b77576002811462000b825762000bb8565b600191505062000c21565b60ff84111562000b975762000b9662000cd4565b5b8360020a91508482111562000bb15762000bb062000cd4565b5b5062000c21565b5060208310610133831016604e8410600b841016171562000bf25782820a90508381111562000bec5762000beb62000cd4565b5b62000c21565b62000c01848484600162000a90565b9250905081840481111562000c1b5762000c1a62000cd4565b5b81810290505b9392505050565b600062000c358262000cbd565b915062000c428362000cbd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c7e5762000c7d62000cd4565b5b828202905092915050565b600062000c968262000c9d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000d4f8162000c89565b811462000d5b57600080fd5b50565b6150938062000d6e6000396000f3fe6080604052600436106103545760003560e01c806384134c1f116101c6578063dc07b617116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610c31578063f84ba65d14610c5a578063f887ea4014610c83578063fe9fbb8014610cae5761035b565b8063f1f3bca314610bb4578063f2fde38b14610bf1578063f429389014610c1a5761035b565b8063e1dcc71f116100d1578063e1dcc71f14610b1e578063e96fada214610b49578063f0b37c0414610b74578063f0fc6bca14610b9d5761035b565b8063dc07b61714610aa1578063dd62ed3e14610ab8578063df20fd4914610af55761035b565b8063b210b06d11610164578063c6729f261161013e578063c6729f26146109e5578063ca33e64c14610a0e578063d51ed1c814610a39578063d806d12f14610a765761035b565b8063b210b06d1461097a578063b6a5d7de14610991578063bf56b371146109ba5761035b565b80639d1944f5116101a05780639d1944f5146108c0578063a4b45c00146108e9578063a8aa1b3114610912578063a9059cbb1461093d5761035b565b806384134c1f14610853578063893d20e81461086a57806395d89b41146108955761035b565b80632f54bf6e116102a05780635c85974f1161023e5780636ddd1713116102185780636ddd17131461079757806370a08231146107c25780637d1db4a5146107ff57806382334b941461082a5761035b565b80635c85974f1461071a57806363a803e114610743578063658d4b7f1461076e5761035b565b80633bb8a8d41161027a5780633bb8a8d4146106605780634838d1651461068b578063537df3b6146106b4578063571ac8b0146106dd5761035b565b80632f54bf6e146105cf5780632f5620d11461060c578063313ce567146106355761035b565b80631a9aea0a1161030d57806323b872dd116102e757806323b872dd1461050157806328fd31981461053e5780632b112e491461057b5780632d48e896146105a65761035b565b80631a9aea0a14610484578063201e7991146104af5780632375ce40146104d85761035b565b80630445b6671461036057806304a66b481461038b57806306fdde03146103b4578063095ea7b3146103df5780631161ae391461041c57806318160ddd146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ceb565b6040516103829190614a4a565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190614445565b610cf1565b005b3480156103c057600080fd5b506103c9610da0565b6040516103d691906148e8565b60405180910390f35b3480156103eb57600080fd5b506104066004803603810190610401919061419d565b610ddd565b6040516104139190614866565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e919061435f565b610ecf565b6040516104509190614866565b60405180910390f35b34801561046557600080fd5b5061046e610ee4565b60405161047b9190614a4a565b60405180910390f35b34801561049057600080fd5b50610499610eee565b6040516104a69190614866565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d1919061435f565b610f01565b005b3480156104e457600080fd5b506104ff60048036038101906104fa919061439f565b610f5b565b005b34801561050d57600080fd5b506105286004803603810190610523919061410a565b610fe1565b6040516105359190614866565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190614070565b6112be565b6040516105729190614a4a565b60405180910390f35b34801561058757600080fd5b50610590611372565b60405161059d9190614a4a565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c8919061435f565b6113f4565b005b3480156105db57600080fd5b506105f660048036038101906105f19190614070565b6114cf565b6040516106039190614866565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061424a565b611528565b005b34801561064157600080fd5b5061064a6115cf565b6040516106579190614ae8565b60405180910390f35b34801561066c57600080fd5b506106756115d8565b6040516106829190614866565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad9190614070565b6115eb565b005b3480156106c057600080fd5b506106db60048036038101906106d69190614070565b61171b565b005b3480156106e957600080fd5b5061070460048036038101906106ff9190614070565b61184a565b6040516107119190614866565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c91906142c5565b61187d565b005b34801561074f57600080fd5b506107586118eb565b6040516107659190614a4a565b60405180910390f35b34801561077a57600080fd5b506107956004803603810190610790919061415d565b6118f1565b005b3480156107a357600080fd5b506107ac611994565b6040516107b99190614866565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e49190614070565b6119a7565b6040516107f69190614a4a565b60405180910390f35b34801561080b57600080fd5b506108146119f0565b6040516108219190614a4a565b60405180910390f35b34801561083657600080fd5b50610851600480360381019061084c919061431f565b6119f6565b005b34801561085f57600080fd5b50610868611ab5565b005b34801561087657600080fd5b5061087f611b6e565b60405161088c919061477d565b60405180910390f35b3480156108a157600080fd5b506108aa611b97565b6040516108b791906148e8565b60405180910390f35b3480156108cc57600080fd5b506108e760048036038101906108e291906142c5565b611bd4565b005b3480156108f557600080fd5b50610910600480360381019061090b91906140ca565b611c35565b005b34801561091e57600080fd5b50610927611d03565b604051610934919061477d565b60405180910390f35b34801561094957600080fd5b50610964600480360381019061095f919061419d565b611d29565b6040516109719190614866565b60405180910390f35b34801561098657600080fd5b5061098f611e1b565b005b34801561099d57600080fd5b506109b860048036038101906109b39190614070565b611e6d565b005b3480156109c657600080fd5b506109cf611f0f565b6040516109dc9190614a4a565b60405180910390f35b3480156109f157600080fd5b50610a0c6004803603810190610a0791906141dd565b611f15565b005b348015610a1a57600080fd5b50610a23611f7a565b604051610a30919061477d565b60405180910390f35b348015610a4557600080fd5b50610a606004803603810190610a5b91906142c5565b611fa0565b604051610a6d9190614a4a565b60405180910390f35b348015610a8257600080fd5b50610a8b612012565b604051610a989190614a4a565b60405180910390f35b348015610aad57600080fd5b50610ab66120c5565b005b348015610ac457600080fd5b50610adf6004803603810190610ada91906140ca565b61211e565b604051610aec9190614a4a565b60405180910390f35b348015610b0157600080fd5b50610b1c6004803603810190610b17919061420a565b6121a5565b005b348015610b2a57600080fd5b50610b33612212565b604051610b409190614866565b60405180910390f35b348015610b5557600080fd5b50610b5e612225565b604051610b6b919061477d565b60405180910390f35b348015610b8057600080fd5b50610b9b6004803603810190610b969190614070565b61224b565b005b348015610ba957600080fd5b50610bb26122ee565b005b348015610bc057600080fd5b50610bdb6004803603810190610bd691906141dd565b61237d565b604051610be89190614a4a565b60405180910390f35b348015610bfd57600080fd5b50610c186004803603810190610c13919061409d565b6123f2565b005b348015610c2657600080fd5b50610c2f61250b565b005b348015610c3d57600080fd5b50610c586004803603810190610c53919061415d565b6125c4565b005b348015610c6657600080fd5b50610c816004803603810190610c7c919061415d565b612864565b005b348015610c8f57600080fd5b50610c98612907565b604051610ca59190614881565b60405180910390f35b348015610cba57600080fd5b50610cd56004803603810190610cd09190614070565b61292d565b604051610ce29190614866565b60405180910390f35b60295481565b610cfa3361292d565b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090614a2a565b60405180910390fd5b84600f81905550836010819055508260118190555081601281905550610d8c82610d7e85610d70888a61298390919063ffffffff16565b61298390919063ffffffff16565b61298390919063ffffffff16565b601381905550806014819055505050505050565b60606040518060400160405280600d81526020017f43426f6d62657220546f6b656e00000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ebd9190614a4a565b60405180910390a36001905092915050565b600082610edb83611fa0565b11905092915050565b6000600654905090565b600960009054906101000a900460ff1681565b610f0a3361292d565b610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090614a2a565b60405180910390fd5b81601781905550806018819055505050565b610f643361292d565b610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614a2a565b60405180910390fd5b60028284610fb19190614bb9565b11158015610fbe57508183115b610fc757600080fd5b82601c8190555081601d8190555080601f81905550505050565b6000602b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790614a0a565b60405180910390fd5b600960009054906101000a900460ff16156110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b7906149ca565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112aa57611229826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e19092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112b5848484612a45565b90509392505050565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b815260040161131b919061477d565b60206040518083038186803b15801561133357600080fd5b505afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b91906142f2565b9050919050565b60006113ef6113a2600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119a7565b6113e16113d0600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119a7565b60065461302e90919063ffffffff16565b61302e90919063ffffffff16565b905090565b6113fd3361292d565b61143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390614a2a565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611499929190614abf565b600060405180830381600087803b1580156114b357600080fd5b505af11580156114c7573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6115313361292d565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790614a2a565b60405180910390fd5b84602060006101000a81548160ff02191690831515021790555083602181905550600060228190555082602381905550816024819055504360258190555080602060016101000a81548160ff0219169083151502179055505050505050565b60006012905090565b602060009054906101000a900460ff1681565b6115f4336114cf565b611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a906149ea565b60405180910390fd5b602b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b79061496a565b60405180910390fd5b6001602b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611724336114cf565b611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a906149ea565b60405180910390fd5b602b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e69061498a565b60405180910390fd5b6000602b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611876827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ddd565b9050919050565b6118863361292d565b6118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90614a2a565b60405180910390fd5b6103e86006546118d59190614bb9565b8110156118e157600080fd5b8060078190555050565b60085481565b6118fa3361292d565b611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090614a2a565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602860009054906101000a900460ff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b6119ff3361292d565b611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614a2a565b60405180910390fd5b611a6a82600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613078565b8015611ab15742601e819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a601f54604051611aa89190614a4a565b60405180910390a15b5050565b611abe336114cf565b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af4906149ea565b60405180910390fd5b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b6a573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f43424f4d42455200000000000000000000000000000000000000000000000000815250905090565b611bdd3361292d565b611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1390614a2a565b60405180910390fd5b620b71b08110611c2b57600080fd5b8060278190555050565b611c3e3361292d565b611c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7490614a2a565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90614a0a565b60405180910390fd5b600960009054906101000a900460ff1615611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff906149ca565b60405180910390fd5b611e13338484612a45565b905092915050565b611e243361292d565b611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90614a2a565b60405180910390fd5b6000601e81905550565b611e76336114cf565b611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac906149ea565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b611f1e336114cf565b611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f54906149ea565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061200b611fad611372565b611ffd611fee6002611fe0601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119a7565b61325690919063ffffffff16565b8561325690919063ffffffff16565b6132d190919063ffffffff16565b9050919050565b60008061203e42612030601f54601e5461298390919063ffffffff16565b61302e90919063ffffffff16565b90506000612081601354612073601d54612065601c5460135461325690919063ffffffff16565b6132d190919063ffffffff16565b61302e90919063ffffffff16565b90506120be6120ad601f5461209f858561325690919063ffffffff16565b6132d190919063ffffffff16565b60135461298390919063ffffffff16565b9250505090565b6120ce336114cf565b61210d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612104906149ea565b60405180910390fd5b671bc16d674ec80000600881905550565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121ae3361292d565b6121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e490614a2a565b60405180910390fd5b81602860006101000a81548160ff021916908315150217905550806029819055505050565b602060019054906101000a900460ff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612254336114cf565b612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a906149ea565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401612349919061477d565b600060405180830381600087803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b50505050565b6000436001601b5461238f9190614b63565b106123b1576123aa600160145461302e90919063ffffffff16565b90506123ed565b8180156123d35750426123d1601f54601e5461298390919063ffffffff16565b115b156123e7576123e0612012565b90506123ed565b60135490505b919050565b6123fb336114cf565b61243a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612431906149ea565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516125009190614798565b60405180910390a150565b6125143361292d565b612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a90614a2a565b60405180910390fd5b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125c0573d6000803e3d6000fd5b5050565b6125cd3361292d565b61260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390614a2a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126965750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61269f57600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561279157602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161275a9291906147b3565b600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b50505050612860565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161282d9291906147dc565b600060405180830381600087803b15801561284757600080fd5b505af115801561285b573d6000803e3d6000fd5b505050505b5050565b61286d3361292d565b6128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a390614a2a565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008082846129929190614b63565b9050838110156129d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ce9061492a565b60405180910390fd5b8091505092915050565b6000838311158290612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2091906148e8565b60405180910390fd5b5060008385612a389190614c44565b9050809150509392505050565b6000602a60009054906101000a900460ff1615612a6e57612a6784848461331b565b9050613027565b612a7884836134ee565b612a8061358b565b15612a8e57612a8d613662565b5b612a96613c17565b15612aa457612aa3613cca565b5b612aac613d9c565b158015612b065750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612b60576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612b5757600080fd5b612b5f613da9565b5b612be9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e19092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612c3785613db2565b612c415782612c4d565b612c4c858585613e09565b5b9050612ca181600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298390919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e0757602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612dd19291906147dc565b600060405180830381600087803b158015612deb57600080fd5b505af1925050508015612dfc575060015b612e0557612e06565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f2a57602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ef49291906147dc565b600060405180830381600087803b158015612f0e57600080fd5b505af1925050508015612f1f575060015b612f2857612f29565b5b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796027546040518263ffffffff1660e01b8152600401612f879190614a4a565b600060405180830381600087803b158015612fa157600080fd5b505af1925050508015612fb2575060015b612fbb57612fbc565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130199190614a4a565b60405180910390a360019150505b9392505050565b600061307083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129e1565b905092915050565b6001602a60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156130b0576130af614df9565b5b6040519080825280602002602001820160405280156130de5781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061311857613117614dca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061316757613166614dca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b8152600401613204949392919061489c565b6000604051808303818588803b15801561321d57600080fd5b505af1158015613231573d6000803e3d6000fd5b5050505050506000602a60006101000a81548160ff0219169083151502179055505050565b60008083141561326957600090506132cb565b600082846132779190614bea565b90508284826132869190614bb9565b146132c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bd906149aa565b60405180910390fd5b809150505b92915050565b600061331383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613fa4565b905092915050565b60006133a6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e19092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061343b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298390919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134db9190614a4a565b60405180910390a3600190509392505050565b600754811115806135485750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357e9061490a565b60405180910390fd5b5050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135f85750602a60009054906101000a900460ff16155b80156136105750602860009054906101000a900460ff165b801561365d5750602954600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602a60006101000a81548160ff021916908315150217905550600061368d601754601854610ecf565b61369957600f5461369c565b60005b905060006136dc60026136ce6013546136c08660295461325690919063ffffffff16565b6132d190919063ffffffff16565b6132d190919063ffffffff16565b905060006136f58260295461302e90919063ffffffff16565b90506000600267ffffffffffffffff81111561371457613713614df9565b5b6040519080825280602002602001820160405280156137425781602001602082028036833780820191505090505b509050308160008151811061375a57613759614dca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106137cb576137ca614dca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161386e959493929190614a65565b600060405180830381600087803b15801561388857600080fd5b505af115801561389c573d6000803e3d6000fd5b5050505060006138b5824761302e90919063ffffffff16565b905060006138e16138d06002896132d190919063ffffffff16565b60135461302e90919063ffffffff16565b9050600061391d600261390f846139018c8861325690919063ffffffff16565b6132d190919063ffffffff16565b6132d190919063ffffffff16565b905060006139488361393a6011548761325690919063ffffffff16565b6132d190919063ffffffff16565b90506000613973846139656012548861325690919063ffffffff16565b6132d190919063ffffffff16565b9050602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156139df57600080fd5b505af1935050505080156139f1575060015b6139fa576139fb565b5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613a4790614768565b600060405180830381858888f193505050503d8060008114613a85576040519150601f19603f3d011682016040523d82523d6000602084013e613a8a565b606091505b5050905080613ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ac59061494a565b60405180910390fd5b60008a1115613bef57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613b6096959493929190614805565b6060604051808303818588803b158015613b7957600080fd5b505af1158015613b8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613bb291906143f2565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051613be6929190614abf565b60405180910390a15b50505050505050505050506000602a60006101000a81548160ff021916908315150217905550565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613c845750602a60009054906101000a900460ff16155b8015613c9c5750602060009054906101000a900460ff165b8015613cb7575043602454602554613cb49190614b63565b11155b8015613cc557506023544710155b905090565b613cf8602354600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613078565b602060019054906101000a900460ff1615613d4e5742601e819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a601f54604051613d459190614a4a565b60405180910390a15b43602581905550613d6c60235460225461298390919063ffffffff16565b6022819055506021546022541115613d9a576000602060006101000a81548160ff0219169083151502179055505b565b600080601b541415905090565b43601b81905550565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080613e8b601454613e7d613e6e601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461237d565b8661325690919063ffffffff16565b6132d190919063ffffffff16565b9050613edf81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298390919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f7f9190614a4a565b60405180910390a3613f9a818461302e90919063ffffffff16565b9150509392505050565b60008083118290613feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe291906148e8565b60405180910390fd5b5060008385613ffa9190614bb9565b9050809150509392505050565b60008135905061401681615001565b92915050565b60008135905061402b81615018565b92915050565b6000813590506140408161502f565b92915050565b60008135905061405581615046565b92915050565b60008151905061406a81615046565b92915050565b60006020828403121561408657614085614e28565b5b600061409484828501614007565b91505092915050565b6000602082840312156140b3576140b2614e28565b5b60006140c18482850161401c565b91505092915050565b600080604083850312156140e1576140e0614e28565b5b60006140ef85828601614007565b925050602061410085828601614007565b9150509250929050565b60008060006060848603121561412357614122614e28565b5b600061413186828701614007565b935050602061414286828701614007565b925050604061415386828701614046565b9150509250925092565b6000806040838503121561417457614173614e28565b5b600061418285828601614007565b925050602061419385828601614031565b9150509250929050565b600080604083850312156141b4576141b3614e28565b5b60006141c285828601614007565b92505060206141d385828601614046565b9150509250929050565b6000602082840312156141f3576141f2614e28565b5b600061420184828501614031565b91505092915050565b6000806040838503121561422157614220614e28565b5b600061422f85828601614031565b925050602061424085828601614046565b9150509250929050565b600080600080600060a0868803121561426657614265614e28565b5b600061427488828901614031565b955050602061428588828901614046565b945050604061429688828901614046565b93505060606142a788828901614046565b92505060806142b888828901614031565b9150509295509295909350565b6000602082840312156142db576142da614e28565b5b60006142e984828501614046565b91505092915050565b60006020828403121561430857614307614e28565b5b60006143168482850161405b565b91505092915050565b6000806040838503121561433657614335614e28565b5b600061434485828601614046565b925050602061435585828601614031565b9150509250929050565b6000806040838503121561437657614375614e28565b5b600061438485828601614046565b925050602061439585828601614046565b9150509250929050565b6000806000606084860312156143b8576143b7614e28565b5b60006143c686828701614046565b93505060206143d786828701614046565b92505060406143e886828701614046565b9150509250925092565b60008060006060848603121561440b5761440a614e28565b5b60006144198682870161405b565b935050602061442a8682870161405b565b925050604061443b8682870161405b565b9150509250925092565b600080600080600060a0868803121561446157614460614e28565b5b600061446f88828901614046565b955050602061448088828901614046565b945050604061449188828901614046565b93505060606144a288828901614046565b92505060806144b388828901614046565b9150509295509295909350565b60006144cc83836144e7565b60208301905092915050565b6144e181614cdf565b82525050565b6144f081614c78565b82525050565b6144ff81614c78565b82525050565b600061451082614b13565b61451a8185614b36565b935061452583614b03565b8060005b8381101561455657815161453d88826144c0565b975061454883614b29565b925050600181019050614529565b5085935050505092915050565b61456c81614c9c565b82525050565b61457b81614cf1565b82525050565b61458a81614d03565b82525050565b600061459b82614b1e565b6145a58185614b52565b93506145b5818560208601614d39565b6145be81614e2d565b840191505092915050565b60006145d6601183614b52565b91506145e182614e3e565b602082019050919050565b60006145f9601b83614b52565b915061460482614e67565b602082019050919050565b600061461c601e83614b52565b915061462782614e90565b602082019050919050565b600061463f601883614b52565b915061464a82614eb9565b602082019050919050565b6000614662601883614b52565b915061466d82614ee2565b602082019050919050565b6000614685602183614b52565b915061469082614f0b565b604082019050919050565b60006146a8601283614b52565b91506146b382614f5a565b602082019050919050565b60006146cb600683614b52565b91506146d682614f83565b602082019050919050565b60006146ee600083614b47565b91506146f982614fac565b600082019050919050565b6000614711601783614b52565b915061471c82614faf565b602082019050919050565b6000614734600b83614b52565b915061473f82614fd8565b602082019050919050565b61475381614cc8565b82525050565b61476281614cd2565b82525050565b6000614773826146e1565b9150819050919050565b600060208201905061479260008301846144f6565b92915050565b60006020820190506147ad60008301846144d8565b92915050565b60006040820190506147c860008301856144f6565b6147d56020830184614581565b9392505050565b60006040820190506147f160008301856144f6565b6147fe602083018461474a565b9392505050565b600060c08201905061481a60008301896144f6565b614827602083018861474a565b6148346040830187614581565b6148416060830186614581565b61484e60808301856144f6565b61485b60a083018461474a565b979650505050505050565b600060208201905061487b6000830184614563565b92915050565b60006020820190506148966000830184614572565b92915050565b60006080820190506148b16000830187614581565b81810360208301526148c38186614505565b90506148d260408301856144f6565b6148df606083018461474a565b95945050505050565b600060208201905081810360008301526149028184614590565b905092915050565b60006020820190508181036000830152614923816145c9565b9050919050565b60006020820190508181036000830152614943816145ec565b9050919050565b600060208201905081810360008301526149638161460f565b9050919050565b6000602082019050818103600083015261498381614632565b9050919050565b600060208201905081810360008301526149a381614655565b9050919050565b600060208201905081810360008301526149c381614678565b9050919050565b600060208201905081810360008301526149e38161469b565b9050919050565b60006020820190508181036000830152614a03816146be565b9050919050565b60006020820190508181036000830152614a2381614704565b9050919050565b60006020820190508181036000830152614a4381614727565b9050919050565b6000602082019050614a5f600083018461474a565b92915050565b600060a082019050614a7a600083018861474a565b614a876020830187614581565b8181036040830152614a998186614505565b9050614aa860608301856144f6565b614ab5608083018461474a565b9695505050505050565b6000604082019050614ad4600083018561474a565b614ae1602083018461474a565b9392505050565b6000602082019050614afd6000830184614759565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614b6e82614cc8565b9150614b7983614cc8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614bae57614bad614d6c565b5b828201905092915050565b6000614bc482614cc8565b9150614bcf83614cc8565b925082614bdf57614bde614d9b565b5b828204905092915050565b6000614bf582614cc8565b9150614c0083614cc8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c3957614c38614d6c565b5b828202905092915050565b6000614c4f82614cc8565b9150614c5a83614cc8565b925082821015614c6d57614c6c614d6c565b5b828203905092915050565b6000614c8382614ca8565b9050919050565b6000614c9582614ca8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cea82614d15565b9050919050565b6000614cfc82614d15565b9050919050565b6000614d0e82614cc8565b9050919050565b6000614d2082614d27565b9050919050565b6000614d3282614ca8565b9050919050565b60005b83811015614d57578082015181840152602081019050614d3c565b83811115614d66576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f426c6f636b6564207472616e73666572732e0000000000000000000000000000600082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f526563697069656e74206973206261636b6c6973746564000000000000000000600082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61500a81614c78565b811461501557600080fd5b50565b61502181614c8a565b811461502c57600080fd5b50565b61503881614c9c565b811461504357600080fd5b50565b61504f81614cc8565b811461505a57600080fd5b5056fea2646970667358221220729a941d27845e4319b81fd8509061ff1775f37f5fc4e1452cc7615c69bbb09564736f6c63430008070033608060405273c2132d05d31c914a87c6611c10748aeb04b58e8f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d500b1d8e8ef31e21c99d1db9a6444d3adf1270600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d556305f5e100600e55348015620000dc57600080fd5b50604051620020a1380380620020a18339818101604052810190620001029190620001f3565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001535773a5e0829caced8ffdd4de3c43696c57f7d7a678ff62000155565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000278565b600081519050620001ed816200025e565b92915050565b6000602082840312156200020c576200020b62000259565b5b60006200021c84828501620001dc565b91505092915050565b6000620002328262000239565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002698162000225565b81146200027557600080fd5b50565b611e1980620002886000396000f3fe6080604052600436106100dd5760003560e01c8063997664d71161007f578063e2d2e21911610059578063e2d2e2191461028f578063efca2eed146102ba578063ffb2c479146102e5578063ffd49c841461030e576100dd565b8063997664d71461021b578063ce7c2ac214610246578063d0e30db014610285576100dd565b806328fd3198116100bb57806328fd31981461015f5780632d48e8961461019c5780633a98ef39146101c55780634fab0ae8146101f0576100dd565b806311ce023d146100e257806314b6ca961461010d57806315f7e05e14610136575b600080fd5b3480156100ee57600080fd5b506100f7610339565b6040516101049190611993565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611669565b61033f565b005b34801561014257600080fd5b5061015d6004803603810190610158919061163c565b6105fe565b005b34801561016b57600080fd5b506101866004803603810190610181919061163c565b610662565b6040516101939190611993565b60405180910390f35b3480156101a857600080fd5b506101c360048036038101906101be9190611730565b61077c565b005b3480156101d157600080fd5b506101da6107e6565b6040516101e79190611993565b60405180910390f35b3480156101fc57600080fd5b506102056107ec565b6040516102129190611993565b60405180910390f35b34801561022757600080fd5b506102306107f2565b60405161023d9190611993565b60405180910390f35b34801561025257600080fd5b5061026d6004803603810190610268919061163c565b6107f8565b60405161027c939291906119ae565b60405180910390f35b61028d610822565b005b34801561029b57600080fd5b506102a4610c12565b6040516102b19190611993565b60405180910390f35b3480156102c657600080fd5b506102cf610c18565b6040516102dc9190611993565b60405180910390f35b3480156102f157600080fd5b5061030c600480360381019061030791906116d6565b610c1e565b005b34801561031a57600080fd5b50610323610db2565b6040516103309190611993565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461039757600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103ec576103eb82610db8565b5b60008111801561043e57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104515761044c8261105f565b6104b3565b6000811480156104a357506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104b2576104b18261110e565b5b5b61051c8161050e600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461131590919063ffffffff16565b61135f90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105b4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113bd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065657600080fd5b61065f81610db8565b50565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106b75760009050610777565b6000610704600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113bd565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161075f57600092505050610777565b610772818361131590919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d457600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087a57600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108d791906118a1565b60206040518083038186803b1580156108ef57600080fd5b505afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190611703565b90506000600267ffffffffffffffff81111561094657610945611ce1565b5b6040519080825280602002602001820160405280156109745781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106109ae576109ad611cb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a1f57610a1e611cb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610abc94939291906118e5565b6000604051808303818588803b158015610ad557600080fd5b505af1158015610ae9573d6000803e3d6000fd5b50505050506000610bad83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b4f91906118a1565b60206040518083038186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611703565b61131590919063ffffffff16565b9050610bc48160095461135f90919063ffffffff16565b600981905550610c07610bf6600854610be884600c546113ef90919063ffffffff16565b61146a90919063ffffffff16565b600b5461135f90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7657600080fd5b600060048054905090506000811415610c8f5750610daf565b6000805a905060005b8483108015610ca657508381105b15610daa5783600f5410610cbd576000600f819055505b610d066004600f5481548110610cd657610cd5611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114b4565b15610d5557610d546004600f5481548110610d2457610d23611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610db8565b5b610d7a610d6b5a8461131590919063ffffffff16565b8461135f90919063ffffffff16565b92505a9150600f6000815480929190610d9290611bdc565b91905055508080610da290611bdc565b915050610c98565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610e085761105c565b6000610e1382610662565b9050600081111561105a57610e3381600a5461135f90919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610e969291906118bc565b602060405180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee891906116a9565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f8281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461135f90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611013600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113bd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506111229190611b1b565b8154811061113357611132611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106111b1576111b0611cb2565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506112519190611b1b565b8154811061126257611261611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806112dd576112dc611c83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061135783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611521565b905092915050565b600080828461136e9190611a3a565b9050838110156113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90611953565b60405180910390fd5b8091505092915050565b60006113e8600c546113da600b54856113ef90919063ffffffff16565b61146a90919063ffffffff16565b9050919050565b6000808314156114025760009050611464565b600082846114109190611ac1565b905082848261141f9190611a90565b1461145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690611973565b60405180910390fd5b809150505b92915050565b60006114ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611585565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115049190611a3a565b10801561151a5750600e5461151883610662565b115b9050919050565b6000838311158290611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115609190611931565b60405180910390fd5b50600083856115789190611b1b565b9050809150509392505050565b600080831182906115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c39190611931565b60405180910390fd5b50600083856115db9190611a90565b9050809150509392505050565b6000813590506115f781611d9e565b92915050565b60008151905061160c81611db5565b92915050565b60008135905061162181611dcc565b92915050565b60008151905061163681611dcc565b92915050565b60006020828403121561165257611651611d10565b5b6000611660848285016115e8565b91505092915050565b600080604083850312156116805761167f611d10565b5b600061168e858286016115e8565b925050602061169f85828601611612565b9150509250929050565b6000602082840312156116bf576116be611d10565b5b60006116cd848285016115fd565b91505092915050565b6000602082840312156116ec576116eb611d10565b5b60006116fa84828501611612565b91505092915050565b60006020828403121561171957611718611d10565b5b600061172784828501611627565b91505092915050565b6000806040838503121561174757611746611d10565b5b600061175585828601611612565b925050602061176685828601611612565b9150509250929050565b600061177c8383611788565b60208301905092915050565b61179181611b4f565b82525050565b6117a081611b4f565b82525050565b60006117b1826119f5565b6117bb8185611a18565b93506117c6836119e5565b8060005b838110156117f75781516117de8882611770565b97506117e983611a0b565b9250506001810190506117ca565b5085935050505092915050565b61180d81611b97565b82525050565b600061181e82611a00565b6118288185611a29565b9350611838818560208601611ba9565b61184181611d15565b840191505092915050565b6000611859601b83611a29565b915061186482611d26565b602082019050919050565b600061187c602183611a29565b915061188782611d4f565b604082019050919050565b61189b81611b8d565b82525050565b60006020820190506118b66000830184611797565b92915050565b60006040820190506118d16000830185611797565b6118de6020830184611892565b9392505050565b60006080820190506118fa6000830187611804565b818103602083015261190c81866117a6565b905061191b6040830185611797565b6119286060830184611892565b95945050505050565b6000602082019050818103600083015261194b8184611813565b905092915050565b6000602082019050818103600083015261196c8161184c565b9050919050565b6000602082019050818103600083015261198c8161186f565b9050919050565b60006020820190506119a86000830184611892565b92915050565b60006060820190506119c36000830186611892565b6119d06020830185611892565b6119dd6040830184611892565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611a4582611b8d565b9150611a5083611b8d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a8557611a84611c25565b5b828201905092915050565b6000611a9b82611b8d565b9150611aa683611b8d565b925082611ab657611ab5611c54565b5b828204905092915050565b6000611acc82611b8d565b9150611ad783611b8d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b1057611b0f611c25565b5b828202905092915050565b6000611b2682611b8d565b9150611b3183611b8d565b925082821015611b4457611b43611c25565b5b828203905092915050565b6000611b5a82611b6d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611ba282611b8d565b9050919050565b60005b83811015611bc7578082015181840152602081019050611bac565b83811115611bd6576000848401525b50505050565b6000611be782611b8d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c1a57611c19611c25565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b611da781611b4f565b8114611db257600080fd5b50565b611dbe81611b61565b8114611dc957600080fd5b50565b611dd581611b8d565b8114611de057600080fd5b5056fea2646970667358221220eae43b9aa4d23a96009e7ab0adf88eb511c4d9b1a7d3e1f83aa6250f56e05d7f64736f6c63430008070033

Deployed ByteCode Sourcemap

11511:16314:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13490:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24762:449;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14828:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15250:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27118:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14558:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12161:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25619:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23463:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15898:510;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26490:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26793:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26193:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3355:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23010:445;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14652:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13111:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27276:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27486:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15474:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23990:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12089:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24498:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13453:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14998:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12027:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21495:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25998:183;;;;;;;;;;;;;:::i;:::-;;14914:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14738:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26645:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25219:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12857:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15604:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21938:105;;;;;;;;;;;;;:::i;:::-;;3028:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12885:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22907:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12655:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26943:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18436:391;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21826:100;;;;;;;;;;;;;:::i;:::-;;15109:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25455:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13156:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12698:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3198:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26388:90;;;;;;;;;;;;;:::i;:::-;;18122:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3755:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25810:180;;;;;;;;;;;;;:::i;:::-;;24143:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24626:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12826:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3529:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13490:49;;;;:::o;24762:449::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24941:13:::1;24926:12;:28;;;;24978:11;24965:10;:24;;;;25016:14;25000:13;:30;;;;25056:13;25041:12;:28;;;;25091:69;25146:13;25091:50;25126:14;25091:30;25109:11;25091:13;:17;;:30;;;;:::i;:::-;:34;;:50;;;;:::i;:::-;:54;;:69;;;;:::i;:::-;25080:8;:80;;;;25188:15;25171:14;:32;;;;24762:449:::0;;;;;:::o;14828:80::-;14876:13;14900:5;;;;;;;;;;;;;;;;;14893:12;;14828:80;:::o;15250:216::-;15325:4;15377:6;15342:11;:23;15354:10;15342:23;;;;;;;;;;;;;;;:32;15366:7;15342:32;;;;;;;;;;;;;;;:41;;;;15420:7;15399:37;;15408:10;15399:37;;;15429:6;15399:37;;;;;;:::i;:::-;;;;;;;;15454:4;15447:11;;15250:216;;;;:::o;27118:150::-;27198:4;27254:6;27222:29;27242:8;27222:19;:29::i;:::-;:38;27215:45;;27118:150;;;;:::o;14558:88::-;14613:7;14631:12;;14624:19;;14558:88;:::o;12161:32::-;;;;;;;;;;;;;:::o;25619:183::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25735:7:::1;25717:15;:25;;;;25782:12;25753:26;:41;;;;25619:183:::0;;:::o;23463:342::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23623:1:::1;23608:11;23596:9;:23;;;;:::i;:::-;:28;;:55;;;;;23640:11;23628:9;:23;23596:55;23588:64;;;::::0;::::1;;23692:9;23663:26;:38;;;;23743:11;23712:28;:42;;;;23791:6;23765:23;:32;;;;23463:342:::0;;;:::o;15898:510::-;15998:4;16024:13;:25;16038:10;16024:25;;;;;;;;;;;;;;;;;;;;;;;;;16023:26;16015:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16107:12;;;;;;;;;;;16106:13;16098:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;16193:17;16158:11;:19;16170:6;16158:19;;;;;;;;;;;;;;;:31;16178:10;16158:31;;;;;;;;;;;;;;;;:52;16155:186;;16260:69;16296:6;16260:69;;;;;;;;;;;;;;;;;:11;:19;16272:6;16260:19;;;;;;;;;;;;;;;:31;16280:10;16260:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;16226:11;:19;16238:6;16226:19;;;;;;;;;;;;;;;:31;16246:10;16226:31;;;;;;;;;;;;;;;:103;;;;16155:186;16360:40;16374:6;16382:9;16393:6;16360:13;:40::i;:::-;16353:47;;15898:510;;;;;:::o;26490:146::-;26559:7;26586:11;;;;;;;;;;;:29;;;26616:11;26586:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26579:49;;26490:146;;;:::o;26793:142::-;26846:7;26873:54;26911:15;26921:4;;;;;;;;;;;26911:9;:15::i;:::-;26873:33;26890:15;26900:4;;;;;;;;;;;26890:9;:15::i;:::-;26873:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;26866:61;;26793:142;:::o;26193:183::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26303:11:::1;;;;;;;;;;;:35;;;26339:10;26351:16;26303:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26193:183:::0;;:::o;3355:103::-;3410:4;3445:5;;;;;;;;;;;3434:16;;:7;:16;;;3427:23;;3355:103;;;:::o;23010:445::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23186:8:::1;23165:18;;:29;;;;;;;;;;;;;;;;;;23222:4;23205:14;:21;;;;23262:1;23237:22;:26;;;;23294:7;23274:17;:27;;;;23337:7;23312:22;:32;;;;23378:12;23355:20;:35;;;;23425:22;23401:21;;:46;;;;;;;;;;;;;;;;;;23010:445:::0;;;;;:::o;14652:80::-;14704:5;11959:2;14713:16;;14652:80;:::o;13111:38::-;;;;;;;;;;;;;:::o;27276:198::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;27347:13:::1;:20;27361:5;27347:20;;;;;;;;;;;;;;;;;;;;;;;;;27346:21;27338:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;27430:4;27407:13;:20;27421:5;27407:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;27276:198:::0;:::o;27486:208::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;27566:13:::1;:20;27580:5;27566:20;;;;;;;;;;;;;;;;;;;;;;;;;27558:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;27649:5;27626:13;:20;27640:5;27626:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;27486:208:::0;:::o;15474:122::-;15529:4;15553:35;15561:7;15570:17;15553:7;:35::i;:::-;15546:42;;15474:122;;;:::o;23990:145::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24090:4:::1;24075:12;;:19;;;;:::i;:::-;24065:6;:29;;24057:38;;;::::0;::::1;;24121:6;24106:12;:21;;;;23990:145:::0;:::o;12089:51::-;;;;:::o;24498:120::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24604:6:::1;24582:11;:19;24594:6;24582:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24498:120:::0;;:::o;13453:30::-;;;;;;;;;;;;;:::o;14998:105::-;15064:7;15082:9;:18;15092:7;15082:18;;;;;;;;;;;;;;;;15075:25;;14998:105;;;:::o;12027:47::-;;;;:::o;21495:318::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21603:23:::1;21613:6;21621:4;;;;;;;;;;;21603:9;:23::i;:::-;21640:24;21637:169;;;21711:15;21680:28;:46;;;;21746:48;21770:23;;21746:48;;;;;;:::i;:::-;;;;;;;;21637:169;21495:318:::0;;:::o;25998:183::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26054:26:::1;26083:21;26054:50;;26123:20;;;;;;;;;;;26115:38;;:58;26154:18;26115:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26043:138;25998:183::o:0;14914:78::-;14966:7;14984:5;;;;;;;;;;;14977:12;;14914:78;:::o;14738:84::-;14788:13;14812:7;;;;;;;;;;;;;;;;;14805:14;;14738:84;:::o;26645:136::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26735:6:::1;26729:3;:12;26721:21;;;::::0;::::1;;26770:3;26753:14;:20;;;;26645:136:::0;:::o;25219:228::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25362:22:::1;25338:21;;:46;;;;;;;;;;;;;;;;;;25418:21;25395:20;;:44;;;;;;;;;;;;;;;;;;25219:228:::0;;:::o;12857:19::-;;;;;;;;;;;;;:::o;15604:286::-;15684:4;15710:13;:25;15724:10;15710:25;;;;;;;;;;;;;;;;;;;;;;;;;15709:26;15701:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15785:12;;;;;;;;;;;15784:13;15776:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;15838;15852:10;15864:9;15875:6;15838:13;:44::i;:::-;15831:51;;15604:286;;;;:::o;21938:105::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22034:1:::1;22003:28;:32;;;;21938:105::o:0;3028:94::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3110:4:::1;3088:14:::0;:19:::1;3103:3;3088:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3028:94:::0;:::o;12885:25::-;;;;:::o;22907:95::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22988:6:::1;22973:12;;:21;;;;;;;;;;;;;;;;;;22907:95:::0;:::o;12655:36::-;;;;;;;;;;;;;:::o;26943:167::-;27011:7;27038:64;27079:22;:20;:22::i;:::-;27038:36;27051:22;27071:1;27051:15;27061:4;;;;;;;;;;;27051:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;27038:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;27031:71;;26943:167;;;:::o;18436:391::-;18485:7;18505:21;18529:78;18591:15;18529:57;18562:23;;18529:28;;:32;;:57;;;;:::i;:::-;:61;;:78;;;;:::i;:::-;18505:102;;18618:19;18640:88;18719:8;;18640:74;18685:28;;18640:40;18653:26;;18640:8;;:12;;:40;;;;:::i;:::-;:44;;:74;;;;:::i;:::-;:78;;:88;;;;:::i;:::-;18618:110;;18746:73;18759:59;18794:23;;18759:30;18775:13;18759:11;:15;;:30;;;;:::i;:::-;:34;;:59;;;;:::i;:::-;18746:8;;:12;;:73;;;;:::i;:::-;18739:80;;;;18436:391;:::o;21826:100::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21900:18:::1;21882:15;:36;;;;21826:100::o:0;15109:133::-;15193:7;15211:11;:19;15223:6;15211:19;;;;;;;;;;;;;;;:28;15231:7;15211:28;;;;;;;;;;;;;;;;15204:35;;15109:133;;;;:::o;25455:156::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25561:8:::1;25547:11;;:22;;;;;;;;;;;;;;;;;;25596:7;25580:13;:23;;;;25455:156:::0;;:::o;13156:40::-;;;;;;;;;;;;;:::o;12698:35::-;;;;;;;;;;;;;:::o;3198:97::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3282:5:::1;3260:14;:19;3275:3;3260:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3198:97:::0;:::o;26388:90::-;26433:11;;;;;;;;;;;:25;;;26459:10;26433:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26388:90::o;18122:306::-;18178:7;18219:12;18214:1;18201:10;;:14;;;;:::i;:::-;:30;18198:67;;18241:21;18260:1;18241:14;;:18;;:21;;;;:::i;:::-;18234:28;;;;18198:67;18278:7;:86;;;;;18349:15;18289:57;18322:23;;18289:28;;:32;;:57;;;;:::i;:::-;:75;18278:86;18275:120;;;18374:18;:16;:18::i;:::-;18367:25;;;;18275:120;18412:8;;18405:15;;18122:306;;;;:::o;3755:173::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3839:3:::1;3831:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3875:4;3853:14:::0;:19:::1;3868:3;3853:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3895:25;3916:3;3895:25;;;;;;:::i;:::-;;;;;;;;3755:173:::0;:::o;25810:180::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25863:26:::1;25892:21;25863:50;;25932:20;;;;;;;;;;;25924:38;;:58;25963:18;25924:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25852:138;25810:180::o:0;24143:347::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24258:4:::1;24240:23;;:6;:23;;;;:41;;;;;24277:4;;;;;;;;;;;24267:14;;:6;:14;;;;24240:41;24232:50;;;::::0;::::1;;24320:6;24293:16;:24;24310:6;24293:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24340:6;24337:146;;;24362:11;;;;;;;;;;;:20;;;24383:6;24391:1;24362:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24337:146;;;24424:11;;;;;;;;;;;:20;;;24445:6;24453:9;:17;24463:6;24453:17;;;;;;;;;;;;;;;;24424:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24337:146;24143:347:::0;;:::o;24626:128::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24740:6:::1;24714:15;:23;24730:6;24714:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;24626:128:::0;;:::o;12826:24::-;;;;;;;;;;;;;:::o;3529:107::-;3585:4;3609:14;:19;3624:3;3609:19;;;;;;;;;;;;;;;;;;;;;;;;;3602:26;;3529:107;;;:::o;85:181::-;143:7;163:9;179:1;175;:5;;;;:::i;:::-;163:17;;204:1;199;:6;;191:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;257:1;250:8;;;85:181;;;;:::o;414:192::-;500:7;533:1;528;:6;;536:12;520:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;560:9;576:1;572;:5;;;;:::i;:::-;560:17;;597:1;590:8;;;414:192;;;;;:::o;16416:1060::-;16508:4;16528:6;;;;;;;;;;;16525:63;;;16544:41;16559:6;16567:9;16578:6;16544:14;:41::i;:::-;16537:48;;;;16525:63;16608:28;16621:6;16629;16608:12;:28::i;:::-;16652:16;:14;:16::i;:::-;16649:35;;;16671:10;:8;:10::i;:::-;16649:35;16697:19;:17;:19::i;:::-;16694:48;;;16719:20;:18;:20::i;:::-;16694:48;16758:10;:8;:10::i;:::-;16757:11;:32;;;;;16785:4;;;;;;;;;;;16772:17;;:9;:17;;;16757:32;16754:81;;;16820:1;16800:9;:17;16810:6;16800:17;;;;;;;;;;;;;;;;:21;16792:30;;;;;;16824:8;:6;:8::i;:::-;16754:81;16867:53;16889:6;16867:53;;;;;;;;;;;;;;;;;:9;:17;16877:6;16867:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;16847:9;:17;16857:6;16847:17;;;;;;;;;;;;;;;:73;;;;16933:22;16958:21;16972:6;16958:13;:21::i;:::-;:67;;17019:6;16958:67;;;16982:34;16990:6;16998:9;17009:6;16982:7;:34::i;:::-;16958:67;16933:92;;17059:40;17084:14;17059:9;:20;17069:9;17059:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;17036:9;:20;17046:9;17036:20;;;;;;;;;;;;;;;:63;;;;17116:16;:24;17133:6;17116:24;;;;;;;;;;;;;;;;;;;;;;;;;17112:96;;17147:11;;;;;;;;;;;:20;;;17168:6;17176:9;:17;17186:6;17176:17;;;;;;;;;;;;;;;;17147:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17143:63;;;;;;17112:96;17222:16;:27;17239:9;17222:27;;;;;;;;;;;;;;;;;;;;;;;;;17218:105;;17256:11;;;;;;;;;;;:20;;;17277:9;17288;:20;17298:9;17288:20;;;;;;;;;;;;;;;;17256:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17252:69;;;;;;17218:105;17339:11;;;;;;;;;;;:19;;;17359:14;;17339:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17335:51;;;;;;17420:9;17403:43;;17412:6;17403:43;;;17431:14;17403:43;;;;;;:::i;:::-;;;;;;;;17464:4;17457:11;;;16416:1060;;;;;;:::o;272:136::-;330:7;357:43;361:1;364;357:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;350:50;;272:136;;;;:::o;22538:361::-;13601:4;13592:6;;:13;;;;;;;;;;;;;;;;;;22614:21:::1;22652:1;22638:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22614:40;;22675:4;;;;;;;;;;;22665;22670:1;22665:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;22708:4;22690;22695:1;22690:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22726:6;;;;;;;;;;;:57;;;22791:6;22813:1;22829:4;22848:2;22865:15;22726:165;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;22603:296;13619:5:::0;13610:6;;:14;;;;;;;;;;;;;;;;;;22538:361;;:::o;612:250::-;670:7;699:1;694;:6;690:47;;;724:1;717:8;;;;690:47;749:9;765:1;761;:5;;;;:::i;:::-;749:17;;794:1;789;785;:5;;;;:::i;:::-;:10;777:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;853:1;846:8;;;612:250;;;;;:::o;868:132::-;926:7;953:39;957:1;960;953:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;946:46;;868:132;;;;:::o;17488:330::-;17581:4;17618:53;17640:6;17618:53;;;;;;;;;;;;;;;;;:9;:17;17628:6;17618:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17598:9;:17;17608:6;17598:17;;;;;;;;;;;;;;;:73;;;;17705:32;17730:6;17705:9;:20;17715:9;17705:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17682:9;:20;17692:9;17682:20;;;;;;;;;;;;;;;:55;;;;17770:9;17753:35;;17762:6;17753:35;;;17781:6;17753:35;;;;;;:::i;:::-;;;;;;;;17806:4;17799:11;;17488:330;;;;;:::o;17826:166::-;17923:12;;17913:6;:22;;:49;;;;17939:15;:23;17955:6;17939:23;;;;;;;;;;;;;;;;;;;;;;;;;17913:49;17905:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17826:166;;:::o;19215:197::-;19264:4;19302;;;;;;;;;;;19288:18;;:10;:18;;;;:38;;;;;19320:6;;;;;;;;;;;19319:7;19288:38;:62;;;;;19339:11;;;;;;;;;;;19288:62;:116;;;;;19391:13;;19363:9;:24;19381:4;19363:24;;;;;;;;;;;;;;;;:41;;19288:116;19281:123;;19215:197;:::o;19426:1755::-;13601:4;13592:6;;:13;;;;;;;;;;;;;;;;;;19475:27:::1;19505:60;19521:15;;19538:26;;19505:15;:60::i;:::-;:79;;19572:12;;19505:79;;;19568:1;19505:79;19475:109;;19595:23;19621:59;19678:1;19621:52;19664:8;;19621:38;19639:19;19621:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;19595:85;;19691:20;19714:34;19732:15;19714:13;;:17;;:34;;;;:::i;:::-;19691:57;;19761:21;19799:1;19785:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19761:40;;19830:4;19812;19817:1;19812:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;19856:4;;;;;;;;;;;19846;19851:1;19846:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;19873:21;19897;19873:45;;19931:6;;;;;;;;;;;:57;;;20003:12;20030:1;20046:4;20073;20093:15;19931:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20130:17;20150:40;20176:13;20150:21;:25;;:40;;;;:::i;:::-;20130:60;;20201:19;20223:40;20236:26;20260:1;20236:19;:23;;:26;;;;:::i;:::-;20223:8;;:12;;:40;;;;:::i;:::-;20201:62;;20274:26;20303:58;20359:1;20303:51;20342:11;20303:34;20317:19;20303:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;20274:87;;20372:27;20402:45;20435:11;20402:28;20416:13;;20402:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;20372:75;;20458:26;20487:44;20519:11;20487:27;20501:12;;20487:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;20458:73;;20548:11;;;;;;;;;;;:19;;;20575;20548:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;20544:65;;;;;;20620:12;20669:20;;;;;;;;;;;20661:34;;20703:18;20728:5;20661:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20619:119;;;20757:7;20749:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;20833:1;20815:15;:19;20812:362;;;20850:6;;;;;;;;;;;:22;;;20880:18;20926:4;20950:15;20984:1;21004::::0;21024:21:::1;;;;;;;;;;;21064:15;20850:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21114:48;21126:18;21146:15;21114:48;;;;;;;:::i;:::-;;;;;;;;20812:362;19464:1717;;;;;;;;;;;13619:5:::0;13610:6;;:14;;;;;;;;;;;;;;;;;;19426:1755::o;21189:298::-;21241:4;21279;;;;;;;;;;;21265:18;;:10;:18;;;;:42;;;;;21301:6;;;;;;;;;;;21300:7;21265:42;:77;;;;;21324:18;;;;;;;;;;;21265:77;:155;;;;;21408:12;21382:22;;21359:20;;:45;;;;:::i;:::-;:61;;21265:155;:214;;;;;21462:17;;21437:21;:42;;21265:214;21258:221;;21189:298;:::o;22051:479::-;22101:34;22111:17;;22130:4;;;;;;;;;;;22101:9;:34::i;:::-;22149:21;;;;;;;;;;;22146:166;;;22217:15;22186:28;:46;;;;22252:48;22276:23;;22252:48;;;;;;:::i;:::-;;;;;;;;22146:166;22345:12;22322:20;:35;;;;22393:45;22420:17;;22393:22;;:26;;:45;;;;:::i;:::-;22368:22;:70;;;;22477:14;;22452:22;;:39;22449:74;;;22515:5;22494:18;;:26;;;;;;;;;;;;;;;;;;22449:74;22051:479::o;23813:90::-;23856:4;23894:1;23880:10;;:15;;23873:22;;23813:90;:::o;23911:71::-;23962:12;23949:10;:25;;;;23911:71::o;18000:114::-;18062:4;18087:11;:19;18099:6;18087:19;;;;;;;;;;;;;;;;;;;;;;;;;18086:20;18079:27;;18000:114;;;:::o;18835:372::-;18920:7;18940:17;18960:61;19006:14;;18960:41;18971:29;18995:4;;;;;;;;;;;18983:16;;:8;:16;;;18971:11;:29::i;:::-;18960:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;18940:81;;19061:39;19090:9;19061;:24;19079:4;19061:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19034:9;:24;19052:4;19034:24;;;;;;;;;;;;;;;:66;;;;19141:4;19116:42;;19125:6;19116:42;;;19148:9;19116:42;;;;;;:::i;:::-;;;;;;;;19178:21;19189:9;19178:6;:10;;:21;;;;:::i;:::-;19171:28;;;18835:372;;;;;:::o;1006:345::-;1092:7;1191:1;1187;:5;1194:12;1179:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1218:9;1234:1;1230;:5;;;;:::i;:::-;1218:17;;1342:1;1335:8;;;1006:345;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;313:133;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;452:139;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;597:143;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:119;;;860:79;;:::i;:::-;822:119;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;746:329;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:119;;;1203:79;;:::i;:::-;1165:119;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1081:345;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:119;;;1563:79;;:::i;:::-;1525:119;1683:1;1708:53;1753:7;1744:6;1733:9;1729:22;1708:53;:::i;:::-;1698:63;;1654:117;1810:2;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1781:118;1432:474;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:119;;;2060:79;;:::i;:::-;2022:119;2180:1;2205:53;2250:7;2241:6;2230:9;2226:22;2205:53;:::i;:::-;2195:63;;2151:117;2307:2;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2278:118;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;1912:619;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:119;;;2665:79;;:::i;:::-;2627:119;2785:1;2810:53;2855:7;2846:6;2835:9;2831:22;2810:53;:::i;:::-;2800:63;;2756:117;2912:2;2938:50;2980:7;2971:6;2960:9;2956:22;2938:50;:::i;:::-;2928:60;;2883:115;2537:468;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:119;;;3142:79;;:::i;:::-;3104:119;3262:1;3287:53;3332:7;3323:6;3312:9;3308:22;3287:53;:::i;:::-;3277:63;;3233:117;3389:2;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;:::i;:::-;3405:63;;3360:118;3011:474;;;;;:::o;3491:323::-;3547:6;3596:2;3584:9;3575:7;3571:23;3567:32;3564:119;;;3602:79;;:::i;:::-;3564:119;3722:1;3747:50;3789:7;3780:6;3769:9;3765:22;3747:50;:::i;:::-;3737:60;;3693:114;3491:323;;;;:::o;3820:468::-;3885:6;3893;3942:2;3930:9;3921:7;3917:23;3913:32;3910:119;;;3948:79;;:::i;:::-;3910:119;4068:1;4093:50;4135:7;4126:6;4115:9;4111:22;4093:50;:::i;:::-;4083:60;;4039:114;4192:2;4218:53;4263:7;4254:6;4243:9;4239:22;4218:53;:::i;:::-;4208:63;;4163:118;3820:468;;;;;:::o;4294:899::-;4383:6;4391;4399;4407;4415;4464:3;4452:9;4443:7;4439:23;4435:33;4432:120;;;4471:79;;:::i;:::-;4432:120;4591:1;4616:50;4658:7;4649:6;4638:9;4634:22;4616:50;:::i;:::-;4606:60;;4562:114;4715:2;4741:53;4786:7;4777:6;4766:9;4762:22;4741:53;:::i;:::-;4731:63;;4686:118;4843:2;4869:53;4914:7;4905:6;4894:9;4890:22;4869:53;:::i;:::-;4859:63;;4814:118;4971:2;4997:53;5042:7;5033:6;5022:9;5018:22;4997:53;:::i;:::-;4987:63;;4942:118;5099:3;5126:50;5168:7;5159:6;5148:9;5144:22;5126:50;:::i;:::-;5116:60;;5070:116;4294:899;;;;;;;;:::o;5199:329::-;5258:6;5307:2;5295:9;5286:7;5282:23;5278:32;5275:119;;;5313:79;;:::i;:::-;5275:119;5433:1;5458:53;5503:7;5494:6;5483:9;5479:22;5458:53;:::i;:::-;5448:63;;5404:117;5199:329;;;;:::o;5534:351::-;5604:6;5653:2;5641:9;5632:7;5628:23;5624:32;5621:119;;;5659:79;;:::i;:::-;5621:119;5779:1;5804:64;5860:7;5851:6;5840:9;5836:22;5804:64;:::i;:::-;5794:74;;5750:128;5534:351;;;;:::o;5891:468::-;5956:6;5964;6013:2;6001:9;5992:7;5988:23;5984:32;5981:119;;;6019:79;;:::i;:::-;5981:119;6139:1;6164:53;6209:7;6200:6;6189:9;6185:22;6164:53;:::i;:::-;6154:63;;6110:117;6266:2;6292:50;6334:7;6325:6;6314:9;6310:22;6292:50;:::i;:::-;6282:60;;6237:115;5891:468;;;;;:::o;6365:474::-;6433:6;6441;6490:2;6478:9;6469:7;6465:23;6461:32;6458:119;;;6496:79;;:::i;:::-;6458:119;6616:1;6641:53;6686:7;6677:6;6666:9;6662:22;6641:53;:::i;:::-;6631:63;;6587:117;6743:2;6769:53;6814:7;6805:6;6794:9;6790:22;6769:53;:::i;:::-;6759:63;;6714:118;6365:474;;;;;:::o;6845:619::-;6922:6;6930;6938;6987:2;6975:9;6966:7;6962:23;6958:32;6955:119;;;6993:79;;:::i;:::-;6955:119;7113:1;7138:53;7183:7;7174:6;7163:9;7159:22;7138:53;:::i;:::-;7128:63;;7084:117;7240:2;7266:53;7311:7;7302:6;7291:9;7287:22;7266:53;:::i;:::-;7256:63;;7211:118;7368:2;7394:53;7439:7;7430:6;7419:9;7415:22;7394:53;:::i;:::-;7384:63;;7339:118;6845:619;;;;;:::o;7470:663::-;7558:6;7566;7574;7623:2;7611:9;7602:7;7598:23;7594:32;7591:119;;;7629:79;;:::i;:::-;7591:119;7749:1;7774:64;7830:7;7821:6;7810:9;7806:22;7774:64;:::i;:::-;7764:74;;7720:128;7887:2;7913:64;7969:7;7960:6;7949:9;7945:22;7913:64;:::i;:::-;7903:74;;7858:129;8026:2;8052:64;8108:7;8099:6;8088:9;8084:22;8052:64;:::i;:::-;8042:74;;7997:129;7470:663;;;;;:::o;8139:911::-;8234:6;8242;8250;8258;8266;8315:3;8303:9;8294:7;8290:23;8286:33;8283:120;;;8322:79;;:::i;:::-;8283:120;8442:1;8467:53;8512:7;8503:6;8492:9;8488:22;8467:53;:::i;:::-;8457:63;;8413:117;8569:2;8595:53;8640:7;8631:6;8620:9;8616:22;8595:53;:::i;:::-;8585:63;;8540:118;8697:2;8723:53;8768:7;8759:6;8748:9;8744:22;8723:53;:::i;:::-;8713:63;;8668:118;8825:2;8851:53;8896:7;8887:6;8876:9;8872:22;8851:53;:::i;:::-;8841:63;;8796:118;8953:3;8980:53;9025:7;9016:6;9005:9;9001:22;8980:53;:::i;:::-;8970:63;;8924:119;8139:911;;;;;;;;:::o;9056:179::-;9125:10;9146:46;9188:3;9180:6;9146:46;:::i;:::-;9224:4;9219:3;9215:14;9201:28;;9056:179;;;;:::o;9241:147::-;9336:45;9375:5;9336:45;:::i;:::-;9331:3;9324:58;9241:147;;:::o;9394:108::-;9471:24;9489:5;9471:24;:::i;:::-;9466:3;9459:37;9394:108;;:::o;9508:118::-;9595:24;9613:5;9595:24;:::i;:::-;9590:3;9583:37;9508:118;;:::o;9662:732::-;9781:3;9810:54;9858:5;9810:54;:::i;:::-;9880:86;9959:6;9954:3;9880:86;:::i;:::-;9873:93;;9990:56;10040:5;9990:56;:::i;:::-;10069:7;10100:1;10085:284;10110:6;10107:1;10104:13;10085:284;;;10186:6;10180:13;10213:63;10272:3;10257:13;10213:63;:::i;:::-;10206:70;;10299:60;10352:6;10299:60;:::i;:::-;10289:70;;10145:224;10132:1;10129;10125:9;10120:14;;10085:284;;;10089:14;10385:3;10378:10;;9786:608;;;9662:732;;;;:::o;10400:109::-;10481:21;10496:5;10481:21;:::i;:::-;10476:3;10469:34;10400:109;;:::o;10515:167::-;10620:55;10669:5;10620:55;:::i;:::-;10615:3;10608:68;10515:167;;:::o;10688:147::-;10783:45;10822:5;10783:45;:::i;:::-;10778:3;10771:58;10688:147;;:::o;10841:364::-;10929:3;10957:39;10990:5;10957:39;:::i;:::-;11012:71;11076:6;11071:3;11012:71;:::i;:::-;11005:78;;11092:52;11137:6;11132:3;11125:4;11118:5;11114:16;11092:52;:::i;:::-;11169:29;11191:6;11169:29;:::i;:::-;11164:3;11160:39;11153:46;;10933:272;10841:364;;;;:::o;11211:366::-;11353:3;11374:67;11438:2;11433:3;11374:67;:::i;:::-;11367:74;;11450:93;11539:3;11450:93;:::i;:::-;11568:2;11563:3;11559:12;11552:19;;11211:366;;;:::o;11583:::-;11725:3;11746:67;11810:2;11805:3;11746:67;:::i;:::-;11739:74;;11822:93;11911:3;11822:93;:::i;:::-;11940:2;11935:3;11931:12;11924:19;;11583:366;;;:::o;11955:::-;12097:3;12118:67;12182:2;12177:3;12118:67;:::i;:::-;12111:74;;12194:93;12283:3;12194:93;:::i;:::-;12312:2;12307:3;12303:12;12296:19;;11955:366;;;:::o;12327:::-;12469:3;12490:67;12554:2;12549:3;12490:67;:::i;:::-;12483:74;;12566:93;12655:3;12566:93;:::i;:::-;12684:2;12679:3;12675:12;12668:19;;12327:366;;;:::o;12699:::-;12841:3;12862:67;12926:2;12921:3;12862:67;:::i;:::-;12855:74;;12938:93;13027:3;12938:93;:::i;:::-;13056:2;13051:3;13047:12;13040:19;;12699:366;;;:::o;13071:::-;13213:3;13234:67;13298:2;13293:3;13234:67;:::i;:::-;13227:74;;13310:93;13399:3;13310:93;:::i;:::-;13428:2;13423:3;13419:12;13412:19;;13071:366;;;:::o;13443:::-;13585:3;13606:67;13670:2;13665:3;13606:67;:::i;:::-;13599:74;;13682:93;13771:3;13682:93;:::i;:::-;13800:2;13795:3;13791:12;13784:19;;13443:366;;;:::o;13815:365::-;13957:3;13978:66;14042:1;14037:3;13978:66;:::i;:::-;13971:73;;14053:93;14142:3;14053:93;:::i;:::-;14171:2;14166:3;14162:12;14155:19;;13815:365;;;:::o;14186:398::-;14345:3;14366:83;14447:1;14442:3;14366:83;:::i;:::-;14359:90;;14458:93;14547:3;14458:93;:::i;:::-;14576:1;14571:3;14567:11;14560:18;;14186:398;;;:::o;14590:366::-;14732:3;14753:67;14817:2;14812:3;14753:67;:::i;:::-;14746:74;;14829:93;14918:3;14829:93;:::i;:::-;14947:2;14942:3;14938:12;14931:19;;14590:366;;;:::o;14962:::-;15104:3;15125:67;15189:2;15184:3;15125:67;:::i;:::-;15118:74;;15201:93;15290:3;15201:93;:::i;:::-;15319:2;15314:3;15310:12;15303:19;;14962:366;;;:::o;15334:118::-;15421:24;15439:5;15421:24;:::i;:::-;15416:3;15409:37;15334:118;;:::o;15458:112::-;15541:22;15557:5;15541:22;:::i;:::-;15536:3;15529:35;15458:112;;:::o;15576:379::-;15760:3;15782:147;15925:3;15782:147;:::i;:::-;15775:154;;15946:3;15939:10;;15576:379;;;:::o;15961:222::-;16054:4;16092:2;16081:9;16077:18;16069:26;;16105:71;16173:1;16162:9;16158:17;16149:6;16105:71;:::i;:::-;15961:222;;;;:::o;16189:238::-;16290:4;16328:2;16317:9;16313:18;16305:26;;16341:79;16417:1;16406:9;16402:17;16393:6;16341:79;:::i;:::-;16189:238;;;;:::o;16433:348::-;16562:4;16600:2;16589:9;16585:18;16577:26;;16613:71;16681:1;16670:9;16666:17;16657:6;16613:71;:::i;:::-;16694:80;16770:2;16759:9;16755:18;16746:6;16694:80;:::i;:::-;16433:348;;;;;:::o;16787:332::-;16908:4;16946:2;16935:9;16931:18;16923:26;;16959:71;17027:1;17016:9;17012:17;17003:6;16959:71;:::i;:::-;17040:72;17108:2;17097:9;17093:18;17084:6;17040:72;:::i;:::-;16787:332;;;;;:::o;17125:807::-;17374:4;17412:3;17401:9;17397:19;17389:27;;17426:71;17494:1;17483:9;17479:17;17470:6;17426:71;:::i;:::-;17507:72;17575:2;17564:9;17560:18;17551:6;17507:72;:::i;:::-;17589:80;17665:2;17654:9;17650:18;17641:6;17589:80;:::i;:::-;17679;17755:2;17744:9;17740:18;17731:6;17679:80;:::i;:::-;17769:73;17837:3;17826:9;17822:19;17813:6;17769:73;:::i;:::-;17852;17920:3;17909:9;17905:19;17896:6;17852:73;:::i;:::-;17125:807;;;;;;;;;:::o;17938:210::-;18025:4;18063:2;18052:9;18048:18;18040:26;;18076:65;18138:1;18127:9;18123:17;18114:6;18076:65;:::i;:::-;17938:210;;;;:::o;18154:258::-;18265:4;18303:2;18292:9;18288:18;18280:26;;18316:89;18402:1;18391:9;18387:17;18378:6;18316:89;:::i;:::-;18154:258;;;;:::o;18418:720::-;18653:4;18691:3;18680:9;18676:19;18668:27;;18705:79;18781:1;18770:9;18766:17;18757:6;18705:79;:::i;:::-;18831:9;18825:4;18821:20;18816:2;18805:9;18801:18;18794:48;18859:108;18962:4;18953:6;18859:108;:::i;:::-;18851:116;;18977:72;19045:2;19034:9;19030:18;19021:6;18977:72;:::i;:::-;19059;19127:2;19116:9;19112:18;19103:6;19059:72;:::i;:::-;18418:720;;;;;;;:::o;19144:313::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:78;19445:4;19436:6;19372:78;:::i;:::-;19364:86;;19144:313;;;;:::o;19463:419::-;19629:4;19667:2;19656:9;19652:18;19644:26;;19716:9;19710:4;19706:20;19702:1;19691:9;19687:17;19680:47;19744:131;19870:4;19744:131;:::i;:::-;19736:139;;19463:419;;;:::o;19888:::-;20054:4;20092:2;20081:9;20077:18;20069:26;;20141:9;20135:4;20131:20;20127:1;20116:9;20112:17;20105:47;20169:131;20295:4;20169:131;:::i;:::-;20161:139;;19888:419;;;:::o;20313:::-;20479:4;20517:2;20506:9;20502:18;20494:26;;20566:9;20560:4;20556:20;20552:1;20541:9;20537:17;20530:47;20594:131;20720:4;20594:131;:::i;:::-;20586:139;;20313:419;;;:::o;20738:::-;20904:4;20942:2;20931:9;20927:18;20919:26;;20991:9;20985:4;20981:20;20977:1;20966:9;20962:17;20955:47;21019:131;21145:4;21019:131;:::i;:::-;21011:139;;20738:419;;;:::o;21163:::-;21329:4;21367:2;21356:9;21352:18;21344:26;;21416:9;21410:4;21406:20;21402:1;21391:9;21387:17;21380:47;21444:131;21570:4;21444:131;:::i;:::-;21436:139;;21163:419;;;:::o;21588:::-;21754:4;21792:2;21781:9;21777:18;21769:26;;21841:9;21835:4;21831:20;21827:1;21816:9;21812:17;21805:47;21869:131;21995:4;21869:131;:::i;:::-;21861:139;;21588:419;;;:::o;22013:::-;22179:4;22217:2;22206:9;22202:18;22194:26;;22266:9;22260:4;22256:20;22252:1;22241:9;22237:17;22230:47;22294:131;22420:4;22294:131;:::i;:::-;22286:139;;22013:419;;;:::o;22438:::-;22604:4;22642:2;22631:9;22627:18;22619:26;;22691:9;22685:4;22681:20;22677:1;22666:9;22662:17;22655:47;22719:131;22845:4;22719:131;:::i;:::-;22711:139;;22438:419;;;:::o;22863:::-;23029:4;23067:2;23056:9;23052:18;23044:26;;23116:9;23110:4;23106:20;23102:1;23091:9;23087:17;23080:47;23144:131;23270:4;23144:131;:::i;:::-;23136:139;;22863:419;;;:::o;23288:::-;23454:4;23492:2;23481:9;23477:18;23469:26;;23541:9;23535:4;23531:20;23527:1;23516:9;23512:17;23505:47;23569:131;23695:4;23569:131;:::i;:::-;23561:139;;23288:419;;;:::o;23713:222::-;23806:4;23844:2;23833:9;23829:18;23821:26;;23857:71;23925:1;23914:9;23910:17;23901:6;23857:71;:::i;:::-;23713:222;;;;:::o;23941:831::-;24204:4;24242:3;24231:9;24227:19;24219:27;;24256:71;24324:1;24313:9;24309:17;24300:6;24256:71;:::i;:::-;24337:80;24413:2;24402:9;24398:18;24389:6;24337:80;:::i;:::-;24464:9;24458:4;24454:20;24449:2;24438:9;24434:18;24427:48;24492:108;24595:4;24586:6;24492:108;:::i;:::-;24484:116;;24610:72;24678:2;24667:9;24663:18;24654:6;24610:72;:::i;:::-;24692:73;24760:3;24749:9;24745:19;24736:6;24692:73;:::i;:::-;23941:831;;;;;;;;:::o;24778:332::-;24899:4;24937:2;24926:9;24922:18;24914:26;;24950:71;25018:1;25007:9;25003:17;24994:6;24950:71;:::i;:::-;25031:72;25099:2;25088:9;25084:18;25075:6;25031:72;:::i;:::-;24778:332;;;;;:::o;25116:214::-;25205:4;25243:2;25232:9;25228:18;25220:26;;25256:67;25320:1;25309:9;25305:17;25296:6;25256:67;:::i;:::-;25116:214;;;;:::o;25417:132::-;25484:4;25507:3;25499:11;;25537:4;25532:3;25528:14;25520:22;;25417:132;;;:::o;25555:114::-;25622:6;25656:5;25650:12;25640:22;;25555:114;;;:::o;25675:99::-;25727:6;25761:5;25755:12;25745:22;;25675:99;;;:::o;25780:113::-;25850:4;25882;25877:3;25873:14;25865:22;;25780:113;;;:::o;25899:184::-;25998:11;26032:6;26027:3;26020:19;26072:4;26067:3;26063:14;26048:29;;25899:184;;;;:::o;26089:147::-;26190:11;26227:3;26212:18;;26089:147;;;;:::o;26242:169::-;26326:11;26360:6;26355:3;26348:19;26400:4;26395:3;26391:14;26376:29;;26242:169;;;;:::o;26417:305::-;26457:3;26476:20;26494:1;26476:20;:::i;:::-;26471:25;;26510:20;26528:1;26510:20;:::i;:::-;26505:25;;26664:1;26596:66;26592:74;26589:1;26586:81;26583:107;;;26670:18;;:::i;:::-;26583:107;26714:1;26711;26707:9;26700:16;;26417:305;;;;:::o;26728:185::-;26768:1;26785:20;26803:1;26785:20;:::i;:::-;26780:25;;26819:20;26837:1;26819:20;:::i;:::-;26814:25;;26858:1;26848:35;;26863:18;;:::i;:::-;26848:35;26905:1;26902;26898:9;26893:14;;26728:185;;;;:::o;26919:348::-;26959:7;26982:20;27000:1;26982:20;:::i;:::-;26977:25;;27016:20;27034:1;27016:20;:::i;:::-;27011:25;;27204:1;27136:66;27132:74;27129:1;27126:81;27121:1;27114:9;27107:17;27103:105;27100:131;;;27211:18;;:::i;:::-;27100:131;27259:1;27256;27252:9;27241:20;;26919:348;;;;:::o;27273:191::-;27313:4;27333:20;27351:1;27333:20;:::i;:::-;27328:25;;27367:20;27385:1;27367:20;:::i;:::-;27362:25;;27406:1;27403;27400:8;27397:34;;;27411:18;;:::i;:::-;27397:34;27456:1;27453;27449:9;27441:17;;27273:191;;;;:::o;27470:96::-;27507:7;27536:24;27554:5;27536:24;:::i;:::-;27525:35;;27470:96;;;:::o;27572:104::-;27617:7;27646:24;27664:5;27646:24;:::i;:::-;27635:35;;27572:104;;;:::o;27682:90::-;27716:7;27759:5;27752:13;27745:21;27734:32;;27682:90;;;:::o;27778:126::-;27815:7;27855:42;27848:5;27844:54;27833:65;;27778:126;;;:::o;27910:77::-;27947:7;27976:5;27965:16;;27910:77;;;:::o;27993:86::-;28028:7;28068:4;28061:5;28057:16;28046:27;;27993:86;;;:::o;28085:134::-;28143:9;28176:37;28207:5;28176:37;:::i;:::-;28163:50;;28085:134;;;:::o;28225:144::-;28293:9;28326:37;28357:5;28326:37;:::i;:::-;28313:50;;28225:144;;;:::o;28375:121::-;28433:9;28466:24;28484:5;28466:24;:::i;:::-;28453:37;;28375:121;;;:::o;28502:126::-;28552:9;28585:37;28616:5;28585:37;:::i;:::-;28572:50;;28502:126;;;:::o;28634:113::-;28684:9;28717:24;28735:5;28717:24;:::i;:::-;28704:37;;28634:113;;;:::o;28753:307::-;28821:1;28831:113;28845:6;28842:1;28839:13;28831:113;;;28930:1;28925:3;28921:11;28915:18;28911:1;28906:3;28902:11;28895:39;28867:2;28864:1;28860:10;28855:15;;28831:113;;;28962:6;28959:1;28956:13;28953:101;;;29042:1;29033:6;29028:3;29024:16;29017:27;28953:101;28802:258;28753:307;;;:::o;29066:180::-;29114:77;29111:1;29104:88;29211:4;29208:1;29201:15;29235:4;29232:1;29225:15;29252:180;29300:77;29297:1;29290:88;29397:4;29394:1;29387:15;29421:4;29418:1;29411:15;29438:180;29486:77;29483:1;29476:88;29583:4;29580:1;29573:15;29607:4;29604:1;29597:15;29624:180;29672:77;29669:1;29662:88;29769:4;29766:1;29759:15;29793:4;29790:1;29783:15;29933:117;30042:1;30039;30032:12;30056:102;30097:6;30148:2;30144:7;30139:2;30132:5;30128:14;30124:28;30114:38;;30056:102;;;:::o;30164:167::-;30304:19;30300:1;30292:6;30288:14;30281:43;30164:167;:::o;30337:177::-;30477:29;30473:1;30465:6;30461:14;30454:53;30337:177;:::o;30520:180::-;30660:32;30656:1;30648:6;30644:14;30637:56;30520:180;:::o;30706:174::-;30846:26;30842:1;30834:6;30830:14;30823:50;30706:174;:::o;30886:::-;31026:26;31022:1;31014:6;31010:14;31003:50;30886:174;:::o;31066:220::-;31206:34;31202:1;31194:6;31190:14;31183:58;31275:3;31270:2;31262:6;31258:15;31251:28;31066:220;:::o;31292:168::-;31432:20;31428:1;31420:6;31416:14;31409:44;31292:168;:::o;31466:156::-;31606:8;31602:1;31594:6;31590:14;31583:32;31466:156;:::o;31628:114::-;;:::o;31748:173::-;31888:25;31884:1;31876:6;31872:14;31865:49;31748:173;:::o;31927:161::-;32067:13;32063:1;32055:6;32051:14;32044:37;31927:161;:::o;32094:122::-;32167:24;32185:5;32167:24;:::i;:::-;32160:5;32157:35;32147:63;;32206:1;32203;32196:12;32147:63;32094:122;:::o;32222:138::-;32303:32;32329:5;32303:32;:::i;:::-;32296:5;32293:43;32283:71;;32350:1;32347;32340:12;32283:71;32222:138;:::o;32366:116::-;32436:21;32451:5;32436:21;:::i;:::-;32429:5;32426:32;32416:60;;32472:1;32469;32462:12;32416:60;32366:116;:::o;32488:122::-;32561:24;32579:5;32561:24;:::i;:::-;32554:5;32551:35;32541:63;;32600:1;32597;32590:12;32541:63;32488:122;:::o

Swarm Source

ipfs://eae43b9aa4d23a96009e7ab0adf88eb511c4d9b1a7d3e1f83aa6250f56e05d7f
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.