Contract 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba

 

Contract Overview

Balance:
0.478631075770716532 BNB

BNB Value:
$276.44 (@ $577.56/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xec12805ea11aec82264931ff3d5d846ddc6e4f8043e2f0f05b6ea66c2ca6c58bApprove113335982021-09-29 10:13:0268 days 11 hrs ago0x94667ff2b0c853ccee64da27376d94e042abe334 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x81d69b8e6a8cc9e2d7ec3deb631133b43fa1fe43e1f20be80895d78f427b1811Approve113289092021-09-29 6:16:4468 days 15 hrs ago0x02e51003aae839a0a10132f9663ecb5cd5ec1fde IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x6e0a5e0252f4a0179927349777300341959ce48bd44f7f4063a391cebea5de66Approve113172132021-09-28 20:27:3369 days 55 mins ago0xda690aac81416306b4d1e63cb37cba85cc41c93f IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0xd64bb18c2e575bd2ffe3f1ac49f316ccb9ea3ac9f0b7ce907cdb9b78a39172faSet Tx Limit113125782021-09-28 16:32:0369 days 4 hrs ago0x019deb24a684ea4c0387b66642c9c1652795192e IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00014441
0x5493c3fae26297075e6fd6e4fda88ce61f81c570c636c5c9082a0134def6d48aApprove113114332021-09-28 15:34:1069 days 5 hrs ago0xe4043ca1c77b9ea99de61ba6ddbd1dee84ad275e IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x843b5d3b680709fbc67b6a45a5993282207ac070fdb273c3f2418e8a8ebf5b5cApprove113111542021-09-28 15:20:1369 days 6 hrs ago0xf0281625f56bd4249d12588a094fbb03c94eb15e IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0xc4db06ff9c0119e9aca49838b547c5274af81e48c3029856e2909b7a7497c959Approve112852942021-09-27 17:31:0670 days 3 hrs ago0xedcf992c3f0cb10916d5a751ed5a939e57e8aa46 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0xcfed3f1d5df3f813a62c540b888ffb423e39d7ed2a02db5a2c3c36e6f98bb951Approve112839402021-09-27 16:23:1170 days 5 hrs ago0x9080fd300eba1b3b6b253c2a09329364efaf284b IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x1d80ae30d59ce5e2696012c31622f90ae8793c95c02d1ae75296ea2071f1aa8cTrigger Manual B...112839272021-09-27 16:22:3270 days 5 hrs ago0x019deb24a684ea4c0387b66642c9c1652795192e IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.000757575
0x131eced2a948a4b2dbc5bff4b58d82391fa0d0fd3f43c176d020dfd70d877c0eTrigger Manual B...112838432021-09-27 16:18:2070 days 5 hrs ago0x019deb24a684ea4c0387b66642c9c1652795192e IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.000847155
0x77a13ce64b564b55161d3b4e2e6f26b4301c57c44a40e01be9b8beb9d02fa659Approve112836882021-09-27 16:10:3570 days 5 hrs ago0xf959325a3d06ff3077aad2a6b63300d0f96ef1df IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x242d7d8456ba42384e2ed57561b00e2e7f5beb73b2d70b38a1bb8dd75cdaeb3fApprove112835992021-09-27 16:06:0870 days 5 hrs ago0x15e942b8415174a3512b4cbfd619b8276d5fa4a5 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.000269928
0xcad7053e81072fee675d4620dbeab04c6fd489bddebc3faacc77a45b116b9884Approve112835952021-09-27 16:05:5670 days 5 hrs ago0x79b3f49559ef716e083f150577bfaecbbc7c56bd IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x99fd46cf6a60281f4583412e9e501d2f39b0af6bc08398af742750ff1b6dc70eApprove112835882021-09-27 16:05:3570 days 5 hrs ago0x38ebe6efd240510b6dae9ef5812f4efec9c94423 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.000314916
0x46d16cf6e1f1f671ab7ba38a20ef64e06fc9d9270b4c91e3a70746617e1aa5a0Approve112835732021-09-27 16:04:5070 days 5 hrs ago0x3388c1dc59b030c8e9543ed9abb90f0a3a6cf4a0 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x9811b6525a6d61dec4b1499cf5d3d7f3e198567e1015b36b2a1cd5e4e8d6eb42Approve112835412021-09-27 16:03:1470 days 5 hrs ago0x795818b85d39cb182b4ee2582e49793a9c25aea3 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x72a5b325f8bfa8e7db0281cf0ae6bc268eaa8e713717799bb5d8dcf4de77a916Approve112835252021-09-27 16:02:2670 days 5 hrs ago0x2520add159d08aa178f6bfdbdd62680bfdae4e59 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00007401
0x93d26127f5a60b9da4ff0612309fbd6d7c2c56e12e598c0af4ff61024a9aea68Approve112835042021-09-27 16:01:2370 days 5 hrs ago0x178b3b53858c5e90ecadc2ac61e62b29ce03b56d IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x5797c13b23ca898ba5bda2d203c0b9da365d398c5ad6c8e1c5631be34d501352Approve112834932021-09-27 16:00:5070 days 5 hrs ago0xe64f57ae87e083e5b5a3de47ffc84fb5c06bfbd0 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x287a860d386bac67a24670eadbb127e6adba8063ccb71785d63f1310e737a1c9Approve112834912021-09-27 16:00:4470 days 5 hrs ago0x99829a9b3f37d825de04a6bd55207307a0f8ac72 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x6de92d3cf9976724584b3280fbc1cf81ecce71e63dad5de9ca86fa8ae321b69aApprove112834892021-09-27 16:00:3870 days 5 hrs ago0xfa81b95b070e67a61718cd4fb5d2454504de5f81 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x8732e34ac291fc34844ced8c767e341a920348ccb1d7b4a0394e26e7616b5a4eApprove112834872021-09-27 16:00:3270 days 5 hrs ago0xace8d7f067177e6e46117cc91a990aaac4645bc7 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0x2bef24461793b615de332148b1169e905165c51c8e448f3b23a2b319538a7b4aApprove112834832021-09-27 16:00:2070 days 5 hrs ago0xa7d04ca1e2e7008a807eb6fd34d8a8e7ce45b865 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0xbce32cd90db357f6ad34ba12c171e5033c7491367c710681b5a5cbf2bf9dd4a0Approve112834802021-09-27 16:00:1170 days 5 hrs ago0xfb27a4bf7f3f18493d441616f734814547fc6fc6 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
0xb1da2c099af38290bd11b8303d3067bb587236f6dead6c8d04be438c63a49e28Approve112834742021-09-27 15:59:5370 days 5 hrs ago0xf58be27507860b8c2eb4a91cbb2dad74bf8aec41 IN  0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0 BNB0.00022494
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x04c984ff45c1e11eecc481ec364b61efffeb6a74ab1998146721b70188c77808113765362021-09-30 22:20:5366 days 23 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.064022958021288416 BNB
0x04c984ff45c1e11eecc481ec364b61efffeb6a74ab1998146721b70188c77808113765362021-09-30 22:20:5366 days 23 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba PancakeSwap: Router v20.064079280400353473 BNB
0x04c984ff45c1e11eecc481ec364b61efffeb6a74ab1998146721b70188c77808113765362021-09-30 22:20:5366 days 23 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.384475682402120843 BNB
0x04c984ff45c1e11eecc481ec364b61efffeb6a74ab1998146721b70188c77808113765362021-09-30 22:20:5366 days 23 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.83303064520459516 BNB
0xf7195e6af33e83057359ef8ba0db68dcc4960feffb55fdce784998e1fa5642b6113163572021-09-28 19:43:3169 days 1 hr ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.000034636996675998 BNB
0xf7195e6af33e83057359ef8ba0db68dcc4960feffb55fdce784998e1fa5642b6113163572021-09-28 19:43:3169 days 1 hr ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba PancakeSwap: Router v20.000054953651454235 BNB
0xf7195e6af33e83057359ef8ba0db68dcc4960feffb55fdce784998e1fa5642b6113163572021-09-28 19:43:3169 days 1 hr ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000329721908725412 BNB
0xf7195e6af33e83057359ef8ba0db68dcc4960feffb55fdce784998e1fa5642b6113163572021-09-28 19:43:3169 days 1 hr ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.00071439746890506 BNB
0x8b269c8faac6c7a5421c8551e761b7dfa1599be243da04aa71eda25d46ae25ac113058952021-09-28 10:56:1269 days 10 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.00087829481863839 BNB
0x8b269c8faac6c7a5421c8551e761b7dfa1599be243da04aa71eda25d46ae25ac113058952021-09-28 10:56:1269 days 10 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.002049354576822912 BNB
0x246c4c560fd6d3ef74f73d8b31d78166167c5e66ca7e644853c2f5fb01e24000112896352021-09-27 21:09:4970 days 13 mins ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000895782386819081 BNB
0x246c4c560fd6d3ef74f73d8b31d78166167c5e66ca7e644853c2f5fb01e24000112896352021-09-27 21:09:4970 days 13 mins ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.002090158902577856 BNB
0x75a3b42be9f2f1eb53221d5f56d99276a8d5a33c1d4459fc77ea3949d4e49b3e112859242021-09-27 18:02:4670 days 3 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000914200581946122 BNB
0x75a3b42be9f2f1eb53221d5f56d99276a8d5a33c1d4459fc77ea3949d4e49b3e112859242021-09-27 18:02:4670 days 3 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.00213313469120762 BNB
0xf83cfc3b7a900595bace7e36bf2b6f7ffe46689e3590adb7e45499621fa105dd112859162021-09-27 18:02:2270 days 3 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000939160385788836 BNB
0xf83cfc3b7a900595bace7e36bf2b6f7ffe46689e3590adb7e45499621fa105dd112859162021-09-27 18:02:2270 days 3 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.002191374233507286 BNB
0x9f471f151d059f33f922f882d8137fc99e0364019f51fc9cd25b0d52b4d1280e112845892021-09-27 16:55:4670 days 4 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000957649702450428 BNB
0x9f471f151d059f33f922f882d8137fc99e0364019f51fc9cd25b0d52b4d1280e112845892021-09-27 16:55:4670 days 4 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.002234515972384333 BNB
0x8f28a5fe4a0ce3f25f638260af250b03b6269464776ed78f91e7201a85b2091e112845582021-09-27 16:54:1370 days 4 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000970458568033985 BNB
0x8f28a5fe4a0ce3f25f638260af250b03b6269464776ed78f91e7201a85b2091e112845582021-09-27 16:54:1370 days 4 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.002264403325412633 BNB
0xd14e63c2d64156a3f45301a5a3a4d867ff15ed15e2d5686665417ad046907a4e112845522021-09-27 16:53:5570 days 4 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000970458568033985 BNB
0xd14e63c2d64156a3f45301a5a3a4d867ff15ed15e2d5686665417ad046907a4e112845522021-09-27 16:53:5570 days 4 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.002264403325412633 BNB
0x613d4b8f7bf77330583a03ad93aacc60019c75f0a7573ef2b9b742f7e46fccaa112845502021-09-27 16:53:4970 days 4 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.000996846263421535 BNB
0x613d4b8f7bf77330583a03ad93aacc60019c75f0a7573ef2b9b742f7e46fccaa112845502021-09-27 16:53:4970 days 4 hrs ago PancakeSwap: Router v2 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0.00232597461465025 BNB
0x2057c8a85ce6d7f3e2c8aeaf44548c597902734a0f80521a100cb2dfbab41bc2112845402021-09-27 16:53:1970 days 4 hrs ago 0x5acce96e24f45e6fe3b0dac99ccd920feadd5cba0x019deb24a684ea4c0387b66642c9c1652795192e0.001026618648098939 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DogeBack

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

/**

╱╱╭╮╱╱╱╱╱╱╱╱╭╮╱╱╱╱╱╱╱╭╮
╱╱┃┃╱╱╱╱╱╱╱╱┃┃╱╱╱╱╱╱╱┃┃
╭━╯┣━━┳━━┳━━┫╰━┳━━┳━━┫┃╭╮
┃╭╮┃╭╮┃╭╮┃┃━┫╭╮┃╭╮┃╭━┫╰╯╯
┃╰╯┃╰╯┃╰╯┃┃━┫╰╯┃╭╮┃╰━┫╭╮╮
╰━━┻━━┻━╮┣━━┻━━┻╯╰┻━━┻╯╰╯
╱╱╱╱╱╱╭━╯┃
╱╱╱╱╱╱╰━━╯

DogeBack Token
6% Buy Back | 2% Liquidity | 6% Marketing
1% Max Txn | 2% Max Wallet
TG: https://t.me/dogebackcoin
Website: https://www.dogebacktoken.com
 
*/
 
pragma solidity ^0.8.5;

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

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

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

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

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

        return c;
    }
}

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

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

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

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

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

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

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

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

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

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

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

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

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IBEP20 BETH = IBEP20(0x2170Ed0880ac9A755fd29B2688956BD959F933F8);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter router;

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

    mapping (address => Share) public shares;

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

    uint256 public minPeriod = 30 * 60;
    uint256 public minDistribution = 1 * (10 ** 12);

    uint256 currentIndex;

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

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

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

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

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

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

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

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

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

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

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

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

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

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;

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

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

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

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

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

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

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

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

    string constant _name = "DogeBack";
    string constant _symbol = "DogeBack";
    uint8 constant _decimals = 2;

    uint256 _totalSupply = 1 * 10**12 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 1 / 100; // 1%

    uint256 public _maxWalletToken = ( _totalSupply * 2 ) / 100; // 2%

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

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

    uint256 liquidityFee = 200;
    uint256 buybackFee = 600;
    uint256 reflectionFee = 0;
    uint256 marketingFee = 600;
    uint256 totalFee = 1400;
    uint256 feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
     bool public tradingOpen = false;

    uint256 buybackMultiplierNumerator = 200;
    uint256 buybackMultiplierDenominator = 100;
    uint256 buybackMultiplierTriggeredAt;
    uint256 buybackMultiplierLength = 30 minutes;

    bool public autoBuybackEnabled = false;
    bool public autoBuybackMultiplier = true;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 10;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 10000; // 0.01% of supply
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

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

        distributor = new DividendDistributor(address(router));
        
        address _presaler = 0x019DEb24a684eA4C0387B66642C9C1652795192e;
        isFeeExempt[_presaler] = true;
        isTxLimitExempt[_presaler] = true;
        
        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;
        
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

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

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

    receive() external payable { }

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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }

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

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

        // max wallet code
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        

        
        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


        // Checks max transaction limit
        checkTxLimit(sender, amount);

        // Liquidity, Maintained at 25%
        if(shouldSwapBack()){ swapBack(); }

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

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

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

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

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

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

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

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling && buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp){ return getMultipliedFee(); }
        return totalFee;
    }

    function getMultipliedFee() public view returns (uint256) {
        uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp);
        uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee);
        return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength));
    }

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

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

        return amount.sub(feeAmount);
    }

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

    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool success, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");

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

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

    function triggerManualBuyback(uint256 amount, bool triggerBuybackMultiplier) external authorized {
        buyTokens(amount, DEAD);
        if(triggerBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
    }
    
    function clearBuybackMultiplier() external authorized {
        buybackMultiplierTriggeredAt = 0;
    }

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

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

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

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

    function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized {
        require(numerator / denominator <= 2 && numerator > denominator);
        buybackMultiplierNumerator = numerator;
        buybackMultiplierDenominator = denominator;
        buybackMultiplierLength = length;
    }

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

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

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

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

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

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

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

    function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

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

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

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

    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
    
    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        return distributor.getUnpaidEarnings(shareholder);
    } 

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
    event BuybackMultiplierActive(uint256 duration);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoBuybackMultiplier","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"},{"internalType":"bool","name":"_autoBuybackMultiplier","type":"bool"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerManualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052732170ed0880ac9a755fd29b2688956bd959f933f8600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600a62000143919062000c82565b64e8d4a5100062000155919062000dbf565b600655606460016006546200016b919062000dbf565b62000177919062000bef565b600755606460026006546200018d919062000dbf565b62000199919062000bef565b60085560c8600f556102586010556000601155610258601255610578601355612710601455601460175560646018556000601c60006101000a81548160ff02191690831515021790555060c8601d556064601e556107086020556000602160006101000a81548160ff0219169083151502179055506001602160016101000a81548160ff0219169083151502179055506207a1206028556001602960006101000a81548160ff021916908315150217905550600a602960016101000a81548160ff021916908360ff1602179055506001602b60006101000a81548160ff021916908315150217905550612710600a60065462000296919062000dbf565b620002a2919062000bef565b602c55348015620002b257600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550507310ed43c718714eb63d5aa57b78b54704e256024e601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040a57600080fd5b505afa1580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000445919062000b34565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004a392919062000ba5565b602060405180830381600087803b158015620004be57600080fd5b505af1158015620004d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f9919062000b34565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200062d9062000b0f565b62000639919062000b88565b604051809103906000f08015801562000656573d6000803e3d6000fd5b50602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073019deb24a684ea4c0387b66642c9c1652795192e90506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000b00919062000bd2565b60405180910390a35062000ef5565b6120a28062005f1983390190565b60008151905062000b2e8162000edb565b92915050565b60006020828403121562000b4d5762000b4c62000ec9565b5b600062000b5d8482850162000b1d565b91505092915050565b62000b718162000e20565b82525050565b62000b828162000e54565b82525050565b600060208201905062000b9f600083018462000b66565b92915050565b600060408201905062000bbc600083018562000b66565b62000bcb602083018462000b66565b9392505050565b600060208201905062000be9600083018462000b77565b92915050565b600062000bfc8262000e54565b915062000c098362000e54565b92508262000c1c5762000c1b62000e9a565b5b828204905092915050565b6000808291508390505b600185111562000c795780860481111562000c515762000c5062000e6b565b5b600185161562000c615780820291505b808102905062000c718562000ece565b945062000c31565b94509492505050565b600062000c8f8262000e54565b915062000c9c8362000e5e565b925062000ccb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cd3565b905092915050565b60008262000ce5576001905062000db8565b8162000cf5576000905062000db8565b816001811462000d0e576002811462000d195762000d4f565b600191505062000db8565b60ff84111562000d2e5762000d2d62000e6b565b5b8360020a91508482111562000d485762000d4762000e6b565b5b5062000db8565b5060208310610133831016604e8410600b841016171562000d895782820a90508381111562000d835762000d8262000e6b565b5b62000db8565b62000d98848484600162000c27565b9250905081840481111562000db25762000db162000e6b565b5b81810290505b9392505050565b600062000dcc8262000e54565b915062000dd98362000e54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e155762000e1462000e6b565b5b828202905092915050565b600062000e2d8262000e34565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ee68162000e20565b811462000ef257600080fd5b50565b6150148062000f056000396000f3fe60806040526004361061036f5760003560e01c806382334b94116101c6578063dd62ed3e116100f7578063f2fde38b11610095578063f84ba65d1161006f578063f84ba65d14610c9b578063f887ea4014610cc4578063fe9fbb8014610cef578063ffb54a9914610d2c57610376565b8063f2fde38b14610c32578063f429389014610c5b578063f708a64f14610c7257610376565b8063e96fada2116100d1578063e96fada214610b8a578063f0b37c0414610bb5578063f0fc6bca14610bde578063f1f3bca314610bf557610376565b8063dd62ed3e14610af9578063df20fd4914610b36578063e1dcc71f14610b5f57610376565b8063a9059cbb11610164578063bf56b3711161013e578063bf56b37114610a3b578063ca33e64c14610a66578063d51ed1c814610a91578063d806d12f14610ace57610376565b8063a9059cbb146109be578063b210b06d146109fb578063b6a5d7de14610a1257610376565b806395d89b41116101a057806395d89b41146109165780639d1944f514610941578063a4b45c001461096a578063a8aa1b311461099357610376565b806382334b941461089957806382bf293c146108c2578063893d20e8146108eb57610376565b80632f54bf6e116102a0578063617fe0ed1161023e57806370a082311161021857806370a08231146107db578063722b62ad1461081857806378109e54146108435780637d1db4a51461086e57610376565b8063617fe0ed1461075c578063658d4b7f146107875780636ddd1713146107b057610376565b80633bb8a8d41161027a5780633bb8a8d4146106a257806350db71fb146106cd578063571ac8b0146106f65780635c85974f1461073357610376565b80632f54bf6e146106115780632f5620d11461064e578063313ce5671461067757610376565b8063201e79911161030d57806328fd3198116102e757806328fd3198146105575780632b112e49146105945780632d48e896146105bf5780632d594567146105e857610376565b8063201e7991146104c85780632375ce40146104f157806323b872dd1461051a57610376565b8063095ea7b311610349578063095ea7b3146103fa5780630d295980146104375780631161ae391461046057806318160ddd1461049d57610376565b80630445b6671461037b57806304a66b48146103a657806306fdde03146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d57565b60405161039d919061497f565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906143bd565b610d5d565b005b3480156103db57600080fd5b506103e4610e0c565b6040516103f1919061483d565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c91906140d5565b610e49565b60405161042e91906147bb565b60405180910390f35b34801561044357600080fd5b5061045e60048036038101906104599190614115565b610f3b565b005b34801561046c57600080fd5b50610487600480360381019061048291906142d7565b610fa0565b60405161049491906147bb565b60405180910390f35b3480156104a957600080fd5b506104b2610fb5565b6040516104bf919061497f565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea91906142d7565b610fbf565b005b3480156104fd57600080fd5b5061051860048036038101906105139190614317565b611019565b005b34801561052657600080fd5b50610541600480360381019061053c9190614042565b61109f565b60405161054e91906147bb565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190613fa8565b61129f565b60405161058b919061497f565b60405180910390f35b3480156105a057600080fd5b506105a9611353565b6040516105b6919061497f565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906142d7565b6113d5565b005b3480156105f457600080fd5b5061060f600480360381019061060a91906141fd565b6114b0565b005b34801561061d57600080fd5b5061063860048036038101906106339190613fa8565b611531565b60405161064591906147bb565b60405180910390f35b34801561065a57600080fd5b5061067560048036038101906106709190614182565b61158a565b005b34801561068357600080fd5b5061068c611631565b6040516106999190614a1d565b60405180910390f35b3480156106ae57600080fd5b506106b761163a565b6040516106c491906147bb565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190614095565b61164d565b005b34801561070257600080fd5b5061071d60048036038101906107189190613fa8565b6116f0565b60405161072a91906147bb565b60405180910390f35b34801561073f57600080fd5b5061075a6004803603810190610755919061423d565b611723565b005b34801561076857600080fd5b50610771611791565b60405161077e91906147bb565b60405180910390f35b34801561079357600080fd5b506107ae60048036038101906107a99190614095565b6117a4565b005b3480156107bc57600080fd5b506107c5611847565b6040516107d291906147bb565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd9190613fa8565b61185a565b60405161080f919061497f565b60405180910390f35b34801561082457600080fd5b5061082d6118a3565b60405161083a9190614a1d565b60405180910390f35b34801561084f57600080fd5b506108586118b6565b604051610865919061497f565b60405180910390f35b34801561087a57600080fd5b506108836118bc565b604051610890919061497f565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb9190614297565b6118c2565b005b3480156108ce57600080fd5b506108e960048036038101906108e4919061423d565b611981565b005b3480156108f757600080fd5b506109006119ec565b60405161090d91906146d2565b60405180910390f35b34801561092257600080fd5b5061092b611a15565b604051610938919061483d565b60405180910390f35b34801561094d57600080fd5b506109686004803603810190610963919061423d565b611a52565b005b34801561097657600080fd5b50610991600480360381019061098c9190614002565b611ab3565b005b34801561099f57600080fd5b506109a8611b81565b6040516109b591906146d2565b60405180910390f35b3480156109ca57600080fd5b506109e560048036038101906109e091906140d5565b611ba7565b6040516109f291906147bb565b60405180910390f35b348015610a0757600080fd5b50610a10611bbc565b005b348015610a1e57600080fd5b50610a396004803603810190610a349190613fa8565b611c0e565b005b348015610a4757600080fd5b50610a50611cb0565b604051610a5d919061497f565b60405180910390f35b348015610a7257600080fd5b50610a7b611cb6565b604051610a8891906146d2565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab3919061423d565b611cdc565b604051610ac5919061497f565b60405180910390f35b348015610ada57600080fd5b50610ae3611d4e565b604051610af0919061497f565b60405180910390f35b348015610b0557600080fd5b50610b206004803603810190610b1b9190614002565b611e01565b604051610b2d919061497f565b60405180910390f35b348015610b4257600080fd5b50610b5d6004803603810190610b589190614142565b611e88565b005b348015610b6b57600080fd5b50610b74611ef5565b604051610b8191906147bb565b60405180910390f35b348015610b9657600080fd5b50610b9f611f08565b604051610bac91906146d2565b60405180910390f35b348015610bc157600080fd5b50610bdc6004803603810190610bd79190613fa8565b611f2e565b005b348015610bea57600080fd5b50610bf3611fd1565b005b348015610c0157600080fd5b50610c1c6004803603810190610c179190614115565b612060565b604051610c29919061497f565b60405180910390f35b348015610c3e57600080fd5b50610c596004803603810190610c549190613fd5565b6120d5565b005b348015610c6757600080fd5b50610c706121ee565b005b348015610c7e57600080fd5b50610c996004803603810190610c949190614095565b6122a7565b005b348015610ca757600080fd5b50610cc26004803603810190610cbd9190614095565b612547565b005b348015610cd057600080fd5b50610cd96125ea565b604051610ce691906147d6565b60405180910390f35b348015610cfb57600080fd5b50610d166004803603810190610d119190613fa8565b612610565b604051610d2391906147bb565b60405180910390f35b348015610d3857600080fd5b50610d41612666565b604051610d4e91906147bb565b60405180910390f35b602c5481565b610d6633612610565b610da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9c9061495f565b60405180910390fd5b84600f81905550836010819055508260118190555081601281905550610df882610dea85610ddc888a61267990919063ffffffff16565b61267990919063ffffffff16565b61267990919063ffffffff16565b601381905550806014819055505050505050565b60606040518060400160405280600881526020017f446f67654261636b000000000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f29919061497f565b60405180910390a36001905092915050565b610f4433611531565b610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a9061493f565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b600082610fac83611cdc565b11905092915050565b6000600654905090565b610fc833612610565b611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe9061495f565b60405180910390fd5b81601781905550806018819055505050565b61102233612610565b611061576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110589061495f565b60405180910390fd5b6002828461106f9190614aee565b1115801561107c57508183115b61108557600080fd5b82601d8190555081601e8190555080602081905550505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461128b5761120a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d79092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61129684848461273b565b90509392505050565b6000602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016112fc91906146d2565b60206040518083038186803b15801561131457600080fd5b505afa158015611328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134c919061426a565b9050919050565b60006113d0611383600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661185a565b6113c26113b1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661185a565b60065461314390919063ffffffff16565b61314390919063ffffffff16565b905090565b6113de33612610565b61141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061495f565b60405180910390fd5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161147a9291906149f4565b600060405180830381600087803b15801561149457600080fd5b505af11580156114a8573d6000803e3d6000fd5b505050505050565b6114b933611531565b6114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef9061493f565b60405180910390fd5b81602960006101000a81548160ff02191690831515021790555080602960016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61159333612610565b6115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c99061495f565b60405180910390fd5b84602160006101000a81548160ff02191690831515021790555083602281905550600060238190555082602481905550816025819055504360268190555080602160016101000a81548160ff0219169083151502179055505050505050565b60006002905090565b602160009054906101000a900460ff1681565b61165633612610565b611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c9061495f565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061171c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e49565b9050919050565b61172c33612610565b61176b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117629061495f565b60405180910390fd5b6103e860065461177b9190614aee565b81101561178757600080fd5b8060078190555050565b602960009054906101000a900460ff1681565b6117ad33612610565b6117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e39061495f565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602b60009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602960019054906101000a900460ff1681565b60085481565b60075481565b6118cb33612610565b61190a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119019061495f565b60405180910390fd5b61193682600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661318d565b801561197d5742601f819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a602054604051611974919061497f565b60405180910390a15b5050565b61198a33611531565b6119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c09061493f565b60405180910390fd5b6064816006546119d99190614b1f565b6119e39190614aee565b60088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f446f67654261636b000000000000000000000000000000000000000000000000815250905090565b611a5b33612610565b611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a919061495f565b60405180910390fd5b620b71b08110611aa957600080fd5b8060288190555050565b611abc33612610565b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af29061495f565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bb433848461273b565b905092915050565b611bc533612610565b611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061495f565b60405180910390fd5b6000601f81905550565b611c1733611531565b611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d9061493f565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d47611ce9611353565b611d39611d2a6002611d1c601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661185a565b61336b90919063ffffffff16565b8561336b90919063ffffffff16565b6133e690919063ffffffff16565b9050919050565b600080611d7a42611d6c602054601f5461267990919063ffffffff16565b61314390919063ffffffff16565b90506000611dbd601354611daf601e54611da1601d5460135461336b90919063ffffffff16565b6133e690919063ffffffff16565b61314390919063ffffffff16565b9050611dfa611de9602054611ddb858561336b90919063ffffffff16565b6133e690919063ffffffff16565b60135461267990919063ffffffff16565b9250505090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e9133612610565b611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec79061495f565b60405180910390fd5b81602b60006101000a81548160ff02191690831515021790555080602c819055505050565b602160019054906101000a900460ff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f3733611531565b611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d9061493f565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161202c91906146d2565b600060405180830381600087803b15801561204657600080fd5b505af115801561205a573d6000803e3d6000fd5b50505050565b6000436001601b546120729190614a98565b106120945761208d600160145461314390919063ffffffff16565b90506120d0565b8180156120b65750426120b4602054601f5461267990919063ffffffff16565b115b156120ca576120c3611d4e565b90506120d0565b60135490505b919050565b6120de33611531565b61211d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121149061493f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121e391906146ed565b60405180910390a150565b6121f733612610565b612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d9061495f565b60405180910390fd5b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122a3573d6000803e3d6000fd5b5050565b6122b033612610565b6122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e69061495f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156123795750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61238257600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561247457602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161243d929190614708565b600060405180830381600087803b15801561245757600080fd5b505af115801561246b573d6000803e3d6000fd5b50505050612543565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612510929190614731565b600060405180830381600087803b15801561252a57600080fd5b505af115801561253e573d6000803e3d6000fd5b505050505b5050565b61255033612610565b61258f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125869061495f565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601c60009054906101000a900460ff1681565b60008082846126889190614a98565b9050838110156126cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c49061487f565b60405180910390fd5b8091505092915050565b600083831115829061271f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612716919061483d565b60405180910390fd5b506000838561272e9190614b79565b9050809150509392505050565b6000602d60009054906101000a900460ff16156127645761275d848484613430565b905061313c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128085750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561285d57601c60009054906101000a900460ff1661285c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612853906148df565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128e357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561293d5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129975750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129f15750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612a4b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612aaf576000612a5b8461185a565b90506008548382612a6c9190614a98565b1115612aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa49061491f565b60405180910390fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b185750602960009054906101000a900460ff165b8015612b6e5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c565742602a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb9061489f565b60405180910390fd5b602960019054906101000a900460ff1660ff1642612c129190614a98565b602a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612c608483613603565b612c686136a0565b15612c7657612c75613777565b5b612cff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d79092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612d4d85613d2c565b612d575782612d62565b612d618584613d83565b5b9050612db681600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267990919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f1c57602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ee6929190614731565b600060405180830381600087803b158015612f0057600080fd5b505af1925050508015612f11575060015b612f1a57612f1b565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661303f57602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613009929190614731565b600060405180830381600087803b15801561302357600080fd5b505af1925050508015613034575060015b61303d5761303e565b5b5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796028546040518263ffffffff1660e01b815260040161309c919061497f565b600060405180830381600087803b1580156130b657600080fd5b505af19250505080156130c7575060015b6130d0576130d1565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161312e919061497f565b60405180910390a360019150505b9392505050565b600061318583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126d7565b905092915050565b6001602d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156131c5576131c4614d40565b5b6040519080825280602002602001820160405280156131f35781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061322d5761322c614d11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061327c5761327b614d11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b815260040161331994939291906147f1565b6000604051808303818588803b15801561333257600080fd5b505af1158015613346573d6000803e3d6000fd5b5050505050506000602d60006101000a81548160ff0219169083151502179055505050565b60008083141561337e57600090506133e0565b6000828461338c9190614b1f565b905082848261339b9190614aee565b146133db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d2906148ff565b60405180910390fd5b809150505b92915050565b600061342883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ec7565b905092915050565b60006134bb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d79092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061355082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267990919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135f0919061497f565b60405180910390a3600190509392505050565b6007548111158061365d5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61369c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136939061485f565b60405180910390fd5b5050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561370d5750602d60009054906101000a900460ff16155b80156137255750602b60009054906101000a900460ff165b80156137725750602c54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602d60006101000a81548160ff02191690831515021790555060006137a2601754601854610fa0565b6137ae57600f546137b1565b60005b905060006137f160026137e36013546137d586602c5461336b90919063ffffffff16565b6133e690919063ffffffff16565b6133e690919063ffffffff16565b9050600061380a82602c5461314390919063ffffffff16565b90506000600267ffffffffffffffff81111561382957613828614d40565b5b6040519080825280602002602001820160405280156138575781602001602082028036833780820191505090505b509050308160008151811061386f5761386e614d11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106138e0576138df614d11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161398395949392919061499a565b600060405180830381600087803b15801561399d57600080fd5b505af11580156139b1573d6000803e3d6000fd5b5050505060006139ca824761314390919063ffffffff16565b905060006139f66139e56002896133e690919063ffffffff16565b60135461314390919063ffffffff16565b90506000613a326002613a2484613a168c8861336b90919063ffffffff16565b6133e690919063ffffffff16565b6133e690919063ffffffff16565b90506000613a5d83613a4f6011548761336b90919063ffffffff16565b6133e690919063ffffffff16565b90506000613a8884613a7a6012548861336b90919063ffffffff16565b6133e690919063ffffffff16565b9050602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613af457600080fd5b505af193505050508015613b06575060015b613b0f57613b10565b5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613b5c906146bd565b600060405180830381858888f193505050503d8060008114613b9a576040519150601f19603f3d011682016040523d82523d6000602084013e613b9f565b606091505b5050905080613be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bda906148bf565b60405180910390fd5b60008a1115613d0457601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613c759695949392919061475a565b6060604051808303818588803b158015613c8e57600080fd5b505af1158015613ca2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cc7919061436a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051613cfb9291906149f4565b60405180910390a15b50505050505050505050506000602d60006101000a81548160ff021916908315150217905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080613daf601454613da16013548661336b90919063ffffffff16565b6133e690919063ffffffff16565b9050613e0381600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267990919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ea3919061497f565b60405180910390a3613ebe818461314390919063ffffffff16565b91505092915050565b60008083118290613f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f05919061483d565b60405180910390fd5b5060008385613f1d9190614aee565b9050809150509392505050565b600081359050613f3981614f6b565b92915050565b600081359050613f4e81614f82565b92915050565b600081359050613f6381614f99565b92915050565b600081359050613f7881614fb0565b92915050565b600081519050613f8d81614fb0565b92915050565b600081359050613fa281614fc7565b92915050565b600060208284031215613fbe57613fbd614d6f565b5b6000613fcc84828501613f2a565b91505092915050565b600060208284031215613feb57613fea614d6f565b5b6000613ff984828501613f3f565b91505092915050565b6000806040838503121561401957614018614d6f565b5b600061402785828601613f2a565b925050602061403885828601613f2a565b9150509250929050565b60008060006060848603121561405b5761405a614d6f565b5b600061406986828701613f2a565b935050602061407a86828701613f2a565b925050604061408b86828701613f69565b9150509250925092565b600080604083850312156140ac576140ab614d6f565b5b60006140ba85828601613f2a565b92505060206140cb85828601613f54565b9150509250929050565b600080604083850312156140ec576140eb614d6f565b5b60006140fa85828601613f2a565b925050602061410b85828601613f69565b9150509250929050565b60006020828403121561412b5761412a614d6f565b5b600061413984828501613f54565b91505092915050565b6000806040838503121561415957614158614d6f565b5b600061416785828601613f54565b925050602061417885828601613f69565b9150509250929050565b600080600080600060a0868803121561419e5761419d614d6f565b5b60006141ac88828901613f54565b95505060206141bd88828901613f69565b94505060406141ce88828901613f69565b93505060606141df88828901613f69565b92505060806141f088828901613f54565b9150509295509295909350565b6000806040838503121561421457614213614d6f565b5b600061422285828601613f54565b925050602061423385828601613f93565b9150509250929050565b60006020828403121561425357614252614d6f565b5b600061426184828501613f69565b91505092915050565b6000602082840312156142805761427f614d6f565b5b600061428e84828501613f7e565b91505092915050565b600080604083850312156142ae576142ad614d6f565b5b60006142bc85828601613f69565b92505060206142cd85828601613f54565b9150509250929050565b600080604083850312156142ee576142ed614d6f565b5b60006142fc85828601613f69565b925050602061430d85828601613f69565b9150509250929050565b6000806000606084860312156143305761432f614d6f565b5b600061433e86828701613f69565b935050602061434f86828701613f69565b925050604061436086828701613f69565b9150509250925092565b60008060006060848603121561438357614382614d6f565b5b600061439186828701613f7e565b93505060206143a286828701613f7e565b92505060406143b386828701613f7e565b9150509250925092565b600080600080600060a086880312156143d9576143d8614d6f565b5b60006143e788828901613f69565b95505060206143f888828901613f69565b945050604061440988828901613f69565b935050606061441a88828901613f69565b925050608061442b88828901613f69565b9150509295509295909350565b6000614444838361445f565b60208301905092915050565b61445981614c14565b82525050565b61446881614bad565b82525050565b61447781614bad565b82525050565b600061448882614a48565b6144928185614a6b565b935061449d83614a38565b8060005b838110156144ce5781516144b58882614438565b97506144c083614a5e565b9250506001810190506144a1565b5085935050505092915050565b6144e481614bd1565b82525050565b6144f381614c26565b82525050565b61450281614c4a565b82525050565b600061451382614a53565b61451d8185614a87565b935061452d818560208601614c80565b61453681614d74565b840191505092915050565b600061454e601183614a87565b915061455982614d85565b602082019050919050565b6000614571601b83614a87565b915061457c82614dae565b602082019050919050565b6000614594602583614a87565b915061459f82614dd7565b604082019050919050565b60006145b7601e83614a87565b91506145c282614e26565b602082019050919050565b60006145da601483614a87565b91506145e582614e4f565b602082019050919050565b60006145fd602183614a87565b915061460882614e78565b604082019050919050565b6000614620603e83614a87565b915061462b82614ec7565b604082019050919050565b6000614643600683614a87565b915061464e82614f16565b602082019050919050565b6000614666600083614a7c565b915061467182614f3f565b600082019050919050565b6000614689600b83614a87565b915061469482614f42565b602082019050919050565b6146a881614bfd565b82525050565b6146b781614c07565b82525050565b60006146c882614659565b9150819050919050565b60006020820190506146e7600083018461446e565b92915050565b60006020820190506147026000830184614450565b92915050565b600060408201905061471d600083018561446e565b61472a60208301846144f9565b9392505050565b6000604082019050614746600083018561446e565b614753602083018461469f565b9392505050565b600060c08201905061476f600083018961446e565b61477c602083018861469f565b61478960408301876144f9565b61479660608301866144f9565b6147a3608083018561446e565b6147b060a083018461469f565b979650505050505050565b60006020820190506147d060008301846144db565b92915050565b60006020820190506147eb60008301846144ea565b92915050565b600060808201905061480660008301876144f9565b8181036020830152614818818661447d565b9050614827604083018561446e565b614834606083018461469f565b95945050505050565b600060208201905081810360008301526148578184614508565b905092915050565b6000602082019050818103600083015261487881614541565b9050919050565b6000602082019050818103600083015261489881614564565b9050919050565b600060208201905081810360008301526148b881614587565b9050919050565b600060208201905081810360008301526148d8816145aa565b9050919050565b600060208201905081810360008301526148f8816145cd565b9050919050565b60006020820190508181036000830152614918816145f0565b9050919050565b6000602082019050818103600083015261493881614613565b9050919050565b6000602082019050818103600083015261495881614636565b9050919050565b600060208201905081810360008301526149788161467c565b9050919050565b6000602082019050614994600083018461469f565b92915050565b600060a0820190506149af600083018861469f565b6149bc60208301876144f9565b81810360408301526149ce818661447d565b90506149dd606083018561446e565b6149ea608083018461469f565b9695505050505050565b6000604082019050614a09600083018561469f565b614a16602083018461469f565b9392505050565b6000602082019050614a3260008301846146ae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614aa382614bfd565b9150614aae83614bfd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ae357614ae2614cb3565b5b828201905092915050565b6000614af982614bfd565b9150614b0483614bfd565b925082614b1457614b13614ce2565b5b828204905092915050565b6000614b2a82614bfd565b9150614b3583614bfd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6e57614b6d614cb3565b5b828202905092915050565b6000614b8482614bfd565b9150614b8f83614bfd565b925082821015614ba257614ba1614cb3565b5b828203905092915050565b6000614bb882614bdd565b9050919050565b6000614bca82614bdd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c1f82614c5c565b9050919050565b6000614c3182614c38565b9050919050565b6000614c4382614bdd565b9050919050565b6000614c5582614bfd565b9050919050565b6000614c6782614c6e565b9050919050565b6000614c7982614bdd565b9050919050565b60005b83811015614c9e578082015181840152602081019050614c83565b83811115614cad576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f506c65617365207761697420666f7220316d696e206265747765656e2074776f60008201527f2062757973000000000000000000000000000000000000000000000000000000602082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b614f7481614bad565b8114614f7f57600080fd5b50565b614f8b81614bbf565b8114614f9657600080fd5b50565b614fa281614bd1565b8114614fad57600080fd5b50565b614fb981614bfd565b8114614fc457600080fd5b50565b614fd081614c07565b8114614fdb57600080fd5b5056fea2646970667358221220e6d31c6ae674707ade702f30582dcdf906222a3d0940821cd566f17863fd06d264736f6c634300080500336080604052732170ed0880ac9a755fd29b2688956bd959f933f8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e55348015620000dd57600080fd5b50604051620020a2380380620020a28339818101604052810190620001039190620001f4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000154577310ed43c718714eb63d5aa57b78b54704e256024e62000156565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000279565b600081519050620001ee816200025f565b92915050565b6000602082840312156200020d576200020c6200025a565b5b60006200021d84828501620001dd565b91505092915050565b600062000233826200023a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200026a8162000226565b81146200027657600080fd5b50565b611e1980620002896000396000f3fe6080604052600436106100dd5760003560e01c8063997664d71161007f578063e2d2e21911610059578063e2d2e2191461028f578063efca2eed146102ba578063ffb2c479146102e5578063ffd49c841461030e576100dd565b8063997664d71461021b578063ce7c2ac214610246578063d0e30db014610285576100dd565b806328fd3198116100bb57806328fd31981461015f5780632d48e8961461019c5780633a98ef39146101c55780634fab0ae8146101f0576100dd565b806311ce023d146100e257806314b6ca961461010d57806315f7e05e14610136575b600080fd5b3480156100ee57600080fd5b506100f7610339565b6040516101049190611993565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611669565b61033f565b005b34801561014257600080fd5b5061015d6004803603810190610158919061163c565b6105fe565b005b34801561016b57600080fd5b506101866004803603810190610181919061163c565b610662565b6040516101939190611993565b60405180910390f35b3480156101a857600080fd5b506101c360048036038101906101be9190611730565b61077c565b005b3480156101d157600080fd5b506101da6107e6565b6040516101e79190611993565b60405180910390f35b3480156101fc57600080fd5b506102056107ec565b6040516102129190611993565b60405180910390f35b34801561022757600080fd5b506102306107f2565b60405161023d9190611993565b60405180910390f35b34801561025257600080fd5b5061026d6004803603810190610268919061163c565b6107f8565b60405161027c939291906119ae565b60405180910390f35b61028d610822565b005b34801561029b57600080fd5b506102a4610c12565b6040516102b19190611993565b60405180910390f35b3480156102c657600080fd5b506102cf610c18565b6040516102dc9190611993565b60405180910390f35b3480156102f157600080fd5b5061030c600480360381019061030791906116d6565b610c1e565b005b34801561031a57600080fd5b50610323610db2565b6040516103309190611993565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461039757600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103ec576103eb82610db8565b5b60008111801561043e57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104515761044c8261105f565b6104b3565b6000811480156104a357506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104b2576104b18261110e565b5b5b61051c8161050e600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461131590919063ffffffff16565b61135f90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105b4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113bd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065657600080fd5b61065f81610db8565b50565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106b75760009050610777565b6000610704600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113bd565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161075f57600092505050610777565b610772818361131590919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d457600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087a57600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108d791906118a1565b60206040518083038186803b1580156108ef57600080fd5b505afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190611703565b90506000600267ffffffffffffffff81111561094657610945611ce1565b5b6040519080825280602002602001820160405280156109745781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106109ae576109ad611cb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a1f57610a1e611cb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610abc94939291906118e5565b6000604051808303818588803b158015610ad557600080fd5b505af1158015610ae9573d6000803e3d6000fd5b50505050506000610bad83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b4f91906118a1565b60206040518083038186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611703565b61131590919063ffffffff16565b9050610bc48160095461135f90919063ffffffff16565b600981905550610c07610bf6600854610be884600c546113ef90919063ffffffff16565b61146a90919063ffffffff16565b600b5461135f90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7657600080fd5b600060048054905090506000811415610c8f5750610daf565b6000805a905060005b8483108015610ca657508381105b15610daa5783600f5410610cbd576000600f819055505b610d066004600f5481548110610cd657610cd5611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114b4565b15610d5557610d546004600f5481548110610d2457610d23611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610db8565b5b610d7a610d6b5a8461131590919063ffffffff16565b8461135f90919063ffffffff16565b92505a9150600f6000815480929190610d9290611bdc565b91905055508080610da290611bdc565b915050610c98565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610e085761105c565b6000610e1382610662565b9050600081111561105a57610e3381600a5461135f90919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610e969291906118bc565b602060405180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee891906116a9565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f8281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461135f90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611013600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113bd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506111229190611b1b565b8154811061113357611132611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106111b1576111b0611cb2565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506112519190611b1b565b8154811061126257611261611cb2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806112dd576112dc611c83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061135783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611521565b905092915050565b600080828461136e9190611a3a565b9050838110156113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90611953565b60405180910390fd5b8091505092915050565b60006113e8600c546113da600b54856113ef90919063ffffffff16565b61146a90919063ffffffff16565b9050919050565b6000808314156114025760009050611464565b600082846114109190611ac1565b905082848261141f9190611a90565b1461145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690611973565b60405180910390fd5b809150505b92915050565b60006114ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611585565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115049190611a3a565b10801561151a5750600e5461151883610662565b115b9050919050565b6000838311158290611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115609190611931565b60405180910390fd5b50600083856115789190611b1b565b9050809150509392505050565b600080831182906115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c39190611931565b60405180910390fd5b50600083856115db9190611a90565b9050809150509392505050565b6000813590506115f781611d9e565b92915050565b60008151905061160c81611db5565b92915050565b60008135905061162181611dcc565b92915050565b60008151905061163681611dcc565b92915050565b60006020828403121561165257611651611d10565b5b6000611660848285016115e8565b91505092915050565b600080604083850312156116805761167f611d10565b5b600061168e858286016115e8565b925050602061169f85828601611612565b9150509250929050565b6000602082840312156116bf576116be611d10565b5b60006116cd848285016115fd565b91505092915050565b6000602082840312156116ec576116eb611d10565b5b60006116fa84828501611612565b91505092915050565b60006020828403121561171957611718611d10565b5b600061172784828501611627565b91505092915050565b6000806040838503121561174757611746611d10565b5b600061175585828601611612565b925050602061176685828601611612565b9150509250929050565b600061177c8383611788565b60208301905092915050565b61179181611b4f565b82525050565b6117a081611b4f565b82525050565b60006117b1826119f5565b6117bb8185611a18565b93506117c6836119e5565b8060005b838110156117f75781516117de8882611770565b97506117e983611a0b565b9250506001810190506117ca565b5085935050505092915050565b61180d81611b97565b82525050565b600061181e82611a00565b6118288185611a29565b9350611838818560208601611ba9565b61184181611d15565b840191505092915050565b6000611859601b83611a29565b915061186482611d26565b602082019050919050565b600061187c602183611a29565b915061188782611d4f565b604082019050919050565b61189b81611b8d565b82525050565b60006020820190506118b66000830184611797565b92915050565b60006040820190506118d16000830185611797565b6118de6020830184611892565b9392505050565b60006080820190506118fa6000830187611804565b818103602083015261190c81866117a6565b905061191b6040830185611797565b6119286060830184611892565b95945050505050565b6000602082019050818103600083015261194b8184611813565b905092915050565b6000602082019050818103600083015261196c8161184c565b9050919050565b6000602082019050818103600083015261198c8161186f565b9050919050565b60006020820190506119a86000830184611892565b92915050565b60006060820190506119c36000830186611892565b6119d06020830185611892565b6119dd6040830184611892565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611a4582611b8d565b9150611a5083611b8d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a8557611a84611c25565b5b828201905092915050565b6000611a9b82611b8d565b9150611aa683611b8d565b925082611ab657611ab5611c54565b5b828204905092915050565b6000611acc82611b8d565b9150611ad783611b8d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b1057611b0f611c25565b5b828202905092915050565b6000611b2682611b8d565b9150611b3183611b8d565b925082821015611b4457611b43611c25565b5b828203905092915050565b6000611b5a82611b6d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611ba282611b8d565b9050919050565b60005b83811015611bc7578082015181840152602081019050611bac565b83811115611bd6576000848401525b50505050565b6000611be782611b8d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c1a57611c19611c25565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b611da781611b4f565b8114611db257600080fd5b50565b611dbe81611b61565b8114611dc957600080fd5b50565b611dd581611b8d565b8114611de057600080fd5b5056fea2646970667358221220274f0853c687e0778c6c99c98b093dcdc2d2f046e9c657d15c35e6b54cf080c964736f6c63430008050033

