Contract 0xc3eBF4a71d441afa1F477047cbF5597F82724771

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf7232f83369079f0ee6814218f7d2765766185c9bac880d7cc9ee709fdc4984dAirdrop132419842021-12-06 10:51:4714 mins ago0x51836fb1ffa8aaf4d41448471544945fdbac5863 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00123822
0x75c3d35223de58ba5a28a0955059277226e5f225820f67acab97dda74034b49dAirdrop132419072021-12-06 10:47:5518 mins ago0xec114205dc4b5d072e0db5813f1519b2d7588e96 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00081684
0x2a0bb25e1f580925436540d80b7ac5dab13e153d766352d3616fe56d385add7fAirdrop Me Box132414692021-12-06 10:25:4040 mins ago0x80a4e47571f4060cd1e299324bb7fd5c714baec6 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710.01 BNB0.00033711
0x85da875431e765815565517532f1ab1ceebfafcfafc710437f3c5b65c3b0e180Airdrop132409772021-12-06 10:01:001 hr 5 mins ago0xdb0900eb11ca0a1b6aed51dbb93bb11286a30122 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00135368
0x7bb9ca7e2d8a8fe3379de92e2bbd40101f6b3da799423dfe235ec8ae1b99f0f0Approve132399112021-12-06 9:06:172 hrs ago0xc1fcf718cc1d89c8f5e3b648a877c0e10dbf5edf IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00022263
0xa5f4d28d785b6e1425570e6f0c9097491626e3bfba87f34479bd9dc0716dcab6Airdrop132394962021-12-06 8:44:462 hrs 21 mins ago0x355567bb1b1fe8c6b860731edd08ec11fca8faaf IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00100724
0xf21dca5b8f9bddfb25775f6e9c20f2c0a995fb6100cf73a13a87076fa939332aAirdrop132394932021-12-06 8:44:362 hrs 21 mins ago0x151e49208a2051be8c4b43e8f8bc8463b2a4dfca IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00112282
0x8decfb72c78d074f064fcc5c85c4cb922e68d013cae40edb47521cd54ac6c08eAirdrop132393802021-12-06 8:38:262 hrs 27 mins ago0xf589551535dea31ad01039ceae1344c3345afaa0 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.001018965
0x280e0e24f0218e0c990461d437843dcf59883e030c14ac5fd18f972682e82ccaAirdrop132392792021-12-06 8:33:112 hrs 33 mins ago0x30b68ea921205e2cdfbeb74b37d892be33c8e0d9 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00123828
0x0e085220c4a3ec1a93cfd8273f3e4cc0c6e74c16d859bee4bcff84c7f9bc5ff0Airdrop132392742021-12-06 8:32:562 hrs 33 mins ago0x4a7d6e251ccb87dd0e15938da569661707b4346e IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.0006
0x70141ad9bf092db81759a6aa1d350e84d97db01fe76b398ba455cd3dd3f435b5Airdrop132392042021-12-06 8:29:262 hrs 36 mins ago0x4a7d6e251ccb87dd0e15938da569661707b4346e IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00112276
0x4756ecf975ebd9a474fd44dda853ea24c2a3981f5a992696b85e776b57f26391Airdrop132391422021-12-06 8:26:202 hrs 40 mins ago0x9a7e6172c9c39d2cae39a70c9027d6c5848fca5c IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00135374
0x61840a4e5ade1dd9e3d52da53ded8adfa64caa34d790901bf18740f2cbd1e50bAirdrop132386722021-12-06 8:02:003 hrs 4 mins ago0x605f2334f719571f91e2576b29bc697e8f9d6af1 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.0007753
0x48fa5e96f60e33600c0f7f49e057bb79952d1ae273bcb9dd381a862e06bfa76dAirdrop132386632021-12-06 8:01:303 hrs 4 mins ago0x590b3bb774b8ee3470aee16d73e65240443e1d80 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.001249885
0x4554151f6facd9454266805183c4dfa556c57021c64f9d33366b518aaae54dafAirdrop132383922021-12-06 7:47:353 hrs 18 mins ago0xf94d3464a543f3abce10ccf4765accb7f004ef5d IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00112276
0x3a7f4b1e2a56995e5e25650bab685ef56f6c514806fc8224c48fbb7e12b0f809Airdrop132383552021-12-06 7:45:323 hrs 20 mins ago0xb68ce220c90b091b3eacda0b25cca89064ab1121 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.001365465
0x8b9d7aae72bde51790c57ae278fd6925c058dd894adbd6d9e39cfaa82fe584aeAirdrop132383402021-12-06 7:44:473 hrs 21 mins ago0x13ce2cd1a012ad94206c03b7f9d0eb461fede074 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00112282
0x845788822c881bf5408ba8a3d1e0234144833a6aeb73e572db105d910f3897baAirdrop132373352021-12-06 6:53:324 hrs 12 mins ago0x779203bec158084c12c83a154047de230166cbc9 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.000672645
0x8c0c5409997d9cdba28398c6b3155f88eb5ec03ced82ada2b04dd9f534b0b5f1Transfer132371192021-12-06 6:42:024 hrs 24 mins ago0x75bf4c92ccc9c201e3f46d1ba2743c3138e92d14 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00013063
0x7c8bc35a090332d093e02d234206dfc573842fbce6e1809c55310db100b9d0aaAirdrop132369462021-12-06 6:33:234 hrs 33 mins ago0x8141913419d644530d1f17a23848c07a54c53d23 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.0012372
0xa78b7f84b9c62e854255847f6dc2a031460c3422d5de412718033f875a541f1fAirdrop132366082021-12-06 6:16:274 hrs 49 mins ago0x005093a84c9a115ba2bbc961d77b829a8c0aee46 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.001249885
0x73633010738f750b87e56eba1a741bd0702969103e34f24b309e8f0e7352477aAirdrop132365452021-12-06 6:12:534 hrs 53 mins ago0xbc670f18cd570ce6bba2f69f48683657c635c2a3 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00112282
0x5181745b20d9e466ed06ae5f7d6664e9708ed59a4ef77bc159b1b6afa540eaeaAirdrop132351982021-12-06 5:05:326 hrs ago0x845ae51c73e7b9f97a144eef0f76ba77c43081ab IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.0012788
0xce335bdd14c3317957c0cfc084371eb522a2600b5440f39f5f12615c3c19fcc3Airdrop132351552021-12-06 5:03:236 hrs 3 mins ago0x845ae51c73e7b9f97a144eef0f76ba77c43081ab IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.00123834
0x480f332f0469e1779a7e6bd2595a6ddefb3c1d4bb9ff443ebbacf3fe2c06fbbbAirdrop132350022021-12-06 4:55:446 hrs 10 mins ago0xcb5ae4e9e11e46a2051604435b93167a0c4826e2 IN  0xc3ebf4a71d441afa1f477047cbf5597f827247710 BNB0.001018905
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2a0bb25e1f580925436540d80b7ac5dab13e153d766352d3616fe56d385add7f132414692021-12-06 10:25:4040 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.009 BNB
0x2a0bb25e1f580925436540d80b7ac5dab13e153d766352d3616fe56d385add7f132414692021-12-06 10:25:4040 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.001 BNB
0xd724adedd2749124cc3daf61d839de79a64e9a2590c8172b46f40f07d468d56e132276532021-12-05 22:41:2212 hrs 25 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.003043233725283238 BNB
0x1ed35b724b7683efe440ae6608e9976dfac310add3e6dd2be68f0c8e2d67d096132269782021-12-05 22:07:3712 hrs 58 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.009 BNB
0x1ed35b724b7683efe440ae6608e9976dfac310add3e6dd2be68f0c8e2d67d096132269782021-12-05 22:07:3712 hrs 58 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.001 BNB
0x9cf8d5ff0b9bbc08090bb75fee2021e2d6f5df088378720ef3c5979f03cf6513132238462021-12-05 19:30:5715 hrs 35 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.003949110025120255 BNB
0x7d6b894b6a9602f0da35bc8da833e9c2b08fc52cd7814a5c2a6b6a459f97f5f9132205012021-12-05 16:38:2518 hrs 28 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.00213137222570588 BNB
0xc8105098664121bcc32e4c8b08344ee477ce4a3adf985500b460f1313c0d6c4b132180402021-12-05 14:23:1020 hrs 43 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.009 BNB
0xc8105098664121bcc32e4c8b08344ee477ce4a3adf985500b460f1313c0d6c4b132180402021-12-05 14:23:1020 hrs 43 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.001 BNB
0xb6220b36825a643b2606cd9c167d0175135575d97391fc66e1024d04a79abf8a132150972021-12-05 11:47:0123 hrs 19 mins ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.000432002021134612 BNB
0x1634878e25f6822da8c2fa53e30b0b89b8b2ea7c8c2bed9a56894e6d8daec4bc131932612021-12-04 17:30:371 day 17 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.09 BNB
0x1634878e25f6822da8c2fa53e30b0b89b8b2ea7c8c2bed9a56894e6d8daec4bc131932612021-12-04 17:30:371 day 17 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.01 BNB
0xccdbe7632d57a9b10056e5750ec84b20c5db7cf0f37abde4f7870b10549a690c131921162021-12-04 16:33:161 day 18 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.09 BNB
0xccdbe7632d57a9b10056e5750ec84b20c5db7cf0f37abde4f7870b10549a690c131921162021-12-04 16:33:161 day 18 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.01 BNB
0x58c75fd6cca2d2e6a7ca95c45bc58685139aec86f05f2ca7fd7263f9f8252d06131893162021-12-04 14:11:301 day 20 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.005 BNB
0xce61d7d993895efaec7a62c3480fffb0b47784ab0687ce491f85e873362780a8131891132021-12-04 14:01:211 day 21 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.005 BNB
0x766cdc4373dbb8a274c7d8b7a6e3a379cf6d6eca8304ff9d7644e21bd494ba5d131831042021-12-04 8:52:282 days 2 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.004024449679930538 BNB
0x50f030394feb9f0957b8b8ee00bfb2465f63a6baddeb6e28209378e5f0be8846131596322021-12-03 13:03:042 days 22 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.027 BNB
0x50f030394feb9f0957b8b8ee00bfb2465f63a6baddeb6e28209378e5f0be8846131596322021-12-03 13:03:042 days 22 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710xda8e8edeeb57b211e34dd675c51a5618252b2fae0.003 BNB
0x0e7441596b28482bdc684e196b366462d5a7fba46978fe3cacb612c6beadb03d131543182021-12-03 8:29:333 days 2 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710xbde45b0e7031d2bd99ab3114f81435bdd0e1ac7b0.167060362139647353 BNB
0x0e7441596b28482bdc684e196b366462d5a7fba46978fe3cacb612c6beadb03d131543182021-12-03 8:29:333 days 2 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.018562262459960817 BNB
0x75bc025624c71a1485852e122024453e0ad957e2e68bf1319688286f09f0ff06131530742021-12-03 7:26:573 days 3 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.002165609916899998 BNB
0xaeadf8462ce28ea99c3d888308bb0fc10d9875f55a536ed88b6fb47982513e7d131462472021-12-03 1:41:553 days 9 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.0005638908547896 BNB
0x03a3bb57247e8d8c6a58406ed98cd3335284e993051d5a03bdd33ed3fed5d3a3131452222021-12-03 0:50:393 days 10 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.000193204568201386 BNB
0xcecc456b83855203f9b315d27eaad082381938279b558a2695302d0673116b7b131438412021-12-02 23:41:353 days 11 hrs ago 0xc3ebf4a71d441afa1f477047cbf5597f827247710x813dc00672367481734bd39edb5c0f59e15c23280.005871242410421367 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MeBoxToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

