Contract 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d 1

 

Contract Overview

Balance:
0.000023385248370123 BNB

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

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x6c3fba7a90df2e4ebcd4c250dd23320427e7dc8d3e1d5d8d91fc55b749527a79Approve145171172022-01-20 1:45:271 day 2 hrs ago0x5b6a14a37546f8dfa2978e3a40fe4806f6cec321 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xaaef26acdb2c4fcc45728e0f1dbc8f313aa53f0bbd165d612bf668529455ed61Approve144954712022-01-19 7:37:241 day 20 hrs ago0xa2c1d1d489f9b8d3851d27e6229243c83609019f IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0x7678042bed1a4bef8fccc2adf106749c8057b3fd0289b63b0f3c345512d41f16Approve144765452022-01-18 15:46:592 days 12 hrs ago0x42587338d84acadbf4365bc0236d984d3f9e2da2 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0x0a3296503ff103e4e3652841c3203bde97566723fbcbd4d7f070d8692e4ea82cApprove144250772022-01-16 20:20:014 days 8 hrs ago0x6014a6cb68842f916514734896362fb853bdb83b IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0x1ef7d19d58847a26ad41a84c91847a482a379367900606f7f1f7ac0ed8afeeb0Approve144246872022-01-16 20:00:314 days 8 hrs ago0x32ead9e698b7b56d9ecede8b01ce9f372d7cc699 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xff7756d01044270b658c0ce37df66c4b25f2359614dd194df91fa3dfa7f8f16aApprove144044422022-01-16 3:04:255 days 1 hr ago0x6c60282ef0e7f934483e540bf289b935356f1bc9 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0xdde976a37cb77cdebe4ca09836d91bb883a1b3a316ea07bc3906e704800bc75dApprove143997922022-01-15 23:11:535 days 5 hrs ago0x21e700e5b7aff16a768d36465725ac0d0b864d38 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0xfdeaca289b943fcf1eb415886db52e277c5221b10037648e7ed6ca2b4fe7ae8cApprove143913112022-01-15 16:03:545 days 12 hrs ago0xe2b0923bf3378249d173999426027049ce7c3c99 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xc0f31f73a18d860b5860c1f9380a6dddaf619162df94458b9794e60c7567be01Approve143881552022-01-15 13:25:445 days 15 hrs ago0x8a6ab47b1b794275c9e4d931e1f096de117d775c IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.0000754936
0xa0fc5ee323aea9f2b1000e6e56764bd7d3e02fc24fa39ad030d2fb4471a0d723Approve143770922022-01-15 4:11:376 days 15 mins ago0x5b4496a0ad5289b79d5a96a66e2140c1aa2144fe IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0xaff4e1d6d89764873fa7ce7af7b4f0e0881d93367225d1967eacdf929aafc738Approve143663022022-01-14 19:12:046 days 9 hrs ago0x0f2409c8c82501bf00cfbfdcc57f97e78062f3e1 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xbd81398c8a8b130fde9f4428a0660da01a167fd73120b2840ef06de21d34171aApprove143655822022-01-14 18:36:046 days 9 hrs ago0xffc458db291b4abce020fe3de4f91f2770e537b1 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0x3ec647fb22c5afb31e46ff1e2c1158f27b6eb72d9bdcc3e61102dae362309736Approve143501512022-01-14 5:42:426 days 22 hrs ago0x04a1e8381a57c4b8f06134e1077d485f2ee0d080 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xb9b5e34d0a70a30ddf7aaf6e613a092efc1b73637ae59aad2686b3853b5573b5Approve143483222022-01-14 4:11:157 days 15 mins ago0x054f1b0ef3aa75be9bad7e5cad97a171cd2fa3ea IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0x80a22fb5cd5ed2e5ef62cf7b6609187c1fbbf8fae94e29275f8515b7b83e9949Approve143482282022-01-14 4:06:337 days 20 mins ago0x3554432ed23502d630e1305aca15a18fc2bd938a IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0x7d7d18609c9c300a367a32404c4a6fd3d4f096b8ee949fef6a4c10ef22323248Approve143480182022-01-14 3:56:037 days 30 mins ago0xf47aaa6234410d1b73021097f3a6f99f96797b3c IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0x823ab48dfea1d81bf92cb81f71ff0a9e34794a937e570fc16c3a83f1e400d8c4Approve143473952022-01-14 3:24:547 days 1 hr ago0x30912dbb3021cbc49889843a631208dd1caae09a IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0xbb00c18fae8e4a0738b7cc88bb2faaf8d1e302b5bcd60cfd234db2f10f8474e0Approve143423792022-01-13 23:11:377 days 5 hrs ago0x395826be9bf6ad4e4222982ee968bb3f12ee759b IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xdacbdcffedccedce9db7ba029f73812d7542c8143bed03d0b7f8d5a9f9818fa9Approve143083752022-01-12 18:50:238 days 9 hrs ago0xc5d48da63ea395da9b890cf0f98fa51876884268 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xcfa20a8d250ddba6ac6b6512de9eab2a5138d44b5e4b99299e0444d5e0702348Approve143071112022-01-12 17:47:118 days 10 hrs ago0x45832ad90682a3056450a0f4eeb649503f961f5c IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0x6d9908ce92e881234612838a7f7d764f4e6a26ff39bd2c32b8205cf59135a001Approve143010162022-01-12 12:41:158 days 15 hrs ago0x9c23a86eaa98b5a77e06d845f596ae49791bfbc4 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0xd1be34572164fc90a9b8660cd743826a27e48b5a78b0ea3282fbc3aa33c193dbApprove142728722022-01-11 13:11:269 days 15 hrs ago0xcbe7b47b9bd00849a97e1c9939a5d04ecd80f801 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000222095
0x20a218c4032860181684a86b2d6a00b9410367f501d87b1067433ba2e9e5c193Approve142546532022-01-10 21:54:4410 days 6 hrs ago0x6990e59ce77e530ca9e1e5b2cc8e1fdb71b5ca61 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0xae412573c60ba7002e9912084771f1b605c8f83ede564bb308e032e131e8f1e1Approve142304472022-01-10 1:43:5711 days 2 hrs ago0xe7668be4b5d582ff26ae0572dec8e33bfe93afd0 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
0x73af9bd7432b00f0b4d0c6079760ffef76d8c7507b0f2e9ffb922c9c52ac5b8aApprove142303912022-01-10 1:41:0911 days 2 hrs ago0x30197c7fd0c51dc51e4c18d8fe555748e5b53142 IN  0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0 BNB0.000310933
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x7fb667768d702f851fef64226f7eab54863dadaf3cc4e298ef2a91d358085841144307382022-01-17 1:03:294 days 3 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.000023385248370122 BNB
0x7fb667768d702f851fef64226f7eab54863dadaf3cc4e298ef2a91d358085841144307382022-01-17 1:03:294 days 3 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d PancakeSwap: Router v20.0283033835696762 BNB
0x7fb667768d702f851fef64226f7eab54863dadaf3cc4e298ef2a91d358085841144307382022-01-17 1:03:294 days 3 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d 0xb5cd2fd349bd36ab7818ef801c9920afed0e10160.084910150709028602 BNB
0x7fb667768d702f851fef64226f7eab54863dadaf3cc4e298ef2a91d358085841144307382022-01-17 1:03:294 days 3 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.11315018053861366 BNB
0xe29ad51e4dc59b120718ed21302a69530da268e2f168e7eee0d7696325b45c84143798282022-01-15 6:28:415 days 21 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.000063353740091143 BNB
0xe29ad51e4dc59b120718ed21302a69530da268e2f168e7eee0d7696325b45c84143798282022-01-15 6:28:415 days 21 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d PancakeSwap: Router v20.040879648175779436 BNB
0xe29ad51e4dc59b120718ed21302a69530da268e2f168e7eee0d7696325b45c84143798282022-01-15 6:28:415 days 21 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d 0xb5cd2fd349bd36ab7818ef801c9920afed0e10160.122638944527338308 BNB
0xe29ad51e4dc59b120718ed21302a69530da268e2f168e7eee0d7696325b45c84143798282022-01-15 6:28:415 days 21 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.163486871829053276 BNB
0x416ddf7c1e6e8a350dee4a1ea76c0057f69d91a93a51ffd35c33f7768c7bb85d143727422022-01-15 0:34:066 days 3 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.000031720874064467 BNB
0x416ddf7c1e6e8a350dee4a1ea76c0057f69d91a93a51ffd35c33f7768c7bb85d143727422022-01-15 0:34:066 days 3 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d PancakeSwap: Router v20.033314779922242311 BNB
0x416ddf7c1e6e8a350dee4a1ea76c0057f69d91a93a51ffd35c33f7768c7bb85d143727422022-01-15 0:34:066 days 3 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d 0xb5cd2fd349bd36ab7818ef801c9920afed0e10160.099944339766726933 BNB
0x416ddf7c1e6e8a350dee4a1ea76c0057f69d91a93a51ffd35c33f7768c7bb85d143727422022-01-15 0:34:066 days 3 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.133200293256520188 BNB
0xecade4d5f592d619de1945b4e8dc5dd2f1baa6fdb4ee0df47c737b4504438454143501632022-01-14 5:43:186 days 22 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.000058826432449056 BNB
0xecade4d5f592d619de1945b4e8dc5dd2f1baa6fdb4ee0df47c737b4504438454143501632022-01-14 5:43:186 days 22 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d PancakeSwap: Router v20.040507088414127787 BNB
0xecade4d5f592d619de1945b4e8dc5dd2f1baa6fdb4ee0df47c737b4504438454143501632022-01-14 5:43:186 days 22 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d 0xb5cd2fd349bd36ab7818ef801c9920afed0e10160.121521265242383361 BNB
0xecade4d5f592d619de1945b4e8dc5dd2f1baa6fdb4ee0df47c737b4504438454143501632022-01-14 5:43:186 days 22 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.161961768585601846 BNB
0x4d38d5022043b60919298c796a73bbe15545e5487618ceb0cee767519b0a1d3e143482342022-01-14 4:06:517 days 19 mins ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.000066585070909303 BNB
0x4d38d5022043b60919298c796a73bbe15545e5487618ceb0cee767519b0a1d3e143482342022-01-14 4:06:517 days 19 mins ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d PancakeSwap: Router v20.043912557195378684 BNB
0x4d38d5022043b60919298c796a73bbe15545e5487618ceb0cee767519b0a1d3e143482342022-01-14 4:06:517 days 19 mins ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d 0xb5cd2fd349bd36ab7818ef801c9920afed0e10160.131737671586136052 BNB
0x4d38d5022043b60919298c796a73bbe15545e5487618ceb0cee767519b0a1d3e143482342022-01-14 4:06:517 days 19 mins ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.175593242879748654 BNB
0x0c086ed78be2a27550ca90d4e7719779281be1e3789907e9dec66047dda77e38142763482022-01-11 16:05:149 days 12 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.000056985901766082 BNB
0x0c086ed78be2a27550ca90d4e7719779281be1e3789907e9dec66047dda77e38142763482022-01-11 16:05:149 days 12 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d PancakeSwap: Router v20.043019191374761832 BNB
0x0c086ed78be2a27550ca90d4e7719779281be1e3789907e9dec66047dda77e38142763482022-01-11 16:05:149 days 12 hrs ago 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d 0xb5cd2fd349bd36ab7818ef801c9920afed0e10160.129057574124285496 BNB
0x0c086ed78be2a27550ca90d4e7719779281be1e3789907e9dec66047dda77e38142763482022-01-11 16:05:149 days 12 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.172033709085066899 BNB
0x163496858b30e61a05befe903d3be1f852689c37cb092dd6c22d96e2422351db142304302022-01-10 1:43:0611 days 2 hrs ago PancakeSwap: Router v2 0x62b6437349c0238d05acefeb0c4a14e9c8ea0f8d0.000043056413980429 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SHIBAHEXPULSE2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-11-13
*/

