Contract 0xbCAC2f06Ef8323d2D0619e10b8868Ce7281A9Db1

 

Contract Overview

Balance:
196 wei

BNB Value:
Less Than $0.01 (@ $573.18/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x65a7ae874dbf32e8dfc06dfbf0ce2eb322504e07721651265a7dd6cb541beaf5Set Is Fee Exemp...131105002021-12-01 19:04:245 days 1 hr ago0x84ee98a5bb60890dc0e6b3eb87776d6a940b327e IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000125305
0xcd6a2f36f08fd15b766c0aeb9783e5f5db93198640e6275a18aed162703c7b89Approve130479782021-11-29 10:40:267 days 9 hrs ago0x5e72f63b8e11521e70fa267fb48e3dca5735daec IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000129165
0xd0efafb2b4e07d6afe9622c593bf8c4bb907409f4544ab6e0aa99da57d9374a4Approve130479472021-11-29 10:38:317 days 9 hrs ago0x5e72f63b8e11521e70fa267fb48e3dca5735daec IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0xd79d438c9542e5da0b1f0ac0cdb75a0eada418675da6e3b3a419a0764dbd9fd9Approve127164382021-11-17 6:26:5319 days 14 hrs ago0x1845d6cce7146164a45cbe365f6ee45557beac4b IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0xf3f29c5d2856cd3052b1ce0ad93318fdb1b9e3a8deab133ee8e599277c007114Approve127163952021-11-17 6:24:2119 days 14 hrs ago0x9512c180b7923ce44bb1a13746bf0db7e5c44229 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0xc340541ed023e67131d6f69cc131f6e9bc0e6dc61950ef11b85fa6d625571dfaApprove124959552021-11-09 7:05:5227 days 13 hrs ago0xb68573af88b18559484b0333efa909e83c5bdc5c IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000074125
0x52cd95003340bece3ef7d149856fc49481cef88f4ae540e1523d40241d06c9fcApprove123225482021-11-03 3:45:0933 days 16 hrs ago0x5cdb8395583a18b2b147113203668ec3845ff39f IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x983fc5ec8df76ddf33ddc61b3b4ff997e066d40c6218bc03a8921f239da16c8eApprove121324082021-10-27 9:56:5940 days 10 hrs ago0xd7d4185567a0d5165511e2e846dbc5e1c84c0690 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0xef8c51b00e675fe4661936e4be5ef4659c78c8bed057fc72bb65d9e8326046a8Approve120600292021-10-24 21:12:0142 days 23 hrs ago0x28e9ab9a2e5a5434d1e81cd8feccf0ada850cf52 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000315231
0xce01847e60ae80b20c39b9408862d14f5c7777c3e9c74f509033e6be0c7fa354Approve120582142021-10-24 19:40:5643 days 55 mins ago0xf076f6f942eac10b48cea9ed1f25be813304ae42 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000074125
0x9aff03f52c4926ab621cdc5aea67a9e9b6d14d44c62e8db4fc748a79527b09f9Approve120578842021-10-24 19:24:2643 days 1 hr ago0xf076f6f942eac10b48cea9ed1f25be813304ae42 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x9ddd826764fe982f24d7e369fbfe4321a7a8e03fadb6388ac231c298d602f2e1Approve120106642021-10-23 3:34:1044 days 17 hrs ago0xaedc05df0afbcacb92497c8bcc0f3ce9d4b1699f IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x34b65e179eaa11c99b9a23e08ef27040f2d7d8b8af6b6cfb04c76325f09124a9Approve118939392021-10-19 0:25:3248 days 20 hrs ago0xbeb26b39934e3289fd7048897f17c031d20dc6f4 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000270198
0x849416ce9de1f24c4e70ea85e96e3110e55851b9bcb95746fe4ceb724f49e7a2Approve118479712021-10-17 9:51:5150 days 10 hrs ago0x00a0414eaca4d9a6d353ac484d8d05327a17ead7 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x16f90cf7d103d465bdbbaa13956b3ec70ae729fd7e27dbf46ddc10a3f42cc857Approve118212542021-10-16 11:29:5951 days 9 hrs ago0xcf9fc47d5cbba4846dd41aff83046f391913b708 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x84d13f95a4e9592aa51b4851a9a6f3dbeebdc32a00c713109986b7101d863653Approve118034962021-10-15 20:37:4851 days 23 hrs ago0x86267e5f1e36cc7defb3cfa2705ad7891f56aaf7 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x4b2e0e6595800698580c02bb895719b0970bcb9a781ea649bb42b7986098e001Approve117545182021-10-14 3:41:3253 days 16 hrs ago0xd83b2cb97bfc51c3e76d13dddea88bd8d8b20f3b IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x8fe52decde214c83e92bde7d3370feb658bef918211e5425e2bdc2eb83969363Approve117516332021-10-14 1:17:1753 days 19 hrs ago0xabb2be66e60128e0041e20d828e5b017527d594f IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000129165
0xcc4dde65acf50135f4fb2448bbecb0d3ed6b5672d4ba899bf8b4e413b7045abdApprove117516282021-10-14 1:17:0253 days 19 hrs ago0xabb2be66e60128e0041e20d828e5b017527d594f IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x2bd9d799c07117047942ee483956b3688ca5ddb4c4d679470c0b656adb0b4663Approve117131912021-10-12 16:45:5355 days 3 hrs ago0xb784c2a68cc17aacec3c7cfe315a05da3fadb4fb IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0xcdd66bdd5aad8fc01bfe534b576366e042564dc95ad32dedf348bba20b9a3c57Approve116982722021-10-12 4:13:4355 days 16 hrs ago0x363a902b23d3ff7e22767aea1ffd3dd5999ec354 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x2cede2ab47cd611347d30dfd65c91c9fca3fc4ad7ab9fc804ab380ed34a05a5fClaimtokensback116956592021-10-12 2:03:0455 days 18 hrs ago0xa5a1bf871eec5588ae14648b15dc6a42c58eced0 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000116685
0x22f6db73642da675becdfaff5ea4af02ab0bf213d5349099459ceea388d5110bApprove116699742021-10-11 3:56:0456 days 16 hrs ago0x6f9cfe3071c082ed950cd68c89d35a0534c8c310 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0xebfe385898bd62d9d02536ded42f6090dbbc8c9053b87069d29ef5dca5373d93Approve116677152021-10-11 2:02:5356 days 18 hrs ago0xd4a4f582a15cb61b8f7e6f9d6170b3de2f90fed9 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.000225165
0x72cc164c263eee9a50dc9d074141748d9baa0ca86d836323d4caf5b68e20f04dTransfer116582882021-10-10 18:11:2957 days 2 hrs ago0x1d6a3ddac161431890817f2134fbd3c8e3605556 IN  0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10 BNB0.01113611
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa1f1781bb6af7c8ca944c6be1b5c41b40928095b8fde631675bec650476d78fb130480042021-11-29 10:41:487 days 9 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 PancakeSwap: Router v20.003402080329204885 BNB
0xa1f1781bb6af7c8ca944c6be1b5c41b40928095b8fde631675bec650476d78fb130480042021-11-29 10:41:487 days 9 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.001701040164602442 BNB
0xa1f1781bb6af7c8ca944c6be1b5c41b40928095b8fde631675bec650476d78fb130480042021-11-29 10:41:487 days 9 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.003402080329204885 BNB
0xa1f1781bb6af7c8ca944c6be1b5c41b40928095b8fde631675bec650476d78fb130480042021-11-29 10:41:487 days 9 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 0xbfad3ac8014334199390b9d9e724a92c067a79210.013608321316819542 BNB
0xa1f1781bb6af7c8ca944c6be1b5c41b40928095b8fde631675bec650476d78fb130480042021-11-29 10:41:487 days 9 hrs ago PancakeSwap: Router v2 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10.022113522139831757 BNB
0xe022a3ae4037202757f6d69a1ff324f4d1f40a41e863836a471207f9c8f58558127164482021-11-17 6:27:3419 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 PancakeSwap: Router v20.003707523909225159 BNB
0xe022a3ae4037202757f6d69a1ff324f4d1f40a41e863836a471207f9c8f58558127164482021-11-17 6:27:3419 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.001853761954612579 BNB
0xe022a3ae4037202757f6d69a1ff324f4d1f40a41e863836a471207f9c8f58558127164482021-11-17 6:27:3419 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.003707523909225159 BNB
0xe022a3ae4037202757f6d69a1ff324f4d1f40a41e863836a471207f9c8f58558127164482021-11-17 6:27:3419 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 0xbfad3ac8014334199390b9d9e724a92c067a79210.014830095636900637 BNB
0xe022a3ae4037202757f6d69a1ff324f4d1f40a41e863836a471207f9c8f58558127164482021-11-17 6:27:3419 days 14 hrs ago PancakeSwap: Router v2 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10.024098905409963536 BNB
0xa268c0b952c513206e97f33fa6a128ccd39d9569116cbe936ecf99765dc291fc127164052021-11-17 6:24:5519 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 PancakeSwap: Router v20.004126244404121668 BNB
0xa268c0b952c513206e97f33fa6a128ccd39d9569116cbe936ecf99765dc291fc127164052021-11-17 6:24:5519 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.002063122202060834 BNB
0xa268c0b952c513206e97f33fa6a128ccd39d9569116cbe936ecf99765dc291fc127164052021-11-17 6:24:5519 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.004126244404121668 BNB
0xa268c0b952c513206e97f33fa6a128ccd39d9569116cbe936ecf99765dc291fc127164052021-11-17 6:24:5519 days 14 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 0xbfad3ac8014334199390b9d9e724a92c067a79210.016504977616486673 BNB
0xa268c0b952c513206e97f33fa6a128ccd39d9569116cbe936ecf99765dc291fc127164052021-11-17 6:24:5519 days 14 hrs ago PancakeSwap: Router v2 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10.026820588626790844 BNB
0x06d7e79be1c44d6d22300723e2ef0ad3192f862ad6d58b3f53bc00f10bba22a2123225992021-11-03 3:47:4233 days 16 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 PancakeSwap: Router v20.00436309077918618 BNB
0x06d7e79be1c44d6d22300723e2ef0ad3192f862ad6d58b3f53bc00f10bba22a2123225992021-11-03 3:47:4233 days 16 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.00218154538959309 BNB
0x06d7e79be1c44d6d22300723e2ef0ad3192f862ad6d58b3f53bc00f10bba22a2123225992021-11-03 3:47:4233 days 16 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.00436309077918618 BNB
0x06d7e79be1c44d6d22300723e2ef0ad3192f862ad6d58b3f53bc00f10bba22a2123225992021-11-03 3:47:4233 days 16 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 0xbfad3ac8014334199390b9d9e724a92c067a79210.017452363116744722 BNB
0x06d7e79be1c44d6d22300723e2ef0ad3192f862ad6d58b3f53bc00f10bba22a2123225992021-11-03 3:47:4233 days 16 hrs ago PancakeSwap: Router v2 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10.028360090064710174 BNB
0xd01ff0e72e53443a2019aaf6950cf377621bf9497c628fe9d8c9c5e466da16f1121324202021-10-27 9:57:3540 days 10 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 PancakeSwap: Router v20.004446504493238042 BNB
0xd01ff0e72e53443a2019aaf6950cf377621bf9497c628fe9d8c9c5e466da16f1121324202021-10-27 9:57:3540 days 10 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.002223252246619021 BNB
0xd01ff0e72e53443a2019aaf6950cf377621bf9497c628fe9d8c9c5e466da16f1121324202021-10-27 9:57:3540 days 10 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10x84ee98a5bb60890dc0e6b3eb87776d6a940b327e0.004446504493238042 BNB
0xd01ff0e72e53443a2019aaf6950cf377621bf9497c628fe9d8c9c5e466da16f1121324202021-10-27 9:57:3540 days 10 hrs ago 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db1 0xbfad3ac8014334199390b9d9e724a92c067a79210.017786017972952169 BNB
0xd01ff0e72e53443a2019aaf6950cf377621bf9497c628fe9d8c9c5e466da16f1121324202021-10-27 9:57:3540 days 10 hrs ago PancakeSwap: Router v2 0xbcac2f06ef8323d2d0619e10b8868ce7281a9db10.028902279206047276 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Ganbei888

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-10-01
*/

// File: ganbei888.sol

pragma solidity ^0.8.7;
//SPDX-License-Identifier: UNLICENCED


/*
 *  Gambei 888
*   Website: https://gambei888.com
*   Telegram: https://t.me/gambei888
*   Twitter: https://www.twitter.com/ganbei888
*/


/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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;
}

interface IpresaleAirdrop {
    function airdropPresale(address recipient, uint256 amount) external;
}