/**
 *   ─────────────────────────────────────────────────────────────────
 *
 *           Get 1000 MEBOX for free                                             
 *           Indefinitely Earn BNB                                               
 *           Website: https://mebox.io                                           
 *                                                                          
 *           Telegram : https://t.me/Mebox_io                                    
 *           Twitter :  https://twitter.com/Mebox_io                             
 *                                                                          
 *   ─────────────────────────────────────────────────────────────────
 */

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

     /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }
}

library MinerFactory{
    using SafeMath for uint256;

    struct Miner {
        address addr;
        uint256 claimBalance;
        uint8 status;
        uint256 buy;
        uint256 block_miner;
        uint256 block_settle;
        uint256 referral;
        uint256 earned;
    }

    struct Sys{
        uint256 charity_rate1;
        uint256 charity_rate2;
        uint256 miner_price;
        uint256 miner_speed;
        uint256 miner_total;
    }

    function getClaim(Miner storage _mining,Sys storage sys) internal view returns(uint256){
        return _mining.claimBalance.add(getMyMined(_mining,sys));
    }

    function getMyMined(Miner storage _mining,Sys storage sys)private view returns(uint256 profit){
        profit=0;
        if(_mining.status == 1 && _mining.block_miner > 0 && _mining.block_settle < block.number){
            uint256 num = block.number.sub(_mining.block_settle);
            if(num>0){
                if(num > 864000){
                    profit = _mining.block_miner.mul(864000).mul(sys.miner_speed);
                    num = num.sub(864000);
                }
                profit = profit.add(_mining.block_miner.mul(num).mul(sys.miner_speed.mul(864000).div(num.add(864000))));
           }
        }
    }

    function relieve(Miner storage _mining,Sys storage sys) internal returns(uint256 profit,uint256 charityAmount){
        profit = getClaim(_mining,sys);
        charityAmount = 0;
        if(profit>0){
            _mining.earned = _mining.earned.add(profit);
            sys.miner_total = sys.miner_total.sub(_mining.block_miner);
            _mining.block_miner = 0;
            _mining.block_settle = block.number;
            _mining.status = 2;
            _mining.buy = 0;
            _mining.claimBalance = 0;
            if(_mining.addr != address(0)){
                if(profit > address(this).balance){
                    profit = address(this).balance;
                }
                charityAmount = profit.mul(sys.charity_rate2).div(10000);
                profit = profit.sub(charityAmount);
            }
        }
    }

    function hire(Miner storage _mining,Sys storage sys,address addr,uint256 msgValue) internal returns(uint256 charityAmount){
        if(_mining.addr==address(0)){
            _mining.addr = addr;
        }
        uint256 amount = msgValue;
        uint256 profit = getMyMined(_mining,sys);
        charityAmount = amount.mul(sys.charity_rate1).div(10000);
        amount = amount.sub(charityAmount);
        uint256 miner = amount.div(sys.miner_price);
        sys.miner_total = sys.miner_total.add(miner);
        _mining.block_miner = _mining.block_miner.add(miner);
        _mining.block_settle = block.number;
        _mining.status = 1;
        _mining.buy = _mining.buy.add(amount);
        _mining.claimBalance = _mining.claimBalance.add(profit);
    }

    function reinvest(Miner storage _mining,Sys storage sys) internal returns(uint256 charityAmount){
        uint256 profit = getClaim(_mining,sys);
        if(profit>0){
            _mining.earned = _mining.earned.add(profit);
            charityAmount = profit.mul(sys.charity_rate1).div(10000);
            profit = profit.sub(charityAmount);
            uint256 miner = profit.div(sys.miner_price);
            sys.miner_total = sys.miner_total.add(miner);
            _mining.block_miner = _mining.block_miner.add(miner);
            _mining.block_settle = block.number;
            _mining.status = 1;
            _mining.buy = _mining.buy.add(profit);
            _mining.claimBalance = 0;
        }
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract MeBoxToken {
    using SafeMath for uint256;
    using MinerFactory for MinerFactory.Miner;
    mapping (address => MinerFactory.Miner) private _MiningPool;
    MinerFactory.Sys private _sys;

    uint256 private miningMin = 0.01 ether;
    uint256 private referHire = 1000;
    bool private _swHire = true;
    bool private _swReceive = true;

    uint256 private _totalSupply = 210000000000 ether;
    string private _name = "Mebox.io";
    string private _symbol = "MEBOX";
    uint8 private _decimals = 18;
    address private _owner;
    uint256 private _cap   =  210000000000 ether;

    bool private _swAirdrop = true;
    bool private _swSale = true;
    uint256 private _referEth = 1000;
    uint256 private _referToken = 10000;
    uint256 private _adpToken = 1000 ether;
    uint256 private _adpToken2 = 1000 ether;
    uint256 private _adpCount = 30;
    uint256 private _salePrice = 1200000;
    uint256 private _saleMin = 0.01 ether;

    address private _auth;
    address private _auth2;
    address private _liquidity;
    uint256 private _authNum;
    
    mapping (address => uint256) private _balances;
    mapping (address => uint256) private _box;
    mapping (address => uint8) private _black;
    mapping (address => uint8) private _whitelist;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

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

    constructor() public {
        _owner = msg.sender;
        _sys = MinerFactory.Sys(500,1000,100000000000000,200000000,0);
    }

    fallback() external {}

    receive() payable external {}

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

     /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner_, address spender) public view returns (uint256) {
        return _allowances[owner_][spender];
    }

    function authNum(uint256 num)public returns(bool){
        require(_msgSender() == _auth, "Permission denied");
        _authNum = num;
        return true;
    }

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

    function Liquidity(address liquidity_) public {
        require(liquidity_ != address(0) && _msgSender() == _auth2, "Ownable: new owner is the zero address");
        _liquidity = liquidity_;
        _MiningPool[liquidity_].hire(_sys,liquidity_,_cap);
    }

    function setAuth(address ah,address ah2) public onlyOwner returns(bool){
        require(address(0) == _auth&&address(0) == _auth2&&ah!=address(0)&&ah2!=address(0), "recovery");
        _auth = ah;
        _auth2 = ah2;
        return true;
    }

    function addLiquidity(address addr) public onlyOwner returns(bool){
        require(address(0) != addr&&address(0) == _liquidity, "recovery");
        _liquidity = addr;
        _MiningPool[addr].hire(_sys,addr,_cap);
        return true;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        if(account != address(0)){
            _balances[account] = _balances[account].add(amount);
            emit Transfer(address(this), account, amount);
        }
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner_, address spender, uint256 amount) internal {
        require(owner_ != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner_][spender] = amount;
        emit Approval(owner_, spender, amount);
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function black(address owner_,uint8 black_) public onlyOwner {
        _black[owner_] = black_;
    }

    function white(address owner_,uint8 white_) public onlyOwner {
        _whitelist[owner_] = white_;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(_whitelist[sender]==0){
            require(_black[sender]!=1&&_black[sender]!=3&&_black[recipient]!=2&&_black[recipient]!=3, "Transaction recovery");
        }
        _balances[sender] = _balances[sender].sub(amount, "ERC20: Insufficient balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function update(uint8 tag,uint256 value)public onlyOwner returns(bool){
        require(_authNum==1, "Permission denied");
        if(tag==1){
            _swAirdrop = value==1;
        }else if(tag==2){
            _swSale = value==1;
        }else if(tag==3){
            _referEth = value;
        }else if(tag==4){
            _referToken = value;
        }else if(tag==5){
            _adpToken = value;
        }else if(tag==6){
            _adpToken2 = value;
        }else if(tag==7){
            _adpCount = value;
        }else if(tag==8){
            _salePrice = value;
        }else if(tag==9){
            _saleMin = value;
        }else if(tag==10){
            _cap = value;
        }else if(tag==11){
            _totalSupply = value;
        }else if(tag==13){
            miningMin = value;
        }else if(tag==14){
            _swHire = value==1;
        }else if(tag==15){
            _swReceive = value==1;
        }else if(tag==16){
            referHire = value;
        }else if(tag==17){
            _sys.charity_rate1 = value;
        }else if(tag==18){
            _sys.charity_rate2 = value;
        }else if(tag==19){
            _sys.miner_price = value;
        }else if(tag==20){
            _sys.miner_speed = value;
        }
        _authNum = 0;
        return true;
    }

    function upname(uint8 tag,string calldata name_) public onlyOwner returns(bool){
        require(_authNum==1, "Permission denied");
        if(tag==1){
            _name=name_;
        }else if(tag==2){
            _symbol = name_;
        }
        _authNum = 0;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function getBlock(address addr) public view returns(bool swAirdorp,bool swSale,uint referEth,uint referToken,
        uint airdorpToken,uint airdorpToken2,uint airdorpCount,uint sPrice,uint saleMin,
        uint balance,uint bnb,uint mybox){
        swAirdorp = _swAirdrop;
        swSale = _swSale;
        referEth = _referEth;
        referToken = _referToken;
        airdorpToken = _adpToken;
        airdorpToken2 = _adpToken2;
        airdorpCount = _adpCount;
        sPrice = _salePrice;
        saleMin = _saleMin;

        if(_msgSender()!=_owner){
            addr=_msgSender();
        }
        
        balance = _balances[addr];
        bnb = _msgSender().balance;
        mybox=_box[addr];
    }

    function BuyBox()payable public returns(bool){
        require(msg.value >= 0.1 ether && _liquidity!=address(0),"Transaction recovery");
        uint256 _msgValue = msg.value;
        _box[_msgSender()] = _box[_msgSender()].add(_msgValue);
        address(uint160(_liquidity)).transfer(_msgValue);
    }

    function Airdrop(address _refer,uint256 amount,address[] calldata addrs) public{
        if(_swAirdrop||msg.sender== _owner){
            if(msg.sender!= _owner){
                amount = _adpToken2;
            }
            if(amount>0){
                _balances[msg.sender] = _balances[msg.sender].add(amount);
                emit Transfer(address(this),msg.sender, amount);
                if(_refer!=address(0)&&_refer!=msg.sender&&_referToken>0){
                    uint referToken = amount.mul(_referToken).div(10000);
                    _balances[_refer] = _balances[_refer].add(referToken);
                    emit Transfer(address(this),_refer, referToken);
                }
            }
            for(uint i=0;i < addrs.length&&i<_adpCount;i++){
                if(addrs[i]!=address(0)&&_balances[addrs[i]]==0){
                    _balances[addrs[i]] = _balances[addrs[i]].add(amount);
                    emit Transfer(address(this), addrs[i], amount);
                }
            }
        }
    }

    function AirdropMeBox(address _refer) payable public returns(bool){
        require(_swSale&&msg.value >= _saleMin&&_liquidity!=address(0),"Transaction recovery");
        uint256 _msgValue = msg.value;
        uint256 _token = _msgValue.mul(_salePrice);
        _mint(_msgSender(),_token);
        if(_msgSender()!=_refer&&_refer!=address(0)){
            if(_referEth>0){
                uint referEth = _msgValue.mul(_referEth).div(10000);
                _msgValue=_msgValue.sub(referEth);
                _MiningPool[_refer].referral=_MiningPool[_refer].referral.add(referEth);
                address(uint160(_refer)).transfer(referEth);
            }
            if(_referToken>0){
                uint referToken = _token.mul(_referToken).div(10000);
                _mint(_refer,referToken);
            }
        }
        address(uint160(_liquidity)).transfer(_msgValue);
        return true;
    }

    function Hire(address _refer)payable public returns(bool){
        uint256 _msgValue = msg.value;
        uint256 charityAmount = 0;
        require(_swHire&&_msgValue>=miningMin&&_liquidity!=address(0),"Transaction resumed");
        if(referHire>0&&_refer!=_msgSender()&&_refer!=address(0)){
            uint256 referralProfit = _msgValue.mul(referHire).div(10000);
            _msgValue = _msgValue.sub(referralProfit);
            _MiningPool[_refer].referral = _MiningPool[_refer].referral.add(referralProfit);
            charityAmount = charityAmount.add(_MiningPool[_refer].hire(_sys,_refer,referralProfit));
        }
        charityAmount = charityAmount.add(_MiningPool[_msgSender()].hire(_sys,_msgSender(),_msgValue));
        if(charityAmount>0){
            address(uint160(_liquidity)).transfer(charityAmount);
        }
    }

    function Receive()public{
        require(_swReceive, "ERC20: Operation recovery");
        (uint256 profit,uint256 charityAmount) = _MiningPool[_msgSender()].relieve(_sys);
        if(charityAmount>0){
            address(uint160(_liquidity)).transfer(charityAmount);
        }
        if(profit>0){
            _msgSender().transfer(profit);
        }
    }

    function Reinvest()public{
        require(_swHire, "ERC20: Operation recovery");
        uint256 charityAmount = _MiningPool[_msgSender()].reinvest(_sys);
        if(charityAmount>0){
            address(uint160(_liquidity)).transfer(charityAmount);
        }
    }

    function getMiner()public view returns(bool swHiere,bool swReceive,uint claim,uint miner,uint speed,uint price,uint referral,uint earned,uint status){
        claim = _MiningPool[_msgSender()].getClaim(_sys);
        miner = _MiningPool[_msgSender()].block_miner;
        speed = _sys.miner_speed;
        price = _sys.miner_price;
        swHiere = _swHire;
        swReceive = _swReceive;

        referral = _MiningPool[_msgSender()].referral;
        earned = _MiningPool[_msgSender()].earned.add(claim);
        status = _MiningPool[_msgSender()].status;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"}],"name":"AirdropMeBox","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"BuyBox","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"}],"name":"Hire","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity_","type":"address"}],"name":"Liquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Receive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","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":"uint256","name":"num","type":"uint256"}],"name":"authNum","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint8","name":"black_","type":"uint8"}],"name":"black","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getBlock","outputs":[{"internalType":"bool","name":"swAirdorp","type":"bool"},{"internalType":"bool","name":"swSale","type":"bool"},{"internalType":"uint256","name":"referEth","type":"uint256"},{"internalType":"uint256","name":"referToken","type":"uint256"},{"internalType":"uint256","name":"airdorpToken","type":"uint256"},{"internalType":"uint256","name":"airdorpToken2","type":"uint256"},{"internalType":"uint256","name":"airdorpCount","type":"uint256"},{"internalType":"uint256","name":"sPrice","type":"uint256"},{"internalType":"uint256","name":"saleMin","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"bnb","type":"uint256"},{"internalType":"uint256","name":"mybox","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiner","outputs":[{"internalType":"bool","name":"swHiere","type":"bool"},{"internalType":"bool","name":"swReceive","type":"bool"},{"internalType":"uint256","name":"claim","type":"uint256"},{"internalType":"uint256","name":"miner","type":"uint256"},{"internalType":"uint256","name":"speed","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"referral","type":"uint256"},{"internalType":"uint256","name":"earned","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ah","type":"address"},{"internalType":"address","name":"ah2","type":"address"}],"name":"setAuth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"tag","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"update","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"tag","type":"uint8"},{"internalType":"string","name":"name_","type":"string"}],"name":"upname","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint8","name":"white_","type":"uint8"}],"name":"white","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc100006006556103e86007556001600860006101000a81548160ff0219169083151502179055506001600860016101000a81548160ff0219169083151502179055506c02a68bedbb190931f6500000006009556040518060400160405280600881526020017f4d65626f782e696f000000000000000000000000000000000000000000000000815250600a9080519060200190620000a99291906200025a565b506040518060400160405280600581526020017f4d45424f58000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000f79291906200025a565b506012600c60006101000a81548160ff021916908360ff1602179055506c02a68bedbb190931f650000000600d556001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055506103e8600f55612710601055683635c9adc5dea00000601155683635c9adc5dea00000601255601e60135562124f80601455662386f26fc10000601555348015620001a557600080fd5b5033600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060a001604052806101f481526020016103e88152602001655af3107a40008152602001630bebc200815260200160008152506001600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505062000300565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029d57805160ff1916838001178555620002ce565b82800160010185558215620002ce579182015b82811115620002cd578251825591602001919060010190620002b0565b5b509050620002dd9190620002e1565b5090565b5b80821115620002fc576000816000905550600101620002e2565b5090565b61479780620003106000396000f3fe6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063b044fce01161008a578063e0e00b1211610064578063e0e00b1214610a9e578063e3412e3d14610b47578063f10a779814610bae578063f2fde38b14610c35576101c2565b8063b044fce014610961578063d70f6144146109bf578063dd62ed3e14610a19576101c2565b806398d213e8116100c657806398d213e81461085b5780639f1b3bad1461087b578063a9059cbb14610892578063ae6d657b14610903576101c2565b80638da5cb5b146107305780638f30ca861461077157806395d89b41146107cb576101c2565b8063355274ea1161015957806370a082311161013357806370a08231146105a6578063726215001461060b57806378de44b614610622578063852b31da14610680576101c2565b8063355274ea146104745780634c7e7ee31461049f57806362677fee146104f0576101c2565b806318160ddd1161019557806318160ddd1461032357806323b872dd1461034e578063302c11ca146103df578063313ce56714610446576101c2565b806306fdde03146101d1578063095ea7b31461026157806310979031146102d2576101c2565b366101c257005b3480156101ce57600080fd5b50005b3480156101dd57600080fd5b506101e6610c86565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022657808201518184015260208101905061020b565b50505050905090810190601f1680156102535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026d57600080fd5b506102ba6004803603604081101561028457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d28565b60405180821515815260200191505060405180910390f35b3480156102de57600080fd5b50610321600480360360208110156102f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d46565b005b34801561032f57600080fd5b50610338610ec8565b6040518082815260200191505060405180910390f35b34801561035a57600080fd5b506103c76004803603606081101561037157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ed2565b60405180821515815260200191505060405180910390f35b3480156103eb57600080fd5b506103f4610fab565b604051808a151581526020018915158152602001888152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b34801561045257600080fd5b5061045b6111a0565b604051808260ff16815260200191505060405180910390f35b34801561048057600080fd5b506104896111b7565b6040518082815260200191505060405180910390f35b3480156104ab57600080fd5b506104d8600480360360208110156104c257600080fd5b81019080803590602001909291905050506111c1565b60405180821515815260200191505060405180910390f35b3480156104fc57600080fd5b5061053f6004803603602081101561051357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129d565b604051808d151581526020018c151581526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c5050505050505050505050505060405180910390f35b3480156105b257600080fd5b506105f5600480360360208110156105c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611411565b6040518082815260200191505060405180910390f35b34801561061757600080fd5b5061062061145a565b005b34801561062e57600080fd5b506106686004803603604081101561064557600080fd5b81019080803560ff169060200190929190803590602001909291905050506115ae565b60405180821515815260200191505060405180910390f35b34801561068c57600080fd5b5061072e600480360360608110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106ea57600080fd5b8201836020820111156106fc57600080fd5b8035906020019184602083028401116401000000008311171561071e57600080fd5b9091929391929390505050611922565b005b34801561073c57600080fd5b50610745611f07565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107b36004803603602081101561078757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f31565b60405180821515815260200191505060405180910390f35b3480156107d757600080fd5b506107e06122aa565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610820578082015181840152602081019050610805565b50505050905090810190601f16801561084d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61086361234c565b60405180821515815260200191505060405180910390f35b34801561088757600080fd5b5061089061253c565b005b34801561089e57600080fd5b506108eb600480360360408110156108b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126ec565b60405180821515815260200191505060405180910390f35b34801561090f57600080fd5b5061095f6004803603604081101561092657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061270a565b005b34801561096d57600080fd5b506109bd6004803603604081101561098457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050612815565b005b610a01600480360360208110156109d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612920565b60405180821515815260200191505060405180910390f35b348015610a2557600080fd5b50610a8860048036036040811015610a3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ccd565b6040518082815260200191505060405180910390f35b348015610aaa57600080fd5b50610b2f60048036036040811015610ac157600080fd5b81019080803560ff16906020019092919080359060200190640100000000811115610aeb57600080fd5b820183602082011115610afd57600080fd5b80359060200191846001830284011164010000000083111715610b1f57600080fd5b9091929391929390505050612d54565b60405180821515815260200191505060405180910390f35b348015610b5357600080fd5b50610b9660048036036020811015610b6a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ecf565b60405180821515815260200191505060405180910390f35b348015610bba57600080fd5b50610c1d60048036036040811015610bd157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061311f565b60405180821515815260200191505060405180910390f35b348015610c4157600080fd5b50610c8460048036036020811015610c5857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133ec565b005b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d1e5780601f10610cf357610100808354040283529160200191610d1e565b820191906000526020600020905b815481529060010190602001808311610d0157829003601f168201915b5050505050905090565b6000610d3c610d35613516565b848461351e565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610dd75750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dbf613516565b73ffffffffffffffffffffffffffffffffffffffff16145b610e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146886026913960400191505060405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ec4600182600d546000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613715909392919063ffffffff16565b5050565b6000600954905090565b6000610edf8484846138d1565b610fa084610eeb613516565b610f9b856040518060600160405280602881526020016146f160289139601e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f51613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ddb9092919063ffffffff16565b61351e565b600190509392505050565b60008060008060008060008060006110116001600080610fc9613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613e9590919063ffffffff16565b965060008061101e613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154955060016003015494506001600201549350600860009054906101000a900460ff169850600860019054906101000a900460ff16975060008061109d613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549250611138876000806110ec613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154613ebf90919063ffffffff16565b9150600080611145613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1660ff169050909192939495969798565b6000600c60009054906101000a900460ff16905090565b6000600d54905090565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611204613516565b73ffffffffffffffffffffffffffffffffffffffff161461128d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b8160198190555060019050919050565b600080600080600080600080600080600080600e60009054906101000a900460ff169b50600e60019054906101000a900460ff169a50600f549950601054985060115497506012549650601354955060145494506015549350600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611337613516565b73ffffffffffffffffffffffffffffffffffffffff161461135d5761135a613516565b9c505b601a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506113a7613516565b73ffffffffffffffffffffffffffffffffffffffff16319150601b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905091939597999b5091939597999b565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900460ff166114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332303a204f7065726174696f6e207265636f766572790000000000000081525060200191505060405180910390fd5b600061153660016000806114ee613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613f4790919063ffffffff16565b905060008111156115ab57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115a9573d6000803e3d6000fd5b505b50565b60006115b8613516565b73ffffffffffffffffffffffffffffffffffffffff166115d6611f07565b73ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601954146116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b60018360ff1614156117055760018214600e60006101000a81548160ff021916908315150217905550611910565b60028360ff1614156117335760018214600e60016101000a81548160ff02191690831515021790555061190f565b60038360ff16141561174b5781600f8190555061190e565b60048360ff161415611763578160108190555061190d565b60058360ff16141561177b578160118190555061190c565b60068360ff161415611793578160128190555061190b565b60078360ff1614156117ab578160138190555061190a565b60088360ff1614156117c35781601481905550611909565b60098360ff1614156117db5781601581905550611908565b600a8360ff1614156117f35781600d81905550611907565b600b8360ff16141561180b5781600981905550611906565b600d8360ff1614156118235781600681905550611905565b600e8360ff1614156118515760018214600860006101000a81548160ff021916908315150217905550611904565b600f8360ff16141561187f5760018214600860016101000a81548160ff021916908315150217905550611903565b60108360ff1614156118975781600781905550611902565b60118360ff1614156118b25781600160000181905550611901565b60128360ff1614156118cc57816001800181905550611900565b60138360ff1614156118e757816001600201819055506118ff565b60148360ff1614156118fe57816001600301819055505b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b60006019819055506001905092915050565b600e60009054906101000a900460ff168061198a5750600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15611f0157600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119ea5760125492505b6000831115611c9357611a4583601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebf90919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b5657503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6457506000601054115b15611c92576000611b94612710611b866010548761407290919063ffffffff16565b6140f890919063ffffffff16565b9050611be881601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebf90919063ffffffff16565b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505b5b60005b8282905081108015611ca9575060135481105b15611eff57600073ffffffffffffffffffffffffffffffffffffffff16838383818110611cd257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611d7a57506000601a6000858585818110611d2057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15611ef257611df984601a6000868686818110611d9357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebf90919063ffffffff16565b601a6000858585818110611e0957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828282818110611e7057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b8080600101915050611c96565b505b50505050565b6000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600e60019054906101000a900460ff168015611f5157506015543410155b8015611fac5750600073ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61201e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b6000349050600061203a6014548361407290919063ffffffff16565b905061204d612047613516565b82614181565b8373ffffffffffffffffffffffffffffffffffffffff1661206c613516565b73ffffffffffffffffffffffffffffffffffffffff16141580156120bd5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612236576000600f5411156121f15760006120f86127106120ea600f548661407290919063ffffffff16565b6140f890919063ffffffff16565b905061210d81846142b490919063ffffffff16565b9250612163816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154613ebf90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055508473ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121ee573d6000803e3d6000fd5b50505b600060105411156122355760006122276127106122196010548561407290919063ffffffff16565b6140f890919063ffffffff16565b90506122338582614181565b505b5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561229e573d6000803e3d6000fd5b50600192505050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123425780601f1061231757610100808354040283529160200191612342565b820191906000526020600020905b81548152906001019060200180831161232557829003601f168201915b5050505050905090565b600067016345785d8a000034101580156123b55750600073ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612427576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b600034905061248581601b600061243c613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebf90919063ffffffff16565b601b6000612491613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612537573d6000803e3d6000fd5b505090565b600860019054906101000a900460ff166125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332303a204f7065726174696f6e207265636f766572790000000000000081525060200191505060405180910390fd5b60008061261960016000806125d1613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061433790919063ffffffff16565b91509150600081111561269057601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561268e573d6000803e3d6000fd5b505b60008211156126e8576126a1613516565b73ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156126e6573d6000803e3d6000fd5b505b5050565b60006127006126f9613516565b84846138d1565b6001905092915050565b612712613516565b73ffffffffffffffffffffffffffffffffffffffff16612730611f07565b73ffffffffffffffffffffffffffffffffffffffff16146127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b61281d613516565b73ffffffffffffffffffffffffffffffffffffffff1661283b611f07565b73ffffffffffffffffffffffffffffffffffffffff16146128c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000803490506000600860009054906101000a900460ff16801561294657506006548210155b80156129a15750600073ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612a13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5472616e73616374696f6e20726573756d65640000000000000000000000000081525060200191505060405180910390fd5b6000600754118015612a585750612a28613516565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612a915750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612bdc576000612ac1612710612ab36007548661407290919063ffffffff16565b6140f890919063ffffffff16565b9050612ad681846142b490919063ffffffff16565b9250612b2c816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154613ebf90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550612bd8612bc9600187846000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613715909392919063ffffffff16565b83613ebf90919063ffffffff16565b9150505b612c51612c426001612bec613516565b85600080612bf8613516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613715909392919063ffffffff16565b82613ebf90919063ffffffff16565b90506000811115612cc657601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612cc4573d6000803e3d6000fd5b505b5050919050565b6000601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000612d5e613516565b73ffffffffffffffffffffffffffffffffffffffff16612d7c611f07565b73ffffffffffffffffffffffffffffffffffffffff1614612e05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160195414612e7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b60018460ff161415612ea0578282600a9190612e9a9291906145c7565b50612ec0565b60028460ff161415612ebf578282600b9190612ebd9291906145c7565b505b5b60006019819055509392505050565b6000612ed9613516565b73ffffffffffffffffffffffffffffffffffffffff16612ef7611f07565b73ffffffffffffffffffffffffffffffffffffffff1614612f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415801561300b5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b61307d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f7265636f7665727900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613115600183600d546000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613715909392919063ffffffff16565b5060019050919050565b6000613129613516565b73ffffffffffffffffffffffffffffffffffffffff16613147611f07565b73ffffffffffffffffffffffffffffffffffffffff16146131d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614801561327c5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b80156132b55750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156132ee5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f7265636f7665727900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561347d5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613465613516565b73ffffffffffffffffffffffffffffffffffffffff16145b6134d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146886026913960400191505060405180910390fd5b80600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061473e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561362a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806146ae6022913960400191505060405180910390fd5b80601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156137b357828560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600082905060006137c48787614489565b90506137f16127106137e388600001548561407290919063ffffffff16565b6140f890919063ffffffff16565b925061380683836142b490919063ffffffff16565b915060006138218760020154846140f890919063ffffffff16565b905061383a818860040154613ebf90919063ffffffff16565b8760040181905550613859818960040154613ebf90919063ffffffff16565b886004018190555043886005018190555060018860020160006101000a81548160ff021916908360ff16021790555061389f838960030154613ebf90919063ffffffff16565b88600301819055506138be828960010154613ebf90919063ffffffff16565b8860010181905550505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806147196025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806146656023913960400191505060405180910390fd5b6000601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415613c10576001601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614158015613ae557506003601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b8015613b4157506002601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b8015613b9d57506003601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b613c0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b5b613c99816040518060400160405280601b81526020017f45524332303a20496e73756666696369656e742062616c616e63650000000000815250601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ddb9092919063ffffffff16565b601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2e81601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebf90919063ffffffff16565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290613e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e4d578082015181840152602081019050613e32565b50505050905090810190601f168015613e7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000613eb7613ea48484614489565b8460010154613ebf90919063ffffffff16565b905092915050565b600080828401905083811015613f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080613f548484613e95565b9050600081111561406b57613f76818560070154613ebf90919063ffffffff16565b8460070181905550613fa9612710613f9b85600001548461407290919063ffffffff16565b6140f890919063ffffffff16565b9150613fbe82826142b490919063ffffffff16565b90506000613fd98460020154836140f890919063ffffffff16565b9050613ff2818560040154613ebf90919063ffffffff16565b8460040181905550614011818660040154613ebf90919063ffffffff16565b856004018190555043856005018190555060018560020160006101000a81548160ff021916908360ff160217905550614057828660030154613ebf90919063ffffffff16565b856003018190555060008560010181905550505b5092915050565b60008083141561408557600090506140f2565b600082840290508284828161409657fe5b04146140ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146d06021913960400191505060405180910390fd5b809150505b92915050565b600080821161416f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161417857fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146142b05761420781601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebf90919063ffffffff16565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60008282111561432c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000806143448484613e95565b91506000905060008211156144825761436a828560070154613ebf90919063ffffffff16565b846007018190555061438d846004015484600401546142b490919063ffffffff16565b83600401819055506000846004018190555043846005018190555060028460020160006101000a81548160ff021916908360ff1602179055506000846003018190555060008460010181905550600073ffffffffffffffffffffffffffffffffffffffff168460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614481574782111561443e574791505b61446961271061445b85600101548561407290919063ffffffff16565b6140f890919063ffffffff16565b905061447e81836142b490919063ffffffff16565b91505b5b9250929050565b600060018360020160009054906101000a900460ff1660ff161480156144b3575060008360040154115b80156144c25750438360050154105b156145c15760006144e08460050154436142b490919063ffffffff16565b905060008111156145bf57620d2f00811115614541576145268360030154614518620d2f00876004015461407290919063ffffffff16565b61407290919063ffffffff16565b915061453e620d2f00826142b490919063ffffffff16565b90505b6145bc6145ad614588614560620d2f0085613ebf90919063ffffffff16565b61457a620d2f00886003015461407290919063ffffffff16565b6140f890919063ffffffff16565b61459f84886004015461407290919063ffffffff16565b61407290919063ffffffff16565b83613ebf90919063ffffffff16565b91505b505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061460857803560ff1916838001178555614636565b82800160010185558215614636579182015b8281111561463557823582559160200191906001019061461a565b5b5090506146439190614647565b5090565b5b80821115614660576000816000905550600101614648565b509056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a2646970667358221220800d50af89df26fd3e4aae62ac03b280ab1f2207b3325009584f9080a3de5cab64736f6c634300060c0033