/**
Shiba Hex Pulse

https://t.me/ShibaHexPulse
https://twitter.com/shibahexpulse

 */
pragma solidity ^0.6.12;

library SafeMath {

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external pure returns (uint8);
    function symbol() external pure returns (string memory);
    function name() external pure returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

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

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

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

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

    IDEXRouter router;
    address routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    IBEP20 public RewardToken = IBEP20(0x2859e4544C4bB03966803b044A93563Bd2D0DD4D); //SHIBA

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

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

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

    uint256 currentIndex;

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

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

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

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


    function setRewardToken(address newRewardToken) public {
         RewardToken = IBEP20(newRewardToken); // new token
    }

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

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

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

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

    function deposit() external payable override onlyToken {

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

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

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

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

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

        if(shareholderCount == 0) { return; }

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

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

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

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

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

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

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

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

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

    constructor(address _owner) public {
        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);
}

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

    string constant _name = "SHIBAHEXPULSE2";
    string constant _symbol = "SEXPLS";
    uint8 constant _decimals = 9;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    address RewardToken = 0x2859e4544C4bB03966803b044A93563Bd2D0DD4D; //SHIBA

    uint256 _totalSupply = 1 * 10**12 * (10 ** 9);
    uint256 public _maxTxAmount = _totalSupply * 2 / 200;
    uint256 public _walletMax = _totalSupply * 1 / 100;
    
    bool public restrictWhales = true;

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

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

    uint256 public liquidityFee = 2;
    uint256 public rewardsFee = 10;
    uint256 public extraFeeOnSell = 5;

    uint256 public totalFee = 12;
    uint256 public totalFeeIfSelling = 17;

    address public autoLiquidityReceiver;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = true;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

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

    uint256 public swapThreshold = _totalSupply * 5 / 4000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) public {
        
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        dividendDistributor = new DividendDistributor(address(router));

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

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;
        
        totalFee = liquidityFee.add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);

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


    }

    receive() external payable { }

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


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

    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

   

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

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

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

    function changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

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

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newExtraSellFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        extraFeeOnSell = newExtraSellFee;
        
        totalFee = liquidityFee.add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
    }

    function changeFeeReceivers(address newLiquidityReceiver) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
    }

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

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

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function 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(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }



    function changeRewardToken(address newRewardTokenContract) external authorized {       
       dividendDistributor.setRewardToken(newRewardTokenContract);
    }

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

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

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

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

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

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

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

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

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        tradingOpen = newStatus;
    }

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

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

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

        uint256 amountBNB = address(this).balance;

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

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

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

    event AutoLiquify(uint256 amountBNB, uint256 amountMETA);

}

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":"amountMETA","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newExtraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardTokenContract","type":"address"}],"name":"changeRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraFeeOnSell","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":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732859e4544c4bb03966803b044a93563bd2d0dd4d600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea0000060065560c8600260065402816200015057fe5b046007556064600160065402816200016457fe5b046008556001600960006101000a81548160ff0219169083151502179055506002600f55600a6010556005601155600c60125560116013556001601860006101000a81548160ff0219169083151502179055506207a1206019556001601a60016101000a81548160ff0219169083151502179055506000601a60026101000a81548160ff021916908315150217905550610fa0600560065402816200020557fe5b04601b553480156200021657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037c57600080fd5b505afa15801562000391573d6000803e3d6000fd5b505050506040513d6020811015620003a857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004e557600080fd5b505af1158015620004fa573d6000803e3d6000fd5b505050506040513d60208110156200051157600080fd5b8101908080519060200190929190505050601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006569062000bf9565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000693573d6000803e3d6000fd5b50601860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a92601054600f5462000b7060201b620027f91790919060201c565b60128190555062000ab660115460125462000b7060201b620027f91790919060201c565b601381905550600654600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000c07565b60008082840190508381101562000bef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611bec8062004b5083390190565b613f398062000c176000396000f3fe6080604052600436106102cd5760003560e01c8063807c2d9c11610175578063ca33e64c116100dc578063f0b37c0411610095578063f887ea401161006f578063f887ea401461104c578063fabe62831461108d578063fe9fbb80146110ea578063ffb54a9914611151576102d4565b8063f0b37c0414610f59578063f2fde38b14610faa578063f796413514610ffb576102d4565b8063ca33e64c14610dc3578063ca987b0e14610e04578063d920334e14610e2f578063da00097d14610e6a578063dd62ed3e14610e97578063e66b1d1e14610f1c576102d4565b8063a8aa1b311161012e578063a8aa1b3114610c0f578063a9059cbb14610c50578063a9f7864b14610cc1578063b6a5d7de14610d06578063bad3ea6a14610d57578063bf56b37114610d98576102d4565b8063807c2d9c14610a24578063893d20e814610a4f5780638b42507f14610a9057806395d89b4114610af757806398118cb414610b87578063a3a2e89e14610bb2576102d4565b806334c7088911610234578063571ac8b0116101ed578063773fcb5c116101c7578063773fcb5c146109125780637a3195901461096f5780637d1db4a5146109be5780637db1342c146109e9576102d4565b8063571ac8b01461081b57806369cf17d41461088257806370a08231146108ad576102d4565b806334c70889146106655780633f4218e0146106b85780634355855a1461071f57806344de2e4c14610786578063479f66d8146107b35780634a74bb02146107ee576102d4565b80631df4ccfc116102865780631df4ccfc146104be57806323b872dd146104e95780632b112e491461057a5780632bb14e1d146105a55780632f54bf6e146105d0578063313ce56714610637576102d4565b80630445b667146102d957806306fdde0314610304578063088ab8ce14610394578063095ea7b3146103e55780630d2959801461045657806318160ddd14610493576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee61117e565b6040518082815260200191505060405180910390f35b34801561031057600080fd5b50610319611184565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035957808201518184015260208101905061033e565b50505050905090810190601f1680156103865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a057600080fd5b506103e3600480360360208110156103b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111c1565b005b3480156103f157600080fd5b5061043e6004803603604081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112e2565b60405180821515815260200191505060405180910390f35b34801561046257600080fd5b506104916004803603602081101561047957600080fd5b810190808035151590602001909291905050506113d4565b005b34801561049f57600080fd5b506104a861146c565b6040518082815260200191505060405180910390f35b3480156104ca57600080fd5b506104d3611476565b6040518082815260200191505060405180910390f35b3480156104f557600080fd5b506105626004803603606081101561050c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061147c565b60405180821515815260200191505060405180910390f35b34801561058657600080fd5b5061058f61167c565b6040518082815260200191505060405180910390f35b3480156105b157600080fd5b506105ba6116fe565b6040518082815260200191505060405180910390f35b3480156105dc57600080fd5b5061061f600480360360208110156105f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611704565b60405180821515815260200191505060405180910390f35b34801561064357600080fd5b5061064c61175d565b604051808260ff16815260200191505060405180910390f35b34801561067157600080fd5b506106b66004803603606081101561068857600080fd5b8101908080351515906020019092919080359060200190929190803515159060200190929190505050611766565b005b3480156106c457600080fd5b50610707600480360360208110156106db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611821565b60405180821515815260200191505060405180910390f35b34801561072b57600080fd5b5061076e6004803603602081101561074257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611841565b60405180821515815260200191505060405180910390f35b34801561079257600080fd5b5061079b611861565b60405180821515815260200191505060405180910390f35b3480156107bf57600080fd5b506107ec600480360360208110156107d657600080fd5b8101908080359060200190929190505050611874565b005b3480156107fa57600080fd5b50610803611908565b60405180821515815260200191505060405180910390f35b34801561082757600080fd5b5061086a6004803603602081101561083e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191b565b60405180821515815260200191505060405180910390f35b34801561088e57600080fd5b5061089761194e565b6040518082815260200191505060405180910390f35b3480156108b957600080fd5b506108fc600480360360208110156108d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611954565b6040518082815260200191505060405180910390f35b34801561091e57600080fd5b5061096d6004803603604081101561093557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061199d565b005b34801561097b57600080fd5b506109bc6004803603606081101561099257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611ca8565b005b3480156109ca57600080fd5b506109d3611d77565b6040518082815260200191505060405180910390f35b3480156109f557600080fd5b50610a2260048036036020811015610a0c57600080fd5b8101908080359060200190929190505050611d7d565b005b348015610a3057600080fd5b50610a39611e02565b6040518082815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64611e08565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9c57600080fd5b50610adf60048036036020811015610ab357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e31565b60405180821515815260200191505060405180910390f35b348015610b0357600080fd5b50610b0c611e51565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b4c578082015181840152602081019050610b31565b50505050905090810190601f168015610b795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b9357600080fd5b50610b9c611e8e565b6040518082815260200191505060405180910390f35b348015610bbe57600080fd5b50610c0d60048036036040811015610bd557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611e94565b005b348015610c1b57600080fd5b50610c24611f6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c5c57600080fd5b50610ca960048036036040811015610c7357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f90565b60405180821515815260200191505060405180910390f35b348015610ccd57600080fd5b50610d0460048036036040811015610ce457600080fd5b810190808035906020019092919080359060200190929190505050611fa5565b005b348015610d1257600080fd5b50610d5560048036036020811015610d2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120b9565b005b348015610d6357600080fd5b50610d6c61218e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610da457600080fd5b50610dad6121b4565b6040518082815260200191505060405180910390f35b348015610dcf57600080fd5b50610dd86121ba565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e1057600080fd5b50610e196121e0565b6040518082815260200191505060405180910390f35b348015610e3b57600080fd5b50610e6860048036036020811015610e5257600080fd5b81019080803590602001909291905050506121e6565b005b348015610e7657600080fd5b50610e7f61226b565b60405180821515815260200191505060405180910390f35b348015610ea357600080fd5b50610f0660048036036040811015610eba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061227e565b6040518082815260200191505060405180910390f35b348015610f2857600080fd5b50610f5760048036036020811015610f3f57600080fd5b81019080803515159060200190929190505050612305565b005b348015610f6557600080fd5b50610fa860048036036020811015610f7c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061239d565b005b348015610fb657600080fd5b50610ff960048036036020811015610fcd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b34801561100757600080fd5b5061104a6004803603602081101561101e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125d5565b005b34801561105857600080fd5b50611061612694565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561109957600080fd5b506110e8600480360360408110156110b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506126ba565b005b3480156110f657600080fd5b506111396004803603602081101561110d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612790565b60405180821515815260200191505060405180910390f35b34801561115d57600080fd5b506111666127e6565b60405180821515815260200191505060405180910390f35b601b5481565b60606040518060400160405280600e81526020017f534849424148455850554c534532000000000000000000000000000000000000815250905090565b6111ca33612790565b61123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b5050505050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6113dd33611704565b61144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b6000600654905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611668576115e7826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128819092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611673848484612941565b90509392505050565b60006116f96116ac600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611954565b6116eb6116da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611954565b60065461336990919063ffffffff16565b61336990919063ffffffff16565b905090565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61176f33612790565b6117e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601a60016101000a81548160ff02191690831515021790555081601b8190555080601a60026101000a81548160ff021916908315150217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b61187d33612790565b6118ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106118fe57600080fd5b8060198190555050565b601a60019054906101000a900460ff1681565b6000611947827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6112e2565b9050919050565b60115481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119a633612790565b611a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611aa25750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611aab57600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611bb957601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611b9c57600080fd5b505af1158015611bb0573d6000803e3d6000fd5b50505050611ca4565b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611c8b57600080fd5b505af1158015611c9f573d6000803e3d6000fd5b505050505b5050565b611cb133612790565b611d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82600f819055508160108190555080601181905550611d4f601054600f546127f990919063ffffffff16565b601281905550611d6c6011546012546127f990919063ffffffff16565b601381905550505050565b60075481565b611d8633612790565b611df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600681526020017f534558504c530000000000000000000000000000000000000000000000000000815250905090565b600f5481565b611e9d33612790565b611f0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f9d338484612941565b905092915050565b611fae33612790565b612020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561209d57600080fd5b505af11580156120b1573d6000803e3d6000fd5b505050505050565b6120c233611704565b612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6121ef33612790565b612261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601a60029054906101000a900460ff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61230e33612790565b612380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6123a633611704565b612418576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61247c33611704565b6124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6125de33612790565b612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6126c333612790565b612735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860009054906101000a900460ff1681565b600080828401905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600083831115829061292e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128f35780820151818401526020810190506128d8565b50505050905090810190601f1680156129205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601a60009054906101000a900460ff161561296a576129638484846133b3565b9050613362565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a0e5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a9657601860009054906101000a900460ff16612a95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b60075482111580612af05750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612bcd5750601a60009054906101000a900460ff16155b8015612be55750601a60019054906101000a900460ff165b8015612c325750601b54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612c4057612c3f613586565b5b612c48613b8e565b158015612ca25750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612cfc576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612cf357600080fd5b612cfb613b9b565b5b612d85826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128819092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e2e5750600960009054906101000a900460ff165b15612e9457600854612e8883600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f990919063ffffffff16565b1115612e9357600080fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f3a5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f445782612f50565b612f4f858585613ba4565b5b9050612fa481600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f990919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661312657601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561310a57600080fd5b505af192505050801561311b575060015b61312457613125565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661326557601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561324957600080fd5b505af192505050801561325a575060015b61326357613264565b5b5b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796019546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156132dc57600080fd5b505af19250505080156132ed575060015b6132f6576132f7565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006133ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612881565b905092915050565b600061343e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128819092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d382600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f990919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6001601a60006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006136236002613615601254613607600f5487613d4c90919063ffffffff16565b613dd290919063ffffffff16565b613dd290919063ffffffff16565b9050600061363a828461336990919063ffffffff16565b90506060600267ffffffffffffffff8111801561365657600080fd5b506040519080825280602002602001820160405280156136855781602001602082028036833780820191505090505b509050308160008151811061369657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561373857600080fd5b505afa15801561374c573d6000803e3d6000fd5b505050506040513d602081101561376257600080fd5b81019080805190602001909291905050508160018151811061378057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561387e578082015181840152602081019050613863565b505050509050019650505050505050600060405180830381600087803b1580156138a757600080fd5b505af11580156138bb573d6000803e3d6000fd5b50505050600047905060006138f06138df6002600f54613dd290919063ffffffff16565b60125461336990919063ffffffff16565b9050600061392e600261392084613912600f5488613d4c90919063ffffffff16565b613dd290919063ffffffff16565b613dd290919063ffffffff16565b905060006139598361394b60105487613d4c90919063ffffffff16565b613dd290919063ffffffff16565b9050601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156139c557600080fd5b505af1935050505080156139d7575060015b6139e0576139e1565b5b6000871115613b6957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015613ad657600080fd5b505af1158015613aea573d6000803e3d6000fd5b50505050506040513d6060811015613b0157600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068288604051808381526020018281526020019250505060405180910390a15b50505050505050506000601a60006101000a81548160ff021916908315150217905550565b6000806017541415905090565b43601781905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613c0457601254613c08565b6013545b90506000613c326064613c248487613d4c90919063ffffffff16565b613dd290919063ffffffff16565b9050613c8681600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f990919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613d41818561336990919063ffffffff16565b925050509392505050565b600080831415613d5f5760009050613dcc565b6000828402905082848281613d7057fe5b0414613dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613ee36021913960400191505060405180910390fd5b809150505b92915050565b6000613e1483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e1c565b905092915050565b60008083118290613ec8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e8d578082015181840152602081019050613e72565b50505050905090810190601f168015613eba5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613ed457fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220e822acfa107096e15ea973a226cd5a28cbaab78528edf7d8fdee003c59c692f264736f6c634300060c003360806040527310ed43c718714eb63d5aa57b78b54704e256024e600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732859e4544c4bb03966803b044a93563bd2d0dd4d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e553480156100df57600080fd5b50604051611bec380380611bec8339818101604052602081101561010257600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561017057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610172565b805b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506119ea806102026000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063f0fc6bca11610059578063f0fc6bca146103cd578063f1e9f1e5146103e4578063ffb2c47914610425578063ffd49c8414610460576100f3565b8063ce7c2ac2146102fa578063d0e30db01461036d578063e2d2e21914610377578063efca2eed146103a2576100f3565b80633a98ef39116100c65780633a98ef39146102285780634fab0ae8146102535780638aee81271461027e578063997664d7146102cf576100f3565b806311ce023d146100f857806314b6ca961461012357806328fd31981461017e5780632d48e896146101e3575b600080fd5b34801561010457600080fd5b5061010d61048b565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061017c6004803603604081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610491565b005b34801561018a57600080fd5b506101cd600480360360208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610750565b6040518082815260200191505060405180910390f35b3480156101ef57600080fd5b506102266004803603604081101561020657600080fd5b81019080803590602001909291908035906020019092919050505061086a565b005b34801561023457600080fd5b5061023d6108d4565b6040518082815260200191505060405180910390f35b34801561025f57600080fd5b506102686108da565b6040518082815260200191505060405180910390f35b34801561028a57600080fd5b506102cd600480360360208110156102a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e0565b005b3480156102db57600080fd5b506102e4610924565b6040518082815260200191505060405180910390f35b34801561030657600080fd5b506103496004803603602081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061092a565b60405180848152602001838152602001828152602001935050505060405180910390f35b610375610954565b005b34801561038357600080fd5b5061038c610e4f565b6040518082815260200191505060405180910390f35b3480156103ae57600080fd5b506103b7610e55565b6040518082815260200191505060405180910390f35b3480156103d957600080fd5b506103e2610e5b565b005b3480156103f057600080fd5b506103f9610ee1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561043157600080fd5b5061045e6004803603602081101561044857600080fd5b8101908080359060200190929190505050610f07565b005b34801561046c57600080fd5b50610475611081565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e957600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561053e5761053d82611087565b5b60008111801561059057506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105a35761059e8261134d565b610605565b6000811480156105f557506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561060457610603826113fc565b5b5b61066e81610660600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546115d590919063ffffffff16565b61161f90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610706600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546116a7565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156107a55760009050610865565b60006107f2600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546116a7565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161084d57600092505050610865565b61086081836115d590919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c257600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ac57600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a3757600080fd5b505afa158015610a4b573d6000803e3d6000fd5b505050506040513d6020811015610a6157600080fd5b810190808051906020019092919050505090506060600267ffffffffffffffff81118015610a8e57600080fd5b50604051908082528060200260200182016040528015610abd5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2857600080fd5b505afa158015610b3c573d6000803e3d6000fd5b505050506040513d6020811015610b5257600080fd5b810190808051906020019092919050505081600081518110610b7057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610bda57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610cd2578082015181840152602081019050610cb7565b50505050905001955050505050506000604051808303818588803b158015610cf957600080fd5b505af1158015610d0d573d6000803e3d6000fd5b50505050506000610dea83600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610da157600080fd5b505afa158015610db5573d6000803e3d6000fd5b505050506040513d6020811015610dcb57600080fd5b81019080805190602001909291905050506115d590919063ffffffff16565b9050610e018160095461161f90919063ffffffff16565b600981905550610e44610e33600854610e2584600c546116d990919063ffffffff16565b61175f90919063ffffffff16565b600b5461161f90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610e64336117a9565b610ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6f20736f6f6e2e204e65656420746f20776169742100000000000000000081525060200191505060405180910390fd5b610edf33611087565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5f57600080fd5b600060048054905090506000811415610f78575061107e565b60008060005a90505b8482108015610f8f57508383105b156110795783600f5410610fa6576000600f819055505b610fe86004600f5481548110610fb857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117a9565b156110305761102f6004600f5481548110610fff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611087565b5b6110556110465a836115d590919063ffffffff16565b8361161f90919063ffffffff16565b91505a9050600f600081548092919060010191905055508280600101935050610f81565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156110d75761134a565b60006110e282610750565b905060008111156113485761110281600a5461161f90919063ffffffff16565b600a81905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561119b57600080fd5b505af11580156111af573d6000803e3d6000fd5b505050506040513d60208110156111c557600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461161f90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611301600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546116a7565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061141157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061148857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061152957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061159d57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061161783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061180d565b905092915050565b60008082840190508381101561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006116d2600c546116c4600b54856116d990919063ffffffff16565b61175f90919063ffffffff16565b9050919050565b6000808314156116ec5760009050611759565b60008284029050828482816116fd57fe5b0414611754576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119946021913960400191505060405180910390fd5b809150505b92915050565b60006117a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118cd565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156118065750600e5461180483610750565b115b9050919050565b60008383111582906118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561187f578082015181840152602081019050611864565b50505050905090810190601f1680156118ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561193e578082015181840152602081019050611923565b50505050905090810190601f16801561196b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161198557fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220070c11f9aab31bdb0eee979bdd1d5d8b13a5b4d1e5a44044176f5aba40008bc564736f6c634300060c0033

