Contract 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x39c61d515ed06694e46afaf570de160ee20453557f93e89e4b71bb31c42b885eApprove132419762021-12-06 10:51:2244 mins ago0x005ffa4ea81289203ccef065c381c160ab341512 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000311003
0x4595a29ae16e38692abd0b04632e7b5e33e9c5304004efc196f982b2fee70fb4Approve132416392021-12-06 10:34:281 hr 1 min ago0xeedb09e7905782b54f1026461941897977185860 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0x70eed75300cbd2943ea4ec9aca33c45b385ce3b18752b3d7376d2d97c9a61986Approve132039292021-12-05 2:25:021 day 9 hrs ago0x080b96c8d031e11645c1b5a8f4010593f587de4d IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0x996ed1e93452887a35324bd082cfa99b25a4b1043a9424077750ab0b5221c5cbApprove132015082021-12-05 0:23:391 day 11 hrs ago0x149bb9f9f1356637b17daf3175f3372ea11ddbef IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0x8f1a696c2a69156d5688ea3c5e6a3b3c93be800898faba8e35c69ff0c8227919Approve131981862021-12-04 21:37:321 day 13 hrs ago0x88c4930bc8e416fd2d0d590a5b3334f222a6ee8b IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000311003
0x886f0667c91efab8d6b39f075d93c7478ad071c76ee27f74d108e73d05dd96d8Transfer131951852021-12-04 19:07:291 day 16 hrs ago0x9e4f22c6fccfa9dbbd4cf7795762e0816bdf8750 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.00481434
0x887fc70e54bfdb46d2217c207b7e5b1f1d60020b75320562723b3e1c88e415eaApprove131930242021-12-04 17:18:461 day 18 hrs ago0x5ce1bd1ddc19c6e7c645745edc305e1201caf010 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0x2f79c6c42eabc35ecdf8ea7483702c8af8889906dbbe25e488c252d212f97bebApprove131894032021-12-04 14:15:511 day 21 hrs ago0x509228837c4f1b3324910379e468668cfe65b88f IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0xb0f4547231b398b1642562d9d2dcc0dca04080922e991253052fa5181f3d8c8bApprove131318852021-12-02 13:37:513 days 21 hrs ago0x38c72e8d6d1a94bcfc052e97b9a6ad1361f6e175 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0xc5b0f91ca891576227050adba49ee47d5511dded4f7327e44d9ed61b4f44d816Approve131312052021-12-02 13:03:213 days 22 hrs ago0x0089247208525a261f6f6266972db69e094fecd5 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0x01673de2846263933ad56e65e3489f9cdbdf0ebd3cd2fbbb5b64d5196a3f916fApprove131308672021-12-02 12:46:023 days 22 hrs ago0x7eaf4442c5f7b341a4d107d35860622f8472dc84 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0xa3d07cb89e04ba8fff9d08a2f7a0ffc80bbfef7699b54a5a3c9f2c26a36ff07dTransfer131159462021-12-01 23:38:514 days 11 hrs ago0x4973e34521f930b4e7c362dd9ec1de09b2eef528 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.004302415
0x7d0ab168794aedb56a90a0dcaf2e2aeeebbb8f7549baed26fd2f861de1444e25Approve131079052021-12-01 16:47:314 days 18 hrs ago0x8054178c1d176f36f3690a4062fdff89854a3ba1 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0x1d88e8f57929415f4300520cf3740699da69e451e28fc89f93e61d29ba09db93Approve131021072021-12-01 11:20:475 days 14 mins ago0x6a549da65d11a8a78fb46c555f1a9c7f06340354 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000302748
0x438b04943e27819ec5d7cd3c936c119d4cddd15eca13224e9acae80edb021458Approve131020352021-12-01 11:15:295 days 20 mins ago0x6a549da65d11a8a78fb46c555f1a9c7f06340354 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000533148
0x964c747f4f4ff85f8f9232b5f141d245c964f9433f51b349229b83b8e5dd68e4Approve130883562021-11-30 22:50:245 days 12 hrs ago0xe74cc9fda92a83263c4434cb898cdca9b15eaa00 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0xec0ee22d1a0f8f3fb1b7d813c35b2ca517f34cdb4c9272efd50a7e25bc1e2580Approve130625342021-11-29 23:56:146 days 11 hrs ago0x8ea66e51748ff9cffd577b2d7dfc6fbe5b3f3691 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0xc6808c67ee216b9b2bf4fcdbc4596f529120012f95431250e0c3e33b6fe95ac0Transfer130607592021-11-29 22:20:436 days 13 hrs ago0x7300f5c394d02cd2ed5f445f7d9293826012a201 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.005149995
0x830e18653c01eae9e64d32dac2df7c35d3545f6a792d35e9204e398b026dc025Approve130364802021-11-29 0:01:227 days 11 hrs ago0x3f703f56c9fb6595fbbd2bad67a252e44f446b3e IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0xcc7dfedfdcd4359eaa0be4806d87e072c644c3a03a64fcd1d67f51d21a4d932bApprove130288972021-11-28 17:13:587 days 18 hrs ago0xa71021656f5551ecc6970b8a82432b14512ce248 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000072615
0x902c6575fd3fb7cf76183c25934116e1ab03255ee7207b384eb37d58550a03b0Approve130280862021-11-28 16:30:117 days 19 hrs ago0x9e4f22c6fccfa9dbbd4cf7795762e0816bdf8750 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0x1041318cc04f1574223e925c0c922a17fbed8f81efa55f514faf81af1b1baf07Approve130265972021-11-28 15:10:237 days 20 hrs ago0xcf52e4332bed01687a94ea95bbe024f044ada920 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000222145
0xd8ea32025fa3b3b7afbeb69be13ed0f181b2cc0e730b6f6c41b5afffcd1d9a23Transfer130230542021-11-28 11:55:397 days 23 hrs ago0x7041e5298f5fefb8529bb2a5aba7e921e96e86b6 IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.0005
0x4b3000bd5ccb9a5634f7f74dbdf47c7f38abfd24f45b884a13284632e072c021Approve130222072021-11-28 11:09:528 days 25 mins ago0xde4587df649a23ca4ad5ce65b76d7d938e04148e IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000087138
0x59784f0cd2720c2acade9ebac543624801f52911bf00d34860b7572bd981d785Approve130221262021-11-28 11:05:248 days 30 mins ago0xde4587df649a23ca4ad5ce65b76d7d938e04148e IN  0xffa99969608fd3c1ddf68b28d7db2e073c33fd910 BNB0.000266574
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x03b0bb070e9e58e519c2ca3517561e716a6ff756ca6e28721dac2837eef5840c132416552021-12-06 10:35:161 hr ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.004011345941488405 BNB
0x03b0bb070e9e58e519c2ca3517561e716a6ff756ca6e28721dac2837eef5840c132416552021-12-06 10:35:161 hr ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013371153138294684 BNB
0x03b0bb070e9e58e519c2ca3517561e716a6ff756ca6e28721dac2837eef5840c132416552021-12-06 10:35:161 hr ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020056729707442026 BNB
0x4804c909a3921073e18456dd28bac73ee3b853dcbec923372b722a6a3ba69103132166782021-12-05 13:08:5822 hrs 26 mins ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.004020779584999307 BNB
0x4804c909a3921073e18456dd28bac73ee3b853dcbec923372b722a6a3ba69103132166782021-12-05 13:08:5822 hrs 26 mins ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013402598616664356 BNB
0x4804c909a3921073e18456dd28bac73ee3b853dcbec923372b722a6a3ba69103132166782021-12-05 13:08:5822 hrs 26 mins ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020103897924996535 BNB
0xd3ad72e61ab22f6b8320571b6851d0873967bfb581e33d85acc7758563e31d22132034402021-12-05 2:00:311 day 9 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013402598616664356 BNB
0xd3ad72e61ab22f6b8320571b6851d0873967bfb581e33d85acc7758563e31d22132034402021-12-05 2:00:311 day 9 hrs ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020103897924996535 BNB
0x886f0667c91efab8d6b39f075d93c7478ad071c76ee27f74d108e73d05dd96d8131951852021-12-04 19:07:291 day 16 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.004024623606825054 BNB
0x886f0667c91efab8d6b39f075d93c7478ad071c76ee27f74d108e73d05dd96d8131951852021-12-04 19:07:291 day 16 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013415412022750181 BNB
0x886f0667c91efab8d6b39f075d93c7478ad071c76ee27f74d108e73d05dd96d8131951852021-12-04 19:07:291 day 16 hrs ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020123118034125272 BNB
0x0da8df33a01ad25e00a43d6d41c477672855d073becab1221b9dce63f4fdc258131930432021-12-04 17:19:431 day 18 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.004033704065200229 BNB
0x0da8df33a01ad25e00a43d6d41c477672855d073becab1221b9dce63f4fdc258131930432021-12-04 17:19:431 day 18 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013445680217334098 BNB
0x0da8df33a01ad25e00a43d6d41c477672855d073becab1221b9dce63f4fdc258131930432021-12-04 17:19:431 day 18 hrs ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020168520326001147 BNB
0x7f2cb228e779a61e57fb29b7ee206f3aff7bb1aadfc94072876431394721e189131894532021-12-04 14:18:221 day 21 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.0040379822381535 BNB
0x7f2cb228e779a61e57fb29b7ee206f3aff7bb1aadfc94072876431394721e189131894532021-12-04 14:18:221 day 21 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013459940793845002 BNB
0x7f2cb228e779a61e57fb29b7ee206f3aff7bb1aadfc94072876431394721e189131894532021-12-04 14:18:221 day 21 hrs ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020189911190767504 BNB
0xc903598b44fba46af81abdd2919381aa4b1bd27352a31c4f4465aa7d3d095822131769332021-12-04 3:37:242 days 7 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.004048929165743292 BNB
0xc903598b44fba46af81abdd2919381aa4b1bd27352a31c4f4465aa7d3d095822131769332021-12-04 3:37:242 days 7 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013496430552477641 BNB
0xc903598b44fba46af81abdd2919381aa4b1bd27352a31c4f4465aa7d3d095822131769332021-12-04 3:37:242 days 7 hrs ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020244645828716462 BNB
0xb9d9a83215cecdfa82f131ecbaa4894b3776dbb0e756406443c10540d21437b5131530142021-12-03 7:23:553 days 4 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.004054879561611205 BNB
0xb9d9a83215cecdfa82f131ecbaa4894b3776dbb0e756406443c10540d21437b5131530142021-12-03 7:23:553 days 4 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013516265205370684 BNB
0xb9d9a83215cecdfa82f131ecbaa4894b3776dbb0e756406443c10540d21437b5131530142021-12-03 7:23:553 days 4 hrs ago PancakeSwap: Router v2 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910.020274397808056026 BNB
0xfabc64c29b4118dc6c3f7e69cab9a1431b0bc632b4c969c6f269ffd017c7736f131409582021-12-02 21:16:533 days 14 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd910x89f06fc460840513ba142eff7a879adaac2bbc790.004060532418425126 BNB
0xfabc64c29b4118dc6c3f7e69cab9a1431b0bc632b4c969c6f269ffd017c7736f131409582021-12-02 21:16:533 days 14 hrs ago 0xffa99969608fd3c1ddf68b28d7db2e073c33fd91 0xb2852b52ac83f383f7b382d73ab19c676b42b9800.013535108061417088 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KINGCARDANO

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-09-06
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.6;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() public {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function 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,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

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

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

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution,
        uint256 _minimumTokenBalanceForDividends
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;

    function claim() external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IBEP20 ADA = IBEP20(0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter router;

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

    mapping(address => Share) public shares;

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

    uint256 public minPeriod = 6 hours; // min 6 hour delay
    uint256 public minDistribution = 1 * (10**18); // 1 ADA minimum auto send
    uint256 public minimumTokenBalanceForDividends = 320 * (10**9); // user must hold 1000,000 token

    uint256 currentIndex;

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

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

    constructor() {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }

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

    function setShare(address shareholder, uint256 amount)
        external
        override
        onlyToken
    {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (
            amount > minimumTokenBalanceForDividends &&
            shares[shareholder].amount == 0
        ) {
            addShareholder(shareholder);
        } else if (
            amount <= minimumTokenBalanceForDividends &&
            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 getAccount(address _account)
        public
        view
        returns (
            address account,
            uint256 pendingReward,
            uint256 totalRealised,
            uint256 lastClaimTime,
            uint256 nextClaimTime,
            uint256 secondsUntilAutoClaimAvailable
        )
    {
        account = _account;
        pendingReward = getUnpaidEarnings(account);
        totalRealised = shares[_account].totalRealised;
        lastClaimTime = shareholderClaims[_account];
        nextClaimTime = lastClaimTime + minPeriod;
        secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp
            ? nextClaimTime.sub(block.timestamp)
            : 0;
    }

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

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

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

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

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

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

        if (shareholderCount == 0) {
            return;
        }

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

        uint256 iterations = 0;

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

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

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

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

    function claim() external override {
        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();
    }
}

contract SafeToken is Ownable {
    address payable safeManager;

    constructor() {
        safeManager = payable(msg.sender);
    }

    function setSafeManager(address payable _safeManager) public onlyOwner {
        safeManager = _safeManager;
    }

    function withdraw(address _token, uint256 _amount) external {
        require(msg.sender == safeManager);
        IBEP20(_token).transfer(safeManager, _amount);
    }

    function withdrawBNB(uint256 _amount) external {
        require(msg.sender == safeManager);
        safeManager.transfer(_amount);
    }
}

contract LockToken is Ownable {
    bool public isOpen = false;
    mapping(address => bool) private _whiteList;
    modifier open(address from, address to) {
        require(isOpen || _whiteList[from] || _whiteList[to], "Not Open");
        _;
    }

    constructor() {
        _whiteList[msg.sender] = true;
        _whiteList[address(this)] = true;
    }

    function openTrade() external onlyOwner {
        isOpen = true;
    }

    function includeToWhiteList(address[] memory _users) external onlyOwner {
        for (uint8 i = 0; i < _users.length; i++) {
            _whiteList[_users[i]] = true;
        }
    }
}

contract KINGCARDANO is Ownable, IBEP20, SafeToken, LockToken {
    using SafeMath for uint256;

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

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) excludeFee;
    mapping(address => bool) excludeMaxTxn;
    mapping(address => bool) excludeDividend;
    mapping(address => bool) blackList;

    uint256 public _maxTxAmount = _totalSupply;
    uint256 public buyBackUpperLimit = 2 * 10**16;

    uint256 burnFee = 0;
    uint256 reflectionFee = 1000;
    uint256 marketingFee = 300;
    uint256 totalFee = burnFee.add(reflectionFee).add(marketingFee);
    uint256 feeDenominator = 10000;

    string constant _name = "King Cardano";
    string constant _symbol = "KADA";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 32000000 * (10**_decimals);

    address public marketing;

    IDEXRouter public router;
    address pair;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    bool public buyBackEnable = true;
    uint256 public swapThreshold = _totalSupply / 5000; // 0.02%
    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = ~uint256(0);

        distributor = new DividendDistributor();

        address owner_ = msg.sender;

        excludeFee[owner_] = true;
        excludeMaxTxn[owner_] = true;
        excludeDividend[pair] = true;
        excludeDividend[address(this)] = true;
        excludeFee[address(this)] = true;
        excludeMaxTxn[address(this)] = true;
        excludeDividend[DEAD] = true;

        marketing = owner_;

        _balances[owner_] = _totalSupply;
        emit Transfer(address(0), owner_, _totalSupply);
    }

    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(0)) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal open(sender, recipient) returns (bool) {
        require(!blackList[sender], "Address is blacklisted");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        checkTxLimit(sender, amount);

        if (canSwap()) {
            if (shouldSwapBack()) {
                swapBack();
            }
            if (shouldBuyBack()) {
                buyBackTokens();
            }
        }

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

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

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

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

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

    function canSwap() internal view returns (bool) {
        return msg.sender != pair && !inSwap;
    }

    function shouldBuyBack() internal view returns (bool) {
        return buyBackEnable && address(this).balance >= uint256(1 * 10**18);
    }

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

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (excludeFee[sender] || excludeFee[recipient]) return amount;

        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;

        try
            router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                swapThreshold,
                0,
                path,
                address(this),
                block.timestamp
            )
        {
            uint256 amountBNB = address(this).balance.sub(balanceBefore);
            uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(
                totalFee
            );
            uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(
                totalFee
            );

            try distributor.deposit{value: amountBNBReflection}() {} catch {}
            payable(marketing).call{value: amountBNBMarketing, gas: 30000}("");
            emit SwapBackSuccess(swapThreshold);
        } catch Error(string memory e) {
            emit SwapBackFailed(
                string(abi.encodePacked("SwapBack failed with error ", e))
            );
        } catch {
            emit SwapBackFailed(
                "SwapBack failed without an error message from pancakeSwap"
            );
        }
    }

    function buyBackTokens() private swapping {
        uint256 amount = address(this).balance;
        if (amount > buyBackUpperLimit) {
            amount = buyBackUpperLimit;
        }

        if (amount > 0) {
            swapBnbForTokens(amount);
        }
    }

    function swapBnbForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        // make the swap
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amount
        }(
            0, // accept any amount of Tokens
            path,
            DEAD, // dead address
            block.timestamp.add(300)
        );

        emit SwapBNBForTokens(amount, path);
    }

    function setMaxTxn(uint256 amount) external onlyOwner {
        _maxTxAmount = amount;
    }

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

    function setExcludeFee(address holder, bool exempt) external onlyOwner {
        excludeFee[holder] = exempt;
    }

    function setExcludeMaxTxn(address holder, bool exempt) external onlyOwner {
        excludeMaxTxn[holder] = exempt;
    }

    function setFees(
        uint256 _burnFee,
        uint256 _reflectionFee,
        uint256 _marketingFee,
        uint256 _feeDenominator
    ) external onlyOwner {
        burnFee = _burnFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _burnFee.add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee <= feeDenominator / 5, "Invalid Fee");
    }

    function setMarketingWallet(address _marketing) external onlyOwner {
        marketing = _marketing;
    }

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

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution,
        uint256 _minimumTokenBalanceForDividends
    ) external onlyOwner {
        distributor.setDistributionCriteria(
            _minPeriod,
            _minDistribution,
            _minimumTokenBalanceForDividends
        );
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas <= 1000000);
        distributorGas = gas;
    }

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

    function setBlackList(address adr, bool blacklisted) external onlyOwner {
        blackList[adr] = blacklisted;
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

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

    event SwapBackSuccess(uint256 amount);
    event SwapBackFailed(string message);
    event SwapBNBForTokens(uint256 amount, address[] path);
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapBNBForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"SwapBackFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapBackSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_minimumTokenBalanceForDividends","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setExcludeDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setExcludeMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_safeManager","type":"address"}],"name":"setSafeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001805460ff60a01b191690556003805473bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6001600160a01b0319918216179091556004805461dead908316179055600580549091169055601354600c5566470de4df820000600d556000600e8190556103e8600f81905561012c6010819055620000ab92909162000097919062000413602090811b6200107117901c565b6200041360201b620010711790919060201c565b601155612710601255620000c26009600a62000542565b620000d2906301e848006200060e565b60138190556207a1206018556019805461ffff1916610101179055620000fc9061138890620004d6565b601a553480156200010c57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018054336001600160a01b0319918216811783556000908152600260209081526040808320805460ff199081168717909155308452928190208054909316909417909155601580547310ed43c718714eb63d5aa57b78b54704e256024e931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f919062000490565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200026c57600080fd5b505af115801562000281573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a7919062000490565b601680546001600160a01b0319166001600160a01b039283161790553060009081526007602090815260408083206015549094168352929052819020600019905551620002f49062000482565b604051809103906000f08015801562000311573d6000803e3d6000fd5b50601780546001600160a01b03199081166001600160a01b0393841617909155336000818152600860208181526040808420805460ff199081166001908117909255600980855283872080548316841790556016548a168752600a8086528488208054841685179055308852848820805484168517905595855283872080548316841790558452828620805482168317905560045490981685529282528084208054909716909217909555601480549094168317909355601354828252600685528382208190559251928352909283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000646565b600080620004228385620004bb565b905083811015620004795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b6110e48062002aaf83390190565b600060208284031215620004a357600080fd5b81516001600160a01b03811681146200047957600080fd5b60008219821115620004d157620004d162000630565b500190565b600082620004f457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200053a5781600019048211156200051e576200051e62000630565b808516156200052c57918102915b93841c9390800290620004fe565b509250929050565b60006200055360ff8416836200055a565b9392505050565b6000826200056b575060016200047c565b816200057a575060006200047c565b81600181146200059357600281146200059e57620005be565b60019150506200047c565b60ff841115620005b257620005b262000630565b50506001821b6200047c565b5060208310610133831016604e8410600b8410161715620005e3575081810a6200047c565b620005ef8383620004f9565b806000190482111562000606576200060662000630565b029392505050565b60008160001904831182151516156200062b576200062b62000630565b500290565b634e487b7160e01b600052601160045260246000fd5b61245980620006566000396000f3fe6080604052600436106102135760003560e01c8063715018a611610118578063b1c947f3116100a0578063f3fef3a31161006f578063f3fef3a314610659578063f887ea4014610679578063fb201b1d14610699578063fb538675146106ae578063fc588c04146106cd57600080fd5b8063b1c947f3146105b3578063dd62ed3e146105d3578063df20fd4914610619578063f2fde38b1461063957600080fd5b806391b32b32116100e757806391b32b321461050657806395d89b41146105265780639d1944f514610553578063a60fd17914610573578063a9059cbb1461059357600080fd5b8063715018a61461049d578063778089e6146104b25780637d1db4a5146104d25780638da5cb5b146104e857600080fd5b80632d3e474a1161019b57806368092bd91161016a57806368092bd9146103f75780636ddd1713146104175780636fcba3771461043157806370a082311461045157806370e502411461048757600080fd5b80632d3e474a14610362578063313ce5671461039a57806347535d7b146103b65780635d098b38146103d757600080fd5b80630ca61cb1116101e25780630ca61cb1146102d8578063127f4b2e146102f857806318160ddd1461031857806323b872dd1461032d5780632b112e491461034d57600080fd5b80630445b6671461021f57806306fdde0314610248578063095ea7b3146102865780630b6bb6f5146102b657600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50610235601a5481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5060408051808201909152600c81526b4b696e672043617264616e6f60a01b60208201525b60405161023f919061216f565b34801561029257600080fd5b506102a66102a1366004611f16565b6106ed565b604051901515815260200161023f565b3480156102c257600080fd5b506102d66102d1366004611f42565b61075a565b005b3480156102e457600080fd5b506102d66102f3366004612053565b6107ff565b34801561030457600080fd5b506102d661031336600461203a565b61089a565b34801561032457600080fd5b50601354610235565b34801561033957600080fd5b506102a6610348366004611ea7565b6108eb565b34801561035957600080fd5b506102356109ad565b34801561036e57600080fd5b50601454610382906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b3480156103a657600080fd5b506040516009815260200161023f565b3480156103c257600080fd5b506001546102a690600160a01b900460ff1681565b3480156103e357600080fd5b506102d66103f2366004611e34565b6109ff565b34801561040357600080fd5b506102d6610412366004611ee8565b610a4b565b34801561042357600080fd5b506019546102a69060ff1681565b34801561043d57600080fd5b506102d661044c36600461207f565b610aa0565b34801561045d57600080fd5b5061023561046c366004611e34565b6001600160a01b031660009081526006602052604090205490565b34801561049357600080fd5b50610235600d5481565b3480156104a957600080fd5b506102d6610b45565b3480156104be57600080fd5b506102d66104cd366004611ee8565b610bb9565b3480156104de57600080fd5b50610235600c5481565b3480156104f457600080fd5b506000546001600160a01b0316610382565b34801561051257600080fd5b506102d6610521366004611e34565b610cf4565b34801561053257600080fd5b506040805180820190915260048152634b41444160e01b6020820152610279565b34801561055f57600080fd5b506102d661056e36600461203a565b610d40565b34801561057f57600080fd5b506102d661058e366004611ee8565b610d7f565b34801561059f57600080fd5b506102a66105ae366004611f16565b610dd4565b3480156105bf57600080fd5b506102d66105ce366004611ee8565b610de1565b3480156105df57600080fd5b506102356105ee366004611e6e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561062557600080fd5b506102d661063436600461201c565b610e36565b34801561064557600080fd5b506102d6610654366004611e34565b610e77565b34801561066557600080fd5b506102d6610674366004611f16565b610f61565b34801561068557600080fd5b50601554610382906001600160a01b031681565b3480156106a557600080fd5b506102d6611003565b3480156106ba57600080fd5b506019546102a690610100900460ff1681565b3480156106d957600080fd5b506102d66106e836600461203a565b611042565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107489086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461078d5760405162461bcd60e51b8152600401610784906121a2565b60405180910390fd5b60005b81518160ff1610156107fb57600160026000848460ff16815181106107b7576107b761232b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107f3816122f5565b915050610790565b5050565b6000546001600160a01b031633146108295760405162461bcd60e51b8152600401610784906121a2565b601754604051630ca61cb160e01b81526004810185905260248101849052604481018390526001600160a01b0390911690630ca61cb190606401600060405180830381600087803b15801561087d57600080fd5b505af1158015610891573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b031633146108b157600080fd5b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156107fb573d6000803e3d6000fd5b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610998576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546109739184906110d0565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6109a384848461110a565b90505b9392505050565b6005546001600160a01b03166000908152600660205260408120546109fa906004546001600160a01b03166000908152600660205260409020546109f490601354906114ef565b906114ef565b905090565b6000546001600160a01b03163314610a295760405162461bcd60e51b8152600401610784906121a2565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a755760405162461bcd60e51b8152600401610784906121a2565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610aca5760405162461bcd60e51b8152600401610784906121a2565b600e849055600f8390556010829055610aed82610ae78686611071565b90611071565b6011556012819055610b00600582612244565b6011541115610b3f5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642046656560a81b6044820152606401610784565b50505050565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b8152600401610784906121a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610be35760405162461bcd60e51b8152600401610784906121a2565b6001600160a01b0382163014801590610c0a57506016546001600160a01b03838116911614155b610c1357600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155610cab57601754604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b158015610c8f57600080fd5b505af1158015610ca3573d6000803e3d6000fd5b505050505050565b6017546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610c75565b6000546001600160a01b03163314610d1e5760405162461bcd60e51b8152600401610784906121a2565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d6a5760405162461bcd60e51b8152600401610784906121a2565b620f4240811115610d7a57600080fd5b601855565b6000546001600160a01b03163314610da95760405162461bcd60e51b8152600401610784906121a2565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60006109a633848461110a565b6000546001600160a01b03163314610e0b5760405162461bcd60e51b8152600401610784906121a2565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e605760405162461bcd60e51b8152600401610784906121a2565b6019805460ff191692151592909217909155601a55565b6000546001600160a01b03163314610ea15760405162461bcd60e51b8152600401610784906121a2565b6001600160a01b038116610f065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610784565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314610f7857600080fd5b60015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610fc657600080fd5b505af1158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe9190611fff565b505050565b6000546001600160a01b0316331461102d5760405162461bcd60e51b8152600401610784906121a2565b6001805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461106c5760405162461bcd60e51b8152600401610784906121a2565b600c55565b60008061107e838561222c565b9050838110156109a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610784565b600081848411156110f45760405162461bcd60e51b8152600401610784919061216f565b5060006111018486612285565b95945050505050565b60008383600160149054906101000a900460ff168061114157506001600160a01b03821660009081526002602052604090205460ff165b8061116457506001600160a01b03811660009081526002602052604090205460ff165b61119b5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610784565b6001600160a01b0386166000908152600b602052604090205460ff16156111fd5760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b6044820152606401610784565b601b5460ff161561121a57611213868686611531565b92506114e6565b6112248685611617565b61122c611680565b1561125b576112396116a4565b15611246576112466116f3565b61124e611a52565b1561125b5761125b611a77565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600690915291909120546112ad9186906110d0565b6001600160a01b0387166000908152600660205260408120919091556112d4878787611ab1565b6001600160a01b0387166000908152600660205260409020549091506112fa9082611071565b6001600160a01b03808816600090815260066020908152604080832094909455918a168152600a909152205460ff1661139e576017546001600160a01b0388811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561138b57600080fd5b505af192505050801561139c575060015b505b6001600160a01b0386166000908152600a602052604090205460ff1661142f576017546001600160a01b0387811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561141c57600080fd5b505af192505050801561142d575060015b505b6017546018546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916114679160040190815260200190565b600060405180830381600087803b15801561148157600080fd5b505af1925050508015611492575060015b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114d891815260200190565b60405180910390a360019350505b50509392505050565b60006109a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110d0565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546115829184906110d0565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546115b19083611071565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116059086815260200190565b60405180910390a35060019392505050565b600c548111158061164057506001600160a01b03821660009081526009602052604090205460ff165b6107fb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610784565b6016546000906001600160a01b031633148015906109fa575050601b5460ff161590565b6016546000906001600160a01b031633148015906116c55750601b5460ff16155b80156116d3575060195460ff165b80156109fa575050601a5430600090815260066020526040902054101590565b601b805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106117355761173561232b565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106117665761176661232b565b6001600160a01b039283166020918202929092010152601554601a5460405163791ac94760e01b81524793929092169163791ac947916117b1916000908790309042906004016121f0565b600060405180830381600087803b1580156117cb57600080fd5b505af19250505080156117dc575060015b6118f6576117e8612357565b806308c379a0141561186257506117fd612373565b806118085750611864565b7fc41a20ad8c23d3903584975786330c6ec73ccfcc657629f10237b792268b0e028160405160200161183a91906120f5565b60408051601f19818403018152908290526118549161216f565b60405180910390a150611a44565b505b7fc41a20ad8c23d3903584975786330c6ec73ccfcc657629f10237b792268b0e026040516118e99060208082526039908201527f537761704261636b206661696c656420776974686f757420616e206572726f7260408201527f206d6573736167652066726f6d2070616e63616b655377617000000000000000606082015260800190565b60405180910390a1611a44565b600061190247836114ef565b90506000611927601154611921600f5485611b9990919063ffffffff16565b90611c18565b9050600061194660115461192160105486611b9990919063ffffffff16565b9050601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561199857600080fd5b505af1935050505080156119aa575060015b506014546040516001600160a01b03909116906175309083906000818181858888f193505050503d80600081146119fd576040519150601f19603f3d011682016040523d82523d6000602084013e611a02565b606091505b5050507fb39214ef4f33ea2d9d329fb67a4f17e7588bf6e00ed15a7967137ba819697a27601a54604051611a3891815260200190565b60405180910390a15050505b5050601b805460ff19169055565b601954600090610100900460ff1680156109fa575050670de0b6b3a764000047101590565b601b805460ff19166001179055600d544790811115611a955750600d545b8015611aa457611aa481611c5a565b50601b805460ff19169055565b6001600160a01b03831660009081526008602052604081205460ff1680611af057506001600160a01b03831660009081526008602052604090205460ff165b15611afc5750806109a6565b6000611b1960125461192160115486611b9990919063ffffffff16565b30600090815260066020526040902054909150611b369082611071565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b879085815260200190565b60405180910390a361110183826114ef565b600082611ba857506000610754565b6000611bb48385612266565b905082611bc18583612244565b146109a65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610784565b60006109a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e06565b6040805160028082526060820183526000926020830190803683375050601554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611cbf57600080fd5b505afa158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf79190611e51565b81600081518110611d0a57611d0a61232b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611d3e57611d3e61232b565b6001600160a01b0392831660209182029290920101526015546004549082169163b6f9de95918591600091869116611d784261012c611071565b6040518663ffffffff1660e01b8152600401611d97949392919061213a565b6000604051808303818588803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b50505050507fd79349298b0eadebdb47b2a093b1596f41af709d6a3bc3d848b9e8821df480728282604051611dfa9291906121d7565b60405180910390a15050565b60008183611e275760405162461bcd60e51b8152600401610784919061216f565b5060006111018486612244565b600060208284031215611e4657600080fd5b81356109a6816123fd565b600060208284031215611e6357600080fd5b81516109a6816123fd565b60008060408385031215611e8157600080fd5b8235611e8c816123fd565b91506020830135611e9c816123fd565b809150509250929050565b600080600060608486031215611ebc57600080fd5b8335611ec7816123fd565b92506020840135611ed7816123fd565b929592945050506040919091013590565b60008060408385031215611efb57600080fd5b8235611f06816123fd565b91506020830135611e9c81612415565b60008060408385031215611f2957600080fd5b8235611f34816123fd565b946020939093013593505050565b60006020808385031215611f5557600080fd5b823567ffffffffffffffff80821115611f6d57600080fd5b818501915085601f830112611f8157600080fd5b813581811115611f9357611f93612341565b8060051b9150604051611fa8858401826122c8565b81815284810184860184860187018a1015611fc257600080fd5b600095505b83861015611ff15780359450611fdc856123fd565b84825260019590950194908601908601611fc7565b509098975050505050505050565b60006020828403121561201157600080fd5b81516109a681612415565b6000806040838503121561202f57600080fd5b8235611f3481612415565b60006020828403121561204c57600080fd5b5035919050565b60008060006060848603121561206857600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561209557600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156120ea5781516001600160a01b0316875295820195908201906001016120c5565b509495945050505050565b7f537761704261636b206661696c65642077697468206572726f7220000000000081526000825161212d81601b85016020870161229c565b91909101601b0192915050565b84815260806020820152600061215360808301866120b1565b6001600160a01b03949094166040830152506060015292915050565b602081526000825180602084015261218e81604085016020870161229c565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006109a360408301846120b1565b85815284602082015260a06040820152600061220f60a08301866120b1565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561223f5761223f612315565b500190565b60008261226157634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561228057612280612315565b500290565b60008282101561229757612297612315565b500390565b60005b838110156122b757818101518382015260200161229f565b83811115610b3f5750506000910152565b601f8201601f1916810167ffffffffffffffff811182821017156122ee576122ee612341565b6040525050565b600060ff821660ff81141561230c5761230c612315565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156123705760046000803e5060005160e01c5b90565b600060443d10156123815790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156123b157505050505090565b82850191508151818111156123c95750505050505090565b843d87010160208285010111156123e35750505050505090565b6123f2602082860101876122c8565b509095945050505050565b6001600160a01b038116811461241257600080fd5b50565b801515811461241257600080fdfea2646970667358221220198cb11ecccd70a8a567738ce519ccaa52ea3bf5283fb4a4e13e97c4a89cefcb64736f6c634300080600336080604052600180546001600160a01b0319908116733ee2200efb3400fabb9aacf31297cbdd1d435d47179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55615460600d55670de0b6b3a7640000600e55644a817c8000600f5534801561008657600080fd5b50600380546001600160a01b03199081167310ed43c718714eb63d5aa57b78b54704e256024e17909155600080549091163317905561101a806100ca6000396000f3fe6080604052600436106100f35760003560e01c8063be10b6141161008a578063efca2eed11610059578063efca2eed14610265578063fbcbc0f11461027b578063ffb2c479146102d2578063ffd49c84146102f257600080fd5b8063be10b614146101da578063ce7c2ac2146101f0578063d0e30db014610247578063e2d2e2191461024f57600080fd5b80633a98ef39116100c65780633a98ef39146101835780634e71d92d146101995780634fab0ae8146101ae578063997664d7146101c457600080fd5b80630ca61cb1146100f857806311ce023d1461011a57806314b6ca961461014357806328fd319814610163575b600080fd5b34801561010457600080fd5b50610118610113366004610e2c565b610308565b005b34801561012657600080fd5b50610130600c5481565b6040519081526020015b60405180910390f35b34801561014f57600080fd5b5061011861015e366004610dae565b61032d565b34801561016f57600080fd5b5061013061017e366004610d93565b6104aa565b34801561018f57600080fd5b5061013060085481565b3480156101a557600080fd5b50610118610533565b3480156101ba57600080fd5b50610130600e5481565b3480156101d057600080fd5b5061013060095481565b3480156101e657600080fd5b50610130600f5481565b3480156101fc57600080fd5b5061022c61020b366004610d93565b60076020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161013a565b61011861053e565b34801561025b57600080fd5b50610130600b5481565b34801561027157600080fd5b50610130600a5481565b34801561028757600080fd5b5061029b610296366004610d93565b61078b565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c00161013a565b3480156102de57600080fd5b506101186102ed366004610dfa565b6107fd565b3480156102fe57600080fd5b50610130600d5481565b6000546001600160a01b0316331461031f57600080fd5b600d92909255600e55600f55565b6000546001600160a01b0316331461034457600080fd5b6001600160a01b0382166000908152600760205260409020541561036b5761036b826108fd565b600f548111801561039257506001600160a01b038216600090815260076020526040902054155b156103f857600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561042f565b600f54811115801561042157506001600160a01b03821660009081526007602052604090205415155b1561042f5761042f82610a28565b6001600160a01b03821660009081526007602052604090205460085461046091839161045a91610b3d565b90610b88565b6008556001600160a01b038216600090815260076020526040902081905561048781610bec565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546104cf57506000919050565b6001600160a01b0382166000908152600760205260408120546104f190610bec565b6001600160a01b038416600090815260076020526040902060010154909150808211610521575060009392505050565b61052b8282610b3d565b949350505050565b61053c336108fd565b565b6000546001600160a01b0316331461055557600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561059957600080fd5b505afa1580156105ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d19190610e13565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061061757610617610fce565b6001600160a01b039283166020918202929092010152600180548351921691839190811061064757610647610fce565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061068d90600090869030904290600401610e58565b6000604051808303818588803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061074993508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561070b57600080fd5b505afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107439190610e13565b90610b3d565b6009549091506107599082610b88565b600955600854600c546107839161077a916107749085610c09565b90610c88565b600b5490610b88565b600b55505050565b8060008080808061079b866104aa565b6001600160a01b038816600090815260076020908152604080832060020154600690925290912054600d5492975090955093506107d89084610f17565b91504282116107e85760006107f2565b6107f28242610b3d565b905091939550919395565b6000546001600160a01b0316331461081457600080fd5b60045480610820575050565b6000805a905060005b848310801561083757508381105b156108f657836010541061084b5760006010555b61087d60046010548154811061086357610863610fce565b6000918252602090912001546001600160a01b0316610cca565b156108b4576108b460046010548154811061089a5761089a610fce565b6000918252602090912001546001600160a01b03166108fd565b6108c96108c25a8490610b3d565b8490610b88565b92505a6010805491935060006108de83610f87565b919050555080806108ee90610f87565b915050610829565b5050505050565b6001600160a01b03811660009081526007602052604090205461091d5750565b6000610928826104aa565b90508015610a2457600a5461093d9082610b88565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561098e57600080fd5b505af11580156109a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c69190610dd8565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109fa9082610b88565b6001600160a01b038316600090815260076020526040902060028101919091555461048790610bec565b5050565b60048054610a3890600190610f70565b81548110610a4857610a48610fce565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a8657610a86610fce565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610ad290600190610f70565b81548110610ae257610ae2610fce565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610b1857610b18610fb8565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b7f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d0f565b90505b92915050565b600080610b958385610f17565b905083811015610b7f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610b82600c54610774600b5485610c0990919063ffffffff16565b600082610c1857506000610b82565b6000610c248385610f51565b905082610c318583610f2f565b14610b7f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610be3565b6000610b7f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d49565b600d546001600160a01b03821660009081526006602052604081205490914291610cf49190610f17565b108015610b825750600e54610d08836104aa565b1192915050565b60008184841115610d335760405162461bcd60e51b8152600401610be39190610ec2565b506000610d408486610f70565b95945050505050565b60008183610d6a5760405162461bcd60e51b8152600401610be39190610ec2565b506000610d408486610f2f565b80356001600160a01b0381168114610d8e57600080fd5b919050565b600060208284031215610da557600080fd5b610b7f82610d77565b60008060408385031215610dc157600080fd5b610dca83610d77565b946020939093013593505050565b600060208284031215610dea57600080fd5b81518015158114610b7f57600080fd5b600060208284031215610e0c57600080fd5b5035919050565b600060208284031215610e2557600080fd5b5051919050565b600080600060608486031215610e4157600080fd5b505081359360208301359350604090920135919050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610ea25784516001600160a01b031683529383019391830191600101610e7d565b50506001600160a01b039690961660408501525050506060015292915050565b600060208083528351808285015260005b81811015610eef57858101830151858201604001528201610ed3565b81811115610f01576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610f2a57610f2a610fa2565b500190565b600082610f4c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610f6b57610f6b610fa2565b500290565b600082821015610f8257610f82610fa2565b500390565b6000600019821415610f9b57610f9b610fa2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212204a44c2518bf469f7d060f43580545ea508f3f4eb57f2a0820ff1423487f8f05a64736f6c63430008060033