contract GanbeiDividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;
    mapping(address => bool) adminAccounts;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
   
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    
    IBEP20 public rewardtoken = IBEP20(WBNB);
    mapping (address => uint256) totaldividendsOfToken;
    IDEXRouter router;

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

    mapping (address => Share) public shares;
    mapping (address => mapping (address => Share)) public rewardshares;

    uint256 public totalShares;
    //uint256 public totalDividends;
    uint256 public totalDistributed;
    //uint256 public dividendsPerShare;
    mapping (address => uint256) public dividendsPerShareRewardToken;
    mapping (address => uint256) public totaldividendsrewardtoken;
    uint256 public dividendsPerShareAccuracyFactor = 10**36;

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

    uint256 public currentIndex;

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

    modifier onlyAdmin() {
        require(adminAccounts[msg.sender]); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); //Mainnet
            //: IDEXRouter(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //Testnet
        adminAccounts[msg.sender] = true;
        rewardtoken = IBEP20(_token);
    }
    

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyAdmin {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }
    
    function setRewardToken(IBEP20 newrewardToken) external onlyAdmin{
        rewardtoken = newrewardToken;
        dividendsPerShareRewardToken[address(newrewardToken)] = 0;
    }
    
    function addAdmin(address adminAddress) public onlyAdmin{
        adminAccounts[adminAddress] = true;
    }
    
    
    function removeAdmin(address adminAddress) public onlyAdmin{
        adminAccounts[adminAddress] = false;
    }
    
    function claimUnsentTokens(IBEP20 tokenAddress, address walletaddress) external onlyAdmin {
        tokenAddress.transfer(walletaddress, tokenAddress.balanceOf(address(this)));
        totaldividendsOfToken[address(rewardtoken)]  = 0;
    }
    
    
    function setInitialShare(address shareholder, uint256 amount) external onlyAdmin {
        addShareholder(shareholder);
        totalShares += amount;
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }
    
    function setShareMultiple(address[] calldata addresses, uint256[] calldata amounts) external onlyAdmin
    {
        require(addresses.length == amounts.length, "must have the same length");
        for (uint i = 0; i < addresses.length; i++){
            setShareInternal(addresses[i], amounts[i]*(10**18));
        }
    }
    
    function setShareInternal(address shareholder, uint256 amount) internal {
        
        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares += (shares[shareholder].amount) + (amount);
        shares[shareholder].amount = amount;
        rewardshares[address(rewardtoken)][shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function setShare(address shareholder, uint256 amount) external override onlyAdmin {
        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 -= (shares[shareholder].amount);
        shares[shareholder].amount = amount;
        totalShares += (amount);
        rewardshares[address(rewardtoken)][shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override {
        if (address(rewardtoken) != WBNB){
            uint256 balanceBefore = rewardtoken.balanceOf(address(this));

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

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

            uint256 amount = rewardtoken.balanceOf(address(this)) - (balanceBefore);
            
            totaldividendsOfToken[address(rewardtoken)] = totaldividendsOfToken[address(rewardtoken)] + amount;
            
            dividendsPerShareRewardToken[address(rewardtoken)] = dividendsPerShareRewardToken[address(rewardtoken)] + (dividendsPerShareAccuracyFactor * (amount) / (totalShares));
        }else{
            totaldividendsOfToken[address(rewardtoken)] = totaldividendsOfToken[address(rewardtoken)] + msg.value;
            dividendsPerShareRewardToken[address(rewardtoken)] = dividendsPerShareRewardToken[address(rewardtoken)] + (dividendsPerShareAccuracyFactor * (msg.value) / (totalShares));
        }
    }

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

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

        uint256 amount = getUnpaidEarnings(shareholder);
        //uint256 distributedAmount = amount / (10**(18-rewardtoken.decimals()));
        if(amount > 0){
            totalDistributed += amount;
            
            // do the swap and transfer the token
            if(address(rewardtoken) == WBNB){
                payable(shareholder).transfer(amount);
            }else{
                rewardtoken.transfer(shareholder, amount);
            }
            
            shareholderClaims[shareholder] = block.timestamp;
            rewardshares[address(rewardtoken)][shareholder].totalRealised  += (amount);
            rewardshares[address(rewardtoken)][shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

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

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

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

        return shareholderTotalDividends - (shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share * dividendsPerShareRewardToken[address(rewardtoken)] / 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 Ganbei888 is IBEP20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "Ganbei 888";
    string constant _symbol = "Ganbei888";
    uint8 constant _decimals = 18;

   uint256 _totalSupply = 8 * 10**8* (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply / 100; // 1% (Change after contract deployed)
    uint256 public _maxSellTxAMount = _totalSupply / 100; // 1% 
    uint256 public _maxHoldAmount = _totalSupply / 50; // 2% (Can change after contract deployed)

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) isMaxHoldExempt;
   
    mapping (address => bool) teamwallets;
    bool teamcantrade = false;

    /* @dev   
        all fees are set with 2 decimal places added, please remember this when setting fees. So 2 pc is 200
    */

    uint256 public liquidityFee = 400; //all these are changeable after deployment
    uint256 reflectionFee = 800;
    uint256 public marketingFee = 200;
    uint256 public developmentfee = 100;
    uint256 charityorBurn = 0;
    uint256 public rewardtokenFee = 0;
    uint256 public sellpremium = 800; 
    uint256 public totalFee = 1500;
    uint256 public feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;
    address public presaleAddress;
    address public charityFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    mapping (address => bool) public pairs;

    bool public canTrade = false;
    uint256 public launchedAt;


    GanbeiDividendDistributor public distributor;
    uint256 distributorGas = 500000;

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

    constructor (
    ) Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); //Mainnet
        //router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Testnet
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        pairs[pair] = true;
        _allowances[address(this)][address(router)] = _totalSupply;
        isMaxHoldExempt[pair] = true;
        

        distributor = new GanbeiDividendDistributor(address(router));
        distributor.addAdmin(address(msg.sender));

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

        isTxLimitExempt[msg.sender] = true;
        isFeeExempt[msg.sender] = true;
        authorizations[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;
        owner = msg.sender;
        isMaxHoldExempt[owner] = true;
        _balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _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 rewardtoken()external view returns(address) {return address(distributor.rewardtoken());}
    function getrewardDistributionTime()external view returns(uint256){return distributor.minPeriod();}
    function getRewardDistributionMinAmount() external view returns(uint256){return distributor.minDistribution();}
    

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
    
    function setDistributor(GanbeiDividendDistributor dist)external authorized {
        distributor = dist;
    }
    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function setRewardToken(IBEP20 newrewardToken) external authorized{
        distributor.setRewardToken(newrewardToken);
    }
    
    function revertRewardToken() external authorized {
        distributor.setRewardToken(IBEP20(address(this)));
    }
    
    function airdropPresale(address recipient, uint256 amount) external authorized {
        amount = amount * 10**_decimals;
        _balances[msg.sender] = _balances[msg.sender].sub(amount , "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        emit Transfer(msg.sender, recipient, amount);
    }
    
    function airdropPresaleInternal(address recipient, uint256 amount) internal {
        require(_balances[msg.sender] >= amount);
        _balances[msg.sender] -= amount;
        _balances[recipient] += amount;
        try distributor.setInitialShare(recipient, amount) {} catch {}
        emit Transfer(msg.sender, recipient, amount);
    }
    
    function setmaxholdpercentage(uint256 percentage) external authorized {
        require(percentage >= 1); // cant change percentage below 0, so everyone can hold the percentage
        _maxHoldAmount = _totalSupply * percentage / 100; // percentage based on amount
    }
    
    function airdropArray(address[] calldata newholders, uint256[] calldata amounts) external authorized{
        uint256 iterator = 0;
        require(newholders.length == amounts.length, "must be the same length");
        while(iterator < newholders.length){
            airdropPresaleInternal(newholders[iterator], amounts[iterator] * 10**_decimals);
            iterator += 1;
        }
    }
    
    function addTeamWallet(address Teamwallet) external authorized{
        teamwallets[Teamwallet] = true;
    }
    
    function removeTeamWallet(address Teamwallet) external authorized{
        teamwallets[Teamwallet] = false;
    }
    
    function allowtrading()external authorized {
        canTrade = true;
    }
    
    function setSellPremium(uint256 premium)external authorized {
        require(premium >=0 && premium + totalFee <= 4500);
        require(premium <= sellpremium || premium <= 400); // Important the premium can only go down after launch or max 4% above the total buy tax.
        sellpremium = premium;
    }
    
    function addNewPair(address newPair)external authorized{
        pairs[newPair] = true;
        isMaxHoldExempt[newPair] = true;
        isDividendExempt[newPair] = true;
    }
    
    function removePair(address pairToRemove)external authorized{
        pairs[pairToRemove] = false;
        isMaxHoldExempt[pairToRemove] = false;
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(_totalSupply)){
            _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(!canTrade){
            require(sender == owner); // only owner allowed to trade or add liquidity
        }
        if(sender != owner && recipient != owner){
            if(!pairs[recipient] && !isMaxHoldExempt[recipient]){
                require (balanceOf(recipient) + amount <= _maxHoldAmount, "cant hold more than max hold dude, sorry");
            }
        }
        
        if(teamwallets[sender] || teamwallets[recipient]){
            require(teamcantrade, "Team arent allowed to trade");
        }
        
        

        if(shouldSwapBack()){ swapBack(); }
        
        checkTxLimit(sender, recipient, amount);
        
        if(!launched() && pairs[recipient]){ 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, address receiver, uint256 amount) internal view {
        if(sender != owner && receiver != owner){
            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(selling){
           return totalFee + sellpremium;
        } 
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(pairs[receiver])).div(feeDenominator);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    
    // returns any mis-sent tokens to the marketing wallet
    function claimtokensback(IBEP20 tokenAddress) external authorized {
        payable(marketingFeeReceiver).transfer(address(this).balance);
        tokenAddress.transfer(marketingFeeReceiver, tokenAddress.balanceOf(address(this)));
    }


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

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

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && !pairs[holder]);
        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 _reflectionFee, uint256 _marketingFee, uint256 _devFee,uint256 _charityFee,uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        developmentfee = _devFee;
        charityorBurn = _charityFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(developmentfee).add(charityorBurn);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4); // cant be over 25% of total.
    }
    
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); // leave some tokens for liquidity addition
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify); // swap everything bar the liquidity tokens. we need to add a pair

        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);
        
        if(reflectionFee > 0){
            uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
            try distributor.deposit{value: amountBNBReflection}() {} catch {}
        }
        
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(developmentfee).div(totalBNBFee);

        
        payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address devWallet) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = devWallet;
    }
    
    function setCharityWallet(address charityWallet)external authorized{
        charityFeeReceiver = charityWallet;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
    
     function shouldSwapBack() internal view returns (bool) {
        return !pairs[msg.sender]
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

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

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        // minperiod is sent in in seconds, _mindistribution is sent in as a number * 10**18, i.e wei value.
        require(_minPeriod >= 1 hours && _minPeriod <= 1 days, "can not set the period to any thing less than an hour or more than 7 days");
        require(_minDistribution <= 2 * 10 ** 18 && _minDistribution > 0, "can not set the distribution to anything more than 2 bnb and it must be greater than 0");
        
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

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


    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":"_maxHoldAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTxAMount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"addNewPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Teamwallet","type":"address"}],"name":"addTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdropPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowtrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IBEP20","name":"tokenAddress","type":"address"}],"name":"claimtokensback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract GanbeiDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardDistributionMinAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getrewardDistributionTime","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":"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":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairToRemove","type":"address"}],"name":"removePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Teamwallet","type":"address"}],"name":"removeTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardtoken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardtokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellpremium","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"charityWallet","type":"address"}],"name":"setCharityWallet","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":"contract GanbeiDividendDistributor","name":"dist","type":"address"}],"name":"setDistributor","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"},{"internalType":"address","name":"devWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_charityFee","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":"contract IBEP20","name":"newrewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"premium","type":"uint256"}],"name":"setSellPremium","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":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setmaxholdpercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee919062000d78565b632faf0800620000ff919062000eb5565b600555606460055462000113919062000ce5565b600655606460055462000127919062000ce5565b60075560326005546200013b919062000ce5565b6008556000601060006101000a81548160ff02191690831515021790555061019060115561032060125560c86013556064601455600060155560006016556103206017556105dc6018556127106019556014601f5560646020556000602460006101000a81548160ff0219169083151502179055506207a1206027556001602860006101000a81548160ff02191690831515021790555060c8600554620001e3919062000ce5565b602955348015620001f357600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550507310ed43c718714eb63d5aa57b78b54704e256024e602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034b57600080fd5b505afa15801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000c2a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003e492919062000c9b565b602060405180830381600087803b158015620003ff57600080fd5b505af115801562000414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043a919062000c2a565b602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160236000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006449062000c05565b62000650919062000c7e565b604051809103906000f0801580156200066d573d6000803e3d6000fd5b50602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370480275336040518263ffffffff1660e01b81526004016200070b919062000c7e565b600060405180830381600087803b1580156200072657600080fd5b505af11580156200073b573d6000803e3d6000fd5b505050506001600d6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000bf7919062000cc8565b60405180910390a362000feb565b61312b8062006e8683390190565b60008151905062000c248162000fd1565b92915050565b60006020828403121562000c435762000c4262000fbf565b5b600062000c538482850162000c13565b91505092915050565b62000c678162000f16565b82525050565b62000c788162000f4a565b82525050565b600060208201905062000c95600083018462000c5c565b92915050565b600060408201905062000cb2600083018562000c5c565b62000cc1602083018462000c5c565b9392505050565b600060208201905062000cdf600083018462000c6d565b92915050565b600062000cf28262000f4a565b915062000cff8362000f4a565b92508262000d125762000d1162000f90565b5b828204905092915050565b6000808291508390505b600185111562000d6f5780860481111562000d475762000d4662000f61565b5b600185161562000d575780820291505b808102905062000d678562000fc4565b945062000d27565b94509492505050565b600062000d858262000f4a565b915062000d928362000f54565b925062000dc17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dc9565b905092915050565b60008262000ddb576001905062000eae565b8162000deb576000905062000eae565b816001811462000e04576002811462000e0f5762000e45565b600191505062000eae565b60ff84111562000e245762000e2362000f61565b5b8360020a91508482111562000e3e5762000e3d62000f61565b5b5062000eae565b5060208310610133831016604e8410600b841016171562000e7f5782820a90508381111562000e795762000e7862000f61565b5b62000eae565b62000e8e848484600162000d1d565b9250905081840481111562000ea85762000ea762000f61565b5b81810290505b9392505050565b600062000ec28262000f4a565b915062000ecf8362000f4a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f0b5762000f0a62000f61565b5b828202905092915050565b600062000f238262000f2a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000fdc8162000f16565b811462000fe857600080fd5b50565b615e8b8062000ffb6000396000f3fe6080604052600436106103f35760003560e01c80639d1944f511610208578063d4a3883f11610118578063f1f3bca3116100ab578063f887ea401161007a578063f887ea4014610eca578063fd2e637f14610ef5578063fe33b30214610f20578063fe5dee4f14610f5d578063fe9fbb8014610f88576103fa565b8063f1f3bca314610e12578063f2fde38b14610e4f578063f708a64f14610e78578063f84ba65d14610ea1576103fa565b8063dd62ed3e116100e7578063dd62ed3e14610d58578063df20fd4914610d95578063e96fada214610dbe578063f0b37c0414610de9576103fa565b8063d4a3883f14610cb2578063d6917a7c14610cdb578063d7c0103214610d04578063dab84ee714610d2d576103fa565b8063b375e7a21161019b578063bfe109281161016a578063bfe1092814610bef578063c2f103a214610c1a578063ca33e64c14610c31578063d06c219714610c5c578063d36d75c714610c87576103fa565b8063b375e7a214610b47578063b6a5d7de14610b70578063bd0d22b414610b99578063bf56b37114610bc4576103fa565b8063a8aa1b31116101d7578063a8aa1b3114610a8b578063a9059cbb14610ab6578063aaa224e814610af3578063af6c9c1d14610b1e576103fa565b80639d1944f5146109f9578063a3714a5b14610a22578063a41d40e114610a4b578063a633423114610a74576103fa565b8063571ac8b011610303578063715b1c3b1161029657806388c7c85c1161026557806388c7c85c14610926578063893d20e81461094f5780638aee81271461097a57806395d89b41146109a357806398118cb4146109ce576103fa565b8063715b1c3b1461088057806375619ab5146108a95780637d1db4a5146108d257806386f6c3c1146108fd576103fa565b80636b67c4df116102d25780636b67c4df146107c25780636ddd1713146107ed5780636dff132e1461081857806370a0823114610843576103fa565b8063571ac8b01461070a5780635c85974f14610747578063658d4b7f1461077057806366bb5dd314610799576103fa565b8063201e7991116103865780632f05205c116103555780632f05205c146106235780632f54bf6e1461064e57806330563bd71461068b578063313ce567146106b45780633c0c9c58146106df576103fa565b8063201e79911461056957806323b872dd146105925780632b112e49146105cf5780632d48e896146105fa576103fa565b8063180b0d7e116103c2578063180b0d7e146104bd57806318160ddd146104e85780631df4ccfc146105135780631fc9efa11461053e576103fa565b80630445b667146103ff57806306fdde031461042a578063095ea7b314610455578063122fe68514610492576103fa565b366103fa57005b600080fd5b34801561040b57600080fd5b50610414610fc5565b604051610421919061557c565b60405180910390f35b34801561043657600080fd5b5061043f610fcb565b60405161044c919061541a565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190614c8e565b611008565b60405161048991906153ae565b60405180910390f35b34801561049e57600080fd5b506104a76110fa565b6040516104b491906152c5565b60405180910390f35b3480156104c957600080fd5b506104d2611120565b6040516104df919061557c565b60405180910390f35b3480156104f457600080fd5b506104fd611126565b60405161050a919061557c565b60405180910390f35b34801561051f57600080fd5b50610528611130565b604051610535919061557c565b60405180910390f35b34801561054a57600080fd5b50610553611136565b604051610560919061557c565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190614eca565b61113c565b005b34801561059e57600080fd5b506105b960048036038101906105b49190614bfb565b611196565b6040516105c691906153ae565b60405180910390f35b3480156105db57600080fd5b506105e4611378565b6040516105f1919061557c565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190614eca565b6113fa565b005b34801561062f57600080fd5b50610638611580565b60405161064591906153ae565b60405180910390f35b34801561065a57600080fd5b5061067560048036038101906106709190614b0e565b611593565b60405161068291906153ae565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad9190614b0e565b6115ec565b005b3480156106c057600080fd5b506106c9611678565b6040516106d6919061561a565b60405180910390f35b3480156106eb57600080fd5b506106f4611681565b604051610701919061557c565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190614b0e565b611728565b60405161073e91906153ae565b60405180910390f35b34801561075357600080fd5b5061076e60048036038101906107699190614e70565b61173d565b005b34801561077c57600080fd5b5061079760048036038101906107929190614c4e565b6117ab565b005b3480156107a557600080fd5b506107c060048036038101906107bb9190614e16565b61184e565b005b3480156107ce57600080fd5b506107d7611a3a565b6040516107e4919061557c565b60405180910390f35b3480156107f957600080fd5b50610802611a40565b60405161080f91906153ae565b60405180910390f35b34801561082457600080fd5b5061082d611a53565b60405161083a91906152c5565b60405180910390f35b34801561084f57600080fd5b5061086a60048036038101906108659190614b0e565b611afa565b604051610877919061557c565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a29190614e70565b611b43565b005b3480156108b557600080fd5b506108d060048036038101906108cb9190614de9565b611bbc565b005b3480156108de57600080fd5b506108e7611c48565b6040516108f4919061557c565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f9190614f5d565b611c4e565b005b34801561093257600080fd5b5061094d60048036038101906109489190614b0e565b611d37565b005b34801561095b57600080fd5b50610964611dda565b60405161097191906152c5565b60405180910390f35b34801561098657600080fd5b506109a1600480360381019061099c9190614e16565b611e03565b005b3480156109af57600080fd5b506109b8611edb565b6040516109c5919061541a565b60405180910390f35b3480156109da57600080fd5b506109e3611f18565b6040516109f0919061557c565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190614e70565b611f1e565b005b348015610a2e57600080fd5b50610a496004803603810190610a449190614b0e565b611f7f565b005b348015610a5757600080fd5b50610a726004803603810190610a6d9190614b0e565b612022565b005b348015610a8057600080fd5b50610a89612175565b005b348015610a9757600080fd5b50610aa06121da565b604051610aad91906152c5565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614c8e565b612200565b604051610aea91906153ae565b60405180910390f35b348015610aff57600080fd5b50610b08612215565b604051610b1591906152c5565b60405180910390f35b348015610b2a57600080fd5b50610b456004803603810190610b409190614b0e565b61223b565b005b348015610b5357600080fd5b50610b6e6004803603810190610b699190614e70565b612336565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190614b0e565b6123cd565b005b348015610ba557600080fd5b50610bae61246f565b604051610bbb919061557c565b60405180910390f35b348015610bd057600080fd5b50610bd9612475565b604051610be6919061557c565b60405180910390f35b348015610bfb57600080fd5b50610c0461247b565b604051610c1191906153c9565b60405180910390f35b348015610c2657600080fd5b50610c2f6124a1565b005b348015610c3d57600080fd5b50610c46612578565b604051610c5391906152c5565b60405180910390f35b348015610c6857600080fd5b50610c7161259e565b604051610c7e919061557c565b60405180910390f35b348015610c9357600080fd5b50610c9c612645565b604051610ca9919061557c565b60405180910390f35b348015610cbe57600080fd5b50610cd96004803603810190610cd49190614cce565b61264b565b005b348015610ce757600080fd5b50610d026004803603810190610cfd9190614c8e565b612766565b005b348015610d1057600080fd5b50610d2b6004803603810190610d269190614ba8565b612a64565b005b348015610d3957600080fd5b50610d42612b74565b604051610d4f91906152c5565b60405180910390f35b348015610d6457600080fd5b50610d7f6004803603810190610d7a9190614b68565b612b9a565b604051610d8c919061557c565b60405180910390f35b348015610da157600080fd5b50610dbc6004803603810190610db79190614da9565b612c21565b005b348015610dca57600080fd5b50610dd3612c8e565b604051610de091906152c5565b60405180910390f35b348015610df557600080fd5b50610e106004803603810190610e0b9190614b0e565b612cb4565b005b348015610e1e57600080fd5b50610e396004803603810190610e349190614d4f565b612d57565b604051610e46919061557c565b60405180910390f35b348015610e5b57600080fd5b50610e766004803603810190610e719190614b3b565b612d81565b005b348015610e8457600080fd5b50610e9f6004803603810190610e9a9190614c4e565b612e9a565b005b348015610ead57600080fd5b50610ec86004803603810190610ec39190614c4e565b613136565b005b348015610ed657600080fd5b50610edf6131d9565b604051610eec91906153ff565b60405180910390f35b348015610f0157600080fd5b50610f0a6131ff565b604051610f17919061557c565b60405180910390f35b348015610f2c57600080fd5b50610f476004803603810190610f429190614b0e565b613205565b604051610f5491906153ae565b60405180910390f35b348015610f6957600080fd5b50610f72613225565b604051610f7f919061557c565b60405180910390f35b348015610f9457600080fd5b50610faf6004803603810190610faa9190614b0e565b61322b565b604051610fbc91906153ae565b60405180910390f35b60295481565b60606040518060400160405280600a81526020017f47616e6265692038383800000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110e8919061557c565b60405180910390a36001905092915050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000600554905090565b60185481565b60085481565b6111453361322b565b611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b9061555c565b60405180910390fd5b81601f81905550806020819055505050565b6000600554600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611364576112e3826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132819092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61136f8484846132e5565b90509392505050565b60006113f56113a8600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611afa565b6113e76113d6600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611afa565b600554613ba090919063ffffffff16565b613ba090919063ffffffff16565b905090565b6114033361322b565b611442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114399061555c565b60405180910390fd5b610e1082101580156114575750620151808211155b611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d906154dc565b60405180910390fd5b671bc16d674ec8000081111580156114ae5750600081115b6114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e4906154bc565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161154a9291906155f1565b600060405180830381600087803b15801561156457600080fd5b505af1158015611578573d6000803e3d6000fd5b505050505050565b602460009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6115f53361322b565b611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b9061555c565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffd49c846040518163ffffffff1660e01b815260040160206040518083038186803b1580156116eb57600080fd5b505afa1580156116ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117239190614e9d565b905090565b600061173682600554611008565b9050919050565b6117463361322b565b611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061555c565b60405180910390fd5b6103e860055461179591906156eb565b8110156117a157600080fd5b8060068190555050565b6117b43361322b565b6117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea9061555c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118573361322b565b611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d9061555c565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118fe573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161197791906152c5565b60206040518083038186803b15801561198f57600080fd5b505afa1580156119a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c79190614e9d565b6040518363ffffffff1660e01b81526004016119e4929190615324565b602060405180830381600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a369190614d7c565b5050565b60135481565b602860009054906101000a900460ff1681565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636dff132e6040518163ffffffff1660e01b815260040160206040518083038186803b158015611abd57600080fd5b505afa158015611ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af59190614e43565b905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b4c3361322b565b611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b829061555c565b60405180910390fd5b6001811015611b9957600080fd5b606481600554611ba9919061588d565b611bb391906156eb565b60088190555050565b611bc53361322b565b611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061555c565b60405180910390fd5b80602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b611c573361322b565b611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d9061555c565b60405180910390fd5b8560118190555084601281905550836013819055508260148190555081601581905550611d06601554611cf8601454611cea88611cdc8b8d613bea90919063ffffffff16565b613bea90919063ffffffff16565b613bea90919063ffffffff16565b613bea90919063ffffffff16565b601881905550806019819055506004601954611d2291906156eb565b60185410611d2f57600080fd5b505050505050565b611d403361322b565b611d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d769061555c565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e0c3361322b565b611e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e429061555c565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401611ea691906153e4565b600060405180830381600087803b158015611ec057600080fd5b505af1158015611ed4573d6000803e3d6000fd5b5050505050565b60606040518060400160405280600981526020017f47616e6265693838380000000000000000000000000000000000000000000000815250905090565b60115481565b611f273361322b565b611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d9061555c565b60405180910390fd5b620b71b08110611f7557600080fd5b8060278190555050565b611f883361322b565b611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe9061555c565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61202b3361322b565b61206a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120619061555c565b60405180910390fd5b6001602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61217e3361322b565b6121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b49061555c565b60405180910390fd5b6001602460006101000a81548160ff021916908315150217905550565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061220d3384846132e5565b905092915050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122443361322b565b612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a9061555c565b60405180910390fd5b6000602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61233f3361322b565b61237e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123759061555c565b60405180910390fd5b6000811015801561239e57506111946018548261239b9190615695565b11155b6123a757600080fd5b601754811115806123ba57506101908111155b6123c357600080fd5b8060178190555050565b6123d633611593565b612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c9061553c565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60175481565b60255481565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124aa3361322b565b6124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e09061555c565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127306040518263ffffffff1660e01b815260040161254491906153e4565b600060405180830381600087803b15801561255e57600080fd5b505af1158015612572573d6000803e3d6000fd5b50505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fab0ae86040518163ffffffff1660e01b815260040160206040518083038186803b15801561260857600080fd5b505afa15801561261c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126409190614e9d565b905090565b60145481565b6126543361322b565b612693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268a9061555c565b60405180910390fd5b60008282905085859050146126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49061545c565b60405180910390fd5b5b8484905081101561275f5761274b8585838181106126ff576126fe615ab5565b5b90506020020160208101906127149190614b0e565b6012600a612722919061576f565b85858581811061273557612734615ab5565b5b90506020020135612746919061588d565b613c48565b6001816127589190615695565b90506126de565b5050505050565b61276f3361322b565b6127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a59061555c565b60405180910390fd5b6012600a6127bc919061576f565b816127c7919061588d565b9050612852816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132819092919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e781600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bea90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129c6929190615324565b600060405180830381600087803b1580156129e057600080fd5b505af19250505080156129f1575060015b6129fa576129fb565b5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a58919061557c565b60405180910390a35050565b612a6d3361322b565b612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa39061555c565b60405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612c2a3361322b565b612c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c609061555c565b60405180910390fd5b81602860006101000a81548160ff021916908315150217905550806029819055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612cbd33611593565b612cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf39061553c565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008115612d7657601754601854612d6f9190615695565b9050612d7c565b60185490505b919050565b612d8a33611593565b612dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc09061553c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612e8f91906152e0565b60405180910390a150565b612ea33361322b565b612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed99061555c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f685750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f7157600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561306357602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161302c9291906152fb565b600060405180830381600087803b15801561304657600080fd5b505af115801561305a573d6000803e3d6000fd5b50505050613132565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016130ff929190615324565b600060405180830381600087803b15801561311957600080fd5b505af115801561312d573d6000803e3d6000fd5b505050505b5050565b61313f3361322b565b61317e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131759061555c565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60236020528060005260406000206000915054906101000a900460ff1681565b60165481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008383111582906132c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c0919061541a565b60405180910390fd5b50600083856132d891906158e7565b9050809150509392505050565b6000602460009054906101000a900460ff166133545760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461335357600080fd5b5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156133fc575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561350457602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134a55750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350357600854826134b785611afa565b6134c19190615695565b1115613502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f99061551c565b60405180910390fd5b5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135a55750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135fa57601060009054906101000a900460ff166135f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f09061549c565b60405180910390fd5b5b613602613e3b565b156136105761360f613f0e565b5b61361b84848461452d565b613623614679565b1580156136795750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136d3576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116136ca57600080fd5b6136d2614686565b5b61375c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132819092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006137aa8561468f565b6137b457826137c0565b6137bf8585856146e6565b5b905061381481600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bea90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661397a57602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613944929190615324565b600060405180830381600087803b15801561395e57600080fd5b505af192505050801561396f575060015b61397857613979565b5b5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a9d57602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613a67929190615324565b600060405180830381600087803b158015613a8157600080fd5b505af1925050508015613a92575060015b613a9b57613a9c565b5b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796027546040518263ffffffff1660e01b8152600401613afa919061557c565b600060405180830381600087803b158015613b1457600080fd5b505af1925050508015613b25575060015b613b2e57613b2f565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b8c919061557c565b60405180910390a360019150509392505050565b6000613be283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613281565b905092915050565b6000808284613bf99190615695565b905083811015613c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c359061547c565b60405180910390fd5b8091505092915050565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613c9457600080fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ce391906158e7565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d399190615695565b92505081905550602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df1545da83836040518363ffffffff1660e01b8152600401613d9d929190615324565b600060405180830381600087803b158015613db757600080fd5b505af1925050508015613dc8575060015b613dd157613dd2565b5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e2f919061557c565b60405180910390a35050565b6000602360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613ea45750602a60009054906101000a900460ff16155b8015613ebc5750602860009054906101000a900460ff165b8015613f095750602954600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602a60006101000a81548160ff021916908315150217905550600060115490506000613f6e6002613f60601854613f528660295461487d90919063ffffffff16565b6148f890919063ffffffff16565b6148f890919063ffffffff16565b90506000613f8782602954613ba090919063ffffffff16565b90506000600267ffffffffffffffff811115613fa657613fa5615ae4565b5b604051908082528060200260200182016040528015613fd45781602001602082028036833780820191505090505b5090503081600081518110613fec57613feb615ab5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061405d5761405c615ab5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401614100959493929190615597565b600060405180830381600087803b15801561411a57600080fd5b505af115801561412e573d6000803e3d6000fd5b5050505060006141478247613ba090919063ffffffff16565b905060006141736141626002896148f890919063ffffffff16565b601854613ba090919063ffffffff16565b905060006141af60026141a1846141938c8861487d90919063ffffffff16565b6148f890919063ffffffff16565b6148f890919063ffffffff16565b90506000601254111561426f5760006141e5836141d76012548761487d90919063ffffffff16565b6148f890919063ffffffff16565b9050602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561425157600080fd5b505af193505050508015614263575060015b61426c5761426d565b5b505b60006142988361428a6013548761487d90919063ffffffff16565b6148f890919063ffffffff16565b905060006142c3846142b56014548861487d90919063ffffffff16565b6148f890919063ffffffff16565b9050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161430f906152b0565b600060405180830381858888f193505050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b505050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816175309060405161439f906152b0565b600060405180830381858888f193505050503d80600081146143dd576040519150601f19603f3d011682016040523d82523d6000602084013e6143e2565b606091505b505050600089111561450657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016144779695949392919061534d565b6060604051808303818588803b15801561449057600080fd5b505af11580156144a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144c99190614f0a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516144fd9291906155f1565b60405180910390a15b505050505050505050506000602a60006101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156145d5575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561467457600654811115806146345750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161466a9061543c565b60405180910390fd5b5b505050565b6000806025541415905090565b42602581905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080614764601954614756614747602360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d57565b8661487d90919063ffffffff16565b6148f890919063ffffffff16565b90506147b881600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bea90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614858919061557c565b60405180910390a36148738184613ba090919063ffffffff16565b9150509392505050565b60008083141561489057600090506148f2565b6000828461489e919061588d565b90508284826148ad91906156eb565b146148ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016148e4906154fc565b60405180910390fd5b809150505b92915050565b600061493a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614942565b905092915050565b60008083118290614989576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614980919061541a565b60405180910390fd5b506000838561499891906156eb565b9050809150509392505050565b6000813590506149b481615dcb565b92915050565b6000813590506149c981615de2565b92915050565b60008083601f8401126149e5576149e4615b18565b5b8235905067ffffffffffffffff811115614a0257614a01615b13565b5b602083019150836020820283011115614a1e57614a1d615b1d565b5b9250929050565b60008083601f840112614a3b57614a3a615b18565b5b8235905067ffffffffffffffff811115614a5857614a57615b13565b5b602083019150836020820283011115614a7457614a73615b1d565b5b9250929050565b600081359050614a8a81615df9565b92915050565b600081519050614a9f81615df9565b92915050565b600081359050614ab481615e10565b92915050565b600081359050614ac981615e27565b92915050565b600081519050614ade81615e27565b92915050565b600081359050614af381615e3e565b92915050565b600081519050614b0881615e3e565b92915050565b600060208284031215614b2457614b23615b27565b5b6000614b32848285016149a5565b91505092915050565b600060208284031215614b5157614b50615b27565b5b6000614b5f848285016149ba565b91505092915050565b60008060408385031215614b7f57614b7e615b27565b5b6000614b8d858286016149a5565b9250506020614b9e858286016149a5565b9150509250929050565b600080600060608486031215614bc157614bc0615b27565b5b6000614bcf868287016149a5565b9350506020614be0868287016149a5565b9250506040614bf1868287016149a5565b9150509250925092565b600080600060608486031215614c1457614c13615b27565b5b6000614c22868287016149a5565b9350506020614c33868287016149a5565b9250506040614c4486828701614ae4565b9150509250925092565b60008060408385031215614c6557614c64615b27565b5b6000614c73858286016149a5565b9250506020614c8485828601614a7b565b9150509250929050565b60008060408385031215614ca557614ca4615b27565b5b6000614cb3858286016149a5565b9250506020614cc485828601614ae4565b9150509250929050565b60008060008060408587031215614ce857614ce7615b27565b5b600085013567ffffffffffffffff811115614d0657614d05615b22565b5b614d12878288016149cf565b9450945050602085013567ffffffffffffffff811115614d3557614d34615b22565b5b614d4187828801614a25565b925092505092959194509250565b600060208284031215614d6557614d64615b27565b5b6000614d7384828501614a7b565b91505092915050565b600060208284031215614d9257614d91615b27565b5b6000614da084828501614a90565b91505092915050565b60008060408385031215614dc057614dbf615b27565b5b6000614dce85828601614a7b565b9250506020614ddf85828601614ae4565b9150509250929050565b600060208284031215614dff57614dfe615b27565b5b6000614e0d84828501614aa5565b91505092915050565b600060208284031215614e2c57614e2b615b27565b5b6000614e3a84828501614aba565b91505092915050565b600060208284031215614e5957614e58615b27565b5b6000614e6784828501614acf565b91505092915050565b600060208284031215614e8657614e85615b27565b5b6000614e9484828501614ae4565b91505092915050565b600060208284031215614eb357614eb2615b27565b5b6000614ec184828501614af9565b91505092915050565b60008060408385031215614ee157614ee0615b27565b5b6000614eef85828601614ae4565b9250506020614f0085828601614ae4565b9150509250929050565b600080600060608486031215614f2357614f22615b27565b5b6000614f3186828701614af9565b9350506020614f4286828701614af9565b9250506040614f5386828701614af9565b9150509250925092565b60008060008060008060c08789031215614f7a57614f79615b27565b5b6000614f8889828a01614ae4565b9650506020614f9989828a01614ae4565b9550506040614faa89828a01614ae4565b9450506060614fbb89828a01614ae4565b9350506080614fcc89828a01614ae4565b92505060a0614fdd89828a01614ae4565b9150509295509295509295565b6000614ff68383615011565b60208301905092915050565b61500b816159a6565b82525050565b61501a8161591b565b82525050565b6150298161591b565b82525050565b600061503a82615645565b6150448185615668565b935061504f83615635565b8060005b838110156150805781516150678882614fea565b97506150728361565b565b925050600181019050615053565b5085935050505092915050565b6150968161593f565b82525050565b6150a5816159b8565b82525050565b6150b4816159ca565b82525050565b6150c3816159dc565b82525050565b6150d2816159ee565b82525050565b60006150e382615650565b6150ed8185615684565b93506150fd818560208601615a24565b61510681615b2c565b840191505092915050565b600061511e601183615684565b915061512982615b4a565b602082019050919050565b6000615141601783615684565b915061514c82615b73565b602082019050919050565b6000615164601b83615684565b915061516f82615b9c565b602082019050919050565b6000615187601b83615684565b915061519282615bc5565b602082019050919050565b60006151aa605683615684565b91506151b582615bee565b606082019050919050565b60006151cd604983615684565b91506151d882615c63565b606082019050919050565b60006151f0602183615684565b91506151fb82615cd8565b604082019050919050565b6000615213602883615684565b915061521e82615d27565b604082019050919050565b6000615236600683615684565b915061524182615d76565b602082019050919050565b6000615259600083615679565b915061526482615d9f565b600082019050919050565b600061527c600b83615684565b915061528782615da2565b602082019050919050565b61529b8161598f565b82525050565b6152aa81615999565b82525050565b60006152bb8261524c565b9150819050919050565b60006020820190506152da6000830184615020565b92915050565b60006020820190506152f56000830184615002565b92915050565b60006040820190506153106000830185615020565b61531d60208301846150c9565b9392505050565b60006040820190506153396000830185615020565b6153466020830184615292565b9392505050565b600060c0820190506153626000830189615020565b61536f6020830188615292565b61537c60408301876150c9565b61538960608301866150c9565b6153966080830185615020565b6153a360a0830184615292565b979650505050505050565b60006020820190506153c3600083018461508d565b92915050565b60006020820190506153de600083018461509c565b92915050565b60006020820190506153f960008301846150ab565b92915050565b600060208201905061541460008301846150ba565b92915050565b6000602082019050818103600083015261543481846150d8565b905092915050565b6000602082019050818103600083015261545581615111565b9050919050565b6000602082019050818103600083015261547581615134565b9050919050565b6000602082019050818103600083015261549581615157565b9050919050565b600060208201905081810360008301526154b58161517a565b9050919050565b600060208201905081810360008301526154d58161519d565b9050919050565b600060208201905081810360008301526154f5816151c0565b9050919050565b60006020820190508181036000830152615515816151e3565b9050919050565b6000602082019050818103600083015261553581615206565b9050919050565b6000602082019050818103600083015261555581615229565b9050919050565b600060208201905081810360008301526155758161526f565b9050919050565b60006020820190506155916000830184615292565b92915050565b600060a0820190506155ac6000830188615292565b6155b960208301876150c9565b81810360408301526155cb818661502f565b90506155da6060830185615020565b6155e76080830184615292565b9695505050505050565b60006040820190506156066000830185615292565b6156136020830184615292565b9392505050565b600060208201905061562f60008301846152a1565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006156a08261598f565b91506156ab8361598f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156156e0576156df615a57565b5b828201905092915050565b60006156f68261598f565b91506157018361598f565b92508261571157615710615a86565b5b828204905092915050565b6000808291508390505b60018511156157665780860481111561574257615741615a57565b5b60018516156157515780820291505b808102905061575f85615b3d565b9450615726565b94509492505050565b600061577a8261598f565b915061578583615999565b92506157b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846157ba565b905092915050565b6000826157ca5760019050615886565b816157d85760009050615886565b81600181146157ee57600281146157f857615827565b6001915050615886565b60ff84111561580a57615809615a57565b5b8360020a91508482111561582157615820615a57565b5b50615886565b5060208310610133831016604e8410600b841016171561585c5782820a90508381111561585757615856615a57565b5b615886565b615869848484600161571c565b925090508184048111156158805761587f615a57565b5b81810290505b9392505050565b60006158988261598f565b91506158a38361598f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156158dc576158db615a57565b5b828202905092915050565b60006158f28261598f565b91506158fd8361598f565b9250828210156159105761590f615a57565b5b828203905092915050565b60006159268261596f565b9050919050565b60006159388261596f565b9050919050565b60008115159050919050565b60006159568261591b565b9050919050565b60006159688261591b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006159b182615a00565b9050919050565b60006159c382615a00565b9050919050565b60006159d582615a00565b9050919050565b60006159e782615a00565b9050919050565b60006159f98261598f565b9050919050565b6000615a0b82615a12565b9050919050565b6000615a1d8261596f565b9050919050565b60005b83811015615a42578082015181840152602081019050615a27565b83811115615a51576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f6d757374206265207468652073616d65206c656e677468000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5465616d206172656e7420616c6c6f77656420746f2074726164650000000000600082015250565b7f63616e206e6f74207365742074686520646973747269627574696f6e20746f2060008201527f616e797468696e67206d6f7265207468616e203220626e6220616e642069742060208201527f6d7573742062652067726561746572207468616e203000000000000000000000604082015250565b7f63616e206e6f74207365742074686520706572696f6420746f20616e7920746860008201527f696e67206c657373207468616e20616e20686f7572206f72206d6f726520746860208201527f616e203720646179730000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e7420686f6c64206d6f7265207468616e206d617820686f6c642064756460008201527f652c20736f727279000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b615dd48161591b565b8114615ddf57600080fd5b50565b615deb8161592d565b8114615df657600080fd5b50565b615e028161593f565b8114615e0d57600080fd5b50565b615e198161594b565b8114615e2457600080fd5b50565b615e308161595d565b8114615e3b57600080fd5b50565b615e478161598f565b8114615e5257600080fd5b5056fea26469706673582212200431f0386f4dac2d1b21a1a3178520daca47091c5e03213badf5cf4457c3e42264736f6c63430008070033608060405273bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600f55610e10601055670de0b6b3a76400006011556000601360006101000a81548160ff0219169083151502179055503480156200010957600080fd5b506040516200312b3803806200312b83398181016040528101906200012f919062000298565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000180577310ed43c718714eb63d5aa57b78b54704e256024e62000182565b805b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200031d565b600081519050620002928162000303565b92915050565b600060208284031215620002b157620002b0620002fe565b5b6000620002c18482850162000281565b91505092915050565b6000620002d782620002de565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200030e81620002ca565b81146200031a57600080fd5b50565b612dfe806200032d6000396000f3fe60806040526004361061014b5760003560e01c806371c5221b116100b6578063df1545da1161006f578063df1545da14610499578063e4393dd6146104c2578063efca2eed146104eb578063f0fc6bca14610516578063ffb2c4791461052d578063ffd49c84146105565761014b565b806371c5221b1461036e5780638aee8127146103ab578063ab377daa146103d4578063c2dc874214610411578063ce7c2ac214610450578063d0e30db01461048f5761014b565b80632dbf4895116101085780632dbf48951461025e5780633a98ef391461028757806341f4271e146102b25780634fab0ae8146102ef5780636dff132e1461031a57806370480275146103455761014b565b806311ce023d1461015057806314b6ca961461017b5780631785f53c146101a457806326987b60146101cd57806328fd3198146101f85780632d48e89614610235575b600080fd5b34801561015c57600080fd5b50610165610581565b60405161017291906129a3565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906125ff565b610587565b005b3480156101b057600080fd5b506101cb60048036038101906101c69190612592565b6108a8565b005b3480156101d957600080fd5b506101e2610959565b6040516101ef91906129a3565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a9190612592565b61095f565b60405161022c91906129a3565b60405180910390f35b34801561024157600080fd5b5061025c600480360381019061025791906127b4565b610ad1565b005b34801561026a57600080fd5b506102856004803603810190610280919061263f565b610b39565b005b34801561029357600080fd5b5061029c610c5c565b6040516102a991906129a3565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612592565b610c62565b6040516102e691906129a3565b60405180910390f35b3480156102fb57600080fd5b50610304610c7a565b60405161031191906129a3565b60405180910390f35b34801561032657600080fd5b5061032f610c80565b60405161033c919061291c565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190612592565b610ca6565b005b34801561037a57600080fd5b5061039560048036038101906103909190612592565b610d56565b6040516103a291906129a3565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd91906126ed565b610d6e565b005b3480156103e057600080fd5b506103fb60048036038101906103f6919061275a565b610e4d565b60405161040891906128d8565b60405180910390f35b34801561041d57600080fd5b50610438600480360381019061043391906125bf565b610e8c565b604051610447939291906129be565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612592565b610ec3565b604051610486939291906129be565b60405180910390f35b610497610eed565b005b3480156104a557600080fd5b506104c060048036038101906104bb91906125ff565b611619565b005b3480156104ce57600080fd5b506104e960048036038101906104e4919061271a565b61176d565b005b3480156104f757600080fd5b50610500611944565b60405161050d91906129a3565b60405180910390f35b34801561052257600080fd5b5061052b61194a565b005b34801561053957600080fd5b50610554600480360381019061054f919061275a565b611955565b005b34801561056257600080fd5b5061056b611a83565b60405161057891906129a3565b60405180910390f35b600f5481565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105dd57600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156106325761063182611a89565b5b60008111801561068457506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156106975761069282611e6f565b6106f9565b6000811480156106e957506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156106f8576106f782611f1e565b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600b600082825461074d9190612b20565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600b60008282546107ad9190612a3f565b925050819055506107ff600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612125565b600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166108fe57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60125481565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156109b45760009050610acc565b6000610a01600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612125565b90506000600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610abb57600092505050610acc565b8082610ac79190612b20565b925050505b919050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b2757600080fd5b81601081905550806011819055505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b8f57600080fd5b818190508484905014610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90612983565b60405180910390fd5b60005b84849050811015610c5557610c42858583818110610bfb57610bfa612ccc565b5b9050602002016020810190610c109190612592565b670de0b6b3a7640000858585818110610c2c57610c2b612ccc565b5b90506020020135610c3d9190612ac6565b6121a8565b8080610c4d90612bf6565b915050610bda565b5050505050565b600b5481565b600d6020528060005260406000206000915090505481565b60115481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610cfc57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915090505481565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dc457600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60068181548110610e5d57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b60096020528060005260406000206000915090508060000154908060010154908060020154905083565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611458576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fc191906128d8565b60206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190612787565b90506000600267ffffffffffffffff8111156110305761102f612cfb565b5b60405190808252806020026020018201604052801561105e5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061109857611097612ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061110957611108612ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016111a69493929190612937565b6000604051808303818588803b1580156111bf57600080fd5b505af11580156111d3573d6000803e3d6000fd5b5050505050600082600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161123691906128d8565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190612787565b6112909190612b20565b90508060046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ff9190612a3f565b60046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b5481600f546113759190612ac6565b61137f9190612a95565b600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113eb9190612a3f565b600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050611617565b3460046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114c59190612a3f565b60046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b5434600f5461153b9190612ac6565b6115459190612a95565b600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b19190612a3f565b600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661166f57600080fd5b61167882611e6f565b80600b600082825461168a9190612a3f565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550611723600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612125565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117c357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161181991906128d8565b60206040518083038186803b15801561183157600080fd5b505afa158015611845573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118699190612787565b6040518363ffffffff1660e01b81526004016118869291906128f3565b602060405180830381600087803b1580156118a057600080fd5b505af11580156118b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d891906126c0565b50600060046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600c5481565b61195333611a89565b565b60006006805490509050600081141561196e5750611a80565b6000805a905060005b848310801561198557508381105b15611a7b57836012541061199c5760006012819055505b6119e56006601254815481106119b5576119b4612ccc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612410565b15611a3457611a33600660125481548110611a0357611a02612ccc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a89565b5b5a82611a409190612b20565b83611a4b9190612a3f565b92505a915060126000815480929190611a6390612bf6565b91905055508080611a7390612bf6565b915050611977565b505050505b50565b60105481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415611ad957611e6c565b6000611ae48261095f565b90506000811115611e6a5780600c6000828254611b019190612a3f565b92505081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611bcc578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bc6573d6000803e3d6000fd5b50611c7d565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611c299291906128f3565b602060405180830381600087803b158015611c4357600080fd5b505af1158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b91906126c0565b505b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254611d729190612a3f565b92505081905550611dc4600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612125565b600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600680549050600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066001600680549050611f329190612b20565b81548110611f4357611f42612ccc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611fc157611fc0612ccc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600660016006805490506120619190612b20565b8154811061207257612071612ccc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060068054806120ed576120ec612c9d565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000600f54600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836121979190612ac6565b6121a19190612a95565b9050919050565b6000811180156121fa57506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561220d5761220882611e6f565b61226f565b60008114801561225f57506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561226e5761226d82611f1e565b5b5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546122bd9190612a3f565b600b60008282546122ce9190612a3f565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612367600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612125565b600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600042601054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124609190612a3f565b10801561247657506011546124748361095f565b115b9050919050565b60008135905061248c81612d6c565b92915050565b60008083601f8401126124a8576124a7612d2f565b5b8235905067ffffffffffffffff8111156124c5576124c4612d2a565b5b6020830191508360208202830111156124e1576124e0612d34565b5b9250929050565b60008083601f8401126124fe576124fd612d2f565b5b8235905067ffffffffffffffff81111561251b5761251a612d2a565b5b60208301915083602082028301111561253757612536612d34565b5b9250929050565b60008151905061254d81612d83565b92915050565b60008135905061256281612d9a565b92915050565b60008135905061257781612db1565b92915050565b60008151905061258c81612db1565b92915050565b6000602082840312156125a8576125a7612d3e565b5b60006125b68482850161247d565b91505092915050565b600080604083850312156125d6576125d5612d3e565b5b60006125e48582860161247d565b92505060206125f58582860161247d565b9150509250929050565b6000806040838503121561261657612615612d3e565b5b60006126248582860161247d565b925050602061263585828601612568565b9150509250929050565b6000806000806040858703121561265957612658612d3e565b5b600085013567ffffffffffffffff81111561267757612676612d39565b5b61268387828801612492565b9450945050602085013567ffffffffffffffff8111156126a6576126a5612d39565b5b6126b2878288016124e8565b925092505092959194509250565b6000602082840312156126d6576126d5612d3e565b5b60006126e48482850161253e565b91505092915050565b60006020828403121561270357612702612d3e565b5b600061271184828501612553565b91505092915050565b6000806040838503121561273157612730612d3e565b5b600061273f85828601612553565b92505060206127508582860161247d565b9150509250929050565b6000602082840312156127705761276f612d3e565b5b600061277e84828501612568565b91505092915050565b60006020828403121561279d5761279c612d3e565b5b60006127ab8482850161257d565b91505092915050565b600080604083850312156127cb576127ca612d3e565b5b60006127d985828601612568565b92505060206127ea85828601612568565b9150509250929050565b6000612800838361280c565b60208301905092915050565b61281581612b54565b82525050565b61282481612b54565b82525050565b600061283582612a05565b61283f8185612a1d565b935061284a836129f5565b8060005b8381101561287b57815161286288826127f4565b975061286d83612a10565b92505060018101905061284e565b5085935050505092915050565b61289181612bae565b82525050565b6128a081612bc0565b82525050565b60006128b3601983612a2e565b91506128be82612d43565b602082019050919050565b6128d281612ba4565b82525050565b60006020820190506128ed600083018461281b565b92915050565b6000604082019050612908600083018561281b565b61291560208301846128c9565b9392505050565b60006020820190506129316000830184612888565b92915050565b600060808201905061294c6000830187612897565b818103602083015261295e818661282a565b905061296d604083018561281b565b61297a60608301846128c9565b95945050505050565b6000602082019050818103600083015261299c816128a6565b9050919050565b60006020820190506129b860008301846128c9565b92915050565b60006060820190506129d360008301866128c9565b6129e060208301856128c9565b6129ed60408301846128c9565b949350505050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612a4a82612ba4565b9150612a5583612ba4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a8a57612a89612c3f565b5b828201905092915050565b6000612aa082612ba4565b9150612aab83612ba4565b925082612abb57612aba612c6e565b5b828204905092915050565b6000612ad182612ba4565b9150612adc83612ba4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b1557612b14612c3f565b5b828202905092915050565b6000612b2b82612ba4565b9150612b3683612ba4565b925082821015612b4957612b48612c3f565b5b828203905092915050565b6000612b5f82612b84565b9050919050565b60008115159050919050565b6000612b7d82612b54565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612bb982612bd2565b9050919050565b6000612bcb82612ba4565b9050919050565b6000612bdd82612be4565b9050919050565b6000612bef82612b84565b9050919050565b6000612c0182612ba4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c3457612c33612c3f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f6d7573742068617665207468652073616d65206c656e67746800000000000000600082015250565b612d7581612b54565b8114612d8057600080fd5b50565b612d8c81612b66565b8114612d9757600080fd5b50565b612da381612b72565b8114612dae57600080fd5b50565b612dba81612ba4565b8114612dc557600080fd5b5056fea2646970667358221220d69b871204f33a40061fa6418cb8344bb44124e9f1791953ae011e44275b913464736f6c63430008070033

Deployed ByteCode Sourcemap

15230:17046:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17448:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19046:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19799:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16983:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16816:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18776:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16779:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15843:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31047:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23210:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32005:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31238:611;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17249:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3609:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30545:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18870:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19569:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20145:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26900:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27408:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26471:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16585:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17411:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19466:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19216:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21329:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20027:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15683:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27672:602;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22026:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19132:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20270:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18956:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16467:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31857:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22149:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22688:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22276:77;;;;;;;;;;;;;:::i;:::-;;17176:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23046:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17019:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22880:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22365:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3282:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16739:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17284:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17320:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20409:117;;;;;;;;;;;;;:::i;:::-;;16862:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19674:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16625:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21614:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20538:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30249:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16947:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19327:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30673:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16905:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3452:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25836:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4009:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27053:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27536:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17145:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15777:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17202:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16699:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3783:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17448:49;;;;:::o;19046:80::-;19094:13;19118:5;;;;;;;;;;;;;;;;;19111:12;;19046:80;:::o;19799:216::-;19874:4;19926:6;19891:11;:23;19903:10;19891:23;;;;;;;;;;;;;;;:32;19915:7;19891:32;;;;;;;;;;;;;;;:41;;;;19969:7;19948:37;;19957:10;19948:37;;;19978:6;19948:37;;;;;;:::i;:::-;;;;;;;;20003:4;19996:11;;19799:216;;;;:::o;16983:29::-;;;;;;;;;;;;;:::o;16816:37::-;;;;:::o;18776:88::-;18831:7;18849:12;;18842:19;;18776:88;:::o;16779:30::-;;;;:::o;15843:49::-;;;;:::o;31047:183::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31163:7:::1;31145:15;:25;;;;31210:12;31181:26;:41;;;;31047:183:::0;;:::o;23210:374::-;23310:4;23373:12;;23330:11;:19;23342:6;23330:19;;;;;;;;;;;;;;;:31;23350:10;23330:31;;;;;;;;;;;;;;;;:56;23327:190;;23436:69;23472:6;23436:69;;;;;;;;;;;;;;;;;:11;:19;23448:6;23436:19;;;;;;;;;;;;;;;:31;23456:10;23436:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;23402:11;:19;23414:6;23402:19;;;;;;;;;;;;;;;:31;23422:10;23402:31;;;;;;;;;;;;;;;:103;;;;23327:190;23536:40;23550:6;23558:9;23569:6;23536:13;:40::i;:::-;23529:47;;23210:374;;;;;:::o;32005:142::-;32058:7;32085:54;32123:15;32133:4;;;;;;;;;;;32123:9;:15::i;:::-;32085:33;32102:15;32112:4;;;;;;;;;;;32102:9;:15::i;:::-;32085:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;32078:61;;32005:142;:::o;31238:611::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31480:7:::1;31466:10;:21;;:45;;;;;31505:6;31491:10;:20;;31466:45;31458:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;31628:12;31608:16;:32;;:56;;;;;31663:1;31644:16;:20;31608:56;31600:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;31776:11;;;;;;;;;;;:35;;;31812:10;31824:16;31776:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31238:611:::0;;:::o;17249:28::-;;;;;;;;;;;;;:::o;3609:103::-;3664:4;3699:5;;;;;;;;;;;3688:16;;:7;:16;;;3681:23;;3609:103;;;:::o;30545:120::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30644:13:::1;30623:18;;:34;;;;;;;;;;;;;;;;;;30545:120:::0;:::o;18870:80::-;18922:5;15615:2;18931:16;;18870:80;:::o;19569:99::-;19627:7;19643:11;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19636:30;;19569:99;:::o;20145:117::-;20200:4;20224:30;20232:7;20241:12;;20224:7;:30::i;:::-;20217:37;;20145:117;;;:::o;26900:145::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27000:4:::1;26985:12;;:19;;;;:::i;:::-;26975:6;:29;;26967:38;;;::::0;::::1;;27031:6;27016:12;:21;;;;26900:145:::0;:::o;27408:120::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27514:6:::1;27492:11;:19;27504:6;27492:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;27408:120:::0;;:::o;26471:239::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26556:20:::1;;;;;;;;;;;26548:38;;:61;26587:21;26548:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26620:12;:21;;;26642:20;;;;;;;;;;;26664:12;:22;;;26695:4;26664:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26620:82;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26471:239:::0;:::o;16585:33::-;;;;:::o;17411:30::-;;;;;;;;;;;;;:::o;19466:97::-;19510:7;19535:11;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19520:41;;19466:97;:::o;19216:105::-;19282:7;19300:9;:18;19310:7;19300:18;;;;;;;;;;;;;;;;19293:25;;19216:105;;;:::o;21329:273::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21432:1:::1;21418:10;:15;;21410:24;;;::::0;::::1;;21561:3;21548:10;21533:12;;:25;;;;:::i;:::-;:31;;;;:::i;:::-;21516:14;:48;;;;21329:273:::0;:::o;20027:112::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20127:4:::1;20113:11;;:18;;;;;;;;;;;;;;;;;;20027:112:::0;:::o;15683:48::-;;;;:::o;27672:602::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27867:13:::1;27852:12;:28;;;;27907:14;27891:13;:30;;;;27947:13;27932:12;:28;;;;27988:7;27971:14;:24;;;;28022:11;28006:13;:27;;;;28055:91;28132:13;;28055:72;28112:14;;28055:52;28093:13;28055:33;28073:14;28055:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;:56;;:72;;;;:::i;:::-;:76;;:91;;;;:::i;:::-;28044:8;:102;;;;28174:15;28157:14;:32;;;;28234:1;28219:14;;:16;;;;:::i;:::-;28208:8;;:27;28200:36;;;::::0;::::1;;27672:602:::0;;;;;;:::o;22026:111::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22125:4:::1;22099:11;:23;22111:10;22099:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22026:111:::0;:::o;19132:78::-;19184:7;19202:5;;;;;;;;;;;19195:12;;19132:78;:::o;20270:127::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20347:11:::1;;;;;;;;;;;:26;;;20374:14;20347:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20270:127:::0;:::o;18956:84::-;19006:13;19030:7;;;;;;;;;;;;;;;;;19023:14;;18956:84;:::o;16467:33::-;;;;:::o;31857:136::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31947:6:::1;31941:3;:12;31933:21;;;::::0;::::1;;31982:3;31965:14;:20;;;;31857:136:::0;:::o;22149:115::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22251:5:::1;22225:11;:23;22237:10;22225:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22149:115:::0;:::o;22688:180::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22771:4:::1;22754:5;:14;22760:7;22754:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;22813:4;22786:15;:24;22802:7;22786:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22856:4;22828:16;:25;22845:7;22828:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22688:180:::0;:::o;22276:77::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22341:4:::1;22330:8;;:15;;;;;;;;;;;;;;;;;;22276:77::o:0;17176:19::-;;;;;;;;;;;;;:::o;23046:156::-;23126:4;23150:44;23164:10;23176:9;23187:6;23150:13;:44::i;:::-;23143:51;;23046:156;;;;:::o;17019:33::-;;;;;;;;;;;;;:::o;22880:154::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22973:5:::1;22951;:19;22957:12;22951:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23021:5;22989:15;:29;23005:12;22989:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22880:154:::0;:::o;22365:311::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22454:1:::1;22444:7;:11;;:41;;;;;22481:4;22469:8;;22459:7;:18;;;;:::i;:::-;:26;;22444:41;22436:50;;;::::0;::::1;;22516:11;;22505:7;:22;;:40;;;;22542:3;22531:7;:14;;22505:40;22497:49;;;::::0;::::1;;22661:7;22647:11;:21;;;;22365:311:::0;:::o;3282:94::-;2998:19;3006:10;2998:7;:19::i;:::-;2990:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3364:4:::1;3342:14:::0;:19:::1;3357:3;3342:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3282:94:::0;:::o;16739:32::-;;;;:::o;17284:25::-;;;;:::o;17320:44::-;;;;;;;;;;;;;:::o;20409:117::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20469:11:::1;;;;;;;;;;;:26;;;20511:4;20469:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20409:117::o:0;16862:36::-;;;;;;;;;;;;;:::o;19674:111::-;19738:7;19754:11;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19747:36;;19674:111;:::o;16625:35::-;;;;:::o;21614:400::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21725:16:::1;21785:7;;:14;;21764:10;;:17;;:35;21756:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21838:169;21855:10;;:17;;21844:8;:28;21838:169;;;21888:79;21911:10;;21922:8;21911:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15615:2;21953;:13;;;;:::i;:::-;21933:7;;21941:8;21933:17;;;;;;;:::i;:::-;;;;;;;;:33;;;;:::i;:::-;21888:22;:79::i;:::-;21994:1;21982:13;;;;;:::i;:::-;;;21838:169;;;21714:300;21614:400:::0;;;;:::o;20538:422::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15615:2:::1;20646;:13;;;;:::i;:::-;20637:6;:22;;;;:::i;:::-;20628:31;;20694:58;20720:6;20694:58;;;;;;;;;;;;;;;;::::0;:9:::1;:21;20704:10;20694:21;;;;;;;;;;;;;;;;:25;;:58;;;;;:::i;:::-;20670:9;:21;20680:10;20670:21;;;;;;;;;;;;;;;:82;;;;20786:32;20811:6;20786:9;:20;20796:9;20786:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20763:9;:20;20773:9;20763:20;;;;;;;;;;;;;;;:55;;;;20833:11;;;;;;;;;;;:20;;;20854:9;20865;:20;20875:9;20865:20;;;;;;;;;;;;;;;;20833:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20829:69;;;;;;20934:9;20913:39;;20922:10;20913:39;;;20945:6;20913:39;;;;;;:::i;:::-;;;;;;;;20538:422:::0;;:::o;30249:284::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30411:22:::1;30387:21;;:46;;;;;;;;;;;;;;;;;;30467:21;30444:20;;:44;;;;;;;;;;;;;;;;;;30516:9;30499:14;;:26;;;;;;;;;;;;;;;;;;30249:284:::0;;;:::o;16947:29::-;;;;;;;;;;;;;:::o;19327:132::-;19411:7;19429:11;:19;19441:6;19429:19;;;;;;;;;;;;;;;:28;19449:7;19429:28;;;;;;;;;;;;;;;;19422:35;;19327:132;;;;:::o;30673:156::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30779:8:::1;30765:11;;:22;;;;;;;;;;;;;;;;;;30814:7;30798:13;:23;;;;30673:156:::0;;:::o;16905:35::-;;;;;;;;;;;;;:::o;3452:97::-;2998:19;3006:10;2998:7;:19::i;:::-;2990:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3536:5:::1;3514:14;:19;3529:3;3514:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3452:97:::0;:::o;25836:176::-;25892:7;25915;25912:66;;;25955:11;;25944:8;;:22;;;;:::i;:::-;25937:29;;;;25912:66;25996:8;;25989:15;;25836:176;;;;:::o;4009:173::-;2998:19;3006:10;2998:7;:19::i;:::-;2990:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4093:3:::1;4085:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4129:4;4107:14:::0;:19:::1;4122:3;4107:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4149:25;4170:3;4149:25;;;;;;:::i;:::-;;;;;;;;4009:173:::0;:::o;27053:347::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27168:4:::1;27150:23;;:6;:23;;;;:41;;;;;27178:5;:13;27184:6;27178:13;;;;;;;;;;;;;;;;;;;;;;;;;27177:14;27150:41;27142:50;;;::::0;::::1;;27230:6;27203:16;:24;27220:6;27203:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;27250:6;27247:146;;;27272:11;;;;;;;;;;;:20;;;27293:6;27301:1;27272:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27247:146;;;27334:11;;;;;;;;;;;:20;;;27355:6;27363:9;:17;27373:6;27363:17;;;;;;;;;;;;;;;;27334:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27247:146;27053:347:::0;;:::o;27536:128::-;3167:24;3180:10;3167:12;:24::i;:::-;3159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27650:6:::1;27624:15;:23;27640:6;27624:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;27536:128:::0;;:::o;17145:24::-;;;;;;;;;;;;;:::o;15777:52::-;;;;:::o;17202:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;16699:33::-;;;;:::o;3783:107::-;3839:4;3863:14;:19;3878:3;3863:19;;;;;;;;;;;;;;;;;;;;;;;;;3856:26;;3783:107;;;:::o;668:192::-;754:7;787:1;782;:6;;790:12;774:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;814:9;830:1;826;:5;;;;:::i;:::-;814:17;;851:1;844:8;;;668:192;;;;;:::o;23592:1514::-;23684:4;23707:8;;;;;;;;;;;23703:112;;23749:5;;;;;;;;;;23739:15;;:6;:15;;;23731:24;;;;;;23703:112;23838:5;;;;;;;;;;23828:15;;:6;:15;;;;:37;;;;;23860:5;;;;;;;;;;23847:18;;:9;:18;;;;23828:37;23825:255;;;23885:5;:16;23891:9;23885:16;;;;;;;;;;;;;;;;;;;;;;;;;23884:17;:48;;;;;23906:15;:26;23922:9;23906:26;;;;;;;;;;;;;;;;;;;;;;;;;23905:27;23884:48;23881:188;;;23994:14;;23984:6;23961:20;23971:9;23961;:20::i;:::-;:29;;;;:::i;:::-;:47;;23952:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;23881:188;23825:255;24103:11;:19;24115:6;24103:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;24126:11;:22;24138:9;24126:22;;;;;;;;;;;;;;;;;;;;;;;;;24103:45;24100:128;;;24172:12;;;;;;;;;;;24164:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;24100:128;24263:16;:14;:16::i;:::-;24260:35;;;24282:10;:8;:10::i;:::-;24260:35;24315:39;24328:6;24336:9;24347:6;24315:12;:39::i;:::-;24379:10;:8;:10::i;:::-;24378:11;:31;;;;;24393:5;:16;24399:9;24393:16;;;;;;;;;;;;;;;;;;;;;;;;;24378:31;24375:80;;;24440:1;24420:9;:17;24430:6;24420:17;;;;;;;;;;;;;;;;:21;24412:30;;;;;;24444:8;:6;:8::i;:::-;24375:80;24495:53;24517:6;24495:53;;;;;;;;;;;;;;;;;:9;:17;24505:6;24495:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24475:9;:17;24485:6;24475:17;;;;;;;;;;;;;;;:73;;;;24561:22;24586:21;24600:6;24586:13;:21::i;:::-;:67;;24647:6;24586:67;;;24610:34;24618:6;24626:9;24637:6;24610:7;:34::i;:::-;24586:67;24561:92;;24687:40;24712:14;24687:9;:20;24697:9;24687:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;24664:9;:20;24674:9;24664:20;;;;;;;;;;;;;;;:63;;;;24744:16;:24;24761:6;24744:24;;;;;;;;;;;;;;;;;;;;;;;;;24740:96;;24775:11;;;;;;;;;;;:20;;;24796:6;24804:9;:17;24814:6;24804:17;;;;;;;;;;;;;;;;24775:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24771:63;;;;;;24740:96;24850:16;:27;24867:9;24850:27;;;;;;;;;;;;;;;;;;;;;;;;;24846:105;;24884:11;;;;;;;;;;;:20;;;24905:9;24916;:20;24926:9;24916:20;;;;;;;;;;;;;;;;24884:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24880:69;;;;;;24846:105;24967:11;;;;;;;;;;;:19;;;24987:14;;24967:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24963:51;;;;;;25048:9;25031:43;;25040:6;25031:43;;;25059:14;25031:43;;;;;;:::i;:::-;;;;;;;;25092:4;25085:11;;;23592:1514;;;;;:::o;526:136::-;584:7;611:43;615:1;618;611:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;604:50;;526:136;;;;:::o;339:181::-;397:7;417:9;433:1;429;:5;;;;:::i;:::-;417:17;;458:1;453;:6;;445:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;511:1;504:8;;;339:181;;;;:::o;20972:345::-;21092:6;21067:9;:21;21077:10;21067:21;;;;;;;;;;;;;;;;:31;;21059:40;;;;;;21135:6;21110:9;:21;21120:10;21110:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;21176:6;21152:9;:20;21162:9;21152:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;21197:11;;;;;;;;;;;:27;;;21225:9;21236:6;21197:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21193:62;;;;;;21291:9;21270:39;;21279:10;21270:39;;;21302:6;21270:39;;;;;;:::i;:::-;;;;;;;;20972:345;;:::o;30842:197::-;30891:4;30916:5;:17;30922:10;30916:17;;;;;;;;;;;;;;;;;;;;;;;;;30915:18;:38;;;;;30947:6;;;;;;;;;;;30946:7;30915:38;:62;;;;;30966:11;;;;;;;;;;;30915:62;:116;;;;;31018:13;;30990:9;:24;31008:4;30990:24;;;;;;;;;;;;;;;;:41;;30915:116;30908:123;;30842:197;:::o;28286:1955::-;17561:4;17552:6;;:13;;;;;;;;;;;;;;;;;;28335:27:::1;28365:12;;28335:42;;28388:23;28414:59;28471:1;28414:52;28457:8;;28414:38;28432:19;28414:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;28388:85;;28528:20;28551:34;28569:15;28551:13;;:17;;:34;;;;:::i;:::-;28528:57;;28665:21;28703:1;28689:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28665:40;;28734:4;28716;28721:1;28716:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;28760:4;;;;;;;;;;;28750;28755:1;28750:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;28777:21;28801;28777:45;;28835:6;;;;;;;;;;;:57;;;28907:12;28934:1;28950:4;28977;28997:15;28835:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29036:17;29056:40;29082:13;29056:21;:25;;:40;;;;:::i;:::-;29036:60;;29109:19;29131:40;29144:26;29168:1;29144:19;:23;;:26;;;;:::i;:::-;29131:8;;:12;;:40;;;;:::i;:::-;29109:62;;29192:26;29221:58;29277:1;29221:51;29260:11;29221:34;29235:19;29221:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;29192:87;;29319:1;29303:13;;:17;29300:202;;;29336:27;29366:45;29399:11;29366:28;29380:13;;29366:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;29336:75;;29430:11;;;;;;;;;;;:19;;;29457;29430:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;29426:65;;;;;;29321:181;29300:202;29522:26;29551:44;29583:11;29551:27;29565:12;;29551:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;29522:73;;29606:20;29629:46;29663:11;29629:29;29643:14;;29629:9;:13;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;29606:69;;29706:20;;;;;;;;;;;29698:34;;29740:18;29765:5;29698:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29794:14;;;;;;;;;;;29786:28;;29822:12;29841:5;29786:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29893:1;29875:15;:19;29872:362;;;29910:6;;;;;;;;;;;:22;;;29940:18;29986:4;30010:15;30044:1;30064::::0;30084:21:::1;;;;;;;;;;;30124:15;29910:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30174:48;30186:18;30206:15;30174:48;;;;;;;:::i;:::-;;;;;;;;29872:362;28324:1917;;;;;;;;;;17579:5:::0;17570:6;;:14;;;;;;;;;;;;;;;;;;28286:1955::o;25456:250::-;25566:5;;;;;;;;;;25556:15;;:6;:15;;;;:36;;;;;25587:5;;;;;;;;;;25575:17;;:8;:17;;;;25556:36;25553:146;;;25626:12;;25616:6;:22;;:49;;;;25642:15;:23;25658:6;25642:23;;;;;;;;;;;;;;;;;;;;;;;;;25616:49;25608:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;25553:146;25456:250;;;:::o;26720:90::-;26763:4;26801:1;26787:10;;:15;;26780:22;;26720:90;:::o;26818:74::-;26869:15;26856:10;:28;;;;26818:74::o;25714:114::-;25776:4;25801:11;:19;25813:6;25801:19;;;;;;;;;;;;;;;;;;;;;;;;;25800:20;25793:27;;25714:114;;;:::o;26020:379::-;26105:7;26125:17;26145:60;26190:14;;26145:40;26156:28;26168:5;:15;26174:8;26168:15;;;;;;;;;;;;;;;;;;;;;;;;;26156:11;:28::i;:::-;26145:6;:10;;:40;;;;:::i;:::-;:44;;:60;;;;:::i;:::-;26125:80;;26253:39;26282:9;26253;:24;26271:4;26253:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26226:9;:24;26244:4;26226:24;;;;;;;;;;;;;;;:66;;;;26333:4;26308:42;;26317:6;26308:42;;;26340:9;26308:42;;;;;;:::i;:::-;;;;;;;;26370:21;26381:9;26370:6;:10;;:21;;;;:::i;:::-;26363:28;;;26020:379;;;;;:::o;866:250::-;924:7;953:1;948;:6;944:47;;;978:1;971:8;;;;944:47;1003:9;1019:1;1015;:5;;;;:::i;:::-;1003:17;;1048:1;1043;1039;:5;;;;:::i;:::-;:10;1031:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1107:1;1100:8;;;866:250;;;;;:::o;1122:132::-;1180:7;1207:39;1211:1;1214;1207:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1200:46;;1122:132;;;;:::o;1260:345::-;1346:7;1445:1;1441;:5;1448:12;1433:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1472:9;1488:1;1484;:5;;;;:::i;:::-;1472:17;;1596:1;1589:8;;;1260: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;330:568::-;403:8;413:6;463:3;456:4;448:6;444:17;440:27;430:122;;471:79;;:::i;:::-;430:122;584:6;571:20;561:30;;614:18;606:6;603:30;600:117;;;636:79;;:::i;:::-;600:117;750:4;742:6;738:17;726:29;;804:3;796:4;788:6;784:17;774:8;770:32;767:41;764:128;;;811:79;;:::i;:::-;764:128;330:568;;;;;:::o;921:::-;994:8;1004:6;1054:3;1047:4;1039:6;1035:17;1031:27;1021:122;;1062:79;;:::i;:::-;1021:122;1175:6;1162:20;1152:30;;1205:18;1197:6;1194:30;1191:117;;;1227:79;;:::i;:::-;1191:117;1341:4;1333:6;1329:17;1317:29;;1395:3;1387:4;1379:6;1375:17;1365:8;1361:32;1358:41;1355:128;;;1402:79;;:::i;:::-;1355:128;921:568;;;;;:::o;1495:133::-;1538:5;1576:6;1563:20;1554:29;;1592:30;1616:5;1592:30;:::i;:::-;1495:133;;;;:::o;1634:137::-;1688:5;1719:6;1713:13;1704:22;;1735:30;1759:5;1735:30;:::i;:::-;1634:137;;;;:::o;1777:207::-;1857:5;1895:6;1882:20;1873:29;;1911:67;1972:5;1911:67;:::i;:::-;1777:207;;;;:::o;1990:167::-;2050:5;2088:6;2075:20;2066:29;;2104:47;2145:5;2104:47;:::i;:::-;1990:167;;;;:::o;2163:171::-;2234:5;2265:6;2259:13;2250:22;;2281:47;2322:5;2281:47;:::i;:::-;2163:171;;;;:::o;2340:139::-;2386:5;2424:6;2411:20;2402:29;;2440:33;2467:5;2440:33;:::i;:::-;2340:139;;;;:::o;2485:143::-;2542:5;2573:6;2567:13;2558:22;;2589:33;2616:5;2589:33;:::i;:::-;2485:143;;;;:::o;2634:329::-;2693:6;2742:2;2730:9;2721:7;2717:23;2713:32;2710:119;;;2748:79;;:::i;:::-;2710:119;2868:1;2893:53;2938:7;2929:6;2918:9;2914:22;2893:53;:::i;:::-;2883:63;;2839:117;2634:329;;;;:::o;2969:345::-;3036:6;3085:2;3073:9;3064:7;3060:23;3056:32;3053:119;;;3091:79;;:::i;:::-;3053:119;3211:1;3236:61;3289:7;3280:6;3269:9;3265:22;3236:61;:::i;:::-;3226:71;;3182:125;2969:345;;;;:::o;3320:474::-;3388:6;3396;3445:2;3433:9;3424:7;3420:23;3416:32;3413:119;;;3451:79;;:::i;:::-;3413:119;3571:1;3596:53;3641:7;3632:6;3621:9;3617:22;3596:53;:::i;:::-;3586:63;;3542:117;3698:2;3724:53;3769:7;3760:6;3749:9;3745:22;3724:53;:::i;:::-;3714:63;;3669:118;3320:474;;;;;:::o;3800:619::-;3877:6;3885;3893;3942:2;3930:9;3921:7;3917:23;3913:32;3910:119;;;3948:79;;:::i;:::-;3910:119;4068:1;4093:53;4138:7;4129:6;4118:9;4114:22;4093:53;:::i;:::-;4083:63;;4039:117;4195:2;4221:53;4266:7;4257:6;4246:9;4242:22;4221:53;:::i;:::-;4211:63;;4166:118;4323:2;4349:53;4394:7;4385:6;4374:9;4370:22;4349:53;:::i;:::-;4339:63;;4294:118;3800:619;;;;;:::o;4425:::-;4502:6;4510;4518;4567:2;4555:9;4546:7;4542:23;4538:32;4535:119;;;4573:79;;:::i;:::-;4535:119;4693:1;4718:53;4763:7;4754:6;4743:9;4739:22;4718:53;:::i;:::-;4708:63;;4664:117;4820:2;4846:53;4891:7;4882:6;4871:9;4867:22;4846:53;:::i;:::-;4836:63;;4791:118;4948:2;4974:53;5019:7;5010:6;4999:9;4995:22;4974:53;:::i;:::-;4964:63;;4919:118;4425:619;;;;;:::o;5050:468::-;5115:6;5123;5172:2;5160:9;5151:7;5147:23;5143:32;5140:119;;;5178:79;;:::i;:::-;5140:119;5298:1;5323:53;5368:7;5359:6;5348:9;5344:22;5323:53;:::i;:::-;5313:63;;5269:117;5425:2;5451:50;5493:7;5484:6;5473:9;5469:22;5451:50;:::i;:::-;5441:60;;5396:115;5050:468;;;;;:::o;5524:474::-;5592:6;5600;5649:2;5637:9;5628:7;5624:23;5620:32;5617:119;;;5655:79;;:::i;:::-;5617:119;5775:1;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5746:117;5902:2;5928:53;5973:7;5964:6;5953:9;5949:22;5928:53;:::i;:::-;5918:63;;5873:118;5524:474;;;;;:::o;6004:934::-;6126:6;6134;6142;6150;6199:2;6187:9;6178:7;6174:23;6170:32;6167:119;;;6205:79;;:::i;:::-;6167:119;6353:1;6342:9;6338:17;6325:31;6383:18;6375:6;6372:30;6369:117;;;6405:79;;:::i;:::-;6369:117;6518:80;6590:7;6581:6;6570:9;6566:22;6518:80;:::i;:::-;6500:98;;;;6296:312;6675:2;6664:9;6660:18;6647:32;6706:18;6698:6;6695:30;6692:117;;;6728:79;;:::i;:::-;6692:117;6841:80;6913:7;6904:6;6893:9;6889:22;6841:80;:::i;:::-;6823:98;;;;6618:313;6004:934;;;;;;;:::o;6944:323::-;7000:6;7049:2;7037:9;7028:7;7024:23;7020:32;7017:119;;;7055:79;;:::i;:::-;7017:119;7175:1;7200:50;7242:7;7233:6;7222:9;7218:22;7200:50;:::i;:::-;7190:60;;7146:114;6944:323;;;;:::o;7273:345::-;7340:6;7389:2;7377:9;7368:7;7364:23;7360:32;7357:119;;;7395:79;;:::i;:::-;7357:119;7515:1;7540:61;7593:7;7584:6;7573:9;7569:22;7540:61;:::i;:::-;7530:71;;7486:125;7273:345;;;;:::o;7624:468::-;7689:6;7697;7746:2;7734:9;7725:7;7721:23;7717:32;7714:119;;;7752:79;;:::i;:::-;7714:119;7872:1;7897:50;7939:7;7930:6;7919:9;7915:22;7897:50;:::i;:::-;7887:60;;7843:114;7996:2;8022:53;8067:7;8058:6;8047:9;8043:22;8022:53;:::i;:::-;8012:63;;7967:118;7624:468;;;;;:::o;8098:397::-;8191:6;8240:2;8228:9;8219:7;8215:23;8211:32;8208:119;;;8246:79;;:::i;:::-;8208:119;8366:1;8391:87;8470:7;8461:6;8450:9;8446:22;8391:87;:::i;:::-;8381:97;;8337:151;8098:397;;;;:::o;8501:357::-;8574:6;8623:2;8611:9;8602:7;8598:23;8594:32;8591:119;;;8629:79;;:::i;:::-;8591:119;8749:1;8774:67;8833:7;8824:6;8813:9;8809:22;8774:67;:::i;:::-;8764:77;;8720:131;8501:357;;;;:::o;8864:379::-;8948:6;8997:2;8985:9;8976:7;8972:23;8968:32;8965:119;;;9003:79;;:::i;:::-;8965:119;9123:1;9148:78;9218:7;9209:6;9198:9;9194:22;9148:78;:::i;:::-;9138:88;;9094:142;8864:379;;;;:::o;9249:329::-;9308:6;9357:2;9345:9;9336:7;9332:23;9328:32;9325:119;;;9363:79;;:::i;:::-;9325:119;9483:1;9508:53;9553:7;9544:6;9533:9;9529:22;9508:53;:::i;:::-;9498:63;;9454:117;9249:329;;;;:::o;9584:351::-;9654:6;9703:2;9691:9;9682:7;9678:23;9674:32;9671:119;;;9709:79;;:::i;:::-;9671:119;9829:1;9854:64;9910:7;9901:6;9890:9;9886:22;9854:64;:::i;:::-;9844:74;;9800:128;9584:351;;;;:::o;9941:474::-;10009:6;10017;10066:2;10054:9;10045:7;10041:23;10037:32;10034:119;;;10072:79;;:::i;:::-;10034:119;10192:1;10217:53;10262:7;10253:6;10242:9;10238:22;10217:53;:::i;:::-;10207:63;;10163:117;10319:2;10345:53;10390:7;10381:6;10370:9;10366:22;10345:53;:::i;:::-;10335:63;;10290:118;9941:474;;;;;:::o;10421:663::-;10509:6;10517;10525;10574:2;10562:9;10553:7;10549:23;10545:32;10542:119;;;10580:79;;:::i;:::-;10542:119;10700:1;10725:64;10781:7;10772:6;10761:9;10757:22;10725:64;:::i;:::-;10715:74;;10671:128;10838:2;10864:64;10920:7;10911:6;10900:9;10896:22;10864:64;:::i;:::-;10854:74;;10809:129;10977:2;11003:64;11059:7;11050:6;11039:9;11035:22;11003:64;:::i;:::-;10993:74;;10948:129;10421:663;;;;;:::o;11090:1057::-;11194:6;11202;11210;11218;11226;11234;11283:3;11271:9;11262:7;11258:23;11254:33;11251:120;;;11290:79;;:::i;:::-;11251:120;11410:1;11435:53;11480:7;11471:6;11460:9;11456:22;11435:53;:::i;:::-;11425:63;;11381:117;11537:2;11563:53;11608:7;11599:6;11588:9;11584:22;11563:53;:::i;:::-;11553:63;;11508:118;11665:2;11691:53;11736:7;11727:6;11716:9;11712:22;11691:53;:::i;:::-;11681:63;;11636:118;11793:2;11819:53;11864:7;11855:6;11844:9;11840:22;11819:53;:::i;:::-;11809:63;;11764:118;11921:3;11948:53;11993:7;11984:6;11973:9;11969:22;11948:53;:::i;:::-;11938:63;;11892:119;12050:3;12077:53;12122:7;12113:6;12102:9;12098:22;12077:53;:::i;:::-;12067:63;;12021:119;11090:1057;;;;;;;;:::o;12153:179::-;12222:10;12243:46;12285:3;12277:6;12243:46;:::i;:::-;12321:4;12316:3;12312:14;12298:28;;12153:179;;;;:::o;12338:147::-;12433:45;12472:5;12433:45;:::i;:::-;12428:3;12421:58;12338:147;;:::o;12491:108::-;12568:24;12586:5;12568:24;:::i;:::-;12563:3;12556:37;12491:108;;:::o;12605:118::-;12692:24;12710:5;12692:24;:::i;:::-;12687:3;12680:37;12605:118;;:::o;12759:732::-;12878:3;12907:54;12955:5;12907:54;:::i;:::-;12977:86;13056:6;13051:3;12977:86;:::i;:::-;12970:93;;13087:56;13137:5;13087:56;:::i;:::-;13166:7;13197:1;13182:284;13207:6;13204:1;13201:13;13182:284;;;13283:6;13277:13;13310:63;13369:3;13354:13;13310:63;:::i;:::-;13303:70;;13396:60;13449:6;13396:60;:::i;:::-;13386:70;;13242:224;13229:1;13226;13222:9;13217:14;;13182:284;;;13186:14;13482:3;13475:10;;12883:608;;;12759:732;;;;:::o;13497:109::-;13578:21;13593:5;13578:21;:::i;:::-;13573:3;13566:34;13497:109;;:::o;13612:199::-;13733:71;13798:5;13733:71;:::i;:::-;13728:3;13721:84;13612:199;;:::o;13817:159::-;13918:51;13963:5;13918:51;:::i;:::-;13913:3;13906:64;13817:159;;:::o;13982:167::-;14087:55;14136:5;14087:55;:::i;:::-;14082:3;14075:68;13982:167;;:::o;14155:147::-;14250:45;14289:5;14250:45;:::i;:::-;14245:3;14238:58;14155:147;;:::o;14308:364::-;14396:3;14424:39;14457:5;14424:39;:::i;:::-;14479:71;14543:6;14538:3;14479:71;:::i;:::-;14472:78;;14559:52;14604:6;14599:3;14592:4;14585:5;14581:16;14559:52;:::i;:::-;14636:29;14658:6;14636:29;:::i;:::-;14631:3;14627:39;14620:46;;14400:272;14308:364;;;;:::o;14678:366::-;14820:3;14841:67;14905:2;14900:3;14841:67;:::i;:::-;14834:74;;14917:93;15006:3;14917:93;:::i;:::-;15035:2;15030:3;15026:12;15019:19;;14678:366;;;:::o;15050:::-;15192:3;15213:67;15277:2;15272:3;15213:67;:::i;:::-;15206:74;;15289:93;15378:3;15289:93;:::i;:::-;15407:2;15402:3;15398:12;15391:19;;15050:366;;;:::o;15422:::-;15564:3;15585:67;15649:2;15644:3;15585:67;:::i;:::-;15578:74;;15661:93;15750:3;15661:93;:::i;:::-;15779:2;15774:3;15770:12;15763:19;;15422:366;;;:::o;15794:::-;15936:3;15957:67;16021:2;16016:3;15957:67;:::i;:::-;15950:74;;16033:93;16122:3;16033:93;:::i;:::-;16151:2;16146:3;16142:12;16135:19;;15794:366;;;:::o;16166:::-;16308:3;16329:67;16393:2;16388:3;16329:67;:::i;:::-;16322:74;;16405:93;16494:3;16405:93;:::i;:::-;16523:2;16518:3;16514:12;16507:19;;16166:366;;;:::o;16538:::-;16680:3;16701:67;16765:2;16760:3;16701:67;:::i;:::-;16694:74;;16777:93;16866:3;16777:93;:::i;:::-;16895:2;16890:3;16886:12;16879:19;;16538:366;;;:::o;16910:::-;17052:3;17073:67;17137:2;17132:3;17073:67;:::i;:::-;17066:74;;17149:93;17238:3;17149:93;:::i;:::-;17267:2;17262:3;17258:12;17251:19;;16910:366;;;:::o;17282:::-;17424:3;17445:67;17509:2;17504:3;17445:67;:::i;:::-;17438:74;;17521:93;17610:3;17521:93;:::i;:::-;17639:2;17634:3;17630:12;17623:19;;17282:366;;;:::o;17654:365::-;17796:3;17817:66;17881:1;17876:3;17817:66;:::i;:::-;17810:73;;17892:93;17981:3;17892:93;:::i;:::-;18010:2;18005:3;18001:12;17994:19;;17654:365;;;:::o;18025:398::-;18184:3;18205:83;18286:1;18281:3;18205:83;:::i;:::-;18198:90;;18297:93;18386:3;18297:93;:::i;:::-;18415:1;18410:3;18406:11;18399:18;;18025:398;;;:::o;18429:366::-;18571:3;18592:67;18656:2;18651:3;18592:67;:::i;:::-;18585:74;;18668:93;18757:3;18668:93;:::i;:::-;18786:2;18781:3;18777:12;18770:19;;18429:366;;;:::o;18801:118::-;18888:24;18906:5;18888:24;:::i;:::-;18883:3;18876:37;18801:118;;:::o;18925:112::-;19008:22;19024:5;19008:22;:::i;:::-;19003:3;18996:35;18925:112;;:::o;19043:379::-;19227:3;19249:147;19392:3;19249:147;:::i;:::-;19242:154;;19413:3;19406:10;;19043:379;;;:::o;19428:222::-;19521:4;19559:2;19548:9;19544:18;19536:26;;19572:71;19640:1;19629:9;19625:17;19616:6;19572:71;:::i;:::-;19428:222;;;;:::o;19656:238::-;19757:4;19795:2;19784:9;19780:18;19772:26;;19808:79;19884:1;19873:9;19869:17;19860:6;19808:79;:::i;:::-;19656:238;;;;:::o;19900:348::-;20029:4;20067:2;20056:9;20052:18;20044:26;;20080:71;20148:1;20137:9;20133:17;20124:6;20080:71;:::i;:::-;20161:80;20237:2;20226:9;20222:18;20213:6;20161:80;:::i;:::-;19900:348;;;;;:::o;20254:332::-;20375:4;20413:2;20402:9;20398:18;20390:26;;20426:71;20494:1;20483:9;20479:17;20470:6;20426:71;:::i;:::-;20507:72;20575:2;20564:9;20560:18;20551:6;20507:72;:::i;:::-;20254:332;;;;;:::o;20592:807::-;20841:4;20879:3;20868:9;20864:19;20856:27;;20893:71;20961:1;20950:9;20946:17;20937:6;20893:71;:::i;:::-;20974:72;21042:2;21031:9;21027:18;21018:6;20974:72;:::i;:::-;21056:80;21132:2;21121:9;21117:18;21108:6;21056:80;:::i;:::-;21146;21222:2;21211:9;21207:18;21198:6;21146:80;:::i;:::-;21236:73;21304:3;21293:9;21289:19;21280:6;21236:73;:::i;:::-;21319;21387:3;21376:9;21372:19;21363:6;21319:73;:::i;:::-;20592:807;;;;;;;;;:::o;21405:210::-;21492:4;21530:2;21519:9;21515:18;21507:26;;21543:65;21605:1;21594:9;21590:17;21581:6;21543:65;:::i;:::-;21405:210;;;;:::o;21621:290::-;21748:4;21786:2;21775:9;21771:18;21763:26;;21799:105;21901:1;21890:9;21886:17;21877:6;21799:105;:::i;:::-;21621:290;;;;:::o;21917:250::-;22024:4;22062:2;22051:9;22047:18;22039:26;;22075:85;22157:1;22146:9;22142:17;22133:6;22075:85;:::i;:::-;21917:250;;;;:::o;22173:258::-;22284:4;22322:2;22311:9;22307:18;22299:26;;22335:89;22421:1;22410:9;22406:17;22397:6;22335:89;:::i;:::-;22173:258;;;;:::o;22437:313::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22637:9;22631:4;22627:20;22623:1;22612:9;22608:17;22601:47;22665:78;22738:4;22729:6;22665:78;:::i;:::-;22657:86;;22437:313;;;;:::o;22756:419::-;22922:4;22960:2;22949:9;22945:18;22937:26;;23009:9;23003:4;22999:20;22995:1;22984:9;22980:17;22973:47;23037:131;23163:4;23037:131;:::i;:::-;23029:139;;22756:419;;;:::o;23181:::-;23347:4;23385:2;23374:9;23370:18;23362:26;;23434:9;23428:4;23424:20;23420:1;23409:9;23405:17;23398:47;23462:131;23588:4;23462:131;:::i;:::-;23454:139;;23181:419;;;:::o;23606:::-;23772:4;23810:2;23799:9;23795:18;23787:26;;23859:9;23853:4;23849:20;23845:1;23834:9;23830:17;23823:47;23887:131;24013:4;23887:131;:::i;:::-;23879:139;;23606:419;;;:::o;24031:::-;24197:4;24235:2;24224:9;24220:18;24212:26;;24284:9;24278:4;24274:20;24270:1;24259:9;24255:17;24248:47;24312:131;24438:4;24312:131;:::i;:::-;24304:139;;24031:419;;;:::o;24456:::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:::-;25047:4;25085:2;25074:9;25070:18;25062:26;;25134:9;25128:4;25124:20;25120:1;25109:9;25105:17;25098:47;25162:131;25288:4;25162:131;:::i;:::-;25154:139;;24881:419;;;:::o;25306:::-;25472:4;25510:2;25499:9;25495:18;25487:26;;25559:9;25553:4;25549:20;25545:1;25534:9;25530:17;25523:47;25587:131;25713:4;25587:131;:::i;:::-;25579:139;;25306:419;;;:::o;25731:::-;25897:4;25935:2;25924:9;25920:18;25912:26;;25984:9;25978:4;25974:20;25970:1;25959:9;25955:17;25948:47;26012:131;26138:4;26012:131;:::i;:::-;26004:139;;25731:419;;;:::o;26156:::-;26322:4;26360:2;26349:9;26345:18;26337:26;;26409:9;26403:4;26399:20;26395:1;26384:9;26380:17;26373:47;26437:131;26563:4;26437:131;:::i;:::-;26429:139;;26156:419;;;:::o;26581:::-;26747:4;26785:2;26774:9;26770:18;26762:26;;26834:9;26828:4;26824:20;26820:1;26809:9;26805:17;26798:47;26862:131;26988:4;26862:131;:::i;:::-;26854:139;;26581:419;;;:::o;27006:222::-;27099:4;27137:2;27126:9;27122:18;27114:26;;27150:71;27218:1;27207:9;27203:17;27194:6;27150:71;:::i;:::-;27006:222;;;;:::o;27234:831::-;27497:4;27535:3;27524:9;27520:19;27512:27;;27549:71;27617:1;27606:9;27602:17;27593:6;27549:71;:::i;:::-;27630:80;27706:2;27695:9;27691:18;27682:6;27630:80;:::i;:::-;27757:9;27751:4;27747:20;27742:2;27731:9;27727:18;27720:48;27785:108;27888:4;27879:6;27785:108;:::i;:::-;27777:116;;27903:72;27971:2;27960:9;27956:18;27947:6;27903:72;:::i;:::-;27985:73;28053:3;28042:9;28038:19;28029:6;27985:73;:::i;:::-;27234:831;;;;;;;;:::o;28071:332::-;28192:4;28230:2;28219:9;28215:18;28207:26;;28243:71;28311:1;28300:9;28296:17;28287:6;28243:71;:::i;:::-;28324:72;28392:2;28381:9;28377:18;28368:6;28324:72;:::i;:::-;28071:332;;;;;:::o;28409:214::-;28498:4;28536:2;28525:9;28521:18;28513:26;;28549:67;28613:1;28602:9;28598:17;28589:6;28549:67;:::i;:::-;28409:214;;;;:::o;28710:132::-;28777:4;28800:3;28792:11;;28830:4;28825:3;28821:14;28813:22;;28710:132;;;:::o;28848:114::-;28915:6;28949:5;28943:12;28933:22;;28848:114;;;:::o;28968:99::-;29020:6;29054:5;29048:12;29038:22;;28968:99;;;:::o;29073:113::-;29143:4;29175;29170:3;29166:14;29158:22;;29073:113;;;:::o;29192:184::-;29291:11;29325:6;29320:3;29313:19;29365:4;29360:3;29356:14;29341:29;;29192:184;;;;:::o;29382:147::-;29483:11;29520:3;29505:18;;29382:147;;;;:::o;29535:169::-;29619:11;29653:6;29648:3;29641:19;29693:4;29688:3;29684:14;29669:29;;29535:169;;;;:::o;29710:305::-;29750:3;29769:20;29787:1;29769:20;:::i;:::-;29764:25;;29803:20;29821:1;29803:20;:::i;:::-;29798:25;;29957:1;29889:66;29885:74;29882:1;29879:81;29876:107;;;29963:18;;:::i;:::-;29876:107;30007:1;30004;30000:9;29993:16;;29710:305;;;;:::o;30021:185::-;30061:1;30078:20;30096:1;30078:20;:::i;:::-;30073:25;;30112:20;30130:1;30112:20;:::i;:::-;30107:25;;30151:1;30141:35;;30156:18;;:::i;:::-;30141:35;30198:1;30195;30191:9;30186:14;;30021:185;;;;:::o;30212:848::-;30273:5;30280:4;30304:6;30295:15;;30328:5;30319:14;;30342:712;30363:1;30353:8;30350:15;30342:712;;;30458:4;30453:3;30449:14;30443:4;30440:24;30437:50;;;30467:18;;:::i;:::-;30437:50;30517:1;30507:8;30503:16;30500:451;;;30932:4;30925:5;30921:16;30912:25;;30500:451;30982:4;30976;30972:15;30964:23;;31012:32;31035:8;31012:32;:::i;:::-;31000:44;;30342:712;;;30212:848;;;;;;;:::o;31066:281::-;31124:5;31148:23;31166:4;31148:23;:::i;:::-;31140:31;;31192:25;31208:8;31192:25;:::i;:::-;31180:37;;31236:104;31273:66;31263:8;31257:4;31236:104;:::i;:::-;31227:113;;31066:281;;;;:::o;31353:1073::-;31407:5;31598:8;31588:40;;31619:1;31610:10;;31621:5;;31588:40;31647:4;31637:36;;31664:1;31655:10;;31666:5;;31637:36;31733:4;31781:1;31776:27;;;;31817:1;31812:191;;;;31726:277;;31776:27;31794:1;31785:10;;31796:5;;;31812:191;31857:3;31847:8;31844:17;31841:43;;;31864:18;;:::i;:::-;31841:43;31913:8;31910:1;31906:16;31897:25;;31948:3;31941:5;31938:14;31935:40;;;31955:18;;:::i;:::-;31935:40;31988:5;;;31726:277;;32112:2;32102:8;32099:16;32093:3;32087:4;32084:13;32080:36;32062:2;32052:8;32049:16;32044:2;32038:4;32035:12;32031:35;32015:111;32012:246;;;32168:8;32162:4;32158:19;32149:28;;32203:3;32196:5;32193:14;32190:40;;;32210:18;;:::i;:::-;32190:40;32243:5;;32012:246;32283:42;32321:3;32311:8;32305:4;32302:1;32283:42;:::i;:::-;32268:57;;;;32357:4;32352:3;32348:14;32341:5;32338:25;32335:51;;;32366:18;;:::i;:::-;32335:51;32415:4;32408:5;32404:16;32395:25;;31353:1073;;;;;;:::o;32432:348::-;32472:7;32495:20;32513:1;32495:20;:::i;:::-;32490:25;;32529:20;32547:1;32529:20;:::i;:::-;32524:25;;32717:1;32649:66;32645:74;32642:1;32639:81;32634:1;32627:9;32620:17;32616:105;32613:131;;;32724:18;;:::i;:::-;32613:131;32772:1;32769;32765:9;32754:20;;32432:348;;;;:::o;32786:191::-;32826:4;32846:20;32864:1;32846:20;:::i;:::-;32841:25;;32880:20;32898:1;32880:20;:::i;:::-;32875:25;;32919:1;32916;32913:8;32910:34;;;32924:18;;:::i;:::-;32910:34;32969:1;32966;32962:9;32954:17;;32786:191;;;;:::o;32983:96::-;33020:7;33049:24;33067:5;33049:24;:::i;:::-;33038:35;;32983:96;;;:::o;33085:104::-;33130:7;33159:24;33177:5;33159:24;:::i;:::-;33148:35;;33085:104;;;:::o;33195:90::-;33229:7;33272:5;33265:13;33258:21;33247:32;;33195:90;;;:::o;33291:130::-;33362:7;33391:24;33409:5;33391:24;:::i;:::-;33380:35;;33291:130;;;:::o;33427:110::-;33478:7;33507:24;33525:5;33507:24;:::i;:::-;33496:35;;33427:110;;;:::o;33543:126::-;33580:7;33620:42;33613:5;33609:54;33598:65;;33543:126;;;:::o;33675:77::-;33712:7;33741:5;33730:16;;33675:77;;;:::o;33758:86::-;33793:7;33833:4;33826:5;33822:16;33811:27;;33758:86;;;:::o;33850:134::-;33908:9;33941:37;33972:5;33941:37;:::i;:::-;33928:50;;33850:134;;;:::o;33990:160::-;34074:9;34107:37;34138:5;34107:37;:::i;:::-;34094:50;;33990:160;;;:::o;34156:140::-;34220:9;34253:37;34284:5;34253:37;:::i;:::-;34240:50;;34156:140;;;:::o;34302:144::-;34370:9;34403:37;34434:5;34403:37;:::i;:::-;34390:50;;34302:144;;;:::o;34452:121::-;34510:9;34543:24;34561:5;34543:24;:::i;:::-;34530:37;;34452:121;;;:::o;34579:126::-;34629:9;34662:37;34693:5;34662:37;:::i;:::-;34649:50;;34579:126;;;:::o;34711:113::-;34761:9;34794:24;34812:5;34794:24;:::i;:::-;34781:37;;34711:113;;;:::o;34830:307::-;34898:1;34908:113;34922:6;34919:1;34916:13;34908:113;;;35007:1;35002:3;34998:11;34992:18;34988:1;34983:3;34979:11;34972:39;34944:2;34941:1;34937:10;34932:15;;34908:113;;;35039:6;35036:1;35033:13;35030:101;;;35119:1;35110:6;35105:3;35101:16;35094:27;35030:101;34879:258;34830:307;;;:::o;35143:180::-;35191:77;35188:1;35181:88;35288:4;35285:1;35278:15;35312:4;35309:1;35302:15;35329:180;35377:77;35374:1;35367:88;35474:4;35471:1;35464:15;35498:4;35495:1;35488:15;35515:180;35563:77;35560:1;35553:88;35660:4;35657:1;35650:15;35684:4;35681:1;35674:15;35701:180;35749:77;35746:1;35739:88;35846:4;35843:1;35836:15;35870:4;35867:1;35860:15;35887:117;35996:1;35993;35986:12;36010:117;36119:1;36116;36109:12;36133:117;36242:1;36239;36232:12;36256:117;36365:1;36362;36355:12;36379:117;36488:1;36485;36478:12;36502:102;36543:6;36594:2;36590:7;36585:2;36578:5;36574:14;36570:28;36560:38;;36502:102;;;:::o;36610:::-;36652:8;36699:5;36696:1;36692:13;36671:34;;36610:102;;;:::o;36718:167::-;36858:19;36854:1;36846:6;36842:14;36835:43;36718:167;:::o;36891:173::-;37031:25;37027:1;37019:6;37015:14;37008:49;36891:173;:::o;37070:177::-;37210:29;37206:1;37198:6;37194:14;37187:53;37070:177;:::o;37253:::-;37393:29;37389:1;37381:6;37377:14;37370:53;37253:177;:::o;37436:310::-;37576:34;37572:1;37564:6;37560:14;37553:58;37645:34;37640:2;37632:6;37628:15;37621:59;37714:24;37709:2;37701:6;37697:15;37690:49;37436:310;:::o;37752:297::-;37892:34;37888:1;37880:6;37876:14;37869:58;37961:34;37956:2;37948:6;37944:15;37937:59;38030:11;38025:2;38017:6;38013:15;38006:36;37752:297;:::o;38055:220::-;38195:34;38191:1;38183:6;38179:14;38172:58;38264:3;38259:2;38251:6;38247:15;38240:28;38055:220;:::o;38281:227::-;38421:34;38417:1;38409:6;38405:14;38398:58;38490:10;38485:2;38477:6;38473:15;38466:35;38281:227;:::o;38514:156::-;38654:8;38650:1;38642:6;38638:14;38631:32;38514:156;:::o;38676:114::-;;:::o;38796:161::-;38936:13;38932:1;38924:6;38920:14;38913:37;38796:161;:::o;38963:122::-;39036:24;39054:5;39036:24;:::i;:::-;39029:5;39026:35;39016:63;;39075:1;39072;39065:12;39016:63;38963:122;:::o;39091:138::-;39172:32;39198:5;39172:32;:::i;:::-;39165:5;39162:43;39152:71;;39219:1;39216;39209:12;39152:71;39091:138;:::o;39235:116::-;39305:21;39320:5;39305:21;:::i;:::-;39298:5;39295:32;39285:60;;39341:1;39338;39331:12;39285:60;39235:116;:::o;39357:190::-;39464:58;39516:5;39464:58;:::i;:::-;39457:5;39454:69;39444:97;;39537:1;39534;39527:12;39444:97;39357:190;:::o;39553:150::-;39640:38;39672:5;39640:38;:::i;:::-;39633:5;39630:49;39620:77;;39693:1;39690;39683:12;39620:77;39553:150;:::o;39709:122::-;39782:24;39800:5;39782:24;:::i;:::-;39775:5;39772:35;39762:63;;39821:1;39818;39811:12;39762:63;39709:122;:::o

Swarm Source

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