Deployed ByteCode Sourcemap

12274:17273:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14494:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27107:449;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16001:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16423:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21536:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29272:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15731:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27964:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25670:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16941:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28644:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28947:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28347:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21677:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4117:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25217:445;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15825:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13930:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26969:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16647:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26197:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14311:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26705:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14457:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16171:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14355:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12856:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12789:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23918:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17399:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16087:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15911:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28799:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27564:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13637:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16777:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24248:105;;;;;;;;;;;;;:::i;:::-;;3790:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13665:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13435:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29097:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20568:391;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16282:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27800:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13975:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13478:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3960:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28542:90;;;;;;;;;;;;;:::i;:::-;;20254:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4517:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28155:180;;;;;;;;;;;;;:::i;:::-;;26350:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26833:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13606:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4291:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13698:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14494:56;;;;:::o;27107:449::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27286:13:::1;27271:12;:28;;;;27323:11;27310:10;:24;;;;27361:14;27345:13;:30;;;;27401:13;27386:12;:28;;;;27436:69;27491:13;27436:50;27471:14;27436:30;27454:11;27436:13;:17;;:30;;;;:::i;:::-;:34;;:50;;;;:::i;:::-;:54;;:69;;;;:::i;:::-;27425:8;:80;;;;27533:15;27516:14;:32;;;;27107:449:::0;;;;;:::o;16001:80::-;16049:13;16073:5;;;;;;;;;;;;;;;;;16066:12;;16001:80;:::o;16423:216::-;16498:4;16550:6;16515:11;:23;16527:10;16515:23;;;;;;;;;;;;;;;:32;16539:7;16515:32;;;;;;;;;;;;;;;:41;;;;16593:7;16572:37;;16581:10;16572:37;;;16602:6;16572:37;;;;;;:::i;:::-;;;;;;;;16627:4;16620:11;;16423:216;;;;:::o;21536:94::-;3506:19;3514:10;3506:7;:19::i;:::-;3498:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21615:7:::1;21601:11;;:21;;;;;;;;;;;;;;;;;;21536:94:::0;:::o;29272:150::-;29352:4;29408:6;29376:29;29396:8;29376:19;:29::i;:::-;:38;29369:45;;29272:150;;;;:::o;15731:88::-;15786:7;15804:12;;15797:19;;15731:88;:::o;27964:183::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28080:7:::1;28062:15;:25;;;;28127:12;28098:26;:41;;;;27964:183:::0;;:::o;25670:342::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25830:1:::1;25815:11;25803:9;:23;;;;:::i;:::-;:28;;:55;;;;;25847:11;25835:9;:23;25803:55;25795:64;;;::::0;::::1;;25899:9;25870:26;:38;;;;25950:11;25919:28;:42;;;;25998:6;25972:23;:32;;;;25670:342:::0;;;:::o;16941:370::-;17041:4;17096:17;17061:11;:19;17073:6;17061:19;;;;;;;;;;;;;;;:31;17081:10;17061:31;;;;;;;;;;;;;;;;:52;17058:186;;17163:69;17199:6;17163:69;;;;;;;;;;;;;;;;;:11;:19;17175:6;17163:19;;;;;;;;;;;;;;;:31;17183:10;17163:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;17129:11;:19;17141:6;17129:19;;;;;;;;;;;;;;;:31;17149:10;17129:31;;;;;;;;;;;;;;;:103;;;;17058:186;17263:40;17277:6;17285:9;17296:6;17263:13;:40::i;:::-;17256:47;;16941:370;;;;;:::o;28644:146::-;28713:7;28740:11;;;;;;;;;;;:29;;;28770:11;28740:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28733:49;;28644:146;;;:::o;28947:142::-;29000:7;29027:54;29065:15;29075:4;;;;;;;;;;;29065:9;:15::i;:::-;29027:33;29044:15;29054:4;;;;;;;;;;;29044:9;:15::i;:::-;29027:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;29020:61;;28947:142;:::o;28347:183::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28457:11:::1;;;;;;;;;;;:35;;;28493:10;28505:16;28457:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28347:183:::0;;:::o;21677:164::-;3506:19;3514:10;3506:7;:19::i;:::-;3498:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21782:7:::1;21761:18;;:28;;;;;;;;;;;;;;;;;;21824:9;21800:21;;:33;;;;;;;;;;;;;;;;;;21677:164:::0;;:::o;4117:103::-;4172:4;4207:5;;;;;;;;;;;4196:16;;:7;:16;;;4189:23;;4117:103;;;:::o;25217:445::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25393:8:::1;25372:18;;:29;;;;;;;;;;;;;;;;;;25429:4;25412:14;:21;;;;25469:1;25444:22;:26;;;;25501:7;25481:17;:27;;;;25544:7;25519:22;:32;;;;25585:12;25562:20;:35;;;;25632:22;25608:21;;:46;;;;;;;;;;;;;;;;;;25217:445:::0;;;;;:::o;15825:80::-;15877:5;12719:1;15886:16;;15825:80;:::o;13930:38::-;;;;;;;;;;;;;:::o;26969:130::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27085:6:::1;27058:16;:24;27075:6;27058:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26969:130:::0;;:::o;16647:122::-;16702:4;16726:35;16734:7;16743:17;16726:7;:35::i;:::-;16719:42;;16647:122;;;:::o;26197:145::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26297:4:::1;26282:12;;:19;;;;:::i;:::-;26272:6;:29;;26264:38;;;::::0;::::1;;26328:6;26313:12;:21;;;;26197:145:::0;:::o;14311:37::-;;;;;;;;;;;;;:::o;26705:120::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26811:6:::1;26789:11;:19;26801:6;26789:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26705:120:::0;;:::o;14457:30::-;;;;;;;;;;;;;:::o;16171:105::-;16237:7;16255:9;:18;16265:7;16255:18;;;;;;;;;;;;;;;;16248:25;;16171:105;;;:::o;14355:39::-;;;;;;;;;;;;;:::o;12856:59::-;;;;:::o;12789:52::-;;;;:::o;23918:318::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24026:23:::1;24036:6;24044:4;;;;;;;;;;;24026:9;:23::i;:::-;24063:24;24060:169;;;24134:15;24103:28;:46;;;;24169:48;24193:23;;24169:48;;;;;;:::i;:::-;;;;;;;;24060:169;23918:318:::0;;:::o;17399:149::-;3506:19;3514:10;3506:7;:19::i;:::-;3498:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17537:3:::1;17518:14;17503:12;;:29;;;;:::i;:::-;17502:38;;;;:::i;:::-;17484:15;:56;;;;17399:149:::0;:::o;16087:78::-;16139:7;16157:5;;;;;;;;;;;16150:12;;16087:78;:::o;15911:84::-;15961:13;15985:7;;;;;;;;;;;;;;;;;15978:14;;15911:84;:::o;28799:136::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28889:6:::1;28883:3;:12;28875:21;;;::::0;::::1;;28924:3;28907:14;:20;;;;28799:136:::0;:::o;27564:228::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27707:22:::1;27683:21;;:46;;;;;;;;;;;;;;;;;;27763:21;27740:20;;:44;;;;;;;;;;;;;;;;;;27564:228:::0;;:::o;13637:19::-;;;;;;;;;;;;;:::o;16777:156::-;16857:4;16881:44;16895:10;16907:9;16918:6;16881:13;:44::i;:::-;16874:51;;16777:156;;;;:::o;24248:105::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24344:1:::1;24313:28;:32;;;;24248:105::o:0;3790:94::-;3506:19;3514:10;3506:7;:19::i;:::-;3498:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3872:4:::1;3850:14:::0;:19:::1;3865:3;3850:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3790:94:::0;:::o;13665:25::-;;;;:::o;13435:36::-;;;;;;;;;;;;;:::o;29097:167::-;29165:7;29192:64;29233:22;:20;:22::i;:::-;29192:36;29205:22;29225:1;29205:15;29215:4;;;;;;;;;;;29205:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;29192:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;29185:71;;29097:167;;;:::o;20568:391::-;20617:7;20637:21;20661:78;20723:15;20661:57;20694:23;;20661:28;;:32;;:57;;;;:::i;:::-;:61;;:78;;;;:::i;:::-;20637:102;;20750:19;20772:88;20851:8;;20772:74;20817:28;;20772:40;20785:26;;20772:8;;:12;;:40;;;;:::i;:::-;:44;;:74;;;;:::i;:::-;:78;;:88;;;;:::i;:::-;20750:110;;20878:73;20891:59;20926:23;;20891:30;20907:13;20891:11;:15;;:30;;;;:::i;:::-;:34;;:59;;;;:::i;:::-;20878:8;;:12;;:73;;;;:::i;:::-;20871:80;;;;20568:391;:::o;16282:133::-;16366:7;16384:11;:19;16396:6;16384:19;;;;;;;;;;;;;;;:28;16404:7;16384:28;;;;;;;;;;;;;;;;16377:35;;16282:133;;;;:::o;27800:156::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27906:8:::1;27892:11;;:22;;;;;;;;;;;;;;;;;;27941:7;27925:13;:23;;;;27800:156:::0;;:::o;13975:40::-;;;;;;;;;;;;;:::o;13478:35::-;;;;;;;;;;;;;:::o;3960:97::-;3506:19;3514:10;3506:7;:19::i;:::-;3498:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4044:5:::1;4022:14;:19;4037:3;4022:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3960:97:::0;:::o;28542:90::-;28587:11;;;;;;;;;;;:25;;;28613:10;28587:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28542:90::o;20254:306::-;20310:7;20351:12;20346:1;20333:10;;:14;;;;:::i;:::-;:30;20330:67;;20373:21;20392:1;20373:14;;:18;;:21;;;;:::i;:::-;20366:28;;;;20330:67;20410:7;:86;;;;;20481:15;20421:57;20454:23;;20421:28;;:32;;:57;;;;:::i;:::-;:75;20410:86;20407:120;;;20506:18;:16;:18::i;:::-;20499:25;;;;20407:120;20544:8;;20537:15;;20254:306;;;;:::o;4517:173::-;3506:19;3514:10;3506:7;:19::i;:::-;3498:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4601:3:::1;4593:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4637:4;4615:14:::0;:19:::1;4630:3;4615:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4657:25;4678:3;4657:25;;;;;;:::i;:::-;;;;;;;;4517:173:::0;:::o;28155:180::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28208:26:::1;28237:21;28208:50;;28277:20;;;;;;;;;;;28269:38;;:58;28308:18;28269:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28197:138;28155:180::o:0;26350:347::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26465:4:::1;26447:23;;:6;:23;;;;:41;;;;;26484:4;;;;;;;;;;;26474:14;;:6;:14;;;;26447:41;26439:50;;;::::0;::::1;;26527:6;26500:16;:24;26517:6;26500:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26547:6;26544:146;;;26569:11;;;;;;;;;;;:20;;;26590:6;26598:1;26569:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26544:146;;;26631:11;;;;;;;;;;;:20;;;26652:6;26660:9;:17;26670:6;26660:17;;;;;;;;;;;;;;;;26631:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26544:146;26350:347:::0;;:::o;26833:128::-;3675:24;3688:10;3675:12;:24::i;:::-;3667:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26947:6:::1;26921:15;:23;26937:6;26921:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;26833:128:::0;;:::o;13606:24::-;;;;;;;;;;;;;:::o;4291:107::-;4347:4;4371:14;:19;4386:3;4371:19;;;;;;;;;;;;;;;;;;;;;;;;;4364:26;;4291:107;;;:::o;13698:31::-;;;;;;;;;;;;;:::o;847:181::-;905:7;925:9;941:1;937;:5;;;;:::i;:::-;925:17;;966:1;961;:6;;953:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1019:1;1012:8;;;847:181;;;;:::o;1176:192::-;1262:7;1295:1;1290;:6;;1298:12;1282:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1322:9;1338:1;1334;:5;;;;:::i;:::-;1322:17;;1359:1;1352:8;;;1176:192;;;;;:::o;17556:2049::-;17648:4;17668:6;;;;;;;;;;;17665:63;;;17684:41;17699:6;17707:9;17718:6;17684:14;:41::i;:::-;17677:48;;;;17665:63;17744:14;:22;17759:6;17744:22;;;;;;;;;;;;;;;;;;;;;;;;;17743:23;:53;;;;;17771:14;:25;17786:9;17771:25;;;;;;;;;;;;;;;;;;;;;;;;;17770:26;17743:53;17740:127;;;17820:11;;;;;;;;;;;17812:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17740:127;17912:14;:22;17927:6;17912:22;;;;;;;;;;;;;;;;;;;;;;;;;17911:23;:53;;;;;17959:4;17938:26;;:9;:26;;;;17911:53;:84;;;;;17990:4;;;;;;;;;;;17969:26;;:9;:26;;;;17911:84;:105;;;;;18012:4;;;;;;;;;;;17999:17;;:9;:17;;;;17911:105;:142;;;;;18033:20;;;;;;;;;;;18020:33;;:9;:33;;;;17911:142;:180;;;;;18070:21;;;;;;;;;;;18057:34;;:9;:34;;;;17911:180;17907:372;;;18107:18;18128:20;18138:9;18128;:20::i;:::-;18107:41;;18196:15;;18185:6;18172:10;:19;;;;:::i;:::-;18171:40;;18163:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;18092:187;17907:372;18413:4;;;;;;;;;;;18403:14;;:6;:14;;;:49;;;;;18434:18;;;;;;;;;;;18403:49;:94;;;;;18470:16;:27;18487:9;18470:27;;;;;;;;;;;;;;;;;;;;;;;;;18469:28;18403:94;18399:299;;;18549:15;18522:13;:24;18536:9;18522:24;;;;;;;;;;;;;;;;:42;18514:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18665:21;;;;;;;;;;;18647:39;;:15;:39;;;;:::i;:::-;18620:13;:24;18634:9;18620:24;;;;;;;;;;;;;;;:66;;;;18399:299;18753:28;18766:6;18774;18753:12;:28::i;:::-;18838:16;:14;:16::i;:::-;18835:35;;;18857:10;:8;:10::i;:::-;18835:35;18929:53;18951:6;18929:53;;;;;;;;;;;;;;;;;:9;:17;18939:6;18929:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18909:9;:17;18919:6;18909:17;;;;;;;;;;;;;;;:73;;;;18995:22;19020:21;19034:6;19020:13;:21::i;:::-;:56;;19070:6;19020:56;;;19044:23;19052:6;19060;19044:7;:23::i;:::-;19020:56;18995:81;;19110:40;19135:14;19110:9;:20;19120:9;19110:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19087:9;:20;19097:9;19087:20;;;;;;;;;;;;;;;:63;;;;19196:16;:24;19213:6;19196:24;;;;;;;;;;;;;;;;;;;;;;;;;19192:119;;19241:11;;;;;;;;;;;:20;;;19262:6;19270:9;:17;19280:6;19270:17;;;;;;;;;;;;;;;;19241:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19237:63;;;;;;19192:119;19327:16;:27;19344:9;19327:27;;;;;;;;;;;;;;;;;;;;;;;;;19323:129;;19375:11;;;;;;;;;;;:20;;;19396:9;19407;:20;19417:9;19407:20;;;;;;;;;;;;;;;;19375:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19371:69;;;;;;19323:129;19468:11;;;;;;;;;;;:19;;;19488:14;;19468:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19464:51;;;;;;19549:9;19532:43;;19541:6;19532:43;;;19560:14;19532:43;;;;;;:::i;:::-;;;;;;;;19593:4;19586:11;;;17556:2049;;;;;;:::o;1034:136::-;1092:7;1119:43;1123:1;1126;1119:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1112:50;;1034:136;;;;:::o;24848:361::-;14625:4;14616:6;;:13;;;;;;;;;;;;;;;;;;24924:21:::1;24962:1;24948:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24924:40;;24985:4;;;;;;;;;;;24975;24980:1;24975:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;25018:4;25000;25005:1;25000:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;25036:6;;;;;;;;;;;:57;;;25101:6;25123:1;25139:4;25158:2;25175:15;25036:165;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;24913:296;14643:5:::0;14634:6;;:14;;;;;;;;;;;;;;;;;;24848:361;;:::o;1374:250::-;1432:7;1461:1;1456;:6;1452:47;;;1486:1;1479:8;;;;1452:47;1511:9;1527:1;1523;:5;;;;:::i;:::-;1511:17;;1556:1;1551;1547;:5;;;;:::i;:::-;:10;1539:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1615:1;1608:8;;;1374:250;;;;;:::o;1630:132::-;1688:7;1715:39;1719:1;1722;1715:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1708:46;;1630:132;;;;:::o;19620:330::-;19713:4;19750:53;19772:6;19750:53;;;;;;;;;;;;;;;;;:9;:17;19760:6;19750:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19730:9;:17;19740:6;19730:17;;;;;;;;;;;;;;;:73;;;;19837:32;19862:6;19837:9;:20;19847:9;19837:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19814:9;:20;19824:9;19814:20;;;;;;;;;;;;;;;:55;;;;19902:9;19885:35;;19894:6;19885:35;;;19913:6;19885:35;;;;;;:::i;:::-;;;;;;;;19938:4;19931:11;;19620:330;;;;;:::o;19958:166::-;20055:12;;20045:6;:22;;:49;;;;20071:15;:23;20087:6;20071:23;;;;;;;;;;;;;;;;;;;;;;;;;20045:49;20037:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19958:166;;:::o;21308:197::-;21357:4;21395;;;;;;;;;;;21381:18;;:10;:18;;;;:38;;;;;21413:6;;;;;;;;;;;21412:7;21381:38;:62;;;;;21432:11;;;;;;;;;;;21381:62;:116;;;;;21484:13;;21456:9;:24;21474:4;21456:24;;;;;;;;;;;;;;;;:41;;21381:116;21374:123;;21308:197;:::o;21849:1755::-;14625:4;14616:6;;:13;;;;;;;;;;;;;;;;;;21898:27:::1;21928:60;21944:15;;21961:26;;21928:15;:60::i;:::-;:79;;21995:12;;21928:79;;;21991:1;21928:79;21898:109;;22018:23;22044:59;22101:1;22044:52;22087:8;;22044:38;22062:19;22044:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;22018:85;;22114:20;22137:34;22155:15;22137:13;;:17;;:34;;;;:::i;:::-;22114:57;;22184:21;22222:1;22208:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22184:40;;22253:4;22235;22240:1;22235:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22279:4;;;;;;;;;;;22269;22274:1;22269:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;22296:21;22320;22296:45;;22354:6;;;;;;;;;;;:57;;;22426:12;22453:1;22469:4;22496;22516:15;22354:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22553:17;22573:40;22599:13;22573:21;:25;;:40;;;;:::i;:::-;22553:60;;22624:19;22646:40;22659:26;22683:1;22659:19;:23;;:26;;;;:::i;:::-;22646:8;;:12;;:40;;;;:::i;:::-;22624:62;;22697:26;22726:58;22782:1;22726:51;22765:11;22726:34;22740:19;22726:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;22697:87;;22795:27;22825:45;22858:11;22825:28;22839:13;;22825:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;22795:75;;22881:26;22910:44;22942:11;22910:27;22924:12;;22910:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22881:73;;22971:11;;;;;;;;;;;:19;;;22998;22971:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22967:65;;;;;;23043:12;23092:20;;;;;;;;;;;23084:34;;23126:18;23151:5;23084:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23042:119;;;23180:7;23172:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;23256:1;23238:15;:19;23235:362;;;23273:6;;;;;;;;;;;:22;;;23303:18;23349:4;23373:15;23407:1;23427::::0;23447:21:::1;;;;;;;;;;;23487:15;23273:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23537:48;23549:18;23569:15;23537:48;;;;;;;:::i;:::-;;;;;;;;23235:362;21887:1717;;;;;;;;;;;14643:5:::0;14634:6;;:14;;;;;;;;;;;;;;;;;;21849:1755::o;20132:114::-;20194:4;20219:11;:19;20231:6;20219:19;;;;;;;;;;;;;;;;;;;;;;;;;20218:20;20211:27;;20132:114;;;:::o;20967:333::-;21034:7;21054:17;21074:40;21099:14;;21074:20;21085:8;;21074:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;21054:60;;21154:39;21183:9;21154;:24;21172:4;21154:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21127:9;:24;21145:4;21127:24;;;;;;;;;;;;;;;:66;;;;21234:4;21209:42;;21218:6;21209:42;;;21241:9;21209:42;;;;;;:::i;:::-;;;;;;;;21271:21;21282:9;21271:6;:10;;:21;;;;:::i;:::-;21264:28;;;20967:333;;;;:::o;1768:345::-;1854:7;1953:1;1949;:5;1956:12;1941:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1980:9;1996:1;1992;:5;;;;:::i;:::-;1980:17;;2104:1;2097:8;;;1768:345;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:135::-;790:5;828:6;815:20;806:29;;844:31;869:5;844:31;:::i;:::-;796:85;;;;:::o;887:329::-;946:6;995:2;983:9;974:7;970:23;966:32;963:2;;;1001:79;;:::i;:::-;963:2;1121:1;1146:53;1191:7;1182:6;1171:9;1167:22;1146:53;:::i;:::-;1136:63;;1092:117;953:263;;;;:::o;1222:345::-;1289:6;1338:2;1326:9;1317:7;1313:23;1309:32;1306:2;;;1344:79;;:::i;:::-;1306:2;1464:1;1489:61;1542:7;1533:6;1522:9;1518:22;1489:61;:::i;:::-;1479:71;;1435:125;1296:271;;;;:::o;1573:474::-;1641:6;1649;1698:2;1686:9;1677:7;1673:23;1669:32;1666:2;;;1704:79;;:::i;:::-;1666:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1951:2;1977:53;2022:7;2013:6;2002:9;1998:22;1977:53;:::i;:::-;1967:63;;1922:118;1656:391;;;;;:::o;2053:619::-;2130:6;2138;2146;2195:2;2183:9;2174:7;2170:23;2166:32;2163:2;;;2201:79;;:::i;:::-;2163:2;2321:1;2346:53;2391:7;2382:6;2371:9;2367:22;2346:53;:::i;:::-;2336:63;;2292:117;2448:2;2474:53;2519:7;2510:6;2499:9;2495:22;2474:53;:::i;:::-;2464:63;;2419:118;2576:2;2602:53;2647:7;2638:6;2627:9;2623:22;2602:53;:::i;:::-;2592:63;;2547:118;2153:519;;;;;:::o;2678:468::-;2743:6;2751;2800:2;2788:9;2779:7;2775:23;2771:32;2768:2;;;2806:79;;:::i;:::-;2768:2;2926:1;2951:53;2996:7;2987:6;2976:9;2972:22;2951:53;:::i;:::-;2941:63;;2897:117;3053:2;3079:50;3121:7;3112:6;3101:9;3097:22;3079:50;:::i;:::-;3069:60;;3024:115;2758:388;;;;;:::o;3152:474::-;3220:6;3228;3277:2;3265:9;3256:7;3252:23;3248:32;3245:2;;;3283:79;;:::i;:::-;3245:2;3403:1;3428:53;3473:7;3464:6;3453:9;3449:22;3428:53;:::i;:::-;3418:63;;3374:117;3530:2;3556:53;3601:7;3592:6;3581:9;3577:22;3556:53;:::i;:::-;3546:63;;3501:118;3235:391;;;;;:::o;3632:323::-;3688:6;3737:2;3725:9;3716:7;3712:23;3708:32;3705:2;;;3743:79;;:::i;:::-;3705:2;3863:1;3888:50;3930:7;3921:6;3910:9;3906:22;3888:50;:::i;:::-;3878:60;;3834:114;3695:260;;;;:::o;3961:468::-;4026:6;4034;4083:2;4071:9;4062:7;4058:23;4054:32;4051:2;;;4089:79;;:::i;:::-;4051:2;4209:1;4234:50;4276:7;4267:6;4256:9;4252:22;4234:50;:::i;:::-;4224:60;;4180:114;4333:2;4359:53;4404:7;4395:6;4384:9;4380:22;4359:53;:::i;:::-;4349:63;;4304:118;4041:388;;;;;:::o;4435:899::-;4524:6;4532;4540;4548;4556;4605:3;4593:9;4584:7;4580:23;4576:33;4573:2;;;4612:79;;:::i;:::-;4573:2;4732:1;4757:50;4799:7;4790:6;4779:9;4775:22;4757:50;:::i;:::-;4747:60;;4703:114;4856:2;4882:53;4927:7;4918:6;4907:9;4903:22;4882:53;:::i;:::-;4872:63;;4827:118;4984:2;5010:53;5055:7;5046:6;5035:9;5031:22;5010:53;:::i;:::-;5000:63;;4955:118;5112:2;5138:53;5183:7;5174:6;5163:9;5159:22;5138:53;:::i;:::-;5128:63;;5083:118;5240:3;5267:50;5309:7;5300:6;5289:9;5285:22;5267:50;:::i;:::-;5257:60;;5211:116;4563:771;;;;;;;;:::o;5340:464::-;5403:6;5411;5460:2;5448:9;5439:7;5435:23;5431:32;5428:2;;;5466:79;;:::i;:::-;5428:2;5586:1;5611:50;5653:7;5644:6;5633:9;5629:22;5611:50;:::i;:::-;5601:60;;5557:114;5710:2;5736:51;5779:7;5770:6;5759:9;5755:22;5736:51;:::i;:::-;5726:61;;5681:116;5418:386;;;;;:::o;5810:329::-;5869:6;5918:2;5906:9;5897:7;5893:23;5889:32;5886:2;;;5924:79;;:::i;:::-;5886:2;6044:1;6069:53;6114:7;6105:6;6094:9;6090:22;6069:53;:::i;:::-;6059:63;;6015:117;5876:263;;;;:::o;6145:351::-;6215:6;6264:2;6252:9;6243:7;6239:23;6235:32;6232:2;;;6270:79;;:::i;:::-;6232:2;6390:1;6415:64;6471:7;6462:6;6451:9;6447:22;6415:64;:::i;:::-;6405:74;;6361:128;6222:274;;;;:::o;6502:468::-;6567:6;6575;6624:2;6612:9;6603:7;6599:23;6595:32;6592:2;;;6630:79;;:::i;:::-;6592:2;6750:1;6775:53;6820:7;6811:6;6800:9;6796:22;6775:53;:::i;:::-;6765:63;;6721:117;6877:2;6903:50;6945:7;6936:6;6925:9;6921:22;6903:50;:::i;:::-;6893:60;;6848:115;6582:388;;;;;:::o;6976:474::-;7044:6;7052;7101:2;7089:9;7080:7;7076:23;7072:32;7069:2;;;7107:79;;:::i;:::-;7069:2;7227:1;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7198:117;7354:2;7380:53;7425:7;7416:6;7405:9;7401:22;7380:53;:::i;:::-;7370:63;;7325:118;7059:391;;;;;:::o;7456:619::-;7533:6;7541;7549;7598:2;7586:9;7577:7;7573:23;7569:32;7566:2;;;7604:79;;:::i;:::-;7566:2;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;7556:519;;;;;:::o;8081:663::-;8169:6;8177;8185;8234:2;8222:9;8213:7;8209:23;8205:32;8202:2;;;8240:79;;:::i;:::-;8202:2;8360:1;8385:64;8441:7;8432:6;8421:9;8417:22;8385:64;:::i;:::-;8375:74;;8331:128;8498:2;8524:64;8580:7;8571:6;8560:9;8556:22;8524:64;:::i;:::-;8514:74;;8469:129;8637:2;8663:64;8719:7;8710:6;8699:9;8695:22;8663:64;:::i;:::-;8653:74;;8608:129;8192:552;;;;;:::o;8750:911::-;8845:6;8853;8861;8869;8877;8926:3;8914:9;8905:7;8901:23;8897:33;8894:2;;;8933:79;;:::i;:::-;8894:2;9053:1;9078:53;9123:7;9114:6;9103:9;9099:22;9078:53;:::i;:::-;9068:63;;9024:117;9180:2;9206:53;9251:7;9242:6;9231:9;9227:22;9206:53;:::i;:::-;9196:63;;9151:118;9308:2;9334:53;9379:7;9370:6;9359:9;9355:22;9334:53;:::i;:::-;9324:63;;9279:118;9436:2;9462:53;9507:7;9498:6;9487:9;9483:22;9462:53;:::i;:::-;9452:63;;9407:118;9564:3;9591:53;9636:7;9627:6;9616:9;9612:22;9591:53;:::i;:::-;9581:63;;9535:119;8884:777;;;;;;;;:::o;9667:179::-;9736:10;9757:46;9799:3;9791:6;9757:46;:::i;:::-;9835:4;9830:3;9826:14;9812:28;;9747:99;;;;:::o;9852:147::-;9947:45;9986:5;9947:45;:::i;:::-;9942:3;9935:58;9925:74;;:::o;10005:108::-;10082:24;10100:5;10082:24;:::i;:::-;10077:3;10070:37;10060:53;;:::o;10119:118::-;10206:24;10224:5;10206:24;:::i;:::-;10201:3;10194:37;10184:53;;:::o;10273:732::-;10392:3;10421:54;10469:5;10421:54;:::i;:::-;10491:86;10570:6;10565:3;10491:86;:::i;:::-;10484:93;;10601:56;10651:5;10601:56;:::i;:::-;10680:7;10711:1;10696:284;10721:6;10718:1;10715:13;10696:284;;;10797:6;10791:13;10824:63;10883:3;10868:13;10824:63;:::i;:::-;10817:70;;10910:60;10963:6;10910:60;:::i;:::-;10900:70;;10756:224;10743:1;10740;10736:9;10731:14;;10696:284;;;10700:14;10996:3;10989:10;;10397:608;;;;;;;:::o;11011:109::-;11092:21;11107:5;11092:21;:::i;:::-;11087:3;11080:34;11070:50;;:::o;11126:167::-;11231:55;11280:5;11231:55;:::i;:::-;11226:3;11219:68;11209:84;;:::o;11299:147::-;11394:45;11433:5;11394:45;:::i;:::-;11389:3;11382:58;11372:74;;:::o;11452:364::-;11540:3;11568:39;11601:5;11568:39;:::i;:::-;11623:71;11687:6;11682:3;11623:71;:::i;:::-;11616:78;;11703:52;11748:6;11743:3;11736:4;11729:5;11725:16;11703:52;:::i;:::-;11780:29;11802:6;11780:29;:::i;:::-;11775:3;11771:39;11764:46;;11544:272;;;;;:::o;11822:366::-;11964:3;11985:67;12049:2;12044:3;11985:67;:::i;:::-;11978:74;;12061:93;12150:3;12061:93;:::i;:::-;12179:2;12174:3;12170:12;12163:19;;11968:220;;;:::o;12194:366::-;12336:3;12357:67;12421:2;12416:3;12357:67;:::i;:::-;12350:74;;12433:93;12522:3;12433:93;:::i;:::-;12551:2;12546:3;12542:12;12535:19;;12340:220;;;:::o;12566:366::-;12708:3;12729:67;12793:2;12788:3;12729:67;:::i;:::-;12722:74;;12805:93;12894:3;12805:93;:::i;:::-;12923:2;12918:3;12914:12;12907:19;;12712:220;;;:::o;12938:366::-;13080:3;13101:67;13165:2;13160:3;13101:67;:::i;:::-;13094:74;;13177:93;13266:3;13177:93;:::i;:::-;13295:2;13290:3;13286:12;13279:19;;13084:220;;;:::o;13310:366::-;13452:3;13473:67;13537:2;13532:3;13473:67;:::i;:::-;13466:74;;13549:93;13638:3;13549:93;:::i;:::-;13667:2;13662:3;13658:12;13651:19;;13456:220;;;:::o;13682:366::-;13824:3;13845:67;13909:2;13904:3;13845:67;:::i;:::-;13838:74;;13921:93;14010:3;13921:93;:::i;:::-;14039:2;14034:3;14030:12;14023:19;;13828:220;;;:::o;14054:366::-;14196:3;14217:67;14281:2;14276:3;14217:67;:::i;:::-;14210:74;;14293:93;14382:3;14293:93;:::i;:::-;14411:2;14406:3;14402:12;14395:19;;14200:220;;;:::o;14426:365::-;14568:3;14589:66;14653:1;14648:3;14589:66;:::i;:::-;14582:73;;14664:93;14753:3;14664:93;:::i;:::-;14782:2;14777:3;14773:12;14766:19;;14572:219;;;:::o;14797:398::-;14956:3;14977:83;15058:1;15053:3;14977:83;:::i;:::-;14970:90;;15069:93;15158:3;15069:93;:::i;:::-;15187:1;15182:3;15178:11;15171:18;;14960:235;;;:::o;15201:366::-;15343:3;15364:67;15428:2;15423:3;15364:67;:::i;:::-;15357:74;;15440:93;15529:3;15440:93;:::i;:::-;15558:2;15553:3;15549:12;15542:19;;15347:220;;;:::o;15573:118::-;15660:24;15678:5;15660:24;:::i;:::-;15655:3;15648:37;15638:53;;:::o;15697:112::-;15780:22;15796:5;15780:22;:::i;:::-;15775:3;15768:35;15758:51;;:::o;15815:379::-;15999:3;16021:147;16164:3;16021:147;:::i;:::-;16014:154;;16185:3;16178:10;;16003:191;;;:::o;16200:222::-;16293:4;16331:2;16320:9;16316:18;16308:26;;16344:71;16412:1;16401:9;16397:17;16388:6;16344:71;:::i;:::-;16298:124;;;;:::o;16428:238::-;16529:4;16567:2;16556:9;16552:18;16544:26;;16580:79;16656:1;16645:9;16641:17;16632:6;16580:79;:::i;:::-;16534:132;;;;:::o;16672:348::-;16801:4;16839:2;16828:9;16824:18;16816:26;;16852:71;16920:1;16909:9;16905:17;16896:6;16852:71;:::i;:::-;16933:80;17009:2;16998:9;16994:18;16985:6;16933:80;:::i;:::-;16806:214;;;;;:::o;17026:332::-;17147:4;17185:2;17174:9;17170:18;17162:26;;17198:71;17266:1;17255:9;17251:17;17242:6;17198:71;:::i;:::-;17279:72;17347:2;17336:9;17332:18;17323:6;17279:72;:::i;:::-;17152:206;;;;;:::o;17364:807::-;17613:4;17651:3;17640:9;17636:19;17628:27;;17665:71;17733:1;17722:9;17718:17;17709:6;17665:71;:::i;:::-;17746:72;17814:2;17803:9;17799:18;17790:6;17746:72;:::i;:::-;17828:80;17904:2;17893:9;17889:18;17880:6;17828:80;:::i;:::-;17918;17994:2;17983:9;17979:18;17970:6;17918:80;:::i;:::-;18008:73;18076:3;18065:9;18061:19;18052:6;18008:73;:::i;:::-;18091;18159:3;18148:9;18144:19;18135:6;18091:73;:::i;:::-;17618:553;;;;;;;;;:::o;18177:210::-;18264:4;18302:2;18291:9;18287:18;18279:26;;18315:65;18377:1;18366:9;18362:17;18353:6;18315:65;:::i;:::-;18269:118;;;;:::o;18393:258::-;18504:4;18542:2;18531:9;18527:18;18519:26;;18555:89;18641:1;18630:9;18626:17;18617:6;18555:89;:::i;:::-;18509:142;;;;:::o;18657:720::-;18892:4;18930:3;18919:9;18915:19;18907:27;;18944:79;19020:1;19009:9;19005:17;18996:6;18944:79;:::i;:::-;19070:9;19064:4;19060:20;19055:2;19044:9;19040:18;19033:48;19098:108;19201:4;19192:6;19098:108;:::i;:::-;19090:116;;19216:72;19284:2;19273:9;19269:18;19260:6;19216:72;:::i;:::-;19298;19366:2;19355:9;19351:18;19342:6;19298:72;:::i;:::-;18897:480;;;;;;;:::o;19383:313::-;19496:4;19534:2;19523:9;19519:18;19511:26;;19583:9;19577:4;19573:20;19569:1;19558:9;19554:17;19547:47;19611:78;19684:4;19675:6;19611:78;:::i;:::-;19603:86;;19501:195;;;;:::o;19702:419::-;19868:4;19906:2;19895:9;19891:18;19883:26;;19955:9;19949:4;19945:20;19941:1;19930:9;19926:17;19919:47;19983:131;20109:4;19983:131;:::i;:::-;19975:139;;19873:248;;;:::o;20127:419::-;20293:4;20331:2;20320:9;20316:18;20308:26;;20380:9;20374:4;20370:20;20366:1;20355:9;20351:17;20344:47;20408:131;20534:4;20408:131;:::i;:::-;20400:139;;20298:248;;;:::o;20552:419::-;20718:4;20756:2;20745:9;20741:18;20733:26;;20805:9;20799:4;20795:20;20791:1;20780:9;20776:17;20769:47;20833:131;20959:4;20833:131;:::i;:::-;20825:139;;20723:248;;;:::o;20977:419::-;21143:4;21181:2;21170:9;21166:18;21158:26;;21230:9;21224:4;21220:20;21216:1;21205:9;21201:17;21194:47;21258:131;21384:4;21258:131;:::i;:::-;21250:139;;21148:248;;;:::o;21402:419::-;21568:4;21606:2;21595:9;21591:18;21583:26;;21655:9;21649:4;21645:20;21641:1;21630:9;21626:17;21619:47;21683:131;21809:4;21683:131;:::i;:::-;21675:139;;21573:248;;;:::o;21827:419::-;21993:4;22031:2;22020:9;22016:18;22008:26;;22080:9;22074:4;22070:20;22066:1;22055:9;22051:17;22044:47;22108:131;22234:4;22108:131;:::i;:::-;22100:139;;21998:248;;;:::o;22252:419::-;22418:4;22456:2;22445:9;22441:18;22433:26;;22505:9;22499:4;22495:20;22491:1;22480:9;22476:17;22469:47;22533:131;22659:4;22533:131;:::i;:::-;22525:139;;22423:248;;;:::o;22677:419::-;22843:4;22881:2;22870:9;22866:18;22858:26;;22930:9;22924:4;22920:20;22916:1;22905:9;22901:17;22894:47;22958:131;23084:4;22958:131;:::i;:::-;22950:139;;22848:248;;;:::o;23102:419::-;23268:4;23306:2;23295:9;23291:18;23283:26;;23355:9;23349:4;23345:20;23341:1;23330:9;23326:17;23319:47;23383:131;23509:4;23383:131;:::i;:::-;23375:139;;23273:248;;;:::o;23527:222::-;23620:4;23658:2;23647:9;23643:18;23635:26;;23671:71;23739:1;23728:9;23724:17;23715:6;23671:71;:::i;:::-;23625:124;;;;:::o;23755:831::-;24018:4;24056:3;24045:9;24041:19;24033:27;;24070:71;24138:1;24127:9;24123:17;24114:6;24070:71;:::i;:::-;24151:80;24227:2;24216:9;24212:18;24203:6;24151:80;:::i;:::-;24278:9;24272:4;24268:20;24263:2;24252:9;24248:18;24241:48;24306:108;24409:4;24400:6;24306:108;:::i;:::-;24298:116;;24424:72;24492:2;24481:9;24477:18;24468:6;24424:72;:::i;:::-;24506:73;24574:3;24563:9;24559:19;24550:6;24506:73;:::i;:::-;24023:563;;;;;;;;:::o;24592:332::-;24713:4;24751:2;24740:9;24736:18;24728:26;;24764:71;24832:1;24821:9;24817:17;24808:6;24764:71;:::i;:::-;24845:72;24913:2;24902:9;24898:18;24889:6;24845:72;:::i;:::-;24718:206;;;;;:::o;24930:214::-;25019:4;25057:2;25046:9;25042:18;25034:26;;25070:67;25134:1;25123:9;25119:17;25110:6;25070:67;:::i;:::-;25024:120;;;;:::o;25231:132::-;25298:4;25321:3;25313:11;;25351:4;25346:3;25342:14;25334:22;;25303:60;;;:::o;25369:114::-;25436:6;25470:5;25464:12;25454:22;;25443:40;;;:::o;25489:99::-;25541:6;25575:5;25569:12;25559:22;;25548:40;;;:::o;25594:113::-;25664:4;25696;25691:3;25687:14;25679:22;;25669:38;;;:::o;25713:184::-;25812:11;25846:6;25841:3;25834:19;25886:4;25881:3;25877:14;25862:29;;25824:73;;;;:::o;25903:147::-;26004:11;26041:3;26026:18;;26016:34;;;;:::o;26056:169::-;26140:11;26174:6;26169:3;26162:19;26214:4;26209:3;26205:14;26190:29;;26152:73;;;;:::o;26231:305::-;26271:3;26290:20;26308:1;26290:20;:::i;:::-;26285:25;;26324:20;26342:1;26324:20;:::i;:::-;26319:25;;26478:1;26410:66;26406:74;26403:1;26400:81;26397:2;;;26484:18;;:::i;:::-;26397:2;26528:1;26525;26521:9;26514:16;;26275:261;;;;:::o;26542:185::-;26582:1;26599:20;26617:1;26599:20;:::i;:::-;26594:25;;26633:20;26651:1;26633:20;:::i;:::-;26628:25;;26672:1;26662:2;;26677:18;;:::i;:::-;26662:2;26719:1;26716;26712:9;26707:14;;26584:143;;;;:::o;26733:348::-;26773:7;26796:20;26814:1;26796:20;:::i;:::-;26791:25;;26830:20;26848:1;26830:20;:::i;:::-;26825:25;;27018:1;26950:66;26946:74;26943:1;26940:81;26935:1;26928:9;26921:17;26917:105;26914:2;;;27025:18;;:::i;:::-;26914:2;27073:1;27070;27066:9;27055:20;;26781:300;;;;:::o;27087:191::-;27127:4;27147:20;27165:1;27147:20;:::i;:::-;27142:25;;27181:20;27199:1;27181:20;:::i;:::-;27176:25;;27220:1;27217;27214:8;27211:2;;;27225:18;;:::i;:::-;27211:2;27270:1;27267;27263:9;27255:17;;27132:146;;;;:::o;27284:96::-;27321:7;27350:24;27368:5;27350:24;:::i;:::-;27339:35;;27329:51;;;:::o;27386:104::-;27431:7;27460:24;27478:5;27460:24;:::i;:::-;27449:35;;27439:51;;;:::o;27496:90::-;27530:7;27573:5;27566:13;27559:21;27548:32;;27538:48;;;:::o;27592:126::-;27629:7;27669:42;27662:5;27658:54;27647:65;;27637:81;;;:::o;27724:77::-;27761:7;27790:5;27779:16;;27769:32;;;:::o;27807:86::-;27842:7;27882:4;27875:5;27871:16;27860:27;;27850:43;;;:::o;27899:134::-;27957:9;27990:37;28021:5;27990:37;:::i;:::-;27977:50;;27967:66;;;:::o;28039:162::-;28107:9;28140:55;28189:5;28140:55;:::i;:::-;28127:68;;28117:84;;;:::o;28207:131::-;28275:9;28308:24;28326:5;28308:24;:::i;:::-;28295:37;;28285:53;;;:::o;28344:121::-;28402:9;28435:24;28453:5;28435:24;:::i;:::-;28422:37;;28412:53;;;:::o;28471:126::-;28521:9;28554:37;28585:5;28554:37;:::i;:::-;28541:50;;28531:66;;;:::o;28603:113::-;28653:9;28686:24;28704:5;28686:24;:::i;:::-;28673:37;;28663:53;;;:::o;28722:307::-;28790:1;28800:113;28814:6;28811:1;28808:13;28800:113;;;28899:1;28894:3;28890:11;28884:18;28880:1;28875:3;28871:11;28864:39;28836:2;28833:1;28829:10;28824:15;;28800:113;;;28931:6;28928:1;28925:13;28922:2;;;29011:1;29002:6;28997:3;28993:16;28986:27;28922:2;28771:258;;;;:::o;29035:180::-;29083:77;29080:1;29073:88;29180:4;29177:1;29170:15;29204:4;29201:1;29194:15;29221:180;29269:77;29266:1;29259:88;29366:4;29363:1;29356:15;29390:4;29387:1;29380:15;29407:180;29455:77;29452:1;29445:88;29552:4;29549:1;29542:15;29576:4;29573:1;29566:15;29593:180;29641:77;29638:1;29631:88;29738:4;29735:1;29728:15;29762:4;29759:1;29752:15;29902:117;30011:1;30008;30001:12;30025:102;30066:6;30117:2;30113:7;30108:2;30101:5;30097:14;30093:28;30083:38;;30073:54;;;:::o;30133:167::-;30273:19;30269:1;30261:6;30257:14;30250:43;30239:61;:::o;30306:177::-;30446:29;30442:1;30434:6;30430:14;30423:53;30412:71;:::o;30489:224::-;30629:34;30625:1;30617:6;30613:14;30606:58;30698:7;30693:2;30685:6;30681:15;30674:32;30595:118;:::o;30719:180::-;30859:32;30855:1;30847:6;30843:14;30836:56;30825:74;:::o;30905:170::-;31045:22;31041:1;31033:6;31029:14;31022:46;31011:64;:::o;31081:220::-;31221:34;31217:1;31209:6;31205:14;31198:58;31290:3;31285:2;31277:6;31273:15;31266:28;31187:114;:::o;31307:249::-;31447:34;31443:1;31435:6;31431:14;31424:58;31516:32;31511:2;31503:6;31499:15;31492:57;31413:143;:::o;31562:156::-;31702:8;31698:1;31690:6;31686:14;31679:32;31668:50;:::o;31724:114::-;31830:8;:::o;31844:161::-;31984:13;31980:1;31972:6;31968:14;31961:37;31950:55;:::o;32011:122::-;32084:24;32102:5;32084:24;:::i;:::-;32077:5;32074:35;32064:2;;32123:1;32120;32113:12;32064:2;32054:79;:::o;32139:138::-;32220:32;32246:5;32220:32;:::i;:::-;32213:5;32210:43;32200:2;;32267:1;32264;32257:12;32200:2;32190:87;:::o;32283:116::-;32353:21;32368:5;32353:21;:::i;:::-;32346:5;32343:32;32333:2;;32389:1;32386;32379:12;32333:2;32323:76;:::o;32405:122::-;32478:24;32496:5;32478:24;:::i;:::-;32471:5;32468:35;32458:2;;32517:1;32514;32507:12;32458:2;32448:79;:::o;32533:118::-;32604:22;32620:5;32604:22;:::i;:::-;32597:5;32594:33;32584:2;;32641:1;32638;32631:12;32584:2;32574:77;:::o

Swarm Source

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