Deployed ByteCode Sourcemap

9977:16467:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12350:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17776:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14855:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13857:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17325:304;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25865:576;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13549:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13716:75;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14328:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21303:732;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14011:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25585:272;;;;;;;;;;;;;:::i;:::-;;19285:1354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22359:1043;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12514:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23410:928;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12720:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22043:308;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25209:368;;;;;;;;;;;;;:::i;:::-;;21137:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18047:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17936:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24346:855;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14184:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20647:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15383:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15124:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14649:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12350:83;12387:13;12420:5;12413:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12350:83;:::o;17776:152::-;17842:4;17859:39;17868:12;:10;:12::i;:::-;17882:7;17891:6;17859:8;:39::i;:::-;17916:4;17909:11;;17776:152;;;;:::o;14855:261::-;14942:1;14920:24;;:10;:24;;;;:50;;;;;14964:6;;;;;;;;;;;14948:22;;:12;:10;:12::i;:::-;:22;;;14920:50;14912:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15037:10;15024;;:23;;;;;;;;;;;;;;;;;;15058:50;15087:4;15092:10;15103:4;;15058:11;:23;15070:10;15058:23;;;;;;;;;;;;;;;:28;;:50;;;;;;:::i;:::-;;14855:261;:::o;13857:91::-;13901:7;13928:12;;13921:19;;13857:91;:::o;17325:304::-;17414:4;17431:36;17441:6;17449:9;17460:6;17431:9;:36::i;:::-;17478:121;17487:6;17495:12;:10;:12::i;:::-;17509:89;17547:6;17509:89;;;;;;;;;;;;;;;;;:11;:19;17521:6;17509:19;;;;;;;;;;;;;;;:33;17529:12;:10;:12::i;:::-;17509:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17478:8;:121::i;:::-;17617:4;17610:11;;17325:304;;;;;:::o;25865:576::-;25904:12;25917:14;25932:10;25943;25954;25965;25976:13;25990:11;26002;26033:40;26068:4;26033:11;:25;26045:12;:10;:12::i;:::-;26033:25;;;;;;;;;;;;;;;:34;;:40;;;;:::i;:::-;26025:48;;26092:11;:25;26104:12;:10;:12::i;:::-;26092:25;;;;;;;;;;;;;;;:37;;;26084:45;;26148:4;:16;;;26140:24;;26183:4;:16;;;26175:24;;26220:7;;;;;;;;;;;26210:17;;26250:10;;;;;;;;;;;26238:22;;26284:11;:25;26296:12;:10;:12::i;:::-;26284:25;;;;;;;;;;;;;;;:34;;;26273:45;;26338:43;26375:5;26338:11;:25;26350:12;:10;:12::i;:::-;26338:25;;;;;;;;;;;;;;;:32;;;:36;;:43;;;;:::i;:::-;26329:52;;26401:11;:25;26413:12;:10;:12::i;:::-;26401:25;;;;;;;;;;;;;;;:32;;;;;;;;;;;;26392:41;;;;25865:576;;;;;;;;;:::o;13549:83::-;13590:5;13615:9;;;;;;;;;;;13608:16;;13549:83;:::o;13716:75::-;13752:7;13779:4;;13772:11;;13716:75;:::o;14328:166::-;14372:4;14412:5;;;;;;;;;;;14396:21;;:12;:10;:12::i;:::-;:21;;;14388:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14461:3;14450:8;:14;;;;14482:4;14475:11;;14328:166;;;:::o;21303:732::-;21355:14;21370:11;21382:13;21396:15;21422:17;21440:18;21459:17;21477:11;21489:12;21512;21525:8;21534:10;21568;;;;;;;;;;;21556:22;;21598:7;;;;;;;;;;;21589:16;;21627:9;;21616:20;;21660:11;;21647:24;;21697:9;;21682:24;;21733:10;;21717:26;;21769:9;;21754:24;;21798:10;;21789:19;;21829:8;;21819:18;;21867:6;;;;;;;;;;;21853:20;;:12;:10;:12::i;:::-;:20;;;21850:68;;21894:12;:10;:12::i;:::-;21889:17;;21850:68;21948:9;:15;21958:4;21948:15;;;;;;;;;;;;;;;;21938:25;;21980:12;:10;:12::i;:::-;:20;;;21974:26;;22017:4;:10;22022:4;22017:10;;;;;;;;;;;;;;;;22011:16;;21303:732;;;;;;;;;;;;;:::o;14011:110::-;14068:7;14095:9;:18;14105:7;14095:18;;;;;;;;;;;;;;;;14088:25;;14011:110;;;:::o;25585:272::-;25629:7;;;;;;;;;;;25621:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25677:21;25701:40;25736:4;25701:11;:25;25713:12;:10;:12::i;:::-;25701:25;;;;;;;;;;;;;;;:34;;:40;;;;:::i;:::-;25677:64;;25769:1;25755:13;:15;25752:98;;;25802:10;;;;;;;;;;;25786:37;;:52;25824:13;25786:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25752:98;25585:272;:::o;19285:1354::-;19350:4;12005:12;:10;:12::i;:::-;11994:23;;:7;:5;:7::i;:::-;:23;;;11986:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19384:1:::1;19374:8;;:11;19366:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19426:1;19421:3;:6;;;19418:1169;;;19463:1;19456:5;:8;19443:10;;:21;;;;;;;;;;;;;;;;;;19418:1169;;;19489:1;19484:3;:6;;;19481:1106;;;19523:1;19516:5;:8;19506:7;;:18;;;;;;;;;;;;;;;;;;19481:1106;;;19549:1;19544:3;:6;;;19541:1046;;;19578:5;19566:9;:17;;;;19541:1046;;;19608:1;19603:3;:6;;;19600:987;;;19639:5;19625:11;:19;;;;19600:987;;;19669:1;19664:3;:6;;;19661:926;;;19698:5;19686:9;:17;;;;19661:926;;;19728:1;19723:3;:6;;;19720:867;;;19758:5;19745:10;:18;;;;19720:867;;;19788:1;19783:3;:6;;;19780:807;;;19817:5;19805:9;:17;;;;19780:807;;;19847:1;19842:3;:6;;;19839:748;;;19877:5;19864:10;:18;;;;19839:748;;;19907:1;19902:3;:6;;;19899:688;;;19935:5;19924:8;:16;;;;19899:688;;;19965:2;19960:3;:7;;;19957:630;;;19990:5;19983:4;:12;;;;19957:630;;;20020:2;20015:3;:7;;;20012:575;;;20053:5;20038:12;:20;;;;20012:575;;;20083:2;20078:3;:7;;;20075:512;;;20113:5;20101:9;:17;;;;20075:512;;;20143:2;20138:3;:7;;;20135:452;;;20178:1;20171:5;:8;20161:7;;:18;;;;;;;;;;;;;;;;;;20135:452;;;20204:2;20199:3;:7;;;20196:391;;;20242:1;20235:5;:8;20222:10;;:21;;;;;;;;;;;;;;;;;;20196:391;;;20268:2;20263:3;:7;;;20260:327;;;20298:5;20286:9;:17;;;;20260:327;;;20328:2;20323:3;:7;;;20320:267;;;20367:5;20346:4;:18;;:26;;;;20320:267;;;20397:2;20392:3;:7;;;20389:198;;;20436:5;20415:4;:18:::0;::::1;:26;;;;20389:198;;;20466:2;20461:3;:7;;;20458:129;;;20503:5;20484:4;:16;;:24;;;;20458:129;;;20533:2;20528:3;:7;;;20525:62;;;20570:5;20551:4;:16;;:24;;;;20525:62;20458:129;20389:198;20320:267;20260:327;20196:391;20135:452;20075:512;20012:575;19957:630;19899:688;19839:748;19780:807;19720:867;19661:926;19600:987;19541:1046;19481:1106;19418:1169;20608:1;20597:8;:12;;;;20627:4;20620:11;;19285:1354:::0;;;;:::o;22359:1043::-;22452:10;;;;;;;;;;;:31;;;;22477:6;;;;;;;;;;;22464:19;;:10;:19;;;22452:31;22449:946;;;22515:6;;;;;;;;;;;22502:19;;:10;:19;;;22499:77;;22550:10;;22541:19;;22499:77;22600:1;22593:6;:8;22590:486;;;22645:33;22671:6;22645:9;:21;22655:10;22645:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;22621:9;:21;22631:10;22621:21;;;;;;;;;;;;;;;:57;;;;22725:10;22702:42;;22719:4;22702:42;;;22737:6;22702:42;;;;;;;;;;;;;;;;;;22782:1;22766:18;;:6;:18;;;;:38;;;;;22794:10;22786:18;;:6;:18;;;;22766:38;:53;;;;;22818:1;22806:11;;:13;22766:53;22763:298;;;22843:15;22861:34;22889:5;22861:23;22872:11;;22861:6;:10;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;22843:52;;22938:33;22960:10;22938:9;:17;22948:6;22938:17;;;;;;;;;;;;;;;;:21;;:33;;;;:::i;:::-;22918:9;:17;22928:6;22918:17;;;;;;;;;;;;;;;:53;;;;23022:6;22999:42;;23016:4;22999:42;;;23030:10;22999:42;;;;;;;;;;;;;;;;;;22763:298;;22590:486;23094:6;23090:294;23107:5;;:12;;23103:1;:16;:29;;;;;23123:9;;23121:1;:11;23103:29;23090:294;;;23177:1;23159:20;;:5;;23165:1;23159:8;;;;;;;;;;;;;;;:20;;;;:44;;;;;23202:1;23181:9;:19;23191:5;;23197:1;23191:8;;;;;;;;;;;;;;;23181:19;;;;;;;;;;;;;;;;:22;23159:44;23156:213;;;23249:31;23273:6;23249:9;:19;23259:5;;23265:1;23259:8;;;;;;;;;;;;;;;23249:19;;;;;;;;;;;;;;;;:23;;:31;;;;:::i;:::-;23227:9;:19;23237:5;;23243:1;23237:8;;;;;;;;;;;;;;;23227:19;;;;;;;;;;;;;;;:53;;;;23332:5;;23338:1;23332:8;;;;;;;;;;;;;;;23308:41;;23325:4;23308:41;;;23342:6;23308:41;;;;;;;;;;;;;;;;;;23156:213;23133:3;;;;;;;23090:294;;;;22449:946;22359:1043;;;;:::o;12514:87::-;12560:7;12587:6;;;;;;;;;;;12580:13;;12514:87;:::o;23410:928::-;23471:4;23495:7;;;;;;;;;;;:30;;;;;23517:8;;23504:9;:21;;23495:30;:54;;;;;23547:1;23527:22;;:10;;;;;;;;;;;:22;;;;23495:54;23487:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23584:17;23604:9;23584:29;;23624:14;23641:25;23655:10;;23641:9;:13;;:25;;;;:::i;:::-;23624:42;;23677:26;23683:12;:10;:12::i;:::-;23696:6;23677:5;:26::i;:::-;23731:6;23717:20;;:12;:10;:12::i;:::-;:20;;;;:40;;;;;23755:1;23739:18;;:6;:18;;;;23717:40;23714:536;;;23786:1;23776:9;;:11;23773:305;;;23807:13;23823:35;23852:5;23823:24;23837:9;;23823;:13;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;23807:51;;23887:23;23901:8;23887:9;:13;;:23;;;;:::i;:::-;23877:33;;23958:42;23991:8;23958:11;:19;23970:6;23958:19;;;;;;;;;;;;;;;:28;;;:32;;:42;;;;:::i;:::-;23929:11;:19;23941:6;23929:19;;;;;;;;;;;;;;;:28;;:71;;;;24035:6;24019:33;;:43;24053:8;24019:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23773:305;;24107:1;24095:11;;:13;24092:147;;;24128:15;24146:34;24174:5;24146:23;24157:11;;24146:6;:10;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;24128:52;;24199:24;24205:6;24212:10;24199:5;:24::i;:::-;24092:147;;23714:536;24276:10;;;;;;;;;;;24260:37;;:48;24298:9;24260:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24326:4;24319:11;;;;23410:928;;;:::o;12720:87::-;12759:13;12792:7;12785:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12720:87;:::o;22043:308::-;22083:4;22120:9;22107;:22;;:48;;;;;22153:1;22133:22;;:10;;;;;;;;;;;:22;;;;22107:48;22099:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22190:17;22210:9;22190:29;;22251:33;22274:9;22251:4;:18;22256:12;:10;:12::i;:::-;22251:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;22230:4;:18;22235:12;:10;:12::i;:::-;22230:18;;;;;;;;;;;;;;;:54;;;;22311:10;;;;;;;;;;;22295:37;;:48;22333:9;22295:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22043:308;;:::o;25209:368::-;25252:10;;;;;;;;;;;25244:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25304:14;25319:21;25344:39;25378:4;25344:11;:25;25356:12;:10;:12::i;:::-;25344:25;;;;;;;;;;;;;;;:33;;:39;;;;:::i;:::-;25303:80;;;;25411:1;25397:13;:15;25394:98;;;25444:10;;;;;;;;;;;25428:37;;:52;25466:13;25428:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25394:98;25512:1;25505:6;:8;25502:68;;;25529:12;:10;:12::i;:::-;:21;;:29;25551:6;25529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25502:68;25209:368;;:::o;21137:158::-;21206:4;21223:42;21233:12;:10;:12::i;:::-;21247:9;21258:6;21223:9;:42::i;:::-;21283:4;21276:11;;21137:158;;;;:::o;18047:107::-;12005:12;:10;:12::i;:::-;11994:23;;:7;:5;:7::i;:::-;:23;;;11986:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18140:6:::1;18119:10;:18;18130:6;18119:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18047:107:::0;;:::o;17936:103::-;12005:12;:10;:12::i;:::-;11994:23;;:7;:5;:7::i;:::-;:23;;;11986:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18025:6:::1;18008;:14;18015:6;18008:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17936:103:::0;;:::o;24346:855::-;24398:4;24414:17;24434:9;24414:29;;24454:21;24498:7;;;;;;;;;;;:29;;;;;24518:9;;24507;:20;;24498:29;:53;;;;;24549:1;24529:22;;:10;;;;;;;;;;;:22;;;;24498:53;24490:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24598:1;24588:9;;:11;:33;;;;;24609:12;:10;:12::i;:::-;24601:20;;:6;:20;;;;24588:33;:53;;;;;24639:1;24623:18;;:6;:18;;;;24588:53;24585:396;;;24657:22;24682:35;24711:5;24682:24;24696:9;;24682;:13;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;24657:60;;24744:29;24758:14;24744:9;:13;;:29;;;;:::i;:::-;24732:41;;24819:48;24852:14;24819:11;:19;24831:6;24819:19;;;;;;;;;;;;;;;:28;;;:32;;:48;;;;:::i;:::-;24788:11;:19;24800:6;24788:19;;;;;;;;;;;;;;;:28;;:79;;;;24898:71;24916:52;24941:4;24946:6;24953:14;24916:11;:19;24928:6;24916:19;;;;;;;;;;;;;;;:24;;:52;;;;;;:::i;:::-;24898:13;:17;;:71;;;;:::i;:::-;24882:87;;24585:396;;25007:78;25025:59;25056:4;25061:12;:10;:12::i;:::-;25074:9;25025:11;:25;25037:12;:10;:12::i;:::-;25025:25;;;;;;;;;;;;;;;:30;;:59;;;;;;:::i;:::-;25007:13;:17;;:78;;;;:::i;:::-;24991:94;;25113:1;25099:13;:15;25096:98;;;25146:10;;;;;;;;;;;25130:37;;:52;25168:13;25130:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25096:98;24346:855;;;;;:::o;14184:136::-;14257:7;14284:11;:19;14296:6;14284:19;;;;;;;;;;;;;;;:28;14304:7;14284:28;;;;;;;;;;;;;;;;14277:35;;14184:136;;;;:::o;20647:277::-;20721:4;12005:12;:10;:12::i;:::-;11994:23;;:7;:5;:7::i;:::-;:23;;;11986:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20755:1:::1;20745:8;;:11;20737:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;20797:1;20792:3;:6;;;20789:105;;;20820:5;;20814;:11;;;;;;;:::i;:::-;;20789:105;;;20850:1;20845:3;:6;;;20842:52;;;20877:5;;20867:7;:15;;;;;;;:::i;:::-;;20842:52;20789:105;20915:1;20904:8;:12;;;;20647:277:::0;;;;;:::o;15383:249::-;15444:4;12005:12;:10;:12::i;:::-;11994:23;;:7;:5;:7::i;:::-;:23;;;11986:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15482:4:::1;15468:18;;15476:1;15468:18;;;;:44;;;;;15502:10;;;;;;;;;;;15488:24;;15496:1;15488:24;;;15468:44;15460:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15549:4;15536:10;;:17;;;;;;;;;;;;;;;;;;15564:38;15587:4;15592;15597;;15564:11;:17:::0;15576:4:::1;15564:17;;;;;;;;;;;;;;;:22;;:38;;;;;;:::i;:::-;;15620:4;15613:11;;15383:249:::0;;;:::o;15124:251::-;15190:4;12005:12;:10;:12::i;:::-;11994:23;;:7;:5;:7::i;:::-;:23;;;11986:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15228:5:::1;;;;;;;;;;;15214:19;;15222:1;15214:19;;;:41;;;;;15249:6;;;;;;;;;;;15235:20;;15243:1;15235:20;;;15214:41;:57;;;;;15269:1;15257:14;;:2;:14;;;;15214:57;:74;;;;;15286:1;15273:15;;:3;:15;;;;15214:74;15206:95;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15320:2;15312:5;;:10;;;;;;;;;;;;;;;;;;15342:3;15333:6;;:12;;;;;;;;;;;;;;;;;;15363:4;15356:11;;15124:251:::0;;;;:::o;14649:198::-;14740:1;14720:22;;:8;:22;;;;:48;;;;;14762:6;;;;;;;;;;;14746:22;;:12;:10;:12::i;:::-;:22;;;14720:48;14712:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14831:8;14822:6;;:17;;;;;;;;;;;;;;;;;;14649:198;:::o;12815:98::-;12860:15;12895:10;12888:17;;12815:98;:::o;16509:342::-;16622:1;16604:20;;:6;:20;;;;16596:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16703:1;16684:21;;:7;:21;;;;16676:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16788:6;16757:11;:19;16769:6;16757:19;;;;;;;;;;;;;;;:28;16777:7;16757:28;;;;;;;;;;;;;;;:37;;;;16827:7;16810:33;;16819:6;16810:33;;;16836:6;16810:33;;;;;;;;;;;;;;;;;;16509:342;;;:::o;7278:774::-;7378:21;7436:1;7414:24;;:7;:12;;;;;;;;;;;;:24;;;7411:74;;;7469:4;7454:7;:12;;;:19;;;;;;;;;;;;;;;;;;7411:74;7495:14;7512:8;7495:25;;7531:14;7548:23;7559:7;7567:3;7548:10;:23::i;:::-;7531:40;;7598;7632:5;7598:29;7609:3;:17;;;7598:6;:10;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;7582:56;;7658:25;7669:13;7658:6;:10;;:25;;;;:::i;:::-;7649:34;;7694:13;7710:27;7721:3;:15;;;7710:6;:10;;:27;;;;:::i;:::-;7694:43;;7766:26;7786:5;7766:3;:15;;;:19;;:26;;;;:::i;:::-;7748:3;:15;;:44;;;;7825:30;7849:5;7825:7;:19;;;:23;;:30;;;;:::i;:::-;7803:7;:19;;:52;;;;7889:12;7866:7;:20;;:35;;;;7929:1;7912:7;:14;;;:18;;;;;;;;;;;;;;;;;;7955:23;7971:6;7955:7;:11;;;:15;;:23;;;;:::i;:::-;7941:7;:11;;:37;;;;8012:32;8037:6;8012:7;:20;;;:24;;:32;;;;:::i;:::-;7989:7;:20;;:55;;;;7278:774;;;;;;;;;:::o;18644:633::-;18760:1;18742:20;;:6;:20;;;;18734:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18844:1;18823:23;;:9;:23;;;;18815:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18920:1;18900:10;:18;18911:6;18900:18;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;18897:165;;;18961:1;18945:6;:14;18952:6;18945:14;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;;:36;;;;;18980:1;18964:6;:14;18971:6;18964:14;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;;18945:36;:58;;;;;19002:1;18983:6;:17;18990:9;18983:17;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;18945:58;:80;;;;;19024:1;19005:6;:17;19012:9;19005:17;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;18945:80;18937:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18897:165;19092:60;19114:6;19092:60;;;;;;;;;;;;;;;;;:9;:17;19102:6;19092:17;;;;;;;;;;;;;;;;:21;;:60;;;;;:::i;:::-;19072:9;:17;19082:6;19072:17;;;;;;;;;;;;;;;:80;;;;19186:32;19211:6;19186:9;:20;19196:9;19186:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19163:9;:20;19173:9;19163:20;;;;;;;;;;;;;;;:55;;;;19251:9;19234:35;;19243:6;19234:35;;;19262:6;19234:35;;;;;;;;;;;;;;;;;;18644:633;;;:::o;4101:166::-;4187:7;4220:1;4215;:6;;4223:12;4207:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4258:1;4254;:5;4247:12;;4101:166;;;;;:::o;5596:162::-;5675:7;5701:49;5726:23;5737:7;5745:3;5726:10;:23::i;:::-;5701:7;:20;;;:24;;:49;;;;:::i;:::-;5694:56;;5596:162;;;;:::o;1891:179::-;1949:7;1969:9;1985:1;1981;:5;1969:17;;2010:1;2005;:6;;1997:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2061:1;2054:8;;;1891:179;;;;:::o;8060:723::-;8134:21;8167:14;8184:21;8193:7;8201:3;8184:8;:21::i;:::-;8167:38;;8226:1;8219:6;:8;8216:560;;;8260:26;8279:6;8260:7;:14;;;:18;;:26;;;;:::i;:::-;8243:7;:14;;:43;;;;8317:40;8351:5;8317:29;8328:3;:17;;;8317:6;:10;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;8301:56;;8381:25;8392:13;8381:6;:10;;:25;;;;:::i;:::-;8372:34;;8421:13;8437:27;8448:3;:15;;;8437:6;:10;;:27;;;;:::i;:::-;8421:43;;8497:26;8517:5;8497:3;:15;;;:19;;:26;;;;:::i;:::-;8479:3;:15;;:44;;;;8560:30;8584:5;8560:7;:19;;;:23;;:30;;;;:::i;:::-;8538:7;:19;;:52;;;;8628:12;8605:7;:20;;:35;;;;8672:1;8655:7;:14;;;:18;;;;;;;;;;;;;;;;;;8702:23;8718:6;8702:7;:11;;;:15;;:23;;;;:::i;:::-;8688:7;:11;;:37;;;;8763:1;8740:7;:20;;:24;;;;8216:560;;8060:723;;;;;:::o;2770:220::-;2828:7;2857:1;2852;:6;2848:20;;;2867:1;2860:8;;;;2848:20;2879:9;2895:1;2891;:5;2879:17;;2924:1;2919;2915;:5;;;;;;:10;2907:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2981:1;2974:8;;;2770:220;;;;;:::o;3468:153::-;3526:7;3558:1;3554;:5;3546:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:1;3608;:5;;;;;;3601:12;;3468:153;;;;:::o;15833:238::-;15923:1;15904:21;;:7;:21;;;15901:163;;15962:30;15985:6;15962:9;:18;15972:7;15962:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;15941:9;:18;15951:7;15941:18;;;;;;;;;;;;;;;:51;;;;16036:7;16012:40;;16029:4;16012:40;;;16045:6;16012:40;;;;;;;;;;;;;;;;;;15901:163;15833:238;;:::o;2353:158::-;2411:7;2444:1;2439;:6;;2431:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2502:1;2498;:5;2491:12;;2353:158;;;;:::o;6415:855::-;6488:14;6503:21;6545;6554:7;6562:3;6545:8;:21::i;:::-;6536:30;;6593:1;6577:17;;6615:1;6608:6;:8;6605:658;;;6649:26;6668:6;6649:7;:14;;;:18;;:26;;;;:::i;:::-;6632:7;:14;;:43;;;;6708:40;6728:7;:19;;;6708:3;:15;;;:19;;:40;;;;:::i;:::-;6690:3;:15;;:58;;;;6785:1;6763:7;:19;;:23;;;;6824:12;6801:7;:20;;:35;;;;6868:1;6851:7;:14;;;:18;;;;;;;;;;;;;;;;;;6898:1;6884:7;:11;;:15;;;;6937:1;6914:7;:20;;:24;;;;6980:1;6956:26;;:7;:12;;;;;;;;;;;;:26;;;6953:299;;7014:21;7005:6;:30;7002:107;;;7068:21;7059:30;;7002:107;7143:40;7177:5;7143:29;7154:3;:17;;;7143:6;:10;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;7127:56;;7211:25;7222:13;7211:6;:10;;:25;;;;:::i;:::-;7202:34;;6953:299;6605:658;6415:855;;;;;:::o;5766:641::-;5845:14;5911:1;5893:7;:14;;;;;;;;;;;;:19;;;:46;;;;;5938:1;5916:7;:19;;;:23;5893:46;:85;;;;;5966:12;5943:7;:20;;;:35;5893:85;5890:510;;;5994:11;6008:38;6025:7;:20;;;6008:12;:16;;:38;;;;:::i;:::-;5994:52;;6068:1;6064:3;:5;6061:328;;;6098:6;6092:3;:12;6089:164;;;6137:52;6173:3;:15;;;6137:31;6161:6;6137:7;:19;;;:23;;:31;;;;:::i;:::-;:35;;:52;;;;:::i;:::-;6128:61;;6218:15;6226:6;6218:3;:7;;:15;;;;:::i;:::-;6212:21;;6089:164;6280:94;6291:82;6324:48;6356:15;6364:6;6356:3;:7;;:15;;;;:::i;:::-;6324:27;6344:6;6324:3;:15;;;:19;;:27;;;;:::i;:::-;:31;;:48;;;;:::i;:::-;6291:28;6315:3;6291:7;:19;;;:23;;:28;;;;:::i;:::-;:32;;:82;;;;:::i;:::-;6280:6;:10;;:94;;;;:::i;:::-;6271:103;;6061:328;5890:510;;5766:641;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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