Deployed ByteCode Sourcemap

11467:11007:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13052:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14240:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18312:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15093:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20920:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14502:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12574:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17928:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14684:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12495:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10837:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14416:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17121:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12293:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12399:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12136:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17613:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12951:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15317:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12532:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14834:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16233:376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16617:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12014:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15729:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12073:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14596:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12344:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14326:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12457:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15963:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12731:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17764:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17405:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10510:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12830:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12759:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12655:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12609:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15618:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12998:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14945:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15843:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10680:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11237:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16972:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12700:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16094:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11011:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12791:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13052:54;;;;:::o;14240:80::-;14288:13;14312:5;;;;;;;;;;;;;;;;;14305:12;;14240:80;:::o;18312:162::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18408:19:::1;;;;;;;;;;;:34;;;18443:22;18408:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18312:162:::0;:::o;15093:216::-;15168:4;15220:6;15185:11;:23;15197:10;15185:23;;;;;;;;;;;;;;;:32;15209:7;15185:32;;;;;;;;;;;;;;;:41;;;;15263:7;15242:37;;15251:10;15242:37;;;15272:6;15242:37;;;;;;;;;;;;;;;;;;15297:4;15290:11;;15093:216;;;;:::o;20920:98::-;10226:19;10234:10;10226:7;:19::i;:::-;10218:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21001:9:::1;20987:11;;:23;;;;;;;;;;;;;;;;;;20920:98:::0;:::o;14502:88::-;14557:7;14575:12;;14568:19;;14502:88;:::o;12574:28::-;;;;:::o;17928:372::-;18028:4;18101:2;18058:11;:19;18070:6;18058:19;;;;;;;;;;;;;;;:31;18078:10;18058:31;;;;;;;;;;;;;;;;:46;18055:180;;18154:69;18190:6;18154:69;;;;;;;;;;;;;;;;;:11;:19;18166:6;18154:19;;;;;;;;;;;;;;;:31;18174:10;18154:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18120:11;:19;18132:6;18120:19;;;;;;;;;;;;;;;:31;18140:10;18120:31;;;;;;;;;;;;;;;:103;;;;18055:180;18252:40;18266:6;18274:9;18285:6;18252:13;:40::i;:::-;18245:47;;17928:372;;;;;:::o;14684:142::-;14737:7;14764:54;14802:15;14812:4;;;;;;;;;;;14802:9;:15::i;:::-;14764:33;14781:15;14791:4;;;;;;;;;;;14781:9;:15::i;:::-;14764:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14757:61;;14684:142;:::o;12495:30::-;;;;:::o;10837:103::-;10892:4;10927:5;;;;;;;;;;;10916:16;;:7;:16;;;10909:23;;10837:103;;;:::o;14416:80::-;14468:5;11670:1;14477:16;;14416:80;:::o;17121:276::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17278:14:::1;17253:21;;:39;;;;;;;;;;;;;;;;;;17319:16;17303:13;:32;;;;17374:15;17346:25;;:43;;;;;;;;;;;;;;;;;;17121:276:::0;;;:::o;12293:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12399:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12136:33::-;;;;;;;;;;;;;:::o;17613:139::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17706:6:::1;17700:3;:12;17692:21;;;::::0;::::1;;17741:3;17724:14;:20;;;;17613:139:::0;:::o;12951:40::-;;;;;;;;;;;;;:::o;15317:116::-;15372:4;15396:29;15404:7;15421:2;15396:7;:29::i;:::-;15389:36;;15317:116;;;:::o;12532:33::-;;;;:::o;14834:105::-;14900:7;14918:9;:18;14928:7;14918:18;;;;;;;;;;;;;;;;14911:25;;14834:105;;;:::o;16233:376::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16351:4:::1;16333:23;;:6;:23;;;;:41;;;;;16370:4;;;;;;;;;;;16360:14;;:6;:14;;;;16333:41;16325:50;;;::::0;::::1;;16413:6;16386:16;:24;16403:6;16386:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16443:6;16440:162;;;16465:19;;;;;;;;;;;:28;;;16494:6;16502:1;16465:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16440:162;;;16535:19;;;;;;;;;;;:28;;;16564:6;16572:9;:17;16582:6;16572:17;;;;;;;;;;;;;;;;16535:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16440:162;16233:376:::0;;:::o;16617:347::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16749:9:::1;16734:12;:24;;;;16782:12;16769:10;:25;;;;16822:15;16805:14;:32;;;;16869:28;16886:10;;16869:12;;:16;;:28;;;;:::i;:::-;16858:8;:39;;;;16928:28;16941:14;;16928:8;;:12;;:28;;;;:::i;:::-;16908:17;:48;;;;16617:347:::0;;;:::o;12014:52::-;;;;:::o;15729:106::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15819:8:::1;15805:10;:22;;;;15729:106:::0;:::o;12073:50::-;;;;:::o;14596:78::-;14648:7;14666:5;;;;;;;;;;;14659:12;;14596:78;:::o;12344:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;14326:84::-;14376:13;14400:7;;;;;;;;;;;;;;;;;14393:14;;14326:84;:::o;12457:31::-;;;;:::o;15963:123::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16072:6:::1;16050:11;:19;16062:6;16050:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15963:123:::0;;:::o;12731:19::-;;;;;;;;;;;;;:::o;17764:156::-;17844:4;17868:44;17882:10;17894:9;17905:6;17868:13;:44::i;:::-;17861:51;;17764:156;;;;:::o;17405:200::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17521:19:::1;;;;;;;;;;;:43;;;17565:11;17578:18;17521:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17405:200:::0;;:::o;10510:94::-;10226:19;10234:10;10226:7;:19::i;:::-;10218:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10592:4:::1;10570:14:::0;:19:::1;10585:3;10570:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10510:94:::0;:::o;12830:46::-;;;;;;;;;;;;;:::o;12759:25::-;;;;:::o;12655:36::-;;;;;;;;;;;;;:::o;12609:37::-;;;;:::o;15618:103::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15705:8:::1;15690:12;:23;;;;15618:103:::0;:::o;12998:45::-;;;;;;;;;;;;;:::o;14945:133::-;15029:7;15047:11;:19;15059:6;15047:19;;;;;;;;;;;;;;;:28;15067:7;15047:28;;;;;;;;;;;;;;;;15040:35;;14945:133;;;;:::o;15843:108::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15935:8:::1;15918:14;;:25;;;;;;;;;;;;;;;;;;15843:108:::0;:::o;10680:97::-;10226:19;10234:10;10226:7;:19::i;:::-;10218:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10764:5:::1;10742:14;:19;10757:3;10742:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10680:97:::0;:::o;11237:173::-;10226:19;10234:10;10226:7;:19::i;:::-;10218:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11321:3:::1;11313:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;11357:4;11335:14:::0;:19:::1;11350:3;11335:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11377:25;11398:3;11377:25;;;;;;;;;;;;;;;;;;;;11237:173:::0;:::o;16972:141::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17085:20:::1;17061:21;;:44;;;;;;;;;;;;;;;;;;16972:141:::0;:::o;12700:24::-;;;;;;;;;;;;;:::o;16094:131::-;10395:24;10408:10;10395:12;:24::i;:::-;10387:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16211:6:::1;16185:15;:23;16201:6;16185:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16094:131:::0;;:::o;11011:107::-;11067:4;11091:14;:19;11106:3;11091:19;;;;;;;;;;;;;;;;;;;;;;;;;11084:26;;11011:107;;;:::o;12791:30::-;;;;;;;;;;;;;:::o;148:179::-;206:7;226:9;242:1;238;:5;226:17;;267:1;262;:6;;254:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;318:1;311:8;;;148:179;;;;:::o;479:190::-;565:7;598:1;593;:6;;601:12;585:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:9;641:1;637;:5;625:17;;660:1;653:8;;;479:190;;;;;:::o;18482:1641::-;18574:4;18604:16;;;;;;;;;;;18601:73;;;18630:41;18645:6;18653:9;18664:6;18630:14;:41::i;:::-;18623:48;;;;18601:73;18690:14;:22;18705:6;18690:22;;;;;;;;;;;;;;;;;;;;;;;;;18689:23;:53;;;;;18717:14;:25;18732:9;18717:25;;;;;;;;;;;;;;;;;;;;;;;;;18716:26;18689:53;18686:128;;;18766:11;;;;;;;;;;;18758:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18686:128;18844:12;;18834:6;:22;;:49;;;;18860:15;:23;18876:6;18860:23;;;;;;;;;;;;;;;;;;;;;;;;;18834:49;18826:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18935:4;;;;;;;;;;;18921:18;;:10;:18;;;;:39;;;;;18944:16;;;;;;;;;;;18943:17;18921:39;:64;;;;;18964:21;;;;;;;;;;;18921:64;:109;;;;;19017:13;;18989:9;:24;19007:4;18989:24;;;;;;;;;;;;;;;;:41;;18921:109;18918:128;;;19033:10;:8;:10::i;:::-;18918:128;19062:10;:8;:10::i;:::-;19061:11;:32;;;;;19089:4;;;;;;;;;;;19076:17;;:9;:17;;;19061:32;19058:117;;;19138:1;19118:9;:17;19128:6;19118:17;;;;;;;;;;;;;;;;:21;19110:30;;;;;;19155:8;:6;:8::i;:::-;19058:117;19234:53;19256:6;19234:53;;;;;;;;;;;;;;;;;:9;:17;19244:6;19234:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19214:9;:17;19224:6;19214:17;;;;;;;;;;;;;;;:73;;;;19312:15;:26;19328:9;19312:26;;;;;;;;;;;;;;;;;;;;;;;;;19311:27;:45;;;;;19342:14;;;;;;;;;;;19311:45;19308:141;;;19426:10;;19390:32;19415:6;19390:9;:20;19400:9;19390:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;19382:55;;;;;;19308:141;19461:19;19484:11;:19;19496:6;19484:19;;;;;;;;;;;;;;;;;;;;;;;;;19483:20;:47;;;;;19508:11;:22;19520:9;19508:22;;;;;;;;;;;;;;;;;;;;;;;;;19507:23;19483:47;:93;;19570:6;19483:93;;;19533:34;19541:6;19549:9;19560:6;19533:7;:34::i;:::-;19483:93;19461:115;;19610:37;19635:11;19610:9;:20;19620:9;19610:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19587:9;:20;19597:9;19587:20;;;;;;;;;;;;;;;:60;;;;19693:16;:24;19710:6;19693:24;;;;;;;;;;;;;;;;;;;;;;;;;19689:127;;19738:19;;;;;;;;;;;:28;;;19767:6;19775:9;:17;19785:6;19775:17;;;;;;;;;;;;;;;;19738:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19734:71;;;;;;19689:127;19832:16;:27;19849:9;19832:27;;;;;;;;;;;;;;;;;;;;;;;;;19828:137;;19880:19;;;;;;;;;;;:28;;;19909:9;19920;:20;19930:9;19920:20;;;;;;;;;;;;;;;;19880:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19876:77;;;;;;19828:137;19981:19;;;;;;;;;;;:27;;;20009:14;;19981:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19977:59;;;;;;20070:9;20053:40;;20062:6;20053:40;;;20081:11;20053:40;;;;;;;;;;;;;;;;;;20111:4;20104:11;;;18482:1641;;;;;;:::o;335:136::-;393:7;420:43;424:1;427;420:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;413:50;;335:136;;;;:::o;20135:330::-;20228:4;20265:53;20287:6;20265:53;;;;;;;;;;;;;;;;;:9;:17;20275:6;20265:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20245:9;:17;20255:6;20245:17;;;;;;;;;;;;;;;:73;;;;20352:32;20377:6;20352:9;:20;20362:9;20352:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20329:9;:20;20339:9;20329:20;;;;;;;;;;;;;;;:55;;;;20417:9;20400:35;;20409:6;20400:35;;;20428:6;20400:35;;;;;;;;;;;;;;;;;;20453:4;20446:11;;20135:330;;;;;:::o;21026:1378::-;13170:4;13151:16;;:23;;;;;;;;;;;;;;;;;;21088::::1;21114:9;:24;21132:4;21114:24;;;;;;;;;;;;;;;;21088:50;;21149:23;21175:54;21227:1;21175:47;21213:8;;21175:33;21195:12;;21175:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;21149:80;;21240:20;21263:36;21283:15;21263;:19;;:36;;;;:::i;:::-;21240:59;;21312:21;21350:1;21336:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21312:40;;21381:4;21363;21368:1;21363:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21407:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;21397:4;21402:1;21397:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21433:6;;;;;;;;;;;:57;;;21505:12;21532:1;21548:4;21575;21595:15;21433:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21634:17;21654:21;21634:41;;21688:19;21710:33;21723:19;21740:1;21723:12;;:16;;:19;;;;:::i;:::-;21710:8;;:12;;:33;;;;:::i;:::-;21688:55;;21764:26;21793:51;21842:1;21793:44;21825:11;21793:27;21807:12;;21793:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;21764:80;;21855:27;21885:42;21915:11;21885:25;21899:10;;21885:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;21855:72;;21944:19;;;;;;;;;;;:27;;;21979:19;21944:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21940:73;;;;;;22056:1;22038:15;:19;22035:362;;;22073:6;;;;;;;;;;;:22;;;22103:18;22149:4;22173:15;22207:1;22227::::0;22247:21:::1;;;;;;;;;;;22287:15;22073:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22337:48;22349:18;22369:15;22337:48;;;;;;;;;;;;;;;;;;;;;;;;22035:362;13185:1;;;;;;;;13216:5:::0;13197:16;;:24;;;;;;;;;;;;;;;;;;21026:1378::o;15441:90::-;15484:4;15522:1;15508:10;;:15;;15501:22;;15441:90;:::o;15539:71::-;15590:12;15577:10;:25;;;;15539:71::o;20473:439::-;20559:7;20589:21;20621:9;20613:17;;:4;;;;;;;;;;;:17;;;:48;;20653:8;;20613:48;;;20633:17;;20613:48;20589:72;;20672:17;20692:34;20722:3;20692:25;20703:13;20692:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20672:54;;20766:39;20795:9;20766;:24;20784:4;20766:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20739:9;:24;20757:4;20739:24;;;;;;;;;;;;;;;:66;;;;20846:4;20821:42;;20830:6;20821:42;;;20853:9;20821:42;;;;;;;;;;;;;;;;;;20883:21;20894:9;20883:6;:10;;:21;;;;:::i;:::-;20876:28;;;;20473:439;;;;;:::o;677:224::-;735:7;764:1;759;:6;755:25;;;776:1;769:8;;;;755:25;790:9;806:1;802;:5;790:17;;835:1;830;826;:5;;;;;;:10;818:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:1;885:8;;;677:224;;;;;:::o;909:132::-;967:7;994:39;998:1;1001;994:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;987:46;;909:132;;;;:::o;1049:189::-;1135:7;1167:1;1163;:5;1170:12;1155:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1194:9;1210:1;1206;:5;;;;;;1194:17;;1229:1;1222:8;;;1049:189;;;;;:::o

Swarm Source

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