Contract 0x071fa11f7516cdeb366f7f7d91da5049f7086185 3

 

Contract Overview

Rocket Boys: RBOYS Token
Balance:
642.061484389726983788 BNB

BNB Value:
$240,163.10 (@ $374.05/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8dfe0549bae834a0a18cf126fa90cf68978ba76a567aeecc096f7770775d7bfcApprove111467572021-09-22 21:17:333 hrs 41 mins ago0x17a3b9eb0fd9adf68f1ef73328612950abf481be IN  Rocket Boys: RBOYS Token0 BNB0.000310779
0xc5fdfcbdce79eb617e2dd59cc2001a947bab9604c3516a3ffd48f3a5fdc184d0Approve111424122021-09-22 17:38:167 hrs 20 mins ago0xb85f577be86a538a64c13b04f5a93da9cc7f5b76 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0x852cbef4e9cb2a0de6cecbb64b716e3e2b70352b8d82bb548d7018c2819a3080Approve111405382021-09-22 16:03:048 hrs 55 mins ago0xd8b337e265e6345f176ea2e6b02ffd4a89bebbcd IN  Rocket Boys: RBOYS Token0 BNB0.0002930202
0x28f6000ef183f8ab8cc00a9cf2524ba35838d1d1ae729521d53658864259b727Approve111303572021-09-22 7:32:2617 hrs 26 mins ago0x9cf23368590319661084320ccb9ea903d6f05acc IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0x8560b4c624c9849896322fcb9a3821ba1e8435de8fcb0ae222ee92a4d0ee73c8Approve111223192021-09-22 0:47:071 day 11 mins ago0x144871fe29d205ce76faf2b547ae55817a496b5c IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0x53be7a27a28bcece8dd75a2380b073d2a27ce99c8bf2701b040f025828ee15dfApprove111203682021-09-21 23:07:581 day 1 hr ago0xc53e1495ea0e2bc9dcc0bc5d9e551cd09a4c8314 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0xe728eac75842193d915788c91704c0e25cc0b2c5e3b48dcdf03538563e6d28a7Approve111146552021-09-21 18:17:011 day 6 hrs ago0x4f3b439ec73f3589c774f6c9e1ea71d95ee62d26 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0x4dbf9bb9a8f4be7c493676e4346683c5815d6214149ae278df2b035ebc9a30fbApprove111142902021-09-21 17:58:461 day 6 hrs ago0xc454913ebea5d873886392d27df989b31d45a019 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0x9c93be525734ddde462c19f8e9b2da63fa71d5828c1d779b43464e13727b8e64Approve111138932021-09-21 17:38:281 day 7 hrs ago0xf71c10fb4bdf37c7baffe54f058e048e46e1b170 IN  Rocket Boys: RBOYS Token0 BNB0.0001265463
0x542550fbb6608cc6504bd8c6a853dc0218db9ec55d004c4854adc38f5d6651d7Approve111129112021-09-21 16:49:081 day 8 hrs ago0x53dc3e32710f81ef62256f43ba4ba62415acfecf IN  Rocket Boys: RBOYS Token0 BNB0.000266382
0xb6156de8a3e0a6935ad29c5a785e7c30d0e062d5c5e7aa363ade7b621f301204Approve111097402021-09-21 14:10:301 day 10 hrs ago0x71c7020e7ad6074a79e7ef2b8007a8b9c9a70b81 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0x6b24c99b99dbf2b5ed7e65c60f9a63597c3b97211e55925cfd195b5d536b031dTransfer111053912021-09-21 10:32:581 day 14 hrs ago0x99589fee43f86f9f1de34a7b7c7fea206a3926da IN  Rocket Boys: RBOYS Token0 BNB0.00254557
0xb549f26d11a8b49cbac73d7ef6709e28e5aa741cb048474dcfb7a0dd4e7bf7b8Approve110994062021-09-21 5:33:381 day 19 hrs ago0x145922330a6e9fb341d32105799e52b92e367afe IN  Rocket Boys: RBOYS Token0 BNB0.000072535
0x2eeebc002bf434c3c199c919361d49dd62d866719789b04cd269dc1f671c1480Approve110936682021-09-21 0:46:082 days 12 mins ago0x1c4a8a6b7dcc62e8e80dd62ae778aa3c544ea87c IN  Rocket Boys: RBOYS Token0 BNB0.000072535
0x9391c084a778590fadd1104711aed78424fafe8ee75240f4826f72a32d216e22Approve110933292021-09-21 0:28:172 days 30 mins ago0x7671e93028d17ab8886bd968b91ba0a2434815a3 IN  Rocket Boys: RBOYS Token0 BNB0.000072535
0x18a38246bb1edbb89b3bb0c42f8361b6a5071afb7c11cd1baf64be88fba0d701Approve110932702021-09-21 0:25:012 days 33 mins ago0xdcacf6baed2442287c24acb776627445e32d698f IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0xea99eed6d532aa60c33ab93af59168fcb432e1098fbbd3392e8e4ff69f548ddcApprove110932122021-09-21 0:22:022 days 36 mins ago0xe44249550d8a03737f185e054a686e55577f3840 IN  Rocket Boys: RBOYS Token0 BNB0.000072535
0x5478c62045ac89f95f52c417a692ca419f3e6678a9834595b4088b19161ea783Approve110929102021-09-21 0:06:562 days 51 mins ago0xd3181ddbb2cea7b4954b8d4a05dbf85d8fc36aef IN  Rocket Boys: RBOYS Token0 BNB0.000072535
0x74df54bf115989231cef4493ce946ff64e04c8e931388812fa0437f1c3906cffTransfer110872152021-09-20 19:21:272 days 5 hrs ago0x401659b5a5176b73645d82931e2481a19da6dafa IN  Rocket Boys: RBOYS Token0 BNB0.00265713
0xa9971409228ef27f98ce417f80a7f35c2b9a091b041502cd83f53d311881b63bApprove110827052021-09-20 15:35:532 days 9 hrs ago0x40d5a0ab1f94f561f37f72731055f30d1fcd9cfa IN  Rocket Boys: RBOYS Token0 BNB0.000072535
0x09a9f60a6ef0947d79e8ce92288ed3a6aecaf9cd230480e04a76ae1932e3a37dApprove110770222021-09-20 10:49:252 days 14 hrs ago0x19289648028f428563f4c4b0cae2578f7e153260 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0xb35a6b9110b2c99bc12dd5a6afceb34f5bbcd55681d4e787afcf7aff0c60806aApprove110770072021-09-20 10:48:402 days 14 hrs ago0xa9eb742d925b248d3eaf6a8d57fb1e9de9fe2952 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0x94eb0fdc82af1a7ca9b3bf3aff12fda158c77e4a94139358fad2f147be1c6eabApprove110747812021-09-20 8:57:222 days 16 hrs ago0x0ee2ee5e0513a9bb22f64976e19df8e658900279 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0xcdda6179f71330780f4eb968c0c9fb711235c823ed57e3ae70301de08c65bed6Approve110675272021-09-20 2:54:352 days 22 hrs ago0x61007f6b7d366acdb0562e78d6773f65b5643349 IN  Rocket Boys: RBOYS Token0 BNB0.000221985
0xabd0424894792933d6495677dc90a1595131307768174dbcb58739f566e5efefTransfer110647132021-09-20 0:33:533 days 24 mins ago0x6e93b8a9e497faa3ff38224ca865a8d387807d61 IN  Rocket Boys: RBOYS Token0 BNB0.002881225
[ Download CSV Export 

OVERVIEW

RocketBoys Launchpad is a platform for serious projects aiming to launch with longevity and with a true commercial business plan.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4f18d276874c30ae2ce57ef7109ae310cda3cc8c423d3afef3eb9626446e79bc110125082021-09-18 4:44:494 days 20 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.487620777391044585 BNB
0x4f18d276874c30ae2ce57ef7109ae310cda3cc8c423d3afef3eb9626446e79bc110125082021-09-18 4:44:494 days 20 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.487620777391044585 BNB
0x4f18d276874c30ae2ce57ef7109ae310cda3cc8c423d3afef3eb9626446e79bc110125082021-09-18 4:44:494 days 20 hrs ago Rocket Boys: RBOYS Token 0x9aee53a6535736ab88faf3e17319ad2e094536760.731431166086566878 BNB
0x4f18d276874c30ae2ce57ef7109ae310cda3cc8c423d3afef3eb9626446e79bc110125082021-09-18 4:44:494 days 20 hrs ago PancakeSwap: Router v2 Rocket Boys: RBOYS Token2.925724664346267512 BNB
0x35c0196213bf5fdc919d75186253713baaf16feb7bc406ea1431b6e4371b2d68109992072021-09-17 17:39:315 days 7 hrs ago 0x8435bf8bc01cdc2415d1c5cc01576891a4085479 Rocket Boys: RBOYS Token0.000997547701896066 BNB
0x897ad83779b4c57feb379c69e359f6990d6dbe8a1739599d6197b24f52b9c194109591402021-09-16 8:11:446 days 16 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.488415994887822627 BNB
0x897ad83779b4c57feb379c69e359f6990d6dbe8a1739599d6197b24f52b9c194109591402021-09-16 8:11:446 days 16 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.488415994887822627 BNB
0x897ad83779b4c57feb379c69e359f6990d6dbe8a1739599d6197b24f52b9c194109591402021-09-16 8:11:446 days 16 hrs ago Rocket Boys: RBOYS Token 0x9aee53a6535736ab88faf3e17319ad2e094536760.73262399233173394 BNB
0x897ad83779b4c57feb379c69e359f6990d6dbe8a1739599d6197b24f52b9c194109591402021-09-16 8:11:446 days 16 hrs ago PancakeSwap: Router v2 Rocket Boys: RBOYS Token2.930495969326935763 BNB
0x25991fa8507b21342378b2497b2413e9e0a0b43247144bf5baa86a99d93a3188109158302021-09-14 19:59:208 days 4 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.475950252004217925 BNB
0x25991fa8507b21342378b2497b2413e9e0a0b43247144bf5baa86a99d93a3188109158302021-09-14 19:59:208 days 4 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.475950252004217925 BNB
0x25991fa8507b21342378b2497b2413e9e0a0b43247144bf5baa86a99d93a3188109158302021-09-14 19:59:208 days 4 hrs ago Rocket Boys: RBOYS Token 0x9aee53a6535736ab88faf3e17319ad2e094536760.713925378006326887 BNB
0x25991fa8507b21342378b2497b2413e9e0a0b43247144bf5baa86a99d93a3188109158302021-09-14 19:59:208 days 4 hrs ago PancakeSwap: Router v2 Rocket Boys: RBOYS Token2.85570151202530755 BNB
0x3bfd453bf9337a52f7ff579007116adaa2668bb7a1e0267b2000ab46b11ef78d108625112021-09-12 23:27:1110 days 1 hr ago Rocket Boys: RBOYS Token PancakeSwap: Router v21.466093017902357786 BNB
0x3bfd453bf9337a52f7ff579007116adaa2668bb7a1e0267b2000ab46b11ef78d108625112021-09-12 23:27:1110 days 1 hr ago PancakeSwap: Router v2 Rocket Boys: RBOYS Token1.466093017902357786 BNB
0x4049fc551f57780b078b10c09941c00daefff805f9714def74b5cd1942489700108520272021-09-12 14:42:0010 days 10 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.488205577422544889 BNB
0x4049fc551f57780b078b10c09941c00daefff805f9714def74b5cd1942489700108520272021-09-12 14:42:0010 days 10 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.488205577422544889 BNB
0x4049fc551f57780b078b10c09941c00daefff805f9714def74b5cd1942489700108520272021-09-12 14:42:0010 days 10 hrs ago Rocket Boys: RBOYS Token 0x9aee53a6535736ab88faf3e17319ad2e094536760.732308366133817334 BNB
0x4049fc551f57780b078b10c09941c00daefff805f9714def74b5cd1942489700108520272021-09-12 14:42:0010 days 10 hrs ago PancakeSwap: Router v2 Rocket Boys: RBOYS Token2.929233464535269337 BNB
0xb4bf3b5e5ced1c20ae600b46c31443183acb33805549996351ff2a87123ae3b1108155622021-09-11 8:08:5111 days 16 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.489011170971443855 BNB
0xb4bf3b5e5ced1c20ae600b46c31443183acb33805549996351ff2a87123ae3b1108155622021-09-11 8:08:5111 days 16 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.489011170971443855 BNB
0xb4bf3b5e5ced1c20ae600b46c31443183acb33805549996351ff2a87123ae3b1108155622021-09-11 8:08:5111 days 16 hrs ago Rocket Boys: RBOYS Token 0x9aee53a6535736ab88faf3e17319ad2e094536760.733516756457165783 BNB
0xb4bf3b5e5ced1c20ae600b46c31443183acb33805549996351ff2a87123ae3b1108155622021-09-11 8:08:5111 days 16 hrs ago PancakeSwap: Router v2 Rocket Boys: RBOYS Token2.934067025828663133 BNB
0xba8ccac180eacf97a5345f37931f6fe3862dd69708515bba87a65446d08e2c61107698102021-09-09 17:33:4813 days 7 hrs ago 0xf31b03f7f675ed14f2fab22ca097a6f0f2956c67 Rocket Boys: RBOYS Token0.001 BNB
0x8f63b767dca19c6315f12803c46f45f290b2874110ef6ddece5a92ee59f3dea3107599662021-09-09 9:15:1913 days 15 hrs ago Rocket Boys: RBOYS Token0xcefdffd1e9a4cd44f07d2d95a30dedd9fbdfdffe0.488885090641309965 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RocketBoys

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-07-14
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;

/**
 * $$$$$$$\                      $$\                  $$\     $$$$$$$\
 * $$  __$$\                     $$ |                 $$ |    $$  __$$\
 * $$ |  $$ | $$$$$$\   $$$$$$$\ $$ |  $$\  $$$$$$\ $$$$$$\   $$ |  $$ | $$$$$$\  $$\   $$\  $$$$$$$\
 * $$$$$$$  |$$  __$$\ $$  _____|$$ | $$  |$$  __$$\\_$$  _|  $$$$$$$\ |$$  __$$\ $$ |  $$ |$$  _____|
 * $$  __$$< $$ /  $$ |$$ /      $$$$$$  / $$$$$$$$ | $$ |    $$  __$$\ $$ /  $$ |$$ |  $$ |\$$$$$$\
 * $$ |  $$ |$$ |  $$ |$$ |      $$  _$$<  $$   ____| $$ |$$\ $$ |  $$ |$$ |  $$ |$$ |  $$ | \____$$\
 * $$ |  $$ |\$$$$$$  |\$$$$$$$\ $$ | \$$\ \$$$$$$$\  \$$$$  |$$$$$$$  |\$$$$$$  |\$$$$$$$ |$$$$$$$  |
 * \__|  \__| \______/  \_______|\__|  \__| \_______|  \____/ \_______/  \______/  \____$$ |\_______/
 *                                                                                $$\   $$ |
 *                                                                                \$$$$$$  |
 *                                                                                 \______/
 *
 * https://rocketboys.io/
 * https://t.me/rocketboysofficial
 */

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

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

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

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

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

        return c;
    }
}

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
        emit Authorized(adr);
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
        emit Unauthorized(adr);
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
    event Authorized(address adr);
    event Unauthorized(address adr);
}

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

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

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

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

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

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

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

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

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IBEP20 BUSD = IBEP20(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56);
    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 = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;

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

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

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

    function getShareholderInfo(address shareholder) external view returns (uint256, uint256, uint256, uint256) {
        return (
            totalShares,
            totalDistributed,
            shares[shareholder].amount,
            shares[shareholder].totalRealised
        );
    }

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

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

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

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

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

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

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

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

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
        
        emit Deposit(msg.value, amount);
    }

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

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;
        uint256 count = 0;

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

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
        
        emit DividendsProcessed(iterations, count, currentIndex);
    }

    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);
            BUSD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            
            emit Distribution(shareholder, amount);
        }
    }

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

    function claimDividendFor(address shareholder) external {
        distributeDividend(shareholder);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
    event DistributionCriteriaUpdated(uint256 minPeriod, uint256 minDistribution);
    event ShareUpdated(address shareholder, uint256 amount);
    event Deposit(uint256 amountBNB, uint256 amountBUSD);
    event Distribution(address shareholder, uint256 amount);
    event DividendsProcessed(uint256 iterations, uint256 count, uint256 index);
}

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

    address BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56;
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Rocket Boys";
    string constant _symbol = "RBOYS";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000000000 * (10 ** _decimals); // 1,000,000,000,000,000
    uint256 public _maxTxAmount = _totalSupply / 1000; // 0.1%

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

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

    bool feeEnabled = true;

    bool autoLiquifyEnabled = true;
    uint256 liquidityFee = 200;
    uint256 liquidityFeeAccumulator;

    uint256 buybackFee = 500;
    uint256 reflectionFee = 300;
    uint256 marketingFee = 200;
    uint256 devFee = 200;
    uint256 totalFee = 1200;
    uint256 feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;
    uint256 marketingFees;
    uint256 devFees;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool autoBuybackEnabled = false;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor public distributor;
    bool autoClaimEnabled = false;
    uint256 distributorGas = 500000;

    bool swapEnabled = true;
    uint256 swapThreshold = _totalSupply / 4000; // 0.025%
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

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

        distributor = new DividendDistributor(address(router));

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

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

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

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

    receive() external payable { }

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

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

        checkLaunched(sender);
        checkTxLimit(sender, amount);

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

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

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

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

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

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

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

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

    function checkLaunched(address sender) internal view {
        require(launched() || isAuthorized(sender), "Pre-Launch Protection");
    }

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

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        return selling ? totalFee.add(liquidityFee) : totalFee;
    }

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

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

        if(receiver == pair && autoLiquifyEnabled){
            liquidityFeeAccumulator = liquidityFeeAccumulator.add(feeAmount.mul(liquidityFee).div(totalFee.add(liquidityFee)));
        }

        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        if(liquidityFeeAccumulator >= swapThreshold && autoLiquifyEnabled){
            liquidityFeeAccumulator = liquidityFeeAccumulator.sub(swapThreshold);
            uint256 amountToLiquify = swapThreshold.div(2);

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

            uint256 balanceBefore = address(this).balance;

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

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

            router.addLiquidityETH{value: amountBNB}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            
            emit AutoLiquify(amountBNB, amountToLiquify);
        }else{
            uint256 amountToSwap = swapThreshold;

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

            uint256 balanceBefore = address(this).balance;

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

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

            uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalFee);
            uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalFee);
            uint256 amountBNBDev = amountBNB.mul(devFee).div(totalFee);

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

            (bool success, ) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
            if(success){ marketingFees = marketingFees.add(amountBNBMarketing); }

            (success, ) = payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
            if(success){ devFees = devFees.add(amountBNBDev); }

            emit SwapBack(amountToSwap, amountBNB);
        }
    }

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

    function buybackWEI(uint256 amount) external authorized {
        _buyback(amount);
    }

    function buybackBNB(uint256 amount) external authorized {
        _buyback(amount * (10 ** 18));
    }

    function _buyback(uint256 amount) internal {
        buyTokens(amount, DEAD);
        emit Buyback(amount);
    }

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

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

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

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

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

    function launch() internal {
        launchedAt = block.number;
        autoClaimEnabled = true;
        emit Launch();
    }

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

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

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

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

    function setFees(
        bool _enabled,
        uint256 _liquidityFee,
        uint256 _buybackFee,
        uint256 _reflectionFee,
        uint256 _marketingFee,
        uint256 _devFee,
        uint256 _feeDenominator
    ) external authorized {
        feeEnabled = _enabled;

        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;

        totalFee = buybackFee.add(reflectionFee).add(marketingFee).add(devFee);

        liquidityFee = _liquidityFee;

        feeDenominator = _feeDenominator;
        require(totalFee.add(liquidityFee) < feeDenominator/5);
        
        emit FeesUpdated(_enabled, _liquidityFee, _buybackFee, _reflectionFee, _marketingFee, _devFee, _feeDenominator);
    }

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

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

    function setAutoLiquifyEnabled(bool _enabled) external authorized {
        autoLiquifyEnabled = _enabled;
        emit AutoLiquifyUpdated(_enabled);
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas, bool _autoClaim) external authorized {
        require(gas <= 1000000);
        distributorGas = gas;
        autoClaimEnabled = _autoClaim;
        emit DistributorSettingsUpdated(gas, _autoClaim);
    }

    function getAccumulatedFees() external view returns (uint256, uint256) {
        return (marketingFees, devFees);
    }

    function getAutoBuybackSettings() external view returns (bool,uint256,uint256,uint256,uint256,uint256) {
        return (
            autoBuybackEnabled,
            autoBuybackCap,
            autoBuybackAccumulator,
            autoBuybackAmount,
            autoBuybackBlockPeriod,
            autoBuybackBlockLast
        );
    }
    
    function getAutoLiquifySettings() external view returns (bool,uint256,uint256) {
        return (
            autoLiquifyEnabled,
            liquidityFeeAccumulator,
            swapThreshold
        );
    }

    function getSwapBackSettings() external view returns (bool,uint256) {
        return (
            swapEnabled,
            swapThreshold
        );
    }

    function getFees() external view returns (bool,uint256,uint256,uint256,uint256,uint256,uint256) {
        return (
            feeEnabled,
            buybackFee,
            reflectionFee,
            marketingFee,
            devFee,
            liquidityFee,
            feeDenominator
        );
    }

    event Launch();
    event AutoLiquify(uint256 amountBNB, uint256 amountToken);
    event SwapBack(uint256 amountToken, uint256 amountBNB);
    event Buyback(uint256 amountBNB);
    event AutoBuybackSettingsUpdated(bool enabled, uint256 cap, uint256 amount, uint256 period);
    event TxLimitUpdated(uint256 amount);
    event DividendExemptUpdated(address holder, bool exempt);
    event FeeExemptUpdated(address holder, bool exempt);
    event TxLimitExemptUpdated(address holder, bool exempt);
    event FeesUpdated(bool enabled, uint256 liquidityFee, uint256 buybackFee, uint256 reflectionFee, uint256 marketingFee, uint256 devFee, uint256 feeDenominator);
    event FeeReceiversUpdated(address autoLiquidityReceiver, address marketingFeeReceiver, address devFeeReceiver);
    event SwapBackSettingsUpdated(bool enabled, uint256 amount);
    event AutoLiquifyUpdated(bool enabled);
    event DistributorSettingsUpdated(uint256 gas, bool autoClaim);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adr","type":"address"}],"name":"Authorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"cap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"period","type":"uint256"}],"name":"AutoBuybackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AutoLiquifyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"}],"name":"Buyback","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"bool","name":"autoClaim","type":"bool"}],"name":"DistributorSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"DividendExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"FeeExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"autoLiquidityReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"FeeReceiversUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buybackFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"devFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeDenominator","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"}],"name":"SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapBackSettingsUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"TxLimitExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TxLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adr","type":"address"}],"name":"Unauthorized","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buybackBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buybackWEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccumulatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAutoBuybackSettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAutoLiquifySettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFees","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapBackSettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setAutoLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"bool","name":"_autoClaim","type":"bool"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273e9e7cea3dedca5984780bafc599bd69add087d56600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a66038d7ea4c68000026005556103e8600554816200011357fe5b046006556001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff02191690831515021790555060c8600d556101f4600f5561012c60105560c860115560c86012556104b06013556127106014556000601d60006101000a81548160ff0219169083151502179055506000602360146101000a81548160ff0219169083151502179055506207a1206024556001602560006101000a81548160ff021916908315150217905550610fa060055481620001da57fe5b04602655348015620001eb57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550507310ed43c718714eb63d5aa57b78b54704e256024e601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034357600080fd5b505afa15801562000358573d6000803e3d6000fd5b505050506040513d60208110156200036f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200042957600080fd5b505af11580156200043e573d6000803e3d6000fd5b505050506040513d60208110156200045557600080fd5b8101908080519060200190929190505050601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200059a906200098b565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620005d7573d6000803e3d6000fd5b50602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a362000999565b611c3a80620052e883390190565b61493f80620009a96000396000f3fe6080604052600436106102605760003560e01c8063998a6b5f11610144578063db8d55f1116100b6578063f1f3bca31161007a578063f1f3bca314610e59578063f2fde38b14610eaa578063f708a64f14610efb578063f84ba65d14610f58578063f887ea4014610fb5578063fe9fbb8014610ff657610267565b8063db8d55f114610ca4578063dd62ed3e14610cfb578063df20fd4914610d80578063e96fada214610dc7578063f0b37c0414610e0857610267565b8063bf56b37111610108578063bf56b37114610af1578063bfe1092814610b1c578063ca33e64c14610b5d578063cb213c1214610b9e578063d7c0103214610bd2578063dab84ee714610c6357610267565b8063998a6b5f1461096c578063a8aa1b31146109b3578063a9059cbb146109f4578063acdd9dff14610a65578063b6a5d7de14610aa057610267565b806354200d6f116101dd578063658d4b7f116101a1578063658d4b7f1461077357806370a08231146107d05780637880aadc146108355780637d1db4a514610870578063893d20e81461089b57806395d89b41146108dc57610267565b806354200d6f1461061257806356f965d71461064f578063571ac8b01461069f5780635c85974f146107065780635df45a371461074157610267565b80631ba8eee7116102245780631ba8eee71461042e57806323b872dd146104a75780632d48e896146105385780632f54bf6e1461057d578063313ce567146105e457610267565b8063048c7baf1461026c57806306fdde03146102c7578063095ea7b314610357578063113f49a2146103c857806318160ddd1461040357610267565b3661026757005b600080fd5b34801561027857600080fd5b506102c56004803603608081101561028f57600080fd5b8101908080351515906020019092919080359060200190929190803590602001909291908035906020019092919050505061105d565b005b3480156102d357600080fd5b506102dc61116d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031c578082015181840152602081019050610301565b50505050905090810190601f1680156103495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036357600080fd5b506103b06004803603604081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111aa565b60405180821515815260200191505060405180910390f35b3480156103d457600080fd5b50610401600480360360208110156103eb57600080fd5b810190808035906020019092919050505061129c565b005b34801561040f57600080fd5b50610418611323565b6040518082815260200191505060405180910390f35b34801561043a57600080fd5b506104a5600480360360e081101561045157600080fd5b8101908080351515906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061132d565b005b3480156104b357600080fd5b50610520600480360360608110156104ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d1565b60405180821515815260200191505060405180910390f35b34801561054457600080fd5b5061057b6004803603604081101561055b57600080fd5b8101908080359060200190929190803590602001909291905050506116d1565b005b34801561058957600080fd5b506105cc600480360360208110156105a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e5565b60405180821515815260200191505060405180910390f35b3480156105f057600080fd5b506105f961183e565b604051808260ff16815260200191505060405180910390f35b34801561061e57600080fd5b5061064d6004803603602081101561063557600080fd5b81019080803515159060200190929190505050611847565b005b34801561065b57600080fd5b50610664611918565b604051808715158152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b3480156106ab57600080fd5b506106ee600480360360208110156106c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611954565b60405180821515815260200191505060405180910390f35b34801561071257600080fd5b5061073f6004803603602081101561072957600080fd5b8101908080359060200190929190505050611987565b005b34801561074d57600080fd5b50610756611a5d565b604051808381526020018281526020019250505060405180910390f35b34801561077f57600080fd5b506107ce6004803603604081101561079657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611a6e565b005b3480156107dc57600080fd5b5061081f600480360360208110156107f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b9b565b6040518082815260200191505060405180910390f35b34801561084157600080fd5b5061084a611be4565b604051808415158152602001838152602001828152602001935050505060405180910390f35b34801561087c57600080fd5b50610885611c0a565b6040518082815260200191505060405180910390f35b3480156108a757600080fd5b506108b0611c10565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108e857600080fd5b506108f1611c39565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610931578082015181840152602081019050610916565b50505050905090810190601f16801561095e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561097857600080fd5b506109b16004803603604081101561098f57600080fd5b8101908080359060200190929190803515159060200190929190505050611c76565b005b3480156109bf57600080fd5b506109c8611d67565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a0057600080fd5b50610a4d60048036036040811015610a1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d8d565b60405180821515815260200191505060405180910390f35b348015610a7157600080fd5b50610a9e60048036036020811015610a8857600080fd5b8101908080359060200190929190505050611da2565b005b348015610aac57600080fd5b50610aef60048036036020811015610ac357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e33565b005b348015610afd57600080fd5b50610b06611f55565b6040518082815260200191505060405180910390f35b348015610b2857600080fd5b50610b31611f5b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6957600080fd5b50610b72611f81565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610baa57600080fd5b50610bb3611fa7565b6040518083151581526020018281526020019250505060405180910390f35b348015610bde57600080fd5b50610c6160048036036060811015610bf557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fc5565b005b348015610c6f57600080fd5b50610c78612191565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cb057600080fd5b50610cb96121b7565b60405180881515815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b348015610d0757600080fd5b50610d6a60048036036040811015610d1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fb565b6040518082815260200191505060405180910390f35b348015610d8c57600080fd5b50610dc560048036036040811015610da357600080fd5b8101908080351515906020019092919080359060200190929190505050612282565b005b348015610dd357600080fd5b50610ddc612363565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e1457600080fd5b50610e5760048036036020811015610e2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612389565b005b348015610e6557600080fd5b50610e9460048036036020811015610e7c57600080fd5b810190808035151590602001909291905050506124ac565b6040518082815260200191505060405180910390f35b348015610eb657600080fd5b50610ef960048036036020811015610ecd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612504565b005b348015610f0757600080fd5b50610f5660048036036040811015610f1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612666565b005b348015610f6457600080fd5b50610fb360048036036040811015610f7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506129c7565b005b348015610fc157600080fd5b50610fca612af4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561100257600080fd5b506110456004803603602081101561101957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b1a565b60405180821515815260200191505060405180910390f35b61106633612b1a565b6110d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83601d60006101000a81548160ff02191690831515021790555082601e819055506000601f819055508160208190555080602181905550436022819055507f07e4a4dc3e8013db5de426f27688d245ba84f9f9195eed42e7a94acb0a565b6f8484848460405180851515815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b60606040518060400160405280600b81526020017f526f636b657420426f7973000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6112a533612b1a565b611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b61132081612b70565b50565b6000600554905090565b61133633612b1a565b6113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b86600c60006101000a81548160ff02191690831515021790555084600f8190555083601081905550826011819055508160128190555061141d60125461140f601154611401601054600f54612bd690919063ffffffff16565b612bd690919063ffffffff16565b612bd690919063ffffffff16565b60138190555085600d819055508060148190555060056014548161143d57fe5b04611455600d54601354612bd690919063ffffffff16565b1061145f57600080fd5b7f76d099a416dfc2ebb98aadbbac897c0d02a441d0c4fb2e3a9fdf6414d6dcfea98787878787878760405180881515815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a150505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116bd5761163c826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5e9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6116c8848484612d1e565b90509392505050565b6116da33612b1a565b61174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156117c957600080fd5b505af11580156117dd573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61185033612b1a565b6118c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60016101000a81548160ff0219169083151502179055507f075af1ef3c1829076b56416deceff9df2103194b5dfbf756f8557478b494f7ff8160405180821515815260200191505060405180910390a150565b600080600080600080601d60009054906101000a900460ff16601e54601f54602054602154602254955095509550955095509550909192939495565b6000611980827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6111aa565b9050919050565b61199033612b1a565b611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e860055481611a0f57fe5b04811015611a1c57600080fd5b806006819055507fa53407ff336a78b145e1a297adce2a5d7a54e6c31d13b4e69e04aad80b07b44b816040518082815260200191505060405180910390a150565b600080601854601954915091509091565b611a7733612b1a565b611ae9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4d5771454588f51370a8a2e7e151354b6de0dc3159b14821b4ad76bc04c28bc78282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000600c60019054906101000a900460ff16600e54602654925092509250909192565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f52424f5953000000000000000000000000000000000000000000000000000000815250905090565b611c7f33612b1a565b611cf1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620f4240821115611d0157600080fd5b8160248190555080602360146101000a81548160ff0219169083151502179055507f5fdd419a37de0633d9df0f25b1b1f9a77e5794e82e87c24bc9ded94c0990b17682826040518083815260200182151581526020019250505060405180910390a15050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d9a338484612d1e565b905092915050565b611dab33612b1a565b611e1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b611e30670de0b6b3a76400008202612b70565b50565b611e3c336117e5565b611eae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdc84e3a4c83602050e3865df792a4e6800211a79ac60db94e703a820ce89292481604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b601c5481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080602560009054906101000a900460ff16602654915091509091565b611fce33612b1a565b612040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f12b4cfbea7a8dac3b859f7b88ff33db6082e4c6bb29a58b3d8edbd58ed742028838383604051808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000600c60009054906101000a900460ff16600f54601054601154601254600d54601454965096509650965096509650965090919293949596565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61228b33612b1a565b6122fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602560006101000a81548160ff021916908315150217905550806026819055507f30e0f7c488b6c70123097f13cf387e140b0e0b8c9d9e3473e502f35b035d377c82826040518083151581526020018281526020019250505060405180910390a15050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612392336117e5565b612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8e4a23d6a5d81f013eca4bc92aeb9214ccafcaebd1f097c350c922d6e19122d581604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000436001601c5401106124d7576124d0600160145461335e90919063ffffffff16565b90506124ff565b816124e4576013546124fc565b6124fb600d54601354612bd690919063ffffffff16565b5b90505b919050565b61250d336117e5565b61257f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b61266f33612b1a565b6126e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561276b5750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61277457600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561288257602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561286557600080fd5b505af1158015612879573d6000803e3d6000fd5b5050505061296d565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561295457600080fd5b505af1158015612968573d6000803e3d6000fd5b505050505b7e8548b19959a911110b36c03f6148fa56fbcc2ce2553abf33112aa00bbdfd6a8282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b6129d033612b1a565b612a42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fe1fc1cdd7520f99d4b4715966557867ae295b281f90d30b3631bae054b7f196c8282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b612b9c81600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133a8565b7fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e48069816040518082815260200191505060405180910390a150565b600080828401905083811015612c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290612d0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cd0578082015181840152602081019050612cb5565b50505050905090810190601f168015612cfd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602760009054906101000a900460ff1615612d4757612d408484846135df565b9050613357565b612d50846137b2565b612d5a848361383f565b612d6261390f565b15612d7057612d6f6139e6565b5b612d786142ff565b15612d8657612d856143a9565b5b612d8e614425565b158015612de85750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612e42576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612e3957600080fd5b612e41614432565b5b612ecb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5e9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612f1985614482565b612f235782612f2f565b612f2e8585856144f1565b5b9050612f8381600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661310557602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156130e957600080fd5b505af19250505080156130fa575060015b61310357613104565b5b5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661324457602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561322857600080fd5b505af1925050508015613239575060015b61324257613243565b5b5b602360149054906101000a900460ff16156132ec57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796024546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156132d057600080fd5b505af19250505080156132e1575060015b6132ea576132eb565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006133a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5e565b905092915050565b6001602760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811180156133dd57600080fd5b5060405190808252806020026020018201604052801561340c5781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061343f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061348757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561357f578082015181840152602081019050613564565b50505050905001955050505050506000604051808303818588803b1580156135a657600080fd5b505af11580156135ba573d6000803e3d6000fd5b5050505050506000602760006101000a81548160ff0219169083151502179055505050565b600061366a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5e9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ff82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6137ba614425565b806137ca57506137c981612b1a565b5b61383c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5072652d4c61756e63682050726f74656374696f6e000000000000000000000081525060200191505060405180910390fd5b50565b600654811115806138995750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61390b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561397c5750602760009054906101000a900460ff16155b80156139945750602560009054906101000a900460ff165b80156139e15750602654600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602760006101000a81548160ff021916908315150217905550602654600e5410158015613a215750600c60019054906101000a900460ff165b15613e0357613a3d602654600e5461335e90919063ffffffff16565b600e819055506000613a5b600260265461475290919063ffffffff16565b90506000600267ffffffffffffffff81118015613a7757600080fd5b50604051908082528060200260200182016040528015613aa65781602001602082028036833780820191505090505b5090503081600081518110613ab757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613b2157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613c24578082015181840152602081019050613c09565b505050509050019650505050505050600060405180830381600087803b158015613c4d57600080fd5b505af1158015613c61573d6000803e3d6000fd5b505050506000613c7a824761335e90919063ffffffff16565b9050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823087600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015613d6857600080fd5b505af1158015613d7c573d6000803e3d6000fd5b50505050506040513d6060811015613d9357600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068185604051808381526020018281526020019250505060405180910390a1505050506142e2565b600060265490506000600267ffffffffffffffff81118015613e2457600080fd5b50604051908082528060200260200182016040528015613e535781602001602082028036833780820191505090505b5090503081600081518110613e6457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613ece57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613fd1578082015181840152602081019050613fb6565b505050509050019650505050505050600060405180830381600087803b158015613ffa57600080fd5b505af115801561400e573d6000803e3d6000fd5b505050506000614027824761335e90919063ffffffff16565b905060006140546013546140466010548561479c90919063ffffffff16565b61475290919063ffffffff16565b905060006140816013546140736011548661479c90919063ffffffff16565b61475290919063ffffffff16565b905060006140ae6013546140a06012548761479c90919063ffffffff16565b61475290919063ffffffff16565b9050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561411a57600080fd5b505af19350505050801561412c575060015b61413557614136565b5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d80600081146141bd576040519150601f19603f3d011682016040523d82523d6000602084013e6141c2565b606091505b5050905080156141e8576141e183601854612bd690919063ffffffff16565b6018819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d806000811461426d576040519150601f19603f3d011682016040523d82523d6000602084013e614272565b606091505b505080915050801561429a5761429382601954612bd690919063ffffffff16565b6019819055505b7f05ab84b321981d7d9a13402e494604c50821bcb5f2400d128fa06cd6451113d48886604051808381526020018281526020019250505060405180910390a150505050505050505b6000602760006101000a81548160ff021916908315150217905550565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561436c5750602760009054906101000a900460ff16155b80156143845750601d60009054906101000a900460ff165b80156143965750436021546022540111155b80156143a457506020544710155b905090565b6143d7602054600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133a8565b436022819055506143f5602054601f54612bd690919063ffffffff16565b601f81905550601e54601f541115614423576000601d60006101000a81548160ff0219169083151502179055505b565b600080601c541415905090565b43601c819055506001602360146101000a81548160ff0219169083151502179055507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a1565b6000600c60009054906101000a900460ff1680156144ea5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050919050565b600080614573601454614565614556601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146124ac565b8661479c90919063ffffffff16565b61475290919063ffffffff16565b90506145c781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156146d85750600c60019054906101000a900460ff165b156147355761472e61471d6146fa600d54601354612bd690919063ffffffff16565b61470f600d548561479c90919063ffffffff16565b61475290919063ffffffff16565b600e54612bd690919063ffffffff16565b600e819055505b614748818461335e90919063ffffffff16565b9150509392505050565b600061479483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614822565b905092915050565b6000808314156147af576000905061481c565b60008284029050828482816147c057fe5b0414614817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806148e96021913960400191505060405180910390fd5b809150505b92915050565b600080831182906148ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614893578082015181840152602081019050614878565b50505050905090810190601f1680156148c05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816148da57fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122043b39d73f3b1dc74a03a89783f42ce2db432eca87e42aee81ce392deb5cc873b64736f6c63430007060033608060405273e9e7cea3dedca5984780bafc599bd69add087d56600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e553480156100df57600080fd5b50604051611c3a380380611c3a8339818101604052602081101561010257600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610162577310ed43c718714eb63d5aa57b78b54704e256024e610164565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611a46806101f46000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed1461041c578063f0fc6bca14610447578063ffb2c4791461045e578063ffd49c8414610499576100f3565b8063ce7c2ac214610323578063d0e30db014610396578063e2d2e219146103a0578063edf35253146103cb576100f3565b80633a98ef39116100c65780633a98ef39146102285780634fab0ae8146102535780635e6056bb1461027e578063997664d7146102f8576100f3565b806311ce023d146100f857806314b6ca961461012357806328fd31981461017e5780632d48e896146101e3575b600080fd5b34801561010457600080fd5b5061010d6104c4565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061017c6004803603604081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104ca565b005b34801561018a57600080fd5b506101cd600480360360208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610792565b6040518082815260200191505060405180910390f35b3480156101ef57600080fd5b506102266004803603604081101561020657600080fd5b8101908080359060200190929190803590602001909291905050506108ac565b005b34801561023457600080fd5b5061023d610959565b6040518082815260200191505060405180910390f35b34801561025f57600080fd5b5061026861095f565b6040518082815260200191505060405180910390f35b34801561028a57600080fd5b506102cd600480360360208110156102a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610965565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561030457600080fd5b5061030d610a06565b6040518082815260200191505060405180910390f35b34801561032f57600080fd5b506103726004803603602081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a0c565b60405180848152602001838152602001828152602001935050505060405180910390f35b61039e610a36565b005b3480156103ac57600080fd5b506103b5610e98565b6040518082815260200191505060405180910390f35b3480156103d757600080fd5b5061041a600480360360208110156103ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e9e565b005b34801561042857600080fd5b50610431610eaa565b6040518082815260200191505060405180910390f35b34801561045357600080fd5b5061045c610eb0565b005b34801561046a57600080fd5b506104976004803603602081101561048157600080fd5b8101908080359060200190929190505050610ebb565b005b3480156104a557600080fd5b506104ae611088565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461052257600080fd5b61052b8261108e565b60008111801561057d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105905761058b826113a9565b6105f2565b6000811480156105e257506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105f1576105f082611458565b5b5b61065b8161064d600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461163190919063ffffffff16565b61167b90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106f3600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611703565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f465bc1e774b3c331b04932a22f9781dbb864defe943d70548ba9b8af6c528b5c8282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156107e757600090506108a7565b6000610834600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611703565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161088f576000925050506108a7565b6108a2818361163190919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090457600080fd5b81600d8190555080600e819055507f4bee245ad45dacfa3feb4cc8a61ace735c47b485fb8a399ce9e3f6c87aade418600d54600e54604051808381526020018281526020019250505060405180910390a15050565b60085481565b600e5481565b600080600080600854600a54600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015493509350935093509193509193565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506040513d6020811015610aeb57600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff81118015610b1857600080fd5b50604051908082528060200260200182016040528015610b475781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610b7a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610be457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610cdc578082015181840152602081019050610cc1565b50505050905001955050505050506000604051808303818588803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b50505050506000610df483600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610dab57600080fd5b505afa158015610dbf573d6000803e3d6000fd5b505050506040513d6020811015610dd557600080fd5b810190808051906020019092919050505061163190919063ffffffff16565b9050610e0b8160095461167b90919063ffffffff16565b600981905550610e4e610e3d600854610e2f84600c5461173590919063ffffffff16565b6117bb90919063ffffffff16565b600b5461167b90919063ffffffff16565b600b819055507fa3af609bf46297028ce551832669030f9effef2b02606d02cbbcc40fe6b47c553482604051808381526020018281526020019250505060405180910390a1505050565b600b5481565b610ea78161108e565b50565b600a5481565b610eb93361108e565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f1357600080fd5b600060048054905090506000811415610f2c5750611085565b6000805a90506000805b8584108015610f4457508482105b156110365784600f5410610f5b576000600f819055505b610f9d6004600f5481548110610f6d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611805565b15610fed57610fe46004600f5481548110610fb457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661108e565b80806001019150505b6110126110035a8561163190919063ffffffff16565b8561167b90919063ffffffff16565b93505a9250600f600081548092919060010191905055508180600101925050610f36565b7f96b82f6a439ac2d3939f479dd110e1915927d68eac70cf39a47cf294d53234ee8282600f5460405180848152602001838152602001828152602001935050505060405180910390a150505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156110de576113a6565b60006110e982610792565b905060008111156113a45761110981600a5461167b90919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156111a257600080fd5b505af11580156111b6573d6000803e3d6000fd5b505050506040513d60208110156111cc57600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127781600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461167b90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611308600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611703565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f33ad5d6b2a46b5457e0d36286a2686a0390b0821dedbbdf8dcdcda64f4782c688282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061146d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114e457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061158557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806115f957fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061167383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611869565b905092915050565b6000808284019050838110156116f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061172e600c54611720600b548561173590919063ffffffff16565b6117bb90919063ffffffff16565b9050919050565b60008083141561174857600090506117b5565b600082840290508284828161175957fe5b04146117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119f06021913960400191505060405180910390fd5b809150505b92915050565b60006117fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611929565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156118625750600e5461186083610792565b115b9050919050565b6000838311158290611916576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118db5780820151818401526020810190506118c0565b50505050905090810190601f1680156119085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561199a57808201518184015260208101905061197f565b50505050905090810190601f1680156119c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816119e157fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207f2e5d0ce72ae911d054c3fcbfd43413c9c41a77c99618b408545c89b29fcd7464736f6c63430007060033