Deployed ByteCode Sourcemap

15247:11397:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16554:50;;;;;;;;;;;;;;;;;;;11861:25:1;;;11849:2;11834:18;16554:50:0;;;;;;;;25818:94;;;;;;;;;;-1:-1:-1;25899:5:0;;;;;;;;;;;;-1:-1:-1;;;25899:5:0;;;;25818:94;;;;;;;:::i;26243:248::-;;;;;;;;;;-1:-1:-1;26243:248:0;;;;;:::i;:::-;;:::i;:::-;;;7234:14:1;;7227:22;7209:41;;7197:2;7182:18;26243:248:0;7164:92:1;15053:187:0;;;;;;;;;;-1:-1:-1;15053:187:0;;;;;:::i;:::-;;:::i;:::-;;24691:342;;;;;;;;;;-1:-1:-1;24691:342:0;;;;;:::i;:::-;;:::i;14449:140::-;;;;;;;;;;-1:-1:-1;14449:140:0;;;;;:::i;:::-;;:::i;25500:102::-;;;;;;;;;;-1:-1:-1;25582:12:0;;25500:102;;17702:418;;;;;;;;;;-1:-1:-1;17702:418:0;;;;;:::i;:::-;;:::i;25186:142::-;;;;;;;;;;;;;:::i;16315:24::-;;;;;;;;;;-1:-1:-1;16315:24:0;;;;-1:-1:-1;;;;;16315:24:0;;;;;;-1:-1:-1;;;;;6172:32:1;;;6154:51;;6142:2;6127:18;16315:24:0;6109:102:1;25610:94:0;;;;;;;;;;-1:-1:-1;25610:94:0;;16249:1;13287:36:1;;13275:2;13260:18;25610:94:0;13242:87:1;14633:26:0;;;;;;;;;;-1:-1:-1;14633:26:0;;;;-1:-1:-1;;;14633:26:0;;;;;;24389:108;;;;;;;;;;-1:-1:-1;24389:108:0;;;;;:::i;:::-;;:::i;25336:119::-;;;;;;;;;;-1:-1:-1;25336:119:0;;;;;:::i;:::-;;:::i;16478:30::-;;;;;;;;;;-1:-1:-1;16478:30:0;;;;;;;;23918:463;;;;;;;;;;-1:-1:-1;23918:463:0;;;;;:::i;:::-;;:::i;25920:119::-;;;;;;;;;;-1:-1:-1;25920:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;26013:18:0;25986:7;26013:18;;;:9;:18;;;;;;;25920:119;15881:45;;;;;;;;;;;;;;;;3053:148;;;;;;;;;;;;;:::i;23283:371::-;;;;;;;;;;-1:-1:-1;23283:371:0;;;;;:::i;:::-;;:::i;15832:42::-;;;;;;;;;;;;;;;;2411:79;;;;;;;;;;-1:-1:-1;2449:7:0;2476:6;-1:-1:-1;;;;;2476:6:0;2411:79;;14148:116;;;;;;;;;;-1:-1:-1;14148:116:0;;;;;:::i;:::-;;:::i;25712:98::-;;;;;;;;;;-1:-1:-1;25795:7:0;;;;;;;;;;;;-1:-1:-1;;;25795:7:0;;;;25712:98;;25041:137;;;;;;;;;;-1:-1:-1;25041:137:0;;;;;:::i;:::-;;:::i;23787:123::-;;;;;;;;;;-1:-1:-1;23787:123:0;;;;;:::i;:::-;;:::i;17506:188::-;;;;;;;;;;-1:-1:-1;17506:188:0;;;;;:::i;:::-;;:::i;23662:117::-;;;;;;;;;;-1:-1:-1;23662:117:0;;;;;:::i;:::-;;:::i;26047:188::-;;;;;;;;;;-1:-1:-1;26047:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;26199:19:0;;;26167:7;26199:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;26047:188;24505:178;;;;;;;;;;-1:-1:-1;24505:178:0;;;;;:::i;:::-;;:::i;3356:281::-;;;;;;;;;;-1:-1:-1;3356:281:0;;;;;:::i;:::-;;:::i;14272:169::-;;;;;;;;;;-1:-1:-1;14272:169:0;;;;;:::i;:::-;;:::i;16348:24::-;;;;;;;;;;-1:-1:-1;16348:24:0;;;;-1:-1:-1;;;;;16348:24:0;;;14973:72;;;;;;;;;;;;;:::i;16515:32::-;;;;;;;;;;-1:-1:-1;16515:32:0;;;;;;;;;;;23181:94;;;;;;;;;;-1:-1:-1;23181:94:0;;;;;:::i;:::-;;:::i;26243:248::-;26379:10;26345:4;26367:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;26367:32:0;;;;;;;;;;:41;;;26424:37;26345:4;;26367:32;;26424:37;;;;26402:6;11861:25:1;;11849:2;11834:18;;11816:76;26424:37:0;;;;;;;;-1:-1:-1;26479:4:0;26243:248;;;;;:::o;15053:187::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;;;;;;;;;15141:7:::1;15136:97;15158:6;:13;15154:1;:17;;;15136:97;;;15217:4;15193:10;:21;15204:6;15211:1;15204:9;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15193:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15193:21:0;:28;;-1:-1:-1;;15193:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15173:3;::::1;::::0;::::1;:::i;:::-;;;;15136:97;;;;15053:187:::0;:::o;24691:342::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;24876:11:::1;::::0;:149:::1;::::0;-1:-1:-1;;;24876:149:0;;::::1;::::0;::::1;13023:25:1::0;;;13064:18;;;13057:34;;;13107:18;;;13100:34;;;-1:-1:-1;;;;;24876:11:0;;::::1;::::0;:35:::1;::::0;12996:18:1;;24876:149:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24691:342:::0;;;:::o;14449:140::-;14529:11;;-1:-1:-1;;;;;14529:11:0;14515:10;:25;14507:34;;;;;;14552:11;;:29;;-1:-1:-1;;;;;14552:11:0;;;;:29;;;;;14573:7;;14552:11;:29;:11;:29;14573:7;14552:11;:29;;;;;;;;;;;;;;;;;;;17702:418;-1:-1:-1;;;;;17857:19:0;;17836:4;17857:19;;;:11;:19;;;;;;;;17877:10;17857:31;;;;;;;;-1:-1:-1;;17857:46:0;17853:200;;17954:87;;;;;;;;;;;-1:-1:-1;;;17954:87:0;;;;;;;;-1:-1:-1;;;;;17954:19:0;;-1:-1:-1;17954:19:0;;;:11;:19;;;;;17974:10;17954:31;;;;;;;;;;:87;;18008:6;;17954:53;:87::i;:::-;-1:-1:-1;;;;;17920:19:0;;;;;;:11;:19;;;;;;;;17940:10;17920:31;;;;;;;:121;17853:200;18072:40;18086:6;18094:9;18105:6;18072:13;:40::i;:::-;18065:47;;17702:418;;;;;;:::o;25186:142::-;25314:4;;-1:-1:-1;;;;;25314:4:0;25239:7;26013:18;;;:9;:18;;;;;;25266:54;;25293:4;;-1:-1:-1;;;;;25293:4:0;25986:7;26013:18;;;:9;:18;;;;;;25266:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25259:61;;25186:142;:::o;24389:108::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;24467:9:::1;:22:::0;;-1:-1:-1;;;;;;24467:22:0::1;-1:-1:-1::0;;;;;24467:22:0;;;::::1;::::0;;;::::1;::::0;;24389:108::o;25336:119::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25419:14:0;;;::::1;;::::0;;;:9:::1;:14;::::0;;;;:28;;-1:-1:-1;;25419:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25336:119::o;23918:463::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;24098:7:::1;:18:::0;;;24127:13:::1;:30:::0;;;24168:12:::1;:28:::0;;;24218:47:::1;24183:13:::0;24218:28:::1;24108:8:::0;24143:14;24218:12:::1;:28::i;:::-;:32:::0;::::1;:47::i;:::-;24207:8;:58:::0;24276:14:::1;:32:::0;;;24339:18:::1;24356:1;24293:15:::0;24339:18:::1;:::i;:::-;24327:8;;:30;;24319:54;;;::::0;-1:-1:-1;;;24319:54:0;;10037:2:1;24319:54:0::1;::::0;::::1;10019:21:1::0;10076:2;10056:18;;;10049:30;-1:-1:-1;;;10095:18:1;;;10088:41;10146:18;;24319:54:0::1;10009:161:1::0;24319:54:0::1;23918:463:::0;;;;:::o;3053:148::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;3160:1:::1;3144:6:::0;;3123:40:::1;::::0;-1:-1:-1;;;;;3144:6:0;;::::1;::::0;3123:40:::1;::::0;3160:1;;3123:40:::1;3191:1;3174:19:::0;;-1:-1:-1;;;;;;3174:19:0::1;::::0;;3053:148::o;23283:371::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23401:23:0;::::1;23419:4;23401:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23438:4:0::1;::::0;-1:-1:-1;;;;;23428:14:0;;::::1;23438:4:::0;::::1;23428:14;;23401:41;23393:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23454:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23454:32:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23497:150:::1;;23524:11;::::0;:31:::1;::::0;-1:-1:-1;;;23524:31:0;;-1:-1:-1;;;;;6416:32:1;;;23524:31:0::1;::::0;::::1;6398:51:1::0;23524:11:0::1;6465:18:1::0;;;6458:34;23524:11:0;;::::1;::::0;:20:::1;::::0;6371:18:1;;23524:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15136:97;15053:187:::0;:::o;23497:150::-:1;23588:11;::::0;-1:-1:-1;;;;;23617:17:0;;::::1;23588:11;23617:17:::0;;;:9:::1;:17;::::0;;;;;;;23588:47;;-1:-1:-1;;;23588:47:0;;::::1;::::0;::::1;6398:51:1::0;;;;6465:18;;;6458:34;23588:11:0;::::1;::::0;:20:::1;::::0;6371:18:1;;23588:47:0::1;6353:145:1::0;14148:116:0;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;14230:11:::1;:26:::0;;-1:-1:-1;;;;;;14230:26:0::1;-1:-1:-1::0;;;;;14230:26:0;;;::::1;::::0;;;::::1;::::0;;14148:116::o;25041:137::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;25131:7:::1;25124:3;:14;;25116:23;;;::::0;::::1;;25150:14;:20:::0;25041:137::o;23787:123::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23872:21:0;;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:30;;-1:-1:-1;;23872:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23787:123::o;17506:188::-;17613:4;17642:44;17656:10;17668:9;17679:6;17642:13;:44::i;23662:117::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23744:18:0;;;::::1;;::::0;;;:10:::1;:18;::::0;;;;:27;;-1:-1:-1;;23744:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23662:117::o;24505:178::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;24619:11:::1;:22:::0;;-1:-1:-1;;24619:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;24652:13:::1;:23:::0;24505:178::o;3356:281::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3459:22:0;::::1;3437:110;;;::::0;-1:-1:-1;;;3437:110:0;;8938:2:1;3437:110:0::1;::::0;::::1;8920:21:1::0;8977:2;8957:18;;;8950:30;9016:34;8996:18;;;8989:62;-1:-1:-1;;;9067:18:1;;;9060:36;9113:19;;3437:110:0::1;8910:228:1::0;3437:110:0::1;3584:6;::::0;;3563:38:::1;::::0;-1:-1:-1;;;;;3563:38:0;;::::1;::::0;3584:6;::::1;::::0;3563:38:::1;::::0;::::1;3612:6;:17:::0;;-1:-1:-1;;;;;;3612:17:0::1;-1:-1:-1::0;;;;;3612:17:0;;;::::1;::::0;;;::::1;::::0;;3356:281::o;14272:169::-;14365:11;;-1:-1:-1;;;;;14365:11:0;14351:10;:25;14343:34;;;;;;14412:11;;14388:45;;-1:-1:-1;;;14388:45:0;;-1:-1:-1;;;;;14412:11:0;;;14388:45;;;6398:51:1;6465:18;;;6458:34;;;14388:23:0;;;;;;6371:18:1;;14388:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14272:169;;:::o;14973:72::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;15033:4:::1;15024:13:::0;;-1:-1:-1;;;;15024:13:0::1;-1:-1:-1::0;;;15024:13:0::1;::::0;;14973:72::o;23181:94::-;2623:6;;-1:-1:-1;;;;;2623:6:0;1620:10;2623:22;2615:67;;;;-1:-1:-1;;;2615:67:0;;;;;;;:::i;:::-;23246:12:::1;:21:::0;23181:94::o;156:181::-;214:7;;246:5;250:1;246;:5;:::i;:::-;234:17;;275:1;270;:6;;262:46;;;;-1:-1:-1;;;262:46:0;;9345:2:1;262:46:0;;;9327:21:1;9384:2;9364:18;;;9357:30;9423:29;9403:18;;;9396:57;9470:18;;262:46:0;9317:177:1;489:226:0;609:7;645:12;637:6;;;;629:29;;;;-1:-1:-1;;;629:29:0;;;;;;;;:::i;:::-;-1:-1:-1;669:9:0;681:5;685:1;681;:5;:::i;:::-;669:17;489:226;-1:-1:-1;;;;;489:226:0:o;18128:1287::-;18278:4;18250:6;18258:9;14775:6;;;;;;;;;;;:26;;;-1:-1:-1;;;;;;14785:16:0;;;;;;:10;:16;;;;;;;;14775:26;:44;;;-1:-1:-1;;;;;;14805:14:0;;;;;;:10;:14;;;;;;;;14775:44;14767:65;;;;-1:-1:-1;;;14767:65:0;;9701:2:1;14767:65:0;;;9683:21:1;9740:1;9720:18;;;9713:29;-1:-1:-1;;;9758:18:1;;;9751:38;9806:18;;14767:65:0;9673:157:1;14767:65:0;-1:-1:-1;;;;;18304:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;::::1;;18303:18;18295:53;;;::::0;-1:-1:-1;;;18295:53:0;;11140:2:1;18295:53:0::1;::::0;::::1;11122:21:1::0;11179:2;11159:18;;;11152:30;-1:-1:-1;;;11198:18:1;;;11191:52;11260:18;;18295:53:0::1;11112:172:1::0;18295:53:0::1;18365:6;::::0;::::1;;18361:87;;;18395:41;18410:6;18418:9;18429:6;18395:14;:41::i;:::-;18388:48;;;;18361:87;18460:28;18473:6;18481;18460:12;:28::i;:::-;18505:9;:7;:9::i;:::-;18501:193;;;18535:16;:14;:16::i;:::-;18531:67;;;18572:10;:8;:10::i;:::-;18616:15;:13;:15::i;:::-;18612:71;;;18652:15;:13;:15::i;:::-;18726:90;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;18726:90:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;18726:17:0;::::1;-1:-1:-1::0;18726:17:0;;;:9:::1;:17:::0;;;;;;;;:90:::1;::::0;18762:6;;18726:21:::1;:90::i;:::-;-1:-1:-1::0;;;;;18706:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;:110;;;;18854:34:::1;18716:6:::0;18870:9;18881:6;18854:7:::1;:34::i;:::-;-1:-1:-1::0;;;;;18922:20:0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;18829:59;;-1:-1:-1;18922:40:0::1;::::0;18829:59;18922:24:::1;:40::i;:::-;-1:-1:-1::0;;;;;18899:20:0;;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;;:63;;;;18980:23;;::::1;::::0;;:15:::1;:23:::0;;;;;::::1;;18975:119;;19024:11;::::0;-1:-1:-1;;;;;19053:17:0;;::::1;19024:11;19053:17:::0;;;:9:::1;:17;::::0;;;;;;;19024:47;;-1:-1:-1;;;19024:47:0;;::::1;::::0;::::1;6398:51:1::0;;;;6465:18;;;6458:34;19024:11:0;::::1;::::0;:20:::1;::::0;6371:18:1;;19024:47:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19020:63:::0;::::1;-1:-1:-1::0;;;;;19109:26:0;::::1;;::::0;;;:15:::1;:26;::::0;;;;;::::1;;19104:158;;19173:11;::::0;-1:-1:-1;;;;;19205:20:0;;::::1;19173:11;19205:20:::0;;;:9:::1;:20;::::0;;;;;;;19173:53;;-1:-1:-1;;;19173:53:0;;::::1;::::0;::::1;6398:51:1::0;;;;6465:18;;;6458:34;19173:11:0;::::1;::::0;:20:::1;::::0;6371:18:1;;19173:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19152:99:::0;::::1;19278:11;::::0;19298:14:::1;::::0;19278:35:::1;::::0;-1:-1:-1;;;;;;19278:35:0;;-1:-1:-1;;;;;19278:11:0;;::::1;::::0;:19:::1;::::0;:35:::1;::::0;::::1;;11861:25:1::0;;;11849:2;11834:18;;11816:76;19278:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19274:51:::0;19359:9:::1;-1:-1:-1::0;;;;;19342:43:0::1;19351:6;-1:-1:-1::0;;;;;19342:43:0::1;;19370:14;19342:43;;;;11861:25:1::0;;11849:2;11834:18;;11816:76;19342:43:0::1;;;;;;;;19403:4;19396:11;;;14843:1;18128:1287:::0;;;;;;;:::o;345:136::-;403:7;430:43;434:1;437;430:43;;;;;;;;;;;;;;;;;:3;:43::i;19683:401::-;19847:90;;;;;;;;;;;-1:-1:-1;;;19847:90:0;;;;;;;;-1:-1:-1;;;;;19847:17:0;;19810:4;19847:17;;;:9;:17;;;;;;;:90;;19883:6;;19847:21;:90::i;:::-;-1:-1:-1;;;;;19827:17:0;;;;;;;:9;:17;;;;;;:110;;;;19971:20;;;;;;;:32;;19996:6;19971:24;:32::i;:::-;-1:-1:-1;;;;;19948:20:0;;;;;;;:9;:20;;;;;;;:55;;;;20019:35;;;;;;;;;;20047:6;11861:25:1;;11849:2;11834:18;;11816:76;20019:35:0;;;;;;;;-1:-1:-1;20072:4:0;19683:401;;;;;:::o;20092:201::-;20203:12;;20193:6;:22;;:47;;;-1:-1:-1;;;;;;20219:21:0;;;;;;:13;:21;;;;;;;;20193:47;20171:114;;;;-1:-1:-1;;;20171:114:0;;8592:2:1;20171:114:0;;;8574:21:1;8631:2;8611:18;;;8604:30;-1:-1:-1;;;8650:18:1;;;8643:47;8707:18;;20171:114:0;8564:167:1;19423:103:0;19503:4;;19465;;-1:-1:-1;;;;;19503:4:0;19489:10;:18;;;;:29;;-1:-1:-1;;19512:6:0;;;;19511:7;;19423:103::o;20768:222::-;20868:4;;20817;;-1:-1:-1;;;;;20868:4:0;20854:10;:18;;;;:42;;-1:-1:-1;20890:6:0;;;;20889:7;20854:42;:70;;;;-1:-1:-1;20913:11:0;;;;20854:70;:128;;;;-1:-1:-1;;20969:13:0;;20959:4;20941:24;;;;:9;:24;;;;;;:41;;;20768:222::o;20998:1315::-;16671:6;:13;;-1:-1:-1;;16671:13:0;16680:4;16671:13;;;21071:16:::1;::::0;;21085:1:::1;21071:16:::0;;;;;::::1;::::0;;-1:-1:-1;;21071:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21071:16:0::1;21047:40;;21116:4;21098;21103:1;21098:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21098:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21142:4:::1;::::0;21132:7;;21142:4;::::1;::::0;21132;;21142;;21132:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;21132:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;21234:6:::1;::::0;21310:13:::1;::::0;21234:213:::1;::::0;-1:-1:-1;;;21234:213:0;;21183:21:::1;::::0;21234:6;;;::::1;::::0;:57:::1;::::0;:213:::1;::::0;21159:21:::1;::::0;21362:4;;21393::::1;::::0;21417:15:::1;::::0;21234:213:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21217:1089;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;22042:106;22130:1;22082:50;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;22082:50:0;;::::1;::::0;;;;;;;22042:106:::1;::::0;::::1;:::i;:::-;;;;;;;;21993:167;21217:1089;;;;;22187:107;;;;;11491:2:1::0;11473:21;;;11530:2;11510:18;;;11503:30;11569:34;11564:2;11549:18;;11542:62;11640:27;11635:2;11620:18;;11613:55;11700:3;11685:19;;11463:247;22187:107:0::1;;;;;;;;21217:1089;;;21472:17;21492:40;:21;21518:13:::0;21492:25:::1;:40::i;:::-;21472:60;;21547:27;21577:74;21628:8;;21577:28;21591:13;;21577:9;:13;;:28;;;;:::i;:::-;:32:::0;::::1;:74::i;:::-;21547:104;;21666:26;21695:73;21745:8;;21695:27;21709:12;;21695:9;:13;;:27;;;;:::i;:73::-;21666:102;;21789:11;;;;;;;;;-1:-1:-1::0;;;;;21789:11:0::1;-1:-1:-1::0;;;;;21789:19:0::1;;21816;21789:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;21872:9:0::1;::::0;21864:66:::1;::::0;-1:-1:-1;;;;;21872:9:0;;::::1;::::0;21920:5:::1;::::0;21895:18;;21864:66:::1;::::0;;;21895:18;21872:9;21920:5;21864:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21950:30;21966:13;;21950:30;;;;11861:25:1::0;;11849:2;11834:18;;11816:76;21950:30:0::1;;;;;;;;21457:535;;;21217:1089;-1:-1:-1::0;;16707:6:0;:14;;-1:-1:-1;;16707:14:0;;;20998:1315::o;19534:141::-;19606:13;;19582:4;;19606:13;;;;;:61;;;;-1:-1:-1;;19656:10:0;19623:21;:44;;;19534:141::o;22321:273::-;16671:6;:13;;-1:-1:-1;;16671:13:0;16680:4;16671:13;;;22436:17:::1;::::0;22391:21:::1;::::0;22427:26;::::1;22423:85;;;-1:-1:-1::0;22479:17:0::1;::::0;22423:85:::1;22524:10:::0;;22520:67:::1;;22551:24;22568:6;22551:16;:24::i;:::-;-1:-1:-1::0;16707:6:0;:14;;-1:-1:-1;;16707:14:0;;;22321:273::o;20301:459::-;-1:-1:-1;;;;;20445:18:0;;20421:7;20445:18;;;:10;:18;;;;;;;;;:43;;-1:-1:-1;;;;;;20467:21:0;;;;;;:10;:21;;;;;;;;20445:43;20441:62;;;-1:-1:-1;20497:6:0;20490:13;;20441:62;20516:17;20536:40;20561:14;;20536:20;20547:8;;20536:6;:10;;:20;;;;:::i;:40::-;20632:4;20614:24;;;;:9;:24;;;;;;20516:60;;-1:-1:-1;20614:39:0;;20516:60;20614:28;:39::i;:::-;20605:4;20587:24;;;;:9;:24;;;;;;;:66;;;;20669:42;;-1:-1:-1;;;;;20669:42:0;;;;;;;20701:9;11861:25:1;;11849:2;11834:18;;11816:76;20669:42:0;;;;;;;;20731:21;:6;20742:9;20731:10;:21::i;723:250::-;781:7;805:6;801:47;;-1:-1:-1;835:1:0;828:8;;801:47;860:9;872:5;876:1;872;:5;:::i;:::-;860:17;-1:-1:-1;905:1:0;896:5;900:1;860:17;896:5;:::i;:::-;:10;888:56;;;;-1:-1:-1;;;888:56:0;;10377:2:1;888:56:0;;;10359:21:1;10416:2;10396:18;;;10389:30;10455:34;10435:18;;;10428:62;-1:-1:-1;;;10506:18:1;;;10499:31;10547:19;;888:56:0;10349:223:1;981:132:0;1039:7;1066:39;1070:1;1073;1066:39;;;;;;;;;;;;;;;;;:3;:39::i;22602:571::-;22747:16;;;22761:1;22747:16;;;;;;;;22723:21;;22747:16;;;;;;;;-1:-1:-1;;22784:6:0;;:13;;;-1:-1:-1;;;22784:13:0;;;;22723:40;;-1:-1:-1;;;;;;22784:6:0;;;;:11;;-1:-1:-1;22784:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22774:4;22779:1;22774:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22774:23:0;;;-1:-1:-1;;;;;22774:23:0;;;;;22826:4;22808;22813:1;22808:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22808:23:0;;;:7;;;;;;;;;:23;22870:6;;23047:4;;22870:6;;;;:57;;22949:6;;22870;;23028:4;;23047;23082:24;:15;23102:3;23082:19;:24::i;:::-;22870:247;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23135:30;23152:6;23160:4;23135:30;;;;;;;:::i;:::-;;;;;;;;22652:521;22602:571;:::o;1121:379::-;1241:7;1343:12;1336:5;1328:28;;;;-1:-1:-1;;;1328:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1367:9:0;1379:5;1383:1;1379;:5;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;782:388::-;850:6;858;911:2;899:9;890:7;886:23;882:32;879:2;;;927:1;924;917:12;879:2;966:9;953:23;985:31;1010:5;985:31;:::i;:::-;1035:5;-1:-1:-1;1092:2:1;1077:18;;1064:32;1105:33;1064:32;1105:33;:::i;:::-;1157:7;1147:17;;;869:301;;;;;:::o;1175:456::-;1252:6;1260;1268;1321:2;1309:9;1300:7;1296:23;1292:32;1289:2;;;1337:1;1334;1327:12;1289:2;1376:9;1363:23;1395:31;1420:5;1395:31;:::i;:::-;1445:5;-1:-1:-1;1502:2:1;1487:18;;1474:32;1515:33;1474:32;1515:33;:::i;:::-;1279:352;;1567:7;;-1:-1:-1;;;1621:2:1;1606:18;;;;1593:32;;1279:352::o;1636:382::-;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:2;;;1778:1;1775;1768:12;1730:2;1817:9;1804:23;1836:31;1861:5;1836:31;:::i;:::-;1886:5;-1:-1:-1;1943:2:1;1928:18;;1915:32;1956:30;1915:32;1956:30;:::i;2023:315::-;2091:6;2099;2152:2;2140:9;2131:7;2127:23;2123:32;2120:2;;;2168:1;2165;2158:12;2120:2;2207:9;2194:23;2226:31;2251:5;2226:31;:::i;:::-;2276:5;2328:2;2313:18;;;;2300:32;;-1:-1:-1;;;2110:228:1:o;2343:1073::-;2427:6;2458:2;2501;2489:9;2480:7;2476:23;2472:32;2469:2;;;2517:1;2514;2507:12;2469:2;2557:9;2544:23;2586:18;2627:2;2619:6;2616:14;2613:2;;;2643:1;2640;2633:12;2613:2;2681:6;2670:9;2666:22;2656:32;;2726:7;2719:4;2715:2;2711:13;2707:27;2697:2;;2748:1;2745;2738:12;2697:2;2784;2771:16;2806:2;2802;2799:10;2796:2;;;2812:18;;:::i;:::-;2858:2;2855:1;2851:10;2841:20;;2890:2;2884:9;2902:40;2938:2;2934;2930:11;2922:6;2902:40;:::i;:::-;2977:18;;;3011:15;;;3046:11;;;3076;;;3072:20;;3069:33;-1:-1:-1;3066:2:1;;;3115:1;3112;3105:12;3066:2;3137:1;3128:10;;3147:238;3161:2;3158:1;3155:9;3147:238;;;3232:3;3219:17;3206:30;;3249:31;3274:5;3249:31;:::i;:::-;3293:18;;;3179:1;3172:9;;;;;3331:12;;;;3363;;3147:238;;;-1:-1:-1;3404:6:1;;2438:978;-1:-1:-1;;;;;;;;2438:978:1:o;3421:245::-;3488:6;3541:2;3529:9;3520:7;3516:23;3512:32;3509:2;;;3557:1;3554;3547:12;3509:2;3589:9;3583:16;3608:28;3630:5;3608:28;:::i;3671:309::-;3736:6;3744;3797:2;3785:9;3776:7;3772:23;3768:32;3765:2;;;3813:1;3810;3803:12;3765:2;3852:9;3839:23;3871:28;3893:5;3871:28;:::i;3985:180::-;4044:6;4097:2;4085:9;4076:7;4072:23;4068:32;4065:2;;;4113:1;4110;4103:12;4065:2;-1:-1:-1;4136:23:1;;4055:110;-1:-1:-1;4055:110:1:o;4170:316::-;4247:6;4255;4263;4316:2;4304:9;4295:7;4291:23;4287:32;4284:2;;;4332:1;4329;4322:12;4284:2;-1:-1:-1;;4355:23:1;;;4425:2;4410:18;;4397:32;;-1:-1:-1;4476:2:1;4461:18;;;4448:32;;4274:212;-1:-1:-1;4274:212:1:o;4491:385::-;4577:6;4585;4593;4601;4654:3;4642:9;4633:7;4629:23;4625:33;4622:2;;;4671:1;4668;4661:12;4622:2;-1:-1:-1;;4694:23:1;;;4764:2;4749:18;;4736:32;;-1:-1:-1;4815:2:1;4800:18;;4787:32;;4866:2;4851:18;4838:32;;-1:-1:-1;4612:264:1;-1:-1:-1;4612:264:1:o;4881:461::-;4934:3;4972:5;4966:12;4999:6;4994:3;4987:19;5025:4;5054:2;5049:3;5045:12;5038:19;;5091:2;5084:5;5080:14;5112:1;5122:195;5136:6;5133:1;5130:13;5122:195;;;5201:13;;-1:-1:-1;;;;;5197:39:1;5185:52;;5257:12;;;;5292:15;;;;5233:1;5151:9;5122:195;;;-1:-1:-1;5333:3:1;;4942:400;-1:-1:-1;;;;;4942:400:1:o;5347:446::-;5609:29;5604:3;5597:42;5579:3;5668:6;5662:13;5684:62;5739:6;5734:2;5729:3;5725:12;5718:4;5710:6;5706:17;5684:62;:::i;:::-;5766:16;;;;5784:2;5762:25;;5587:206;-1:-1:-1;;5587:206:1:o;7487:510::-;7758:6;7747:9;7740:25;7801:3;7796:2;7785:9;7781:18;7774:31;7721:4;7822:57;7874:3;7863:9;7859:19;7851:6;7822:57;:::i;:::-;-1:-1:-1;;;;;7915:32:1;;;;7910:2;7895:18;;7888:60;-1:-1:-1;7979:2:1;7964:18;7957:34;7814:65;7730:267;-1:-1:-1;;7730:267:1:o;8002:383::-;8151:2;8140:9;8133:21;8114:4;8183:6;8177:13;8226:6;8221:2;8210:9;8206:18;8199:34;8242:66;8301:6;8296:2;8285:9;8281:18;8276:2;8268:6;8264:15;8242:66;:::i;:::-;8369:2;8348:15;-1:-1:-1;;8344:29:1;8329:45;;;;8376:2;8325:54;;8123:262;-1:-1:-1;;8123:262:1:o;10577:356::-;10779:2;10761:21;;;10798:18;;;10791:30;10857:34;10852:2;10837:18;;10830:62;10924:2;10909:18;;10751:182::o;11897:332::-;12104:6;12093:9;12086:25;12147:2;12142;12131:9;12127:18;12120:30;12067:4;12167:56;12219:2;12208:9;12204:18;12196:6;12167:56;:::i;12234:582::-;12533:6;12522:9;12515:25;12576:6;12571:2;12560:9;12556:18;12549:34;12619:3;12614:2;12603:9;12599:18;12592:31;12496:4;12640:57;12692:3;12681:9;12677:19;12669:6;12640:57;:::i;:::-;-1:-1:-1;;;;;12733:32:1;;;;12728:2;12713:18;;12706:60;-1:-1:-1;12797:3:1;12782:19;12775:35;12632:65;12505:311;-1:-1:-1;;;12505:311:1:o;13334:128::-;13374:3;13405:1;13401:6;13398:1;13395:13;13392:2;;;13411:18;;:::i;:::-;-1:-1:-1;13447:9:1;;13382:80::o;13467:217::-;13507:1;13533;13523:2;;13577:10;13572:3;13568:20;13565:1;13558:31;13612:4;13609:1;13602:15;13640:4;13637:1;13630:15;13523:2;-1:-1:-1;13669:9:1;;13513:171::o;13689:168::-;13729:7;13795:1;13791;13787:6;13783:14;13780:1;13777:21;13772:1;13765:9;13758:17;13754:45;13751:2;;;13802:18;;:::i;:::-;-1:-1:-1;13842:9:1;;13741:116::o;13862:125::-;13902:4;13930:1;13927;13924:8;13921:2;;;13935:18;;:::i;:::-;-1:-1:-1;13972:9:1;;13911:76::o;13992:258::-;14064:1;14074:113;14088:6;14085:1;14082:13;14074:113;;;14164:11;;;14158:18;14145:11;;;14138:39;14110:2;14103:10;14074:113;;;14205:6;14202:1;14199:13;14196:2;;;-1:-1:-1;;14240:1:1;14222:16;;14215:27;14045:205::o;14255:249::-;14365:2;14346:13;;-1:-1:-1;;14342:27:1;14330:40;;14400:18;14385:34;;14421:22;;;14382:62;14379:2;;;14447:18;;:::i;:::-;14483:2;14476:22;-1:-1:-1;;14302:202:1:o;14509:175::-;14546:3;14590:4;14583:5;14579:16;14619:4;14610:7;14607:17;14604:2;;;14627:18;;:::i;:::-;14676:1;14663:15;;14554:130;-1:-1:-1;;14554:130:1:o;14689:127::-;14750:10;14745:3;14741:20;14738:1;14731:31;14781:4;14778:1;14771:15;14805:4;14802:1;14795:15;14821:127;14882:10;14877:3;14873:20;14870:1;14863:31;14913:4;14910:1;14903:15;14937:4;14934:1;14927:15;14953:127;15014:10;15009:3;15005:20;15002:1;14995:31;15045:4;15042:1;15035:15;15069:4;15066:1;15059:15;15085:179;15120:3;15162:1;15144:16;15141:23;15138:2;;;15208:1;15205;15202;15187:23;-1:-1:-1;15245:1:1;15239:8;15234:3;15230:18;15138:2;15128:136;:::o;15269:671::-;15308:3;15350:4;15332:16;15329:26;15326:2;;;15316:624;:::o;15326:2::-;15392;15386:9;-1:-1:-1;;15457:16:1;15453:25;;15450:1;15386:9;15429:50;15508:4;15502:11;15532:16;15567:18;15638:2;15631:4;15623:6;15619:17;15616:25;15611:2;15603:6;15600:14;15597:45;15594:2;;;15645:5;;;;;15316:624;:::o;15594:2::-;15682:6;15676:4;15672:17;15661:28;;15718:3;15712:10;15745:2;15737:6;15734:14;15731:2;;;15751:5;;;;;;15316:624;:::o;15731:2::-;15835;15816:16;15810:4;15806:27;15802:36;15795:4;15786:6;15781:3;15777:16;15773:27;15770:69;15767:2;;;15842:5;;;;;;15316:624;:::o;15767:2::-;15858:57;15909:4;15900:6;15892;15888:19;15884:30;15878:4;15858:57;:::i;:::-;-1:-1:-1;15931:3:1;;15316:624;-1:-1:-1;;;;;15316:624:1:o;15945:131::-;-1:-1:-1;;;;;16020:31:1;;16010:42;;16000:2;;16066:1;16063;16056:12;16000:2;15990:86;:::o;16081:118::-;16167:5;16160:13;16153:21;16146:5;16143:32;16133:2;;16189:1;16186;16179:12

Swarm Source

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