Deployed ByteCode Sourcemap

13879:16841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24854:435;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16901:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17323:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23839:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16631:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26495:805;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17835:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28103:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4614:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16725:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27933:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28685:343;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17547:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25532:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28556:121;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;26131:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17071:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29040:215;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14363:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16987:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16811:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28294:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15226:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17671:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23938:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4223:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15254:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15498:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15022:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29263:159;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;27308:395;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15107:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29430:315;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17182:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27711:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15065:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4424:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20141:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5014:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25723:400;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26307:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15195:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4788:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24854:435;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25001:8:::1;24980:18;;:29;;;;;;;;;;;;;;;;;;25037:4;25020:14;:21;;;;25077:1;25052:22;:26;;;;25109:7;25089:17;:27;;;;25152:7;25127:22;:32;;;;25193:12;25170:20;:35;;;;25221:60;25248:8;25258:4;25264:7;25273;25221:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24854:435:::0;;;;:::o;16901:80::-;16949:13;16973:5;;;;;;;;;;;;;;;;;16966:12;;16901:80;:::o;17323:216::-;17398:4;17450:6;17415:11;:23;17427:10;17415:23;;;;;;;;;;;;;;;:32;17439:7;17415:32;;;;;;;;;;;;;;;:41;;;;17493:7;17472:37;;17481:10;17472:37;;;17502:6;17472:37;;;;;;;;;;;;;;;;;;17527:4;17520:11;;17323:216;;;;:::o;23839:91::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23906:16:::1;23915:6;23906:8;:16::i;:::-;23839:91:::0;:::o;16631:88::-;16686:7;16704:12;;16697:19;;16631:88;:::o;26495:805::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26774:8:::1;26761:10;;:21;;;;;;;;;;;;;;;;;;26808:11;26795:10;:24;;;;26846:14;26830:13;:30;;;;26886:13;26871:12;:28;;;;26919:7;26910:6;:16;;;;26950:59;27002:6;;26950:47;26984:12;;26950:29;26965:13;;26950:10;;:14;;:29;;;;:::i;:::-;:33;;:47;;;;:::i;:::-;:51;;:59;;;;:::i;:::-;26939:8;:70;;;;27037:13;27022:12;:28;;;;27080:15;27063:14;:32;;;;27158:1;27143:14;;:16;;;;;;27114:26;27127:12;;27114:8;;:12;;:26;;;;:::i;:::-;:45;27106:54;;;::::0;::::1;;27186:106;27198:8;27208:13;27223:11;27236:14;27252:13;27267:7;27276:15;27186:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26495:805:::0;;;;;;;:::o;17835:364::-;17935:4;17998:2;17955:11;:19;17967:6;17955:19;;;;;;;;;;;;;;;:31;17975:10;17955:31;;;;;;;;;;;;;;;;:46;17952:180;;18051:69;18087:6;18051:69;;;;;;;;;;;;;;;;;:11;:19;18063:6;18051:19;;;;;;;;;;;;;;;:31;18071:10;18051:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18017:11;:19;18029:6;18017:19;;;;;;;;;;;;;;;:31;18037:10;18017:31;;;;;;;;;;;;;;;:103;;;;17952:180;18151:40;18165:6;18173:9;18184:6;18151:13;:40::i;:::-;18144:47;;17835:364;;;;;:::o;28103:183::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28213:11:::1;;;;;;;;;;;:35;;;28249:10;28261:16;28213:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28103:183:::0;;:::o;4614:103::-;4669:4;4704:5;;;;;;;;;;;4693:16;;:7;:16;;;4686:23;;4614:103;;;:::o;16725:80::-;16777:5;14262:1;16786:16;;16725:80;:::o;27933:158::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28031:8:::1;28010:18;;:29;;;;;;;;;;;;;;;;;;28055:28;28074:8;28055:28;;;;;;;;;;;;;;;;;;;;27933:158:::0;:::o;28685:343::-;28742:4;28747:7;28755;28763;28771;28779;28821:18;;;;;;;;;;;28854:14;;28883:22;;28920:17;;28952:22;;28989:20;;28799:221;;;;;;;;;;;;28685:343;;;;;;:::o;17547:116::-;17602:4;17626:29;17634:7;17651:2;17626:7;:29::i;:::-;17619:36;;17547:116;;;:::o;25532:183::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25632:4:::1;25617:12;;:19;;;;;;25607:6;:29;;25599:38;;;::::0;::::1;;25663:6;25648:12;:21;;;;25685:22;25700:6;25685:22;;;;;;;;;;;;;;;;;;25532:183:::0;:::o;28556:121::-;28609:7;28618;28646:13;;28661:7;;28638:31;;;;28556:121;;:::o;26131:168::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26237:6:::1;26215:11;:19;26227:6;26215:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26259:32;26276:6;26284;26259:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;26131:168:::0;;:::o;17071:105::-;17137:7;17155:9;:18;17165:7;17155:18;;;;;;;;;;;;;;;;17148:25;;17071:105;;;:::o;29040:215::-;29097:4;29102:7;29110;29152:18;;;;;;;;;;;29185:23;;29223:13;;29130:117;;;;;;29040:215;;;:::o;14363:49::-;;;;:::o;16987:78::-;17039:7;17057:5;;;;;;;;;;;17050:12;;16987:78;:::o;16811:84::-;16861:13;16885:7;;;;;;;;;;;;;;;;;16878:14;;16811:84;:::o;28294:254::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28402:7:::1;28395:3;:14;;28387:23;;;::::0;::::1;;28438:3;28421:14;:20;;;;28471:10;28452:16;;:29;;;;;;;;;;;;;;;;;;28497:43;28524:3;28529:10;28497:43;;;;;;;;;;;;;;;;;;;;;;;;;;28294:254:::0;;:::o;15226:19::-;;;;;;;;;;;;;:::o;17671:156::-;17751:4;17775:44;17789:10;17801:9;17812:6;17775:13;:44::i;:::-;17768:51;;17671:156;;;;:::o;23938:104::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24005:29:::1;24024:8;24014:6;:19;24005:8;:29::i;:::-;23938:104:::0;:::o;4223:125::-;3939:19;3947:10;3939:7;:19::i;:::-;3931:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4305:4:::1;4283:14:::0;:19:::1;4298:3;4283:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4325:15;4336:3;4325:15;;;;;;;;;;;;;;;;;;;;4223:125:::0;:::o;15254:25::-;;;;:::o;15498:38::-;;;;;;;;;;;;;:::o;15022:36::-;;;;;;;;;;;;;:::o;29263:159::-;29317:4;29322:7;29364:11;;;;;;;;;;;29390:13;;29342:72;;;;29263:159;;:::o;27308:395::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27476:22:::1;27452:21;;:46;;;;;;;;;;;;;;;;;;27532:21;27509:20;;:44;;;;;;;;;;;;;;;;;;27581:15;27564:14;;:32;;;;;;;;;;;;;;;;;;27612:83;27632:22;27656:21;27679:15;27612:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27308:395:::0;;;:::o;15107:29::-;;;;;;;;;;;;;:::o;29430:315::-;29472:4;29477:7;29485;29493;29501;29509;29517;29559:10;;;;;;;;;;;29584;;29609:13;;29637:12;;29664:6;;29685:12;;29712:14;;29537:200;;;;;;;;;;;;;;29430:315;;;;;;;:::o;17182:133::-;17266:7;17284:11;:19;17296:6;17284:19;;;;;;;;;;;;;;;:28;17304:7;17284:28;;;;;;;;;;;;;;;;17277:35;;17182:133;;;;:::o;27711:214::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27817:8:::1;27803:11;;:22;;;;;;;;;;;;;;;;;;27852:7;27836:13;:23;;;;27875:42;27899:8;27909:7;27875:42;;;;;;;;;;;;;;;;;;;;;;;;;;27711:214:::0;;:::o;15065:35::-;;;;;;;;;;;;;:::o;4424:130::-;3939:19;3947:10;3939:7;:19::i;:::-;3931:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4508:5:::1;4486:14;:19;4501:3;4486:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4529:17;4542:3;4529:17;;;;;;;;;;;;;;;;;;;;4424:130:::0;:::o;20141:215::-;20197:7;20238:12;20233:1;20220:10;;:14;:30;20217:67;;20260:21;20279:1;20260:14;;:18;;:21;;;;:::i;:::-;20253:28;;;;20217:67;20301:7;:47;;20340:8;;20301:47;;;20311:26;20324:12;;20311:8;;:12;;:26;;;;:::i;:::-;20301:47;20294:54;;20141:215;;;;:::o;5014:173::-;3939:19;3947:10;3939:7;:19::i;:::-;3931:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5098:3:::1;5090:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;5134:4;5112:14:::0;:19:::1;5127:3;5112:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;5154:25;5175:3;5154:25;;;;;;;;;;;;;;;;;;;;5014:173:::0;:::o;25723:400::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25838:4:::1;25820:23;;:6;:23;;;;:41;;;;;25857:4;;;;;;;;;;;25847:14;;:6;:14;;;;25820:41;25812:50;;;::::0;::::1;;25900:6;25873:16;:24;25890:6;25873:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;25920:6;25917:146;;;25942:11;;;;;;;;;;;:20;;;25963:6;25971:1;25942:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25917:146;;;26004:11;;;;;;;;;;;:20;;;26025:6;26033:9;:17;26043:6;26033:17;;;;;;;;;;;;;;;;26004:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25917:146;26078:37;26100:6;26108;26078:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;25723:400:::0;;:::o;26307:180::-;4108:24;4121:10;4108:12;:24::i;:::-;4100:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26421:6:::1;26395:15;:23;26411:6;26395:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;26443:36;26464:6;26472;26443:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;26307:180:::0;;:::o;15195:24::-;;;;;;;;;;;;;:::o;4788:107::-;4844:4;4868:14;:19;4883:3;4868:19;;;;;;;;;;;;;;;;;;;;;;;;;4861:26;;4788:107;;;:::o;24050:116::-;24104:23;24114:6;24122:4;;;;;;;;;;;24104:9;:23::i;:::-;24143:15;24151:6;24143:15;;;;;;;;;;;;;;;;;;24050:116;:::o;1280:181::-;1338:7;1358:9;1374:1;1370;:5;1358:17;;1399:1;1394;:6;;1386:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1452:1;1445:8;;;1280:181;;;;:::o;1609:192::-;1695:7;1728:1;1723;:6;;1731:12;1715:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1755:9;1771:1;1767;:5;1755:17;;1792:1;1785:8;;;1609:192;;;;;:::o;18207:1130::-;18299:4;18319:6;;;;;;;;;;;18316:63;;;18335:41;18350:6;18358:9;18369:6;18335:14;:41::i;:::-;18328:48;;;;18316:63;18391:21;18405:6;18391:13;:21::i;:::-;18423:28;18436:6;18444;18423:12;:28::i;:::-;18467:16;:14;:16::i;:::-;18464:35;;;18486:10;:8;:10::i;:::-;18464:35;18512:19;:17;:19::i;:::-;18509:48;;;18534:20;:18;:20::i;:::-;18509:48;18573:10;:8;:10::i;:::-;18572:11;:32;;;;;18600:4;;;;;;;;;;;18587:17;;:9;:17;;;18572:32;18569:81;;;18635:1;18615:9;:17;18625:6;18615:17;;;;;;;;;;;;;;;;:21;18607:30;;;;;;18639:8;:6;:8::i;:::-;18569:81;18682:53;18704:6;18682:53;;;;;;;;;;;;;;;;;:9;:17;18692:6;18682:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18662:9;:17;18672:6;18662:17;;;;;;;;;;;;;;;:73;;;;18748:22;18773:21;18787:6;18773:13;:21::i;:::-;:67;;18834:6;18773:67;;;18797:34;18805:6;18813:9;18824:6;18797:7;:34::i;:::-;18773:67;18748:92;;18874:40;18899:14;18874:9;:20;18884:9;18874:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18851:9;:20;18861:9;18851:20;;;;;;;;;;;;;;;:63;;;;18931:16;:24;18948:6;18931:24;;;;;;;;;;;;;;;;;;;;;;;;;18927:96;;18962:11;;;;;;;;;;;:20;;;18983:6;18991:9;:17;19001:6;18991:17;;;;;;;;;;;;;;;;18962:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18958:63;;;;;;18927:96;19037:16;:27;19054:9;19037:27;;;;;;;;;;;;;;;;;;;;;;;;;19033:105;;19071:11;;;;;;;;;;;:20;;;19092:9;19103;:20;19113:9;19103:20;;;;;;;;;;;;;;;;19071:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19067:69;;;;;;19033:105;19153:16;;;;;;;;;;;19150:97;;;19189:11;;;;;;;;;;;:19;;;19209:14;;19189:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19185:51;;;;;;19150:97;19281:9;19264:43;;19273:6;19264:43;;;19292:14;19264:43;;;;;;;;;;;;;;;;;;19325:4;19318:11;;;18207:1130;;;;;;:::o;1467:136::-;1525:7;1552:43;1556:1;1559;1552:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1545:50;;1467:136;;;;:::o;24485:361::-;15764:4;15755:6;;:13;;;;;;;;;;;;;;;;;;24561:21:::1;24599:1;24585:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24561:40;;24622:4;;;;;;;;;;;24612;24617:1;24612:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;24655:4;24637;24642:1;24637:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;24673:6;;;;;;;;;;;:57;;;24738:6;24760:1;24776:4;24795:2;24812:15;24673:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;15770:1;15782:5:::0;15773:6;;:14;;;;;;;;;;;;;;;;;;24485:361;;:::o;19345:330::-;19438:4;19475:53;19497:6;19475:53;;;;;;;;;;;;;;;;;:9;:17;19485:6;19475:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19455:9;:17;19465:6;19455:17;;;;;;;;;;;;;;;:73;;;;19562:32;19587:6;19562:9;:20;19572:9;19562:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19539:9;:20;19549:9;19539:20;;;;;;;;;;;;;;;:55;;;;19627:9;19610:35;;19619:6;19610:35;;;19638:6;19610:35;;;;;;;;;;;;;;;;;;19663:4;19656:11;;19345:330;;;;;:::o;19683:140::-;19755:10;:8;:10::i;:::-;:34;;;;19769:20;19782:6;19769:12;:20::i;:::-;19755:34;19747:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19683:140;:::o;19831:166::-;19928:12;;19918:6;:22;;:49;;;;19944:15;:23;19960:6;19944:23;;;;;;;;;;;;;;;;;;;;;;;;;19918:49;19910:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19831:166;;:::o;20939:197::-;20988:4;21026;;;;;;;;;;;21012:18;;:10;:18;;;;:38;;;;;21044:6;;;;;;;;;;;21043:7;21012:38;:62;;;;;21063:11;;;;;;;;;;;21012:62;:116;;;;;21115:13;;21087:9;:24;21105:4;21087:24;;;;;;;;;;;;;;;;:41;;21012:116;21005:123;;20939:197;:::o;21144:2397::-;15764:4;15755:6;;:13;;;;;;;;;;;;;;;;;;21223::::1;;21196:23;;:40;;:62;;;;;21240:18;;;;;;;;;;;21196:62;21193:2341;;;21300:42;21328:13;;21300:23;;:27;;:42;;;;:::i;:::-;21274:23;:68;;;;21357:23;21383:20;21401:1;21383:13;;:17;;:20;;;;:::i;:::-;21357:46;;21420:21;21458:1;21444:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21420:40;;21493:4;21475;21480:1;21475:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21523:4;;;;;;;;;;;21513;21518:1;21513:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;21544:21;21568;21544:45;;21606:6;;;;;;;;;;;:57;;;21682:15;21716:1;21736:4;21767;21791:15;21606:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21838:17;21858:40;21884:13;21858:21;:25;;:40;;;;:::i;:::-;21838:60;;21915:6;;;;;;;;;;;:22;;;21945:9;21982:4;22006:15;22040:1;22060::::0;22080:21:::1;;;;;;;;;;;22120:15;21915:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22184:39;22196:9;22207:15;22184:39;;;;;;;;;;;;;;;;;;;;;;;;21193:2341;;;;;;;22254:20;22277:13;;22254:36;;22307:21;22345:1;22331:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22307:40;;22380:4;22362;22367:1;22362:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;22410:4;;;;;;;;;;;22400;22405:1;22400:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;22431:21;22455;22431:45;;22493:6;;;;;;;;;;;:57;;;22569:12;22600:1;22620:4;22651;22675:15;22493:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22722:17;22742:40;22768:13;22742:21;:25;;:40;;;;:::i;:::-;22722:60;;22799:27;22829:42;22862:8;;22829:28;22843:13;;22829:9;:13;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;22799:72;;22886:26;22915:41;22947:8;;22915:27;22929:12;;22915:9;:13;;:27;;;;:::i;:::-;:31;;:41;;;;:::i;:::-;22886:70;;22971:20;22994:35;23020:8;;22994:21;23008:6;;22994:9;:13;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;22971:58;;23050:11;;;;;;;;;;;:19;;;23077;23050:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23046:65;;;;;;23128:12;23154:20;;;;;;;;;;;23146:34;;23188:18;23213:5;23146:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23127:96;;;23241:7;23238:69;;;23267:37;23285:18;23267:13;;:17;;:37;;;;:::i;:::-;23251:13;:53;;;;23238:69;23345:14;;;;;;;;;;;23337:28;;23373:12;23392:5;23337:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23323:79;;;;;23420:7;23417:51;;;23440:25;23452:12;23440:7;;:11;;:25;;;;:::i;:::-;23430:7;:35;;;;23417:51;23489:33;23498:12;23512:9;23489:33;;;;;;;;;;;;;;;;;;;;;;;;21193:2341;;;;;;;;;15782:5:::0;15773:6;;:14;;;;;;;;;;;;;;;;;;21144:2397::o;23549:282::-;23601:4;23639;;;;;;;;;;;23625:18;;:10;:18;;;;:38;;;;;23657:6;;;;;;;;;;;23656:7;23625:38;:69;;;;;23676:18;;;;;;;;;;;23625:69;:143;;;;;23756:12;23730:22;;23707:20;;:45;:61;;23625:143;:198;;;;;23806:17;;23781:21;:42;;23625:198;23618:205;;23549:282;:::o;24174:303::-;24224:34;24234:17;;24253:4;;;;;;;;;;;24224:9;:34::i;:::-;24292:12;24269:20;:35;;;;24340:45;24367:17;;24340:22;;:26;;:45;;;;:::i;:::-;24315:22;:70;;;;24424:14;;24399:22;;:39;24396:74;;;24462:5;24441:18;;:26;;;;;;;;;;;;;;;;;;24396:74;24174:303::o;25297:90::-;25340:4;25378:1;25364:10;;:15;;25357:22;;25297:90;:::o;25395:129::-;25446:12;25433:10;:25;;;;25488:4;25469:16;;:23;;;;;;;;;;;;;;;;;;25508:8;;;;;;;;;;25395:129::o;20005:128::-;20067:4;20091:10;;;;;;;;;;;:34;;;;;20106:11;:19;20118:6;20106:19;;;;;;;;;;;;;;;;;;;;;;;;;20105:20;20091:34;20084:41;;20005:128;;;:::o;20364:567::-;20449:7;20469:17;20489:61;20535:14;;20489:41;20500:29;20524:4;;;;;;;;;;;20512:16;;:8;:16;;;20500:11;:29::i;:::-;20489:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;20469:81;;20590:39;20619:9;20590;:24;20608:4;20590:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20563:9;:24;20581:4;20563:24;;;;;;;;;;;;;;;:66;;;;20670:4;20645:42;;20654:6;20645:42;;;20677:9;20645:42;;;;;;;;;;;;;;;;;;20715:4;;;;;;;;;;;20703:16;;:8;:16;;;:38;;;;;20723:18;;;;;;;;;;;20703:38;20700:183;;;20783:88;20811:59;20843:26;20856:12;;20843:8;;:12;;:26;;;;:::i;:::-;20811:27;20825:12;;20811:9;:13;;:27;;;;:::i;:::-;:31;;:59;;;;:::i;:::-;20783:23;;:27;;:88;;;;:::i;:::-;20757:23;:114;;;;20700:183;20902:21;20913:9;20902:6;:10;;:21;;;;:::i;:::-;20895:28;;;20364:567;;;;;:::o;2063:132::-;2121:7;2148:39;2152:1;2155;2148:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2141:46;;2063:132;;;;:::o;1807:250::-;1865:7;1894:1;1889;:6;1885:47;;;1919:1;1912:8;;;;1885:47;1944:9;1960:1;1956;:5;1944:17;;1989:1;1984;1980;:5;;;;;;:10;1972:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2048:1;2041:8;;;1807:250;;;;;:::o;2201:345::-;2287:7;2386:1;2382;:5;2389:12;2374:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2413:9;2429:1;2425;:5;;;;;;2413:17;;2537:1;2530:8;;;2201:345;;;;;:::o

Swarm Source

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