Contract 0xc721A9F504b854FF168183064a5e4dd9A668db88 1

Token Contract 
 
 
Txn Hash
Method
Block
From
To
Value
0x7a5f1b9ec092268f59b4e0d0e97adc3b5ceaee526437f181fc7a4b2be926e341Approve160237002022-11-22 6:16:1112 days 6 hrs ago0xa8ae2271c0189985e6b4c9325f890a61ff21e4cb IN Wukong Project: WUK Token0 Ether0.0005514 11.69715875
0x1f5bfcabe807c728ec482c0a78bdce61de1a6d357c3dd7384bea7617d01a07c9Approve159002542022-11-05 0:31:4729 days 12 hrs ago0x264ab03c26948694c45b42bc9385948e16484239 IN Wukong Project: WUK Token0 Ether0.00072281 15.33331358
0xee48c182665b901d783581eadcb61484c9f6ab0438276654a8a7884ce7dec639Approve158028462022-10-22 9:47:3543 days 3 hrs agoENS Name kirito234.eth IN Wukong Project: WUK Token0 Ether0.0003998 16.08496749
0xe33a43807a5962f720eed91712ecc2bb169e89787195078a283748550e1ccf0fApprove155708842022-09-19 23:40:4775 days 13 hrs ago0x1e78c2f21a3f194cec6dba965b3703607a8fb0e8 IN Wukong Project: WUK Token0 Ether0.00035039 7.43298217
0x81f35176777799460fa2701495bc0c28f7ab88275001ee5b82a6c2c3b12a9324Approve155432882022-09-16 2:40:2379 days 10 hrs ago0x75f594e105530cc43163940dd113a3f0f04c525b IN Wukong Project: WUK Token0 Ether0.00039036 8.28088272
0x92366fc89ba0c8a1c13acd30c5aea31c19f21041af33a8d6147beebc136f8440Approve155011572022-09-09 6:02:4786 days 7 hrs ago0xd62ca14e0d1a4b7d00b47c71605b24eb29dd4921 IN Wukong Project: WUK Token0 Ether0.00037911 8.04232048
0xf7ea0ea88e600f46ec8069f7812e1153ff008dd5817039f202ad6f35a250fe7cApprove154788202022-09-05 16:18:3589 days 20 hrs ago0xfd4863d97a984d500912eceb3148a285dbd88ced IN Wukong Project: WUK Token0 Ether0.00087107 18.47857377
0x1354d8018340d46f90a13c518181f373199d98e49148cdfa42a3467fc4b9819dApprove154547122022-09-01 19:37:4293 days 17 hrs ago0xc46b476fa0bb66200681b16f23e3c13e68356b0f IN Wukong Project: WUK Token0 Ether0.00089777 19.04493533
0x760a08d4cefc7ea7ca420a42a2840a86cc82cec3353bb4d62c69bcbd5a7191f7Claim Reflection154470772022-08-31 14:14:2794 days 22 hrs ago0x1e78c2f21a3f194cec6dba965b3703607a8fb0e8 IN Wukong Project: WUK Token0 Ether0.00112719 18.2396442
0xd0c7630774c252fc83b0c0314dba065a1d4a38341df7682e22fca5ea310f0f3eApprove154355382022-08-29 17:57:1596 days 19 hrs ago0x984dfccef37ddc7c94c2617adb88cfc41309a706 IN Wukong Project: WUK Token0 Ether0.00106484 22.58897446
0x8d44e42f37a1db7d634c5aed1309137469e1be292da1dc071e31262133c00fe4Claim Reflection154355242022-08-29 17:53:2696 days 19 hrs ago0x984dfccef37ddc7c94c2617adb88cfc41309a706 IN Wukong Project: WUK Token0 Ether0.0014978 24.23668645
0x96cb39b3e5fcdec9c34b536b12e618f50eb0587e07176f7f4c999b49e4394268Approve154000242022-08-24 1:29:58102 days 11 hrs ago0x70c0f2b78e287b6fd7829edd958cff2c17b3da12 IN Wukong Project: WUK Token0 Ether0.00026839 5.69350092
0x6e725d1ea5e77b2814765fbb3503c65ec2f733aaadc9b663c8567755844b94f6Claim Reflection153578482022-08-17 9:08:34109 days 3 hrs ago0x37e6c6b4625f0475cf139861099eca77e87a148a IN Wukong Project: WUK Token0 Ether0.00030899 5
0x567b0382198f7812f91c6f86b094f2c931099c7315192520f4e9224a8c9ce105Claim Reflection153437212022-08-15 3:32:27111 days 9 hrs ago0x70c0f2b78e287b6fd7829edd958cff2c17b3da12 IN Wukong Project: WUK Token0 Ether0.00070964 11.48303569
0xedd1835cdb9dcdcd6d8e50e2674829f6804b9c183ec245426a8741fc84ceaaa7Claim Reflection153303372022-08-13 1:00:51113 days 12 hrs ago0x9d02211fddad0ca5b8b4ff40780409a990f3a2eb IN Wukong Project: WUK Token0 Ether0.00391348 63.3260967
0x3b209fdd4116612a076cd805a6dfa5cbdbadde87fe26a4f993ac1733b61be1e1Approve151958512022-07-23 1:05:21134 days 11 hrs ago0xaa6dfa139e85bc4253b4174c86290b99b390537f IN Wukong Project: WUK Token0 Ether0.00033013 7.00331301
0xa4f2a228bbf8dea8129963ee0650a11c9091d991ac6a4b03178a218e39217a6fClaim Reflection151652622022-07-18 7:20:26139 days 5 hrs ago0x1727be7bfbd82e45386dce8ba96089e291b5ce93 IN Wukong Project: WUK Token0 Ether0.00113756 18.40755632
0x1746c4b7feb4e26871cc0d783fed810bfe6588acfceea885304913bd30cb75fbApprove151287532022-07-12 15:51:22144 days 21 hrs ago0x0b77fb1370f2554c1f5a523533bd176dc89b1968 IN Wukong Project: WUK Token0 Ether0.00106611 22.61582796
0x1b83709d27c4ff09bd6f051a810ed80498e3c9f9fcaec4aa181acbc72b12b368Claim Reflection151286362022-07-12 15:26:53144 days 21 hrs ago0x0b77fb1370f2554c1f5a523533bd176dc89b1968 IN Wukong Project: WUK Token0 Ether0.00175195 22.20508184
0xab2a2b5dd4ac30477326d5a4249a822a9f8e59e17dcc7d1f505568c5b4dbda48Approve150605152022-07-02 3:05:36155 days 9 hrs ago0xb51b84ec74749ad4496b6cf5c080d20bb17410b7 IN Wukong Project: WUK Token0 Ether0.00061294 13.00262737
0x7578145bac26d2ee282c795c34e88b0a058518e71004359aa52bda27aeed1819Approve148746562022-05-30 20:23:12187 days 16 hrs ago0x4abe7dbc53c795524f3606c57d3064e7a73c31d7 IN Wukong Project: WUK Token0 Ether0.00138094 29.29464477
0x888b19a7f00c6350db0881e668aa50f1b43ce1320d0606f35a391b8e3abcc14dSet Is Fee Exemp...148643062022-05-29 3:54:59189 days 9 hrs agoWukong Project: Deployer IN Wukong Project: WUK Token0 Ether0.0002456 9.13135532
0xf9f1ee6060ccb509109e217bc75999a90ae48efa4e6fb3b3fc51bf2f27c8cb73Set Is Fee Exemp...148643062022-05-29 3:54:59189 days 9 hrs agoWukong Project: Deployer IN Wukong Project: WUK Token0 Ether0.00022788 8.47617132
0xc761869c36af5c6f37fed1e6451f95002456433402e93bee2d583f70caf3389fClaim Reflection148256552022-05-22 21:15:19195 days 15 hrs ago0xed5839390500f0ed4b73f2d97ca0b14698749af3 IN Wukong Project: WUK Token0 Ether0.00126511 20.47142832
0xa714a35f909ea78117772c0d979b58a686474d2adf63d09392f09a3b25f12a61Set Is Fee Exemp...148249902022-05-22 18:42:56195 days 18 hrs agoWukong Project: Deployer IN Wukong Project: WUK Token0 Ether0.00023425 9.40892067
[ Download CSV Export 

OVERVIEW

Wukoin is the main currency of the Wukong Project - a long term project aiming at becoming the main point of reference for the whole crypto and tech community.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xbdb92d17a55e87acdb50147faa57a37b533fc049a9331b67f059d0929a7afcc6160238542022-11-22 6:47:1112 days 6 hrs ago Wukong Project: WUK TokenENS Name *marketing.wukong🙈.eth0.00228511 Ether
0xbdb92d17a55e87acdb50147faa57a37b533fc049a9331b67f059d0929a7afcc6160238542022-11-22 6:47:1112 days 6 hrs ago Wukong Project: WUK TokenENS Name *charity.wukong🙈.eth0.00114255 Ether
0xbdb92d17a55e87acdb50147faa57a37b533fc049a9331b67f059d0929a7afcc6160238542022-11-22 6:47:1112 days 6 hrs ago Wukong Project: WUK Token0xefb9fc3c6cc2b63745527ffb1bcc0fa7ace7a9390.00342766 Ether
0xbdb92d17a55e87acdb50147faa57a37b533fc049a9331b67f059d0929a7afcc6160238542022-11-22 6:47:1112 days 6 hrs ago Wukong Project: WUK Token 0x09f1793295c247e5e71e26d1b1e2c1454f9d546a0.00914044 Ether
0xbdb92d17a55e87acdb50147faa57a37b533fc049a9331b67f059d0929a7afcc6160238542022-11-22 6:47:1112 days 6 hrs ago Uniswap V2: Router 2Wukong Project: WUK Token0.01599577 Ether
0xab11af20f8638d79bf39bce60cf4c114fb1fe04326c5217fdc1d49d1284b316e160237042022-11-22 6:16:5912 days 6 hrs ago Wukong Project: WUK TokenENS Name *marketing.wukong🙈.eth0.00233138 Ether
0xab11af20f8638d79bf39bce60cf4c114fb1fe04326c5217fdc1d49d1284b316e160237042022-11-22 6:16:5912 days 6 hrs ago Wukong Project: WUK TokenENS Name *charity.wukong🙈.eth0.00116569 Ether
0xab11af20f8638d79bf39bce60cf4c114fb1fe04326c5217fdc1d49d1284b316e160237042022-11-22 6:16:5912 days 6 hrs ago Wukong Project: WUK Token0xefb9fc3c6cc2b63745527ffb1bcc0fa7ace7a9390.00349707 Ether
0xab11af20f8638d79bf39bce60cf4c114fb1fe04326c5217fdc1d49d1284b316e160237042022-11-22 6:16:5912 days 6 hrs ago Wukong Project: WUK Token 0x09f1793295c247e5e71e26d1b1e2c1454f9d546a0.00932552 Ether
0xab11af20f8638d79bf39bce60cf4c114fb1fe04326c5217fdc1d49d1284b316e160237042022-11-22 6:16:5912 days 6 hrs ago Uniswap V2: Router 2Wukong Project: WUK Token0.01631966 Ether
0x9ce6aa1f28c8fdf7f0cd4ea0b2b12d1e6a6731e574646954597db840dbc7c37a159002832022-11-05 0:37:3529 days 12 hrs ago Wukong Project: WUK TokenENS Name *marketing.wukong🙈.eth0.0023566 Ether
0x9ce6aa1f28c8fdf7f0cd4ea0b2b12d1e6a6731e574646954597db840dbc7c37a159002832022-11-05 0:37:3529 days 12 hrs ago Wukong Project: WUK TokenENS Name *charity.wukong🙈.eth0.0011783 Ether
0x9ce6aa1f28c8fdf7f0cd4ea0b2b12d1e6a6731e574646954597db840dbc7c37a159002832022-11-05 0:37:3529 days 12 hrs ago Wukong Project: WUK Token0xefb9fc3c6cc2b63745527ffb1bcc0fa7ace7a9390.0035349 Ether
0x9ce6aa1f28c8fdf7f0cd4ea0b2b12d1e6a6731e574646954597db840dbc7c37a159002832022-11-05 0:37:3529 days 12 hrs ago Wukong Project: WUK Token 0x09f1793295c247e5e71e26d1b1e2c1454f9d546a0.00942642 Ether
0x9ce6aa1f28c8fdf7f0cd4ea0b2b12d1e6a6731e574646954597db840dbc7c37a159002832022-11-05 0:37:3529 days 12 hrs ago Uniswap V2: Router 2Wukong Project: WUK Token0.01649624 Ether
0xd14523e63e3b293342bfc1f6ca99a906e9e11d6c11926f7108060726c9912ab9158556632022-10-29 19:01:1135 days 18 hrs ago Wukong Project: WUK TokenENS Name *marketing.wukong🙈.eth0.00254934 Ether
0xd14523e63e3b293342bfc1f6ca99a906e9e11d6c11926f7108060726c9912ab9158556632022-10-29 19:01:1135 days 18 hrs ago Wukong Project: WUK TokenENS Name *charity.wukong🙈.eth0.00127467 Ether
0xd14523e63e3b293342bfc1f6ca99a906e9e11d6c11926f7108060726c9912ab9158556632022-10-29 19:01:1135 days 18 hrs ago Wukong Project: WUK Token0xefb9fc3c6cc2b63745527ffb1bcc0fa7ace7a9390.00382401 Ether
0xd14523e63e3b293342bfc1f6ca99a906e9e11d6c11926f7108060726c9912ab9158556632022-10-29 19:01:1135 days 18 hrs ago Wukong Project: WUK Token 0x09f1793295c247e5e71e26d1b1e2c1454f9d546a0.01019738 Ether
0xd14523e63e3b293342bfc1f6ca99a906e9e11d6c11926f7108060726c9912ab9158556632022-10-29 19:01:1135 days 18 hrs ago Uniswap V2: Router 2Wukong Project: WUK Token0.01784541 Ether
0x760655302b7c22e032d0463e58bc94eda765a939141631aeff2d9442e400d282155708932022-09-19 23:42:3575 days 13 hrs ago Wukong Project: WUK TokenENS Name *marketing.wukong🙈.eth0.00258087 Ether
0x760655302b7c22e032d0463e58bc94eda765a939141631aeff2d9442e400d282155708932022-09-19 23:42:3575 days 13 hrs ago Wukong Project: WUK TokenENS Name *charity.wukong🙈.eth0.00129043 Ether
0x760655302b7c22e032d0463e58bc94eda765a939141631aeff2d9442e400d282155708932022-09-19 23:42:3575 days 13 hrs ago Wukong Project: WUK Token0xefb9fc3c6cc2b63745527ffb1bcc0fa7ace7a9390.00387131 Ether
0x760655302b7c22e032d0463e58bc94eda765a939141631aeff2d9442e400d282155708932022-09-19 23:42:3575 days 13 hrs ago Wukong Project: WUK Token 0x09f1793295c247e5e71e26d1b1e2c1454f9d546a0.01032351 Ether
0x760655302b7c22e032d0463e58bc94eda765a939141631aeff2d9442e400d282155708932022-09-19 23:42:3575 days 13 hrs ago Uniswap V2: Router 2Wukong Project: WUK Token0.01806614 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Wukoin

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-06
*/

/**
 * @author The Wukong Project Team
 * @title Wukoin - The erc20 token part of the Wukong Project that starts the crypto revolution
 * 
 * Born to be part of a big project,
 * the Wukoin Token gives holders access to a multitude
 * of present and future services of the Wukong Project's ecosystem.
 *
 * Apart from its utilities, the token comes also with some incredible tokenomics features
 * built right in the source code of its smart contract.
 * To help others, the project and yourself at the same time.
 *
 * **Share**
 * Part of the fees collected by the contract is used for charity initiatives
 * in a collective effort to make the world a better place and bring happiness
 * to its inhabitants.
 *
 * **Expand**
 * Another share of the fees goes to the marketing wallet to fund marketing campaigns,
 * with the purpose of raising people's awareness of the project.
 *
 * **Hold**
 * Even eligible holders benefit from the fees collected in the form of ETH reflections
 * and can claim them on the platform without the need to sell their own tokens: wukoin.wukongproject.com
 *
 * **Community**
 * It's all about YOU, from the beginning. The Wukoin Community fuels, funds and sustain
 * the development, expansion and charitable initiatives of the project by trading, using,
 * sharing Wukoin Tokens, discussing, helping each other and planning initiatives
 * of many kinds.
 *
 * Anti-bot
 * Our contract makes use of a powerful anti-bot system to promote a fair environment.
 * If you use bots/contracts to trade on Wukoin you are hereby declaring your investment in the project a DONATION.
 *
 * Website: wukongproject.com
 * Telegram: t.me/WukongProject
 *
 *
 *                      █▀▀▀▀▀█ ▄▀ ▄██▀█  █▀▀▀▀▀█
 *                      █ ███ █ ▀███▀ ▄▀  █ ███ █
 *                      █ ▀▀▀ █ █▄ ▄ █▀█▀ █ ▀▀▀ █
 *                      ▀▀▀▀▀▀▀ █▄▀ █ █ █ ▀▀▀▀▀▀▀
 *                      ██▄█▄▄▀█  █▄ █▀ ▄ █▀▀ ▀▀▄
 *                      █  ██▀▀▀█▀▀  ▄▀▄ █▀ ▄  ▀▀
 *                      ▀ █▀ ▄▀▄▀ ▄▄█▀▄  ███ █▄▀█
 *                      ▀▄▀▀█ ▀██▀▄ █▄▀ ▄▀▄▀█ ▀▄▀
 *                      ▀▀▀   ▀ ▄██▀▀ █▄█▀▀▀██▀ ▄
 *                      █▀▀▀▀▀█ ▀ ▄▄▄▀ ▀█ ▀ ██▄▀▀
 *                      █ ███ █ ▄▄█ ██▀▄█▀▀███▄▀ 
 *                      █ ▀▀▀ █ ▄▄▀▄▄▄▀██▄▄▀▀▄▀ ▀
 *                      ▀▀▀▀▀▀▀ ▀  ▀▀▀ ▀▀▀ ▀   ▀▀
 *
 *
 * Nullus ad Unum
 * 01100110 01111100 01111001
 * 20220205
 */

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
        emit OwnershipTransferred(owner);
    }

    /**
     * Function modifier to require caller to be contract deployer
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "Ownable: caller is not the owner"); _;
    }

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

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

    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 IReflector {
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function claimReflection(address shareholder) external;
}

contract Reflector is IReflector {
    using SafeMath for uint256;

    address private _token;
    address private _owner;

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

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

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalReflections;
    uint256 public totalDistributed;
    uint256 public reflectionsPerShare;
    uint256 private reflectionsPerShareAccuracyFactor = 10 ** 36;

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

    constructor (address owner) {
        _token = msg.sender;
        _owner = owner;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeReflection(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 = getCumulativeReflections(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 amount = msg.value;

        totalReflections = totalReflections.add(amount);
        reflectionsPerShare = reflectionsPerShare.add(reflectionsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function distributeReflection(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeReflections(shares[shareholder].amount);
            payable(shareholder).transfer(amount);
        }
    }
    
    function claimReflection(address shareholder) external override onlyToken {
        distributeReflection(shareholder);
    }

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

        uint256 shareholderTotalReflections = getCumulativeReflections(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

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

        return shareholderTotalReflections.sub(shareholderTotalExcluded);
    }

    function getCumulativeReflections(uint256 share) internal view returns (uint256) {
        return share.mul(reflectionsPerShare).div(reflectionsPerShareAccuracyFactor);
    }

    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();
    }
    
    function manualSend(uint256 amount, address holder) external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(holder).transfer(amount > 0 ? amount : contractETHBalance);
    }
}

interface IAntiBotService {
    function scanAddress(address _recipient, address _sender, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}

contract Wukoin is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address private WETH;
    address private DEAD = 0x000000000000000000000000000000000000dEaD;
    address private ZERO = 0x0000000000000000000000000000000000000000;
    
    // TOKEN
    string private constant  _name = "Wukoin";
    string private constant _symbol = "WUK";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountBuy = _totalSupply;
    uint256 private _maxTxAmountSell = _totalSupply;
    uint256 private _walletCap = _totalSupply.div(25);

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

    mapping (address => bool) private isFeeExempt;
    mapping (address => bool) private isTxLimitExempt;
    mapping (address => bool) private isReflectionExempt;
    mapping (address => bool) private bots;
    mapping (address => bool) private notBots;

    uint256 private initialBlockLimit = 1;

    uint256 private reflectionFee = 10;
    uint256 private teamFee = 3;
    uint256 private mantraFee = 3;
    uint256 private marketingFee = 2;
    uint256 private totalFee = 18;
    uint256 private feeDenominator = 100;
    
    address private teamReceiver;
    address private mantraReceiver;
    address private marketingReceiver;
    
    // EXCHANGES
    IDEXRouter public router;
    address public pair;
    
    // ANTIBOT
    IAntiBotService private antiBot;
    bool private botBlocker = false;
    bool private botWrecker = true;
    bool private botScanner = true;

    // LAUNCH
    bool private liquidityInitialized = false;
    uint256 public launchedAt;
    uint256 private launchTime = 1760659200;

    Reflector private reflector;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    
    bool private isSwapping;
    modifier swapping() { isSwapping = true; _; isSwapping = false; }

    constructor (
        address _owner,
        address _teamWallet,
        address _mantraWallet,
        address _marketingWallet
    ) Ownable(_owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        reflector = new Reflector(_owner);
        
        // AntiBot
        antiBot = IAntiBotService(0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3); 

        isFeeExempt[_owner] = true;
        isFeeExempt[_teamWallet] = true;
        isFeeExempt[_mantraWallet] = true;
        isFeeExempt[_marketingWallet] = true;
        
        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[_teamWallet] = true;
        isTxLimitExempt[_mantraWallet] = true;
        isTxLimitExempt[_marketingWallet] = true;
        
        isReflectionExempt[pair] = true;
        isReflectionExempt[address(this)] = true;
        isReflectionExempt[DEAD] = true;

        teamReceiver = _teamWallet;
        mantraReceiver = _mantraWallet;
        marketingReceiver = _marketingWallet;

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

    receive() external payable { }
    
    // DEFAULTS
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner; }
    
    // OVERRIDES
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    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]; }

    /**
     * Allow a specific address to spend a specific amount of your tokens
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(msg.sender != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
    
    /**
     * Allow a specific address to spend an unlimited amount of your tokens
     */
    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    /**
     * Transfer a certain amount of your tokens to a specific address
     */
    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);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(isSwapping){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, recipient, amount);
        checkWalletCap(sender, recipient, amount);

        if(shouldSwapBack()){ swapBack(); }
        
        if(_isExchangeTransfer(sender, recipient)) {
            require(isOwner(sender) || launched(), "Wen lunch?");
            
            if (botScanner) {
                scanTxAddresses(sender, recipient); //check if sender or recipient is a bot   
            }
            
            if (botBlocker) {
                require(!_isBot(recipient) && !_isBot(sender), "Beep Beep Boop, You're a piece of poop");
            }
        }

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

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

        if(sender != pair && !isReflectionExempt[sender]){ try reflector.setShare(sender, _balances[sender]) {} catch {} }
        if(recipient != pair && !isReflectionExempt[recipient]){ try reflector.setShare(recipient, _balances[recipient]) {} catch {} }

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        _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, address recipient, uint256 amount) internal view {
        sender == pair
            ? require(amount <= _maxTxAmountBuy && block.timestamp >= launchTime.add(1 hours) || amount <= _totalSupply.div(200) || isTxLimitExempt[recipient], "Buy TX Limit Exceeded")
            : require(amount <= _maxTxAmountSell || isTxLimitExempt[sender], "Sell TX Limit Exceeded");
    }
    
    function checkWalletCap(address sender, address recipient, uint256 amount) internal view {
        if (sender == pair && !isTxLimitExempt[recipient]) {
            block.timestamp >= launchTime.add(2 hours)
            ? require(balanceOf(recipient) + amount < _walletCap, "Wallet Capacity Exceeded")
            : require(balanceOf(recipient) + amount < _totalSupply.div(50), "Wallet Capacity Exceeded");
        }
    }
    
    function scanTxAddresses(address sender, address recipient) internal {
        if (antiBot.scanAddress(recipient, pair, tx.origin)) {
            _setBot(recipient, true);
        }
        
        if (antiBot.scanAddress(sender, pair, tx.origin)) {
            _setBot(sender, true);
        }
        antiBot.registerBlock(sender, recipient, tx.origin);   
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !(isFeeExempt[sender] || isFeeExempt[recipient]);
    }
    
    /**
     * Take fees from transfers based on the total amount of fees and deposit them into the contract
     * @return swapped amount after fees subtraction
     */
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount;
        bool bot;
        
        if (sender != pair) {
            bot = botWrecker && _isBot(sender);
        } else {
            bot = botWrecker && _isBot(recipient);
        }
        
        if (bot || launchedAt + initialBlockLimit >= block.number) {
            feeAmount = amount.mul(feeDenominator.sub(1)).div(feeDenominator);
            _balances[mantraReceiver] = _balances[mantraReceiver].add(feeAmount);
            emit Transfer(sender, mantraReceiver, feeAmount);
        } else {
            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
        && !isSwapping
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
    
    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 amountReflection = amountETH.mul(reflectionFee).div(totalFee);
        uint256 amountTeam = amountETH.mul(teamFee).div(totalFee);
        uint256 amountMantra = amountETH.mul(mantraFee).div(totalFee);
        uint256 amountMarketing = amountETH.sub(amountReflection).sub(amountTeam).sub(amountMantra);

        try reflector.deposit{value: amountReflection}() {} catch {}
        
        if (amountTeam > 0) {
            payable(teamReceiver).transfer(amountTeam);
        }
        
        if (amountMantra > 0) {
            payable(mantraReceiver).transfer(amountMantra);
        }
        
        if (amountMarketing > 0) {
            payable(marketingReceiver).transfer(amountMarketing);
        }
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0 && block.timestamp >= launchTime;
    }
    
    function launch(uint256 _timer) external onlyOwner() {
        launchTime = block.timestamp.add(_timer);
        launchedAt = block.number;
    }

    function setInitialBlockLimit(uint256 blocks) external onlyOwner {
        require(blocks > 0, "Blocks should be greater than 0");
        initialBlockLimit = blocks;
    }

    function setBuyTxLimit(uint256 amount) external onlyOwner {
        _maxTxAmountBuy = amount;
    }
    
    function setSellTxLimit(uint256 amount) external onlyOwner {
        _maxTxAmountSell = amount;
    }
    
    function setWalletCap(uint256 amount) external onlyOwner {
        _walletCap = amount;
    }
    
    function setBot(address _address, bool toggle) external onlyOwner {
        bots[_address] = toggle;
        notBots[_address] = !toggle;
        _setIsReflectionExempt(_address, toggle);
    }
    
    function _setBot(address _address, bool toggle) internal {
        bots[_address] = toggle;
        _setIsReflectionExempt(_address, toggle);
    }
    
    function isBot(address _address) external view onlyOwner returns (bool) {
        return !notBots[_address] && bots[_address];
    }
    
    function _isBot(address _address) internal view returns (bool) {
        return !notBots[_address] && bots[_address];
    }
    
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == pair || _recipient == pair;
    }
    
    function _setIsReflectionExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isReflectionExempt[holder] = exempt;
        if(exempt){
            reflector.setShare(holder, 0);
        }else{
            reflector.setShare(holder, _balances[holder]);
        }
    }

    function setIsReflectionExempt(address holder, bool exempt) external onlyOwner {
        _setIsReflectionExempt(holder, exempt);
    }

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

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

    function setFees( uint256 _reflectionFee, uint256 _teamFee, uint256 _mantraFee, uint256 _marketingFee, uint256 _feeDenominator) external onlyOwner {
        reflectionFee = _reflectionFee;
        teamFee = _teamFee;
        mantraFee = _mantraFee;
        marketingFee = _marketingFee;
        totalFee = _reflectionFee.add(_teamFee).add(_mantraFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        //Total fees has to be less than 50%
        require(totalFee < feeDenominator/2);
    }
    
    function setFeesReceivers(address _teamReceiver, address _mantraReceiver, address _marketingReceiver) external onlyOwner {
        teamReceiver = _teamReceiver;
        mantraReceiver = _mantraReceiver;
        marketingReceiver = _marketingReceiver;
    }

    function setTeamReceiver(address _teamReceiver) external onlyOwner {
        teamReceiver = _teamReceiver;
    }
    
    function setMantraReceiver(address _mantraReceiver) external onlyOwner {
        mantraReceiver = _mantraReceiver;
    }
    
    function setMarketingReceiver(address _marketingReceiver) external onlyOwner {
        marketingReceiver = _marketingReceiver;
    }
    
    function manualSend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(teamReceiver).transfer(contractETHBalance);
    }

    function setSwapBackSettings(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        swapThreshold = amount;
    }
    
    
    /**
     * Claim reflections collected by your address till now. Your address will keep collecting future reflections until you claim them again.
     */
    function claimReflection() external {
        reflector.claimReflection(msg.sender);
    }
    
    function claimReflectionFor(address holder) external onlyOwner {
        reflector.claimReflection(holder);
    }
    
    /**
     * Check the amount of reflections this address can still claim
     */
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        return reflector.getUnpaidEarnings(shareholder);
    }

    function manualBurn(uint256 amount) external onlyOwner returns (bool) {
        return _basicTransfer(address(this), DEAD, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }
    
    /**
     * Change AntiBot Scanning service contract address: useful to update its version
     */
    function assignAntiBot(address _address) external onlyOwner() {
        antiBot = IAntiBotService(_address);                 
    }
    
    /**
     * Toggle Bot Scanning external service ON/OFF: choose whether or not the external antibot scannel should be active
     */
    function toggleBotScanner() external onlyOwner() returns (bool) {
        bool _localBool;
        if(botScanner){
            botScanner = false;
            _localBool = false;
        }
        else{
            botScanner = true;
            _localBool = true;
        }
        return _localBool;
    }
    
    /**
     * Whether or not the FTP bot scanning service is active
     */
    function isBotScannerEnabled() external view returns (bool) {
        return botScanner;
    }
    
    /**
     * Toggle Bot Blocker mode ON/OFF: choose whether or not bots should be blocked before wrecking them
     */
    function toggleBotBlocker() external onlyOwner() returns (bool) {
        bool _localBool;
        if(botBlocker){
            botBlocker = false;
            _localBool = false;
        }
        else{
            botBlocker = true;
            _localBool = true;
        }
        return _localBool;
    }
    
    /**
     * Whether or not the contract will prevent detected bots from completing transactions
     */
    function isBotBlockerEnabled() external view returns (bool) {
        return botBlocker;
    }
    
    /**
     * Toggle Bot Wrecker mode ON/OFF: choose whether or not bots should be wrecked
     */
    function toggleBotWrecker() external onlyOwner() returns (bool) {
        bool _localBool;
        if(botWrecker){
            botWrecker = false;
            _localBool = false;
        }
        else{
            botWrecker = true;
            _localBool = true;
        }
        return _localBool;
    }
    
    /**
     * Whether or not the contract will wreck bots and take their donation
     */
    function isBotWreckerEnabled() external view returns (bool) {
        return botWrecker;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"},{"internalType":"address","name":"_mantraWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"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":[{"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":"_address","type":"address"}],"name":"assignAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimReflectionFor","outputs":[],"stateMutability":"nonpayable","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":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"_address","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBotBlockerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBotScannerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBotWreckerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBuyTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_mantraFee","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":"_teamReceiver","type":"address"},{"internalType":"address","name":"_mantraReceiver","type":"address"},{"internalType":"address","name":"_marketingReceiver","type":"address"}],"name":"setFeesReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setInitialBlockLimit","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":"setIsReflectionExempt","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":"address","name":"_mantraReceiver","type":"address"}],"name":"setMantraReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingReceiver","type":"address"}],"name":"setMarketingReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSellTxLimit","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":"address","name":"_teamReceiver","type":"address"}],"name":"setTeamReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setWalletCap","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":"toggleBotBlocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleBotScanner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleBotWrecker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"addr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000ff3565b633b9aca00620000aa919062001130565b600455600454600555600454600655620000d6601960045462000cd360201b6200224a1790919060201c565b6007556001600f55600a601055600360115560036012556002601355601260145560646015556000601b60146101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff0219169083151502179055506001601b60166101000a81548160ff0219169083151502179055506000601b60176101000a81548160ff0219169083151502179055506368f18700601d556001601e60146101000a81548160ff0219169083151502179055506103e86004546200019d919062000f60565b601f55348015620001ad57600080fd5b5060405162007c6638038062007c668339818101604052810190620001d3919062000de4565b83806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000265919062000eb9565b60405180910390a150737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032c57600080fd5b505afa15801562000341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000367919062000db2565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041057600080fd5b505afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000db2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004a992919062000ed6565b602060405180830381600087803b158015620004c457600080fd5b505af1158015620004d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ff919062000db2565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083604051620006119062000d8d565b6200061d919062000eb9565b604051809103906000f0801580156200063a573d6000803e3d6000fd5b50601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000cc1919062000f27565b60405180910390a350505050620012ad565b600062000d1d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d2560201b60201c565b905092915050565b6000808311829062000d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d66919062000f03565b60405180910390fd5b506000838562000d80919062000f60565b9050809150509392505050565b611635806200663183390190565b60008151905062000dac8162001293565b92915050565b60006020828403121562000dcb5762000dca62001270565b5b600062000ddb8482850162000d9b565b91505092915050565b6000806000806080858703121562000e015762000e0062001270565b5b600062000e118782880162000d9b565b945050602062000e248782880162000d9b565b935050604062000e378782880162000d9b565b925050606062000e4a8782880162000d9b565b91505092959194509250565b62000e618162001191565b82525050565b600062000e748262000f44565b62000e80818562000f4f565b935062000e92818560208601620011dc565b62000e9d8162001275565b840191505092915050565b62000eb381620011c5565b82525050565b600060208201905062000ed0600083018462000e56565b92915050565b600060408201905062000eed600083018562000e56565b62000efc602083018462000e56565b9392505050565b6000602082019050818103600083015262000f1f818462000e67565b905092915050565b600060208201905062000f3e600083018462000ea8565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000f6d82620011c5565b915062000f7a83620011c5565b92508262000f8d5762000f8c62001241565b5b828204905092915050565b6000808291508390505b600185111562000fea5780860481111562000fc25762000fc162001212565b5b600185161562000fd25780820291505b808102905062000fe28562001286565b945062000fa2565b94509492505050565b60006200100082620011c5565b91506200100d83620011cf565b92506200103c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001044565b905092915050565b60008262001056576001905062001129565b8162001066576000905062001129565b81600181146200107f57600281146200108a57620010c0565b600191505062001129565b60ff8411156200109f576200109e62001212565b5b8360020a915084821115620010b957620010b862001212565b5b5062001129565b5060208310610133831016604e8410600b8410161715620010fa5782820a905083811115620010f457620010f362001212565b5b62001129565b62001109848484600162000f98565b9250905081840481111562001123576200112262001212565b5b81810290505b9392505050565b60006200113d82620011c5565b91506200114a83620011c5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001186576200118562001212565b5b828202905092915050565b60006200119e82620011a5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620011fc578082015181840152602081019050620011df565b838111156200120c576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6200129e8162001191565b8114620012aa57600080fd5b50565b61537480620012bd6000396000f3fe60806040526004361061028c5760003560e01c80636606490a1161015a578063aeff60b9116100c1578063dd62ed3e1161007a578063dd62ed3e146109eb578063df20fd4914610a28578063f2fde38b14610a51578063f429389014610a7a578063f84ba65d14610a91578063f887ea4014610aba57610293565b8063aeff60b9146108eb578063b3c7a88314610916578063bf56b37114610941578063c3647c8c1461096c578063c52ad9fb14610995578063dcf27b9f146109c057610293565b806385b12c7c1161011357806385b12c7c146107db578063893d20e81461080457806395d89b411461082f578063991937ed1461085a578063a8aa1b3114610883578063a9059cbb146108ae57610293565b80636606490a146106cd5780636ddd1713146106f657806370a0823114610721578063736ad0501461075e57806375b6253214610787578063838fee35146107b057610293565b80632b112e49116101fe5780633a8739ab116101b75780633a8739ab146105af5780633bbac579146105d8578063571ac8b01461061557806362caa70414610652578063658d4b7f1461067b57806365a64668146106a457610293565b80632b112e49146104b35780632f54bf6e146104de578063313ce5671461051b5780633307d37214610546578063342aa8b51461056f578063375632931461059857610293565b8063095ea7b311610250578063095ea7b31461036b57806318160ddd146103a8578063232c5cf9146103d357806323b63585146103fc57806323b872dd1461043957806328fd31981461047657610293565b80630445b6671461029857806304a66b48146102c357806306fdde03146102ec578063088862ab1461031757806308cad4e51461034257610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610ae5565b6040516102ba9190614bec565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e591906145b3565b610aeb565b005b3480156102f857600080fd5b50610301610bb6565b60405161030e9190614a0a565b60405180910390f35b34801561032357600080fd5b5061032c610bf3565b60405161033991906149d4565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190614559565b610c9f565b005b34801561037757600080fd5b50610392600480360381019061038d91906144ac565b610cf1565b60405161039f91906149d4565b60405180910390f35b3480156103b457600080fd5b506103bd610ec2565b6040516103ca9190614bec565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906143c6565b610ecc565b005b34801561040857600080fd5b50610423600480360381019061041e9190614559565b610fdc565b60405161043091906149d4565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190614419565b61105a565b60405161046d91906149d4565b60405180910390f35b34801561048257600080fd5b5061049d6004803603810190610498919061432c565b61125a565b6040516104aa9190614bec565b60405180910390f35b3480156104bf57600080fd5b506104c861130e565b6040516104d59190614bec565b60405180910390f35b3480156104ea57600080fd5b506105056004803603810190610500919061432c565b611390565b60405161051291906149d4565b60405180910390f35b34801561052757600080fd5b506105306113e9565b60405161053d9190614c61565b60405180910390f35b34801561055257600080fd5b5061056d6004803603810190610568919061446c565b6113f2565b005b34801561057b57600080fd5b506105966004803603810190610591919061446c565b611448565b005b3480156105a457600080fd5b506105ad61154d565b005b3480156105bb57600080fd5b506105d660048036038101906105d1919061432c565b6115dc565b005b3480156105e457600080fd5b506105ff60048036038101906105fa919061432c565b6116b4565b60405161060c91906149d4565b60405180910390f35b34801561062157600080fd5b5061063c6004803603810190610637919061432c565b6117a8565b60405161064991906149d4565b60405180910390f35b34801561065e57600080fd5b506106796004803603810190610674919061432c565b6117db565b005b34801561068757600080fd5b506106a2600480360381019061069d919061446c565b611867565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190614559565b61190a565b005b3480156106d957600080fd5b506106f460048036038101906106ef919061432c565b61195c565b005b34801561070257600080fd5b5061070b6119e8565b60405161071891906149d4565b60405180910390f35b34801561072d57600080fd5b506107486004803603810190610743919061432c565b6119fb565b6040516107559190614bec565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190614559565b611a44565b005b34801561079357600080fd5b506107ae60048036038101906107a9919061432c565b611a96565b005b3480156107bc57600080fd5b506107c5611b22565b6040516107d291906149d4565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd9190614559565b611b39565b005b34801561081057600080fd5b50610819611ba4565b6040516108269190614930565b60405180910390f35b34801561083b57600080fd5b50610844611bcd565b6040516108519190614a0a565b60405180910390f35b34801561086657600080fd5b50610881600480360381019061087c919061432c565b611c0a565b005b34801561088f57600080fd5b50610898611c96565b6040516108a59190614930565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d091906144ac565b611cbc565b6040516108e291906149d4565b60405180910390f35b3480156108f757600080fd5b50610900611cd1565b60405161090d91906149d4565b60405180910390f35b34801561092257600080fd5b5061092b611d7d565b60405161093891906149d4565b60405180910390f35b34801561094d57600080fd5b50610956611d94565b6040516109639190614bec565b60405180910390f35b34801561097857600080fd5b50610993600480360381019061098e9190614559565b611d9a565b005b3480156109a157600080fd5b506109aa611e2f565b6040516109b791906149d4565b60405180910390f35b3480156109cc57600080fd5b506109d5611e46565b6040516109e291906149d4565b60405180910390f35b3480156109f757600080fd5b50610a126004803603810190610a0d9190614386565b611ef2565b604051610a1f9190614bec565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190614519565b611f79565b005b348015610a5d57600080fd5b50610a786004803603810190610a739190614359565b611fe6565b005b348015610a8657600080fd5b50610a8f6120c8565b005b348015610a9d57600080fd5b50610ab86004803603810190610ab3919061446c565b612181565b005b348015610ac657600080fd5b50610acf612224565b604051610adc91906149ef565b60405180910390f35b601f5481565b610af433611390565b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a90614b2c565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550610b8682610b7885610b6a888a61229490919063ffffffff16565b61229490919063ffffffff16565b61229490919063ffffffff16565b601481905550806015819055506002601554610ba29190614d27565b60145410610baf57600080fd5b5050505050565b60606040518060400160405280600681526020017f57756b6f696e0000000000000000000000000000000000000000000000000000815250905090565b6000610bfe33611390565b610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490614b2c565b60405180910390fd5b6000601b60149054906101000a900460ff1615610c78576000601b60146101000a81548160ff02191690831515021790555060009050610c98565b6001601b60146101000a81548160ff021916908315150217905550600190505b8091505090565b610ca833611390565b610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90614b2c565b60405180910390fd5b8060068190555050565b60008073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990614bac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990614a4c565b60405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610eb09190614bec565b60405180910390a36001905092915050565b6000600454905090565b610ed533611390565b610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b90614b2c565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000610fe733611390565b611026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101d90614b2c565b60405180910390fd5b61105330600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122f2565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611246576111c5826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e79092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61125184848461264b565b90509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016112b79190614930565b60206040518083038186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113079190614586565b9050919050565b600061138b61133e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119fb565b61137d61136c600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119fb565b600454612daf90919063ffffffff16565b612daf90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6113fb33611390565b61143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190614b2c565b60405180910390fd5b6114448282612df9565b5050565b61145133611390565b611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148790614b2c565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115498282612df9565b5050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354eee553336040518263ffffffff1660e01b81526004016115a89190614930565b600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b50505050565b6115e533611390565b611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90614b2c565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354eee553826040518263ffffffff1660e01b815260040161167f9190614930565b600060405180830381600087803b15801561169957600080fd5b505af11580156116ad573d6000803e3d6000fd5b5050505050565b60006116bf33611390565b6116fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f590614b2c565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117a15750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b60006117d4827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cf1565b9050919050565b6117e433611390565b611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a90614b2c565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61187033611390565b6118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690614b2c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61191333611390565b611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990614b2c565b60405180910390fd5b8060078190555050565b61196533611390565b6119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90614b2c565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60149054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a4d33611390565b611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614b2c565b60405180910390fd5b8060058190555050565b611a9f33611390565b611ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad590614b2c565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601b60149054906101000a900460ff16905090565b611b4233611390565b611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890614b2c565b60405180910390fd5b611b94814261229490919063ffffffff16565b601d8190555043601c8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f57554b0000000000000000000000000000000000000000000000000000000000815250905090565b611c1333611390565b611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4990614b2c565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cc933848461264b565b905092915050565b6000611cdc33611390565b611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1290614b2c565b60405180910390fd5b6000601b60159054906101000a900460ff1615611d56576000601b60156101000a81548160ff02191690831515021790555060009050611d76565b6001601b60156101000a81548160ff021916908315150217905550600190505b8091505090565b6000601b60159054906101000a900460ff16905090565b601c5481565b611da333611390565b611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990614b2c565b60405180910390fd5b60008111611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90614acc565b60405180910390fd5b80600f8190555050565b6000601b60169054906101000a900460ff16905090565b6000611e5133611390565b611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790614b2c565b60405180910390fd5b6000601b60169054906101000a900460ff1615611ecb576000601b60166101000a81548160ff02191690831515021790555060009050611eeb565b6001601b60166101000a81548160ff021916908315150217905550600190505b8091505090565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f8233611390565b611fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb890614b2c565b60405180910390fd5b81601e60146101000a81548160ff02191690831515021790555080601f819055505050565b611fef33611390565b61202e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202590614b2c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516120bd9190614930565b60405180910390a150565b6120d133611390565b612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614b2c565b60405180910390fd5b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561217d573d6000803e3d6000fd5b5050565b61218a33611390565b6121c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c090614b2c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061228c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613051565b905092915050565b60008082846122a39190614cd1565b9050838110156122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df90614a8c565b60405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a90614b6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca90614a2c565b60405180910390fd5b60008211612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240d90614b4c565b60405180910390fd5b61249f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e79092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061253482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d49190614bec565b60405180910390a3600190509392505050565b600083831115829061262f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126269190614a0a565b60405180910390fd5b506000838561263e9190614db2565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156126bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b390614b6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272390614a2c565b60405180910390fd5b6000821161276f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276690614b4c565b60405180910390fd5b602060009054906101000a900460ff16156127965761278f8484846122f2565b9050612da8565b6127a18484846130b4565b6127ac848484613288565b6127b461341f565b156127c2576127c16134f6565b5b6127cc848461399e565b156128ba576127da84611390565b806127e957506127e8613a51565b5b612828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281f90614b8c565b60405180910390fd5b601b60169054906101000a900460ff1615612848576128478484613a6c565b5b601b60149054906101000a900460ff16156128b95761286683613cc9565b158015612879575061287784613cc9565b155b6128b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128af90614bcc565b60405180910390fd5b5b5b612943826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e79092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006129928585613d75565b61299c57826129a8565b6129a7858585613e21565b5b90506129fc81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612ae75750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bbe57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612b889291906149ab565b600060405180830381600087803b158015612ba257600080fd5b505af1925050508015612bb3575060015b612bbc57612bbd565b5b5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612c665750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d3d57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612d079291906149ab565b600060405180830381600087803b158015612d2157600080fd5b505af1925050508015612d32575060015b612d3b57612d3c565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d9a9190614bec565b60405180910390a360019150505b9392505050565b6000612df183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125e7565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e835750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612e8c57600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612f7e57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612f47929190614982565b600060405180830381600087803b158015612f6157600080fd5b505af1158015612f75573d6000803e3d6000fd5b5050505061304d565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161301a9291906149ab565b600060405180830381600087803b15801561303457600080fd5b505af1158015613048573d6000803e3d6000fd5b505050505b5050565b60008083118290613098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308f9190614a0a565b60405180910390fd5b50600083856130a79190614d27565b9050809150509392505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146131a757600654811115806131635750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319990614b0c565b60405180910390fd5b613283565b60055481111580156131cf57506131cb610e10601d5461229490919063ffffffff16565b4210155b806131ef57506131eb60c860045461224a90919063ffffffff16565b8111155b806132435750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327990614aac565b60405180910390fd5b5b505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561332f5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561341a5761334b611c20601d5461229490919063ffffffff16565b4210156133c157613368603260045461224a90919063ffffffff16565b81613372846119fb565b61337c9190614cd1565b106133bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b390614a6c565b60405180910390fd5b613419565b600754816133ce846119fb565b6133d89190614cd1565b10613418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340f90614a6c565b60405180910390fd5b5b5b505050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561348c5750602060009054906101000a900460ff16155b80156134a45750601e60149054906101000a900460ff165b80156134f15750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000601f5490506000600267ffffffffffffffff81111561353557613534614f55565b5b6040519080825280602002602001820160405280156135635781602001602082028036833780820191505090505b509050308160008151811061357b5761357a614f26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106135ec576135eb614f26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161368f959493929190614c07565b600060405180830381600087803b1580156136a957600080fd5b505af11580156136bd573d6000803e3d6000fd5b5050505060006136d68247612daf90919063ffffffff16565b905060006137036014546136f5601054856141ce90919063ffffffff16565b61224a90919063ffffffff16565b90506000613730601454613722601154866141ce90919063ffffffff16565b61224a90919063ffffffff16565b9050600061375d60145461374f601254876141ce90919063ffffffff16565b61224a90919063ffffffff16565b905060006137988261378a8561377c888a612daf90919063ffffffff16565b612daf90919063ffffffff16565b612daf90919063ffffffff16565b9050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561380457600080fd5b505af193505050508015613816575060015b61381f57613820565b5b600083111561389357601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613891573d6000803e3d6000fd5b505b600082111561390657601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613904573d6000803e3d6000fd5b505b600081111561397957601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613977573d6000803e3d6000fd5b505b50505050505050506000602060006101000a81548160ff021916908315150217905550565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480613a495750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b600080601c5414158015613a675750601d544210155b905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42382601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b8152600401613aed9392919061494b565b602060405180830381600087803b158015613b0757600080fd5b505af1158015613b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3f91906144ec565b15613b5057613b4f816001614249565b5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b8152600401613bd19392919061494b565b602060405180830381600087803b158015613beb57600080fd5b505af1158015613bff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2391906144ec565b15613c3457613c33826001614249565b5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98383326040518463ffffffff1660e01b8152600401613c939392919061494b565b600060405180830381600087803b158015613cad57600080fd5b505af1158015613cc1573d6000803e3d6000fd5b505050505050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d6e5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e185750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000806000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614613ea357601b60159054906101000a900460ff168015613e9c5750613e9b86613cc9565b5b9050613ec7565b601b60159054906101000a900460ff168015613ec45750613ec385613cc9565b5b90505b8080613ee2575043600f54601c54613edf9190614cd1565b10155b1561408a57613f23601554613f15613f066001601554612daf90919063ffffffff16565b876141ce90919063ffffffff16565b61224a90919063ffffffff16565b9150613f998260086000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b60086000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161407d9190614bec565b60405180910390a36141b0565b6140b36015546140a5601454876141ce90919063ffffffff16565b61224a90919063ffffffff16565b915061410782600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141a79190614bec565b60405180910390a35b6141c38285612daf90919063ffffffff16565b925050509392505050565b6000808314156141e15760009050614243565b600082846141ef9190614d58565b90508284826141fe9190614d27565b1461423e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161423590614aec565b60405180910390fd5b809150505b92915050565b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506142aa8282612df9565b5050565b6000813590506142bd816152e2565b92915050565b6000813590506142d2816152f9565b92915050565b6000813590506142e781615310565b92915050565b6000815190506142fc81615310565b92915050565b60008135905061431181615327565b92915050565b60008151905061432681615327565b92915050565b60006020828403121561434257614341614f84565b5b6000614350848285016142ae565b91505092915050565b60006020828403121561436f5761436e614f84565b5b600061437d848285016142c3565b91505092915050565b6000806040838503121561439d5761439c614f84565b5b60006143ab858286016142ae565b92505060206143bc858286016142ae565b9150509250929050565b6000806000606084860312156143df576143de614f84565b5b60006143ed868287016142ae565b93505060206143fe868287016142ae565b925050604061440f868287016142ae565b9150509250925092565b60008060006060848603121561443257614431614f84565b5b6000614440868287016142ae565b9350506020614451868287016142ae565b925050604061446286828701614302565b9150509250925092565b6000806040838503121561448357614482614f84565b5b6000614491858286016142ae565b92505060206144a2858286016142d8565b9150509250929050565b600080604083850312156144c3576144c2614f84565b5b60006144d1858286016142ae565b92505060206144e285828601614302565b9150509250929050565b60006020828403121561450257614501614f84565b5b6000614510848285016142ed565b91505092915050565b600080604083850312156145305761452f614f84565b5b600061453e858286016142d8565b925050602061454f85828601614302565b9150509250929050565b60006020828403121561456f5761456e614f84565b5b600061457d84828501614302565b91505092915050565b60006020828403121561459c5761459b614f84565b5b60006145aa84828501614317565b91505092915050565b600080600080600060a086880312156145cf576145ce614f84565b5b60006145dd88828901614302565b95505060206145ee88828901614302565b94505060406145ff88828901614302565b935050606061461088828901614302565b925050608061462188828901614302565b9150509295509295909350565b600061463a8383614646565b60208301905092915050565b61464f81614de6565b82525050565b61465e81614de6565b82525050565b600061466f82614c8c565b6146798185614caf565b935061468483614c7c565b8060005b838110156146b557815161469c888261462e565b97506146a783614ca2565b925050600181019050614688565b5085935050505092915050565b6146cb81614e0a565b82525050565b6146da81614e4d565b82525050565b6146e981614e5f565b82525050565b60006146fa82614c97565b6147048185614cc0565b9350614714818560208601614e95565b61471d81614f89565b840191505092915050565b6000614735602383614cc0565b915061474082614f9a565b604082019050919050565b6000614758602283614cc0565b915061476382614fe9565b604082019050919050565b600061477b601883614cc0565b915061478682615038565b602082019050919050565b600061479e601b83614cc0565b91506147a982615061565b602082019050919050565b60006147c1601583614cc0565b91506147cc8261508a565b602082019050919050565b60006147e4601f83614cc0565b91506147ef826150b3565b602082019050919050565b6000614807602183614cc0565b9150614812826150dc565b604082019050919050565b600061482a601683614cc0565b91506148358261512b565b602082019050919050565b600061484d602083614cc0565b915061485882615154565b602082019050919050565b6000614870602983614cc0565b915061487b8261517d565b604082019050919050565b6000614893602583614cc0565b915061489e826151cc565b604082019050919050565b60006148b6600a83614cc0565b91506148c18261521b565b602082019050919050565b60006148d9602483614cc0565b91506148e482615244565b604082019050919050565b60006148fc602683614cc0565b915061490782615293565b604082019050919050565b61491b81614e36565b82525050565b61492a81614e40565b82525050565b60006020820190506149456000830184614655565b92915050565b60006060820190506149606000830186614655565b61496d6020830185614655565b61497a6040830184614655565b949350505050565b60006040820190506149976000830185614655565b6149a460208301846146e0565b9392505050565b60006040820190506149c06000830185614655565b6149cd6020830184614912565b9392505050565b60006020820190506149e960008301846146c2565b92915050565b6000602082019050614a0460008301846146d1565b92915050565b60006020820190508181036000830152614a2481846146ef565b905092915050565b60006020820190508181036000830152614a4581614728565b9050919050565b60006020820190508181036000830152614a658161474b565b9050919050565b60006020820190508181036000830152614a858161476e565b9050919050565b60006020820190508181036000830152614aa581614791565b9050919050565b60006020820190508181036000830152614ac5816147b4565b9050919050565b60006020820190508181036000830152614ae5816147d7565b9050919050565b60006020820190508181036000830152614b05816147fa565b9050919050565b60006020820190508181036000830152614b258161481d565b9050919050565b60006020820190508181036000830152614b4581614840565b9050919050565b60006020820190508181036000830152614b6581614863565b9050919050565b60006020820190508181036000830152614b8581614886565b9050919050565b60006020820190508181036000830152614ba5816148a9565b9050919050565b60006020820190508181036000830152614bc5816148cc565b9050919050565b60006020820190508181036000830152614be5816148ef565b9050919050565b6000602082019050614c016000830184614912565b92915050565b600060a082019050614c1c6000830188614912565b614c2960208301876146e0565b8181036040830152614c3b8186614664565b9050614c4a6060830185614655565b614c576080830184614912565b9695505050505050565b6000602082019050614c766000830184614921565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614cdc82614e36565b9150614ce783614e36565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d1c57614d1b614ec8565b5b828201905092915050565b6000614d3282614e36565b9150614d3d83614e36565b925082614d4d57614d4c614ef7565b5b828204905092915050565b6000614d6382614e36565b9150614d6e83614e36565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614da757614da6614ec8565b5b828202905092915050565b6000614dbd82614e36565b9150614dc883614e36565b925082821015614ddb57614dda614ec8565b5b828203905092915050565b6000614df182614e16565b9050919050565b6000614e0382614e16565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614e5882614e71565b9050919050565b6000614e6a82614e36565b9050919050565b6000614e7c82614e83565b9050919050565b6000614e8e82614e16565b9050919050565b60005b83811015614eb3578082015181840152602081019050614e98565b83811115614ec2576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f57616c6c65742043617061636974792045786365656465640000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f427579205458204c696d69742045786365656465640000000000000000000000600082015250565b7f426c6f636b732073686f756c642062652067726561746572207468616e203000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c205458204c696d697420457863656564656400000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f57656e206c756e63683f00000000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b6152eb81614de6565b81146152f657600080fd5b50565b61530281614df8565b811461530d57600080fd5b50565b61531981614e0a565b811461532457600080fd5b50565b61533081614e36565b811461533b57600080fd5b5056fea2646970667358221220e987659effee658ef983a715fe8690d00edc70cc3190e04c2c3ad553e1eeafcf64736f6c6343000807003360806040526ec097ce7bc90715b34b9f10000000006009553480156200002457600080fd5b50604051620016353803806200163583398181016040528101906200004a9190620000e9565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200016e565b600081519050620000e38162000154565b92915050565b6000602082840312156200010257620001016200014f565b5b60006200011284828501620000d2565b91505092915050565b600062000128826200012f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200015f816200011b565b81146200016b57600080fd5b50565b6114b7806200017e6000396000f3fe6080604052600436106100915760003560e01c806354eee5531161005957806354eee5531461017b5780639077ac59146101a4578063ce7c2ac2146101cf578063d0e30db01461020e578063efca2eed1461021857610091565b8063018763ed146100965780631014edf5146100c157806314b6ca96146100ea57806328fd3198146101135780633a98ef3914610150575b600080fd5b3480156100a257600080fd5b506100ab610243565b6040516100b89190611117565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e39190610fe7565b610249565b005b3480156100f657600080fd5b50610111600480360381019061010c9190610fa7565b610303565b005b34801561011f57600080fd5b5061013a60048036038101906101359190610f7a565b6105c2565b6040516101479190611117565b60405180910390f35b34801561015c57600080fd5b506101656106dc565b6040516101729190611117565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190610f7a565b6106e2565b005b3480156101b057600080fd5b506101b9610746565b6040516101c69190611117565b60405180910390f35b3480156101db57600080fd5b506101f660048036038101906101f19190610f7a565b61074c565b60405161020593929190611132565b60405180910390f35b610216610776565b005b34801561022457600080fd5b5061022d610834565b60405161023a9190611117565b60405180910390f35b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102a357600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc600085116102d057826102d2565b845b9081150290604051600060405180830381858888f193505050501580156102fd573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461035b57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103b0576103af8261083a565b5b60008111801561040257506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104155761041082610a34565b610477565b60008114801561046757506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104765761047582610ae3565b5b5b6104e0816104d2600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600554610cea90919063ffffffff16565b610d3490919063ffffffff16565b60058190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610578600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610d92565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561061757600090506106d7565b6000610664600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610d92565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106bf576000925050506106d7565b6106d28183610cea90919063ffffffff16565b925050505b919050565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073a57600080fd5b6107438161083a565b50565b60085481565b60046020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ce57600080fd5b60003490506107e881600654610d3490919063ffffffff16565b60068190555061082b61081a60055461080c84600954610dc490919063ffffffff16565b610e3f90919063ffffffff16565b600854610d3490919063ffffffff16565b60088190555050565b60075481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561088a57610a31565b6000610895826105c2565b90506000811115610a2f576108b581600754610d3490919063ffffffff16565b60078190555061091081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610d3490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506109a1600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610d92565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a2d573d6000803e3d6000fd5b505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026001600280549050610af79190611266565b81548110610b0857610b07611396565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610b8657610b85611396565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060026001600280549050610c269190611266565b81548110610c3757610c36611396565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002805480610cb257610cb1611367565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610d2c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e89565b905092915050565b6000808284610d439190611185565b905083811015610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f906110d7565b60405180910390fd5b8091505092915050565b6000610dbd600954610daf60085485610dc490919063ffffffff16565b610e3f90919063ffffffff16565b9050919050565b600080831415610dd75760009050610e39565b60008284610de5919061120c565b9050828482610df491906111db565b14610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b906110f7565b60405180910390fd5b809150505b92915050565b6000610e8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610eed565b905092915050565b6000838311158290610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec891906110b5565b60405180910390fd5b5060008385610ee09190611266565b9050809150509392505050565b60008083118290610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b91906110b5565b60405180910390fd5b5060008385610f4391906111db565b9050809150509392505050565b600081359050610f5f81611453565b92915050565b600081359050610f748161146a565b92915050565b600060208284031215610f9057610f8f6113c5565b5b6000610f9e84828501610f50565b91505092915050565b60008060408385031215610fbe57610fbd6113c5565b5b6000610fcc85828601610f50565b9250506020610fdd85828601610f65565b9150509250929050565b60008060408385031215610ffe57610ffd6113c5565b5b600061100c85828601610f65565b925050602061101d85828601610f50565b9150509250929050565b600061103282611169565b61103c8185611174565b935061104c8185602086016112d6565b611055816113ca565b840191505092915050565b600061106d601b83611174565b9150611078826113db565b602082019050919050565b6000611090602183611174565b915061109b82611404565b604082019050919050565b6110af816112cc565b82525050565b600060208201905081810360008301526110cf8184611027565b905092915050565b600060208201905081810360008301526110f081611060565b9050919050565b6000602082019050818103600083015261111081611083565b9050919050565b600060208201905061112c60008301846110a6565b92915050565b600060608201905061114760008301866110a6565b61115460208301856110a6565b61116160408301846110a6565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000611190826112cc565b915061119b836112cc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111d0576111cf611309565b5b828201905092915050565b60006111e6826112cc565b91506111f1836112cc565b92508261120157611200611338565b5b828204905092915050565b6000611217826112cc565b9150611222836112cc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561125b5761125a611309565b5b828202905092915050565b6000611271826112cc565b915061127c836112cc565b92508282101561128f5761128e611309565b5b828203905092915050565b60006112a5826112ac565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156112f45780820151818401526020810190506112d9565b83811115611303576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b61145c8161129a565b811461146757600080fd5b50565b611473816112cc565b811461147e57600080fd5b5056fea264697066735822122037b0d16f8ec42fd251f91a181408760fd1dcf4f955d197adc78ac035bbc851c464736f6c63430008070033000000000000000000000000090901d693d251012d98cd71a0a2062a85053f5c000000000000000000000000efb9fc3c6cc2b63745527ffb1bcc0fa7ace7a93900000000000000000000000083cf27cd79bd97415b5c768703864f0040a5582e000000000000000000000000a9bc44453043bc5420cc45a833379a788cb1af6d

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000090901d693d251012d98cd71a0a2062a85053f5c000000000000000000000000efb9fc3c6cc2b63745527ffb1bcc0fa7ace7a93900000000000000000000000083cf27cd79bd97415b5c768703864f0040a5582e000000000000000000000000a9bc44453043bc5420cc45a833379a788cb1af6d

-----Decoded View---------------
Arg [0] : _owner (address): 0x090901d693d251012D98Cd71A0a2062A85053f5c
Arg [1] : _teamWallet (address): 0xEFb9FC3c6cc2B63745527fFB1BCC0FA7AcE7A939
Arg [2] : _mantraWallet (address): 0x83Cf27CD79bd97415B5c768703864F0040A5582E
Arg [3] : _marketingWallet (address): 0xA9bC44453043bC5420CC45a833379a788Cb1Af6D

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000090901d693d251012d98cd71a0a2062a85053f5c
Arg [1] : 000000000000000000000000efb9fc3c6cc2b63745527ffb1bcc0fa7ace7a939
Arg [2] : 00000000000000000000000083cf27cd79bd97415b5c768703864f0040a5582e
Arg [3] : 000000000000000000000000a9bc44453043bc5420cc45a833379a788cb1af6d


Deployed ByteCode Sourcemap

11693:18895:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13599:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25895:518;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15369:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29414:318;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24099:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15984:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15545:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26425:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28078:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16857:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27926:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28229:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5470:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15211:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25489:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24321:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27608:92;;;;;;;;;;;;;:::i;:::-;;27712:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24692:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16470:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28488:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25633:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24214:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26819:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13562:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15639:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23986:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26953:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29854:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23647:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15446:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15288:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26693:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13183:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16693:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30065:318;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30489:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13446:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23803:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29182:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28772:318;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15750:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27278:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5698:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27099:171;;;;;;;;;;;;;:::i;:::-;;25760:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13152:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13599:50;;;;:::o;25895:518::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26069:14:::1;26053:13;:30;;;;26104:8;26094:7;:18;;;;26135:10;26123:9;:22;;;;26171:13;26156:12;:28;;;;26206:63;26255:13;26206:44;26239:10;26206:28;26225:8;26206:14;:18;;:28;;;;:::i;:::-;:32;;:44;;;;:::i;:::-;:48;;:63;;;;:::i;:::-;26195:8;:74;;;;26297:15;26280:14;:32;;;;26403:1;26388:14;;:16;;;;:::i;:::-;26377:8;;:27;26369:36;;;::::0;::::1;;25895:518:::0;;;;;:::o;15369:71::-;15408:13;15432:5;;;;;;;;;;;;;;;;;15425:12;;15369:71;:::o;29414:318::-;29472:4;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29489:15:::1;29518:10;;;;;;;;;;;29515:182;;;29557:5;29544:10;;:18;;;;;;;;;;;;;;;;;;29590:5;29577:18;;29515:182;;;29649:4;29636:10;;:17;;;;;;;;;;;;;;;;;;29681:4;29668:17;;29515:182;29714:10;29707:17;;;29414:318:::0;:::o;24099:103::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24188:6:::1;24169:16;:25;;;;24099:103:::0;:::o;15984:379::-;16059:4;16106:1;16084:24;;:10;:24;;;;16076:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16187:1;16168:21;;:7;:21;;;;16160:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16274:6;16239:11;:23;16251:10;16239:23;;;;;;;;;;;;;;;:32;16263:7;16239:32;;;;;;;;;;;;;;;:41;;;;16317:7;16296:37;;16305:10;16296:37;;;16326:6;16296:37;;;;;;:::i;:::-;;;;;;;;16351:4;16344:11;;15984:379;;;;:::o;15545:88::-;15600:7;15618:12;;15611:19;;15545:88;:::o;26425:260::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26572:13:::1;26557:12;;:28;;;;;;;;;;;;;;;;;;26613:15;26596:14;;:32;;;;;;;;;;;;;;;;;;26659:18;26639:17;;:38;;;;;;;;;;;;;;;;;;26425:260:::0;;;:::o;28078:139::-;28142:4;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28166:43:::1;28189:4;28196;;;;;;;;;;;28202:6;28166:14;:43::i;:::-;28159:50;;28078:139:::0;;;:::o;16857:370::-;16957:4;17012:17;16977:11;:19;16989:6;16977:19;;;;;;;;;;;;;;;:31;16997:10;16977:31;;;;;;;;;;;;;;;;:52;16974:186;;17079:69;17115:6;17079:69;;;;;;;;;;;;;;;;;:11;:19;17091:6;17079:19;;;;;;;;;;;;;;;:31;17099:10;17079:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;17045:11;:19;17057:6;17045:19;;;;;;;;;;;;;;;:31;17065:10;17045:31;;;;;;;;;;;;;;;:103;;;;16974:186;17179:40;17193:6;17201:9;17212:6;17179:13;:40::i;:::-;17172:47;;16857:370;;;;;:::o;27926:144::-;27995:7;28022:9;;;;;;;;;;;:27;;;28050:11;28022:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28015:47;;27926:144;;;:::o;28229:142::-;28282:7;28309:54;28347:15;28357:4;;;;;;;;;;;28347:9;:15::i;:::-;28309:33;28326:15;28336:4;;;;;;;;;;;28326:9;:15::i;:::-;28309:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;28302:61;;28229:142;:::o;5470:103::-;5525:4;5560:5;;;;;;;;;;;5549:16;;:7;:16;;;5542:23;;5470:103;;;:::o;15211:71::-;15254:5;12099:1;15263:16;;15211:71;:::o;25489:136::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25579:38:::1;25602:6;25610;25579:22;:38::i;:::-;25489:136:::0;;:::o;24321:197::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24415:6:::1;24398:4;:14;24403:8;24398:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;24453:6;24452:7;24432;:17;24440:8;24432:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;24470:40;24493:8;24503:6;24470:22;:40::i;:::-;24321:197:::0;;:::o;27608:92::-;27655:9;;;;;;;;;;;:25;;;27681:10;27655:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27608:92::o;27712:115::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27786:9:::1;;;;;;;;;;;:25;;;27812:6;27786:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27712:115:::0;:::o;24692:134::-;24758:4;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24783:7:::1;:17;24791:8;24783:17;;;;;;;;;;;;;;;;;;;;;;;;;24782:18;:36;;;;;24804:4;:14;24809:8;24804:14;;;;;;;;;;;;;;;;;;;;;;;;;24782:36;24775:43;;24692:134:::0;;;:::o;16470:122::-;16525:4;16549:35;16557:7;16566:17;16549:7;:35::i;:::-;16542:42;;16470:122;;;:::o;28488:133::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28587:8:::1;28561:7;;:35;;;;;;;;;;;;;;;;;;28488:133:::0;:::o;25633:119::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25738:6:::1;25716:11;:19;25728:6;25716:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25633:119:::0;;:::o;24214:95::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24295:6:::1;24282:10;:19;;;;24214:95:::0;:::o;26819:122::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26918:15:::1;26901:14;;:32;;;;;;;;;;;;;;;;;;26819:122:::0;:::o;13562:30::-;;;;;;;;;;;;;:::o;15639:105::-;15705:7;15723:9;:18;15733:7;15723:18;;;;;;;;;;;;;;;;15716:25;;15639:105;;;:::o;23986:101::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24073:6:::1;24055:15;:24;;;;23986:101:::0;:::o;26953:134::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27061:18:::1;27041:17;;:38;;;;;;;;;;;;;;;;;;26953:134:::0;:::o;29854:96::-;29908:4;29932:10;;;;;;;;;;;29925:17;;29854:96;:::o;23647:148::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23724:27:::1;23744:6;23724:15;:19;;:27;;;;:::i;:::-;23711:10;:40;;;;23775:12;23762:10;:25;;;;23647:148:::0;:::o;15446:69::-;15489:7;15507:5;;;;;;;;;;;15500:12;;15446:69;:::o;15288:75::-;15329:13;15353:7;;;;;;;;;;;;;;;;;15346:14;;15288:75;:::o;26693:114::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26786:13:::1;26771:12;;:28;;;;;;;;;;;;;;;;;;26693:114:::0;:::o;13183:19::-;;;;;;;;;;;;;:::o;16693:156::-;16773:4;16797:44;16811:10;16823:9;16834:6;16797:13;:44::i;:::-;16790:51;;16693:156;;;;:::o;30065:318::-;30123:4;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30140:15:::1;30169:10;;;;;;;;;;;30166:182;;;30208:5;30195:10;;:18;;;;;;;;;;;;;;;;;;30241:5;30228:18;;30166:182;;;30300:4;30287:10;;:17;;;;;;;;;;;;;;;;;;30332:4;30319:17;;30166:182;30365:10;30358:17;;;30065:318:::0;:::o;30489:96::-;30543:4;30567:10;;;;;;;;;;;30560:17;;30489:96;:::o;13446:25::-;;;;:::o;23803:175::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23896:1:::1;23887:6;:10;23879:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23964:6;23944:17;:26;;;;23803:175:::0;:::o;29182:96::-;29236:4;29260:10;;;;;;;;;;;29253:17;;29182:96;:::o;28772:318::-;28830:4;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28847:15:::1;28876:10;;;;;;;;;;;28873:182;;;28915:5;28902:10;;:18;;;;;;;;;;;;;;;;;;28948:5;28935:18;;28873:182;;;29007:4;28994:10;;:17;;;;;;;;;;;;;;;;;;29039:4;29026:17;;28873:182;29072:10;29065:17;;;28772:318:::0;:::o;15750:133::-;15834:7;15852:11;:19;15864:6;15852:19;;;;;;;;;;;;;;;:28;15872:7;15852:28;;;;;;;;;;;;;;;;15845:35;;15750:133;;;;:::o;27278:151::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27381:7:::1;27367:11;;:21;;;;;;;;;;;;;;;;;;27415:6;27399:13;:22;;;;27278:151:::0;;:::o;5698:140::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5783:4:::1;5775:5;::::0;:12:::1;;;;;;;;;;;;;;;;;;5803:27;5824:5;::::0;::::1;;;;;;;;5803:27;;;;;;:::i;:::-;;;;;;;;5698:140:::0;:::o;27099:171::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27151:26:::1;27180:21;27151:50;;27220:12;;;;;;;;;;;27212:30;;:50;27243:18;27212:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27140:130;27099:171::o:0;25760:127::-;5343:19;5351:10;5343:7;:19::i;:::-;5335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25873:6:::1;25847:15;:23;25863:6;25847:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25760:127:::0;;:::o;13152:24::-;;;;;;;;;;;;;:::o;4624:132::-;4682:7;4709:39;4713:1;4716;4709:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4702:46;;4624:132;;;;:::o;3849:179::-;3907:7;3927:9;3943:1;3939;:5;;;;:::i;:::-;3927:17;;3968:1;3963;:6;;3955:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4019:1;4012:8;;;3849:179;;;;:::o;18933:568::-;19026:4;19069:1;19051:20;;:6;:20;;;;19043:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19153:1;19132:23;;:9;:23;;;;19124:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19223:1;19214:6;:10;19206:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19301:53;19323:6;19301:53;;;;;;;;;;;;;;;;;:9;:17;19311:6;19301:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19281:9;:17;19291:6;19281:17;;;;;;;;;;;;;;;:73;;;;19388:32;19413:6;19388:9;:20;19398:9;19388:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19365:9;:20;19375:9;19365:20;;;;;;;;;;;;;;;:55;;;;19453:9;19436:35;;19445:6;19436:35;;;19464:6;19436:35;;;;;;:::i;:::-;;;;;;;;19489:4;19482:11;;18933:568;;;;;:::o;4176:190::-;4262:7;4295:1;4290;:6;;4298:12;4282:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4322:9;4338:1;4334;:5;;;;:::i;:::-;4322:17;;4357:1;4350:8;;;4176:190;;;;;:::o;17235:1686::-;17327:4;17370:1;17352:20;;:6;:20;;;;17344:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17454:1;17433:23;;:9;:23;;;;17425:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17524:1;17515:6;:10;17507:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17595:10;;;;;;;;;;;17592:67;;;17615:41;17630:6;17638:9;17649:6;17615:14;:41::i;:::-;17608:48;;;;17592:67;17679:39;17692:6;17700:9;17711:6;17679:12;:39::i;:::-;17729:41;17744:6;17752:9;17763:6;17729:14;:41::i;:::-;17786:16;:14;:16::i;:::-;17783:35;;;17805:10;:8;:10::i;:::-;17783:35;17841:38;17861:6;17869:9;17841:19;:38::i;:::-;17838:445;;;17904:15;17912:6;17904:7;:15::i;:::-;:29;;;;17923:10;:8;:10::i;:::-;17904:29;17896:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17981:10;;;;;;;;;;;17977:128;;;18012:34;18028:6;18036:9;18012:15;:34::i;:::-;17977:128;18137:10;;;;;;;;;;;18133:139;;;18177:17;18184:9;18177:6;:17::i;:::-;18176:18;:37;;;;;18199:14;18206:6;18199;:14::i;:::-;18198:15;18176:37;18168:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18133:139;17838:445;18315:53;18337:6;18315:53;;;;;;;;;;;;;;;;;:9;:17;18325:6;18315:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18295:9;:17;18305:6;18295:17;;;;;;;;;;;;;;;:73;;;;18381:22;18406:32;18420:6;18428:9;18406:13;:32::i;:::-;:78;;18478:6;18406:78;;;18441:34;18449:6;18457:9;18468:6;18441:7;:34::i;:::-;18406:78;18381:103;;18528:40;18553:14;18528:9;:20;18538:9;18528:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18505:9;:20;18515:9;18505:20;;;;;;;;;;;;;;;:63;;;;18594:4;;;;;;;;;;;18584:14;;:6;:14;;;;:45;;;;;18603:18;:26;18622:6;18603:26;;;;;;;;;;;;;;;;;;;;;;;;;18602:27;18584:45;18581:114;;;18636:9;;;;;;;;;;;:18;;;18655:6;18663:9;:17;18673:6;18663:17;;;;;;;;;;;;;;;;18636:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18632:61;;;;;;18581:114;18721:4;;;;;;;;;;;18708:17;;:9;:17;;;;:51;;;;;18730:18;:29;18749:9;18730:29;;;;;;;;;;;;;;;;;;;;;;;;;18729:30;18708:51;18705:126;;;18766:9;;;;;;;;;;;:18;;;18785:9;18796;:20;18806:9;18796:20;;;;;;;;;;;;;;;;18766:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18762:67;;;;;;18705:126;18865:9;18848:43;;18857:6;18848:43;;;18876:14;18848:43;;;;;;:::i;:::-;;;;;;;;18909:4;18902:11;;;17235:1686;;;;;;:::o;4034:136::-;4092:7;4119:43;4123:1;4126;4119:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4112:50;;4034:136;;;;:::o;25144:337::-;25251:4;25233:23;;:6;:23;;;;:41;;;;;25270:4;;;;;;;;;;;25260:14;;:6;:14;;;;25233:41;25225:50;;;;;;25315:6;25286:18;:26;25305:6;25286:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25335:6;25332:142;;;25357:9;;;;;;;;;;;:18;;;25376:6;25384:1;25357:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25332:142;;;25417:9;;;;;;;;;;;:18;;;25436:6;25444:9;:17;25454:6;25444:17;;;;;;;;;;;;;;;;25417:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25332:142;25144:337;;:::o;4762:189::-;4848:7;4880:1;4876;:5;4883:12;4868:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4907:9;4923:1;4919;:5;;;;:::i;:::-;4907:17;;4942:1;4935:8;;;4762:189;;;;;:::o;19509:410::-;19617:4;;;;;;;;;;;19607:14;;:6;:14;;;:304;;19841:16;;19831:6;:26;;:53;;;;19861:15;:23;19877:6;19861:23;;;;;;;;;;;;;;;;;;;;;;;;;19831:53;19823:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;19607:304;;;19655:15;;19645:6;:25;;:71;;;;;19693:23;19708:7;19693:10;;:14;;:23;;;;:::i;:::-;19674:15;:42;;19645:71;:106;;;;19730:21;19747:3;19730:12;;:16;;:21;;;;:::i;:::-;19720:6;:31;;19645:106;:136;;;;19755:15;:26;19771:9;19755:26;;;;;;;;;;;;;;;;;;;;;;;;;19645:136;19637:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;19607:304;19509:410;;;:::o;19931:427::-;20045:4;;;;;;;;;;;20035:14;;:6;:14;;;:45;;;;;20054:15;:26;20070:9;20054:26;;;;;;;;;;;;;;;;;;;;;;;;;20053:27;20035:45;20031:320;;;20116:23;20131:7;20116:10;;:14;;:23;;;;:::i;:::-;20097:15;:42;;:242;;20290:20;20307:2;20290:12;;:16;;:20;;;;:::i;:::-;20281:6;20258:20;20268:9;20258;:20::i;:::-;:29;;;;:::i;:::-;:52;20250:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;20097:242;;;20195:10;;20186:6;20163:20;20173:9;20163;:20::i;:::-;:29;;;;:::i;:::-;:42;20155:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20097:242;20031:320;19931:427;;;:::o;22014:201::-;22063:4;22101;;;;;;;;;;;22087:18;;:10;:18;;;;:42;;;;;22119:10;;;;;;;;;;;22118:11;22087:42;:66;;;;;22142:11;;;;;;;;;;;22087:66;:120;;;;;22194:13;;22166:9;:24;22184:4;22166:24;;;;;;;;;;;;;;;;:41;;22087:120;22080:127;;22014:201;:::o;22227:1277::-;13727:4;13714:10;;:17;;;;;;;;;;;;;;;;;;22276:20:::1;22299:13;;22276:36;;22325:21;22363:1;22349:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22325:40;;22394:4;22376;22381:1;22376:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22420:4;;;;;;;;;;;22410;22415:1;22410:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;22437:21;22461;22437:45;;22495:6;;;;;;;;;;;:57;;;22567:12;22594:1;22610:4;22637;22657:15;22495:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22694:17;22714:40;22740:13;22714:21;:25;;:40;;;;:::i;:::-;22694:60;;22765:24;22792:42;22825:8;;22792:28;22806:13;;22792:9;:13;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;22765:69;;22845:18;22866:36;22893:8;;22866:22;22880:7;;22866:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;22845:57;;22913:20;22936:38;22965:8;;22936:24;22950:9;;22936;:13;;:24;;;;:::i;:::-;:28;;:38;;;;:::i;:::-;22913:61;;22985:23;23011:65;23063:12;23011:47;23047:10;23011:31;23025:16;23011:9;:13;;:31;;;;:::i;:::-;:35;;:47;;;;:::i;:::-;:51;;:65;;;;:::i;:::-;22985:91;;23093:9;;;;;;;;;;;:17;;;23118:16;23093:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23089:60;;;;;;23186:1;23173:10;:14;23169:89;;;23212:12;;;;;;;;;;;23204:30;;:42;23235:10;23204:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23169:89;23297:1;23282:12;:16;23278:95;;;23323:14;;;;;;;;;;;23315:32;;:46;23348:12;23315:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23278:95;23415:1;23397:15;:19;23393:104;;;23441:17;;;;;;;;;;;23433:35;;:52;23469:15;23433:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23393:104;22265:1239;;;;;;;;13749:5:::0;13736:10;;:18;;;;;;;;;;;;;;;;;;22227:1277::o;24975:157::-;25063:4;25098;;;;;;;;;;;25087:15;;:7;:15;;;:37;;;;25120:4;;;;;;;;;;;25106:18;;:10;:18;;;25087:37;25080:44;;24975:157;;;;:::o;23512:123::-;23555:4;23593:1;23579:10;;:15;;:48;;;;;23617:10;;23598:15;:29;;23579:48;23572:55;;23512:123;:::o;20370:374::-;20454:7;;;;;;;;;;;:19;;;20474:9;20485:4;;;;;;;;;;;20491:9;20454:47;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20450:104;;;20518:24;20526:9;20537:4;20518:7;:24::i;:::-;20450:104;20578:7;;;;;;;;;;;:19;;;20598:6;20606:4;;;;;;;;;;;20612:9;20578:44;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20574:98;;;20639:21;20647:6;20655:4;20639:7;:21::i;:::-;20574:98;20682:7;;;;;;;;;;;:21;;;20704:6;20712:9;20723;20682:51;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20370:374;;:::o;24838:125::-;24895:4;24920:7;:17;24928:8;24920:17;;;;;;;;;;;;;;;;;;;;;;;;;24919:18;:36;;;;;24941:4;:14;24946:8;24941:14;;;;;;;;;;;;;;;;;;;;;;;;;24919:36;24912:43;;24838:125;;;:::o;20752:161::-;20833:4;20859:11;:19;20871:6;20859:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;20882:11;:22;20894:9;20882:22;;;;;;;;;;;;;;;;;;;;;;;;;20859:45;20857:48;20850:55;;20752:161;;;;:::o;21099:907::-;21185:7;21205:17;21233:8;21276:4;;;;;;;;;;;21266:14;;:6;:14;;;21262:151;;21303:10;;;;;;;;;;;:28;;;;;21317:14;21324:6;21317;:14::i;:::-;21303:28;21297:34;;21262:151;;;21370:10;;;;;;;;;;;:31;;;;;21384:17;21391:9;21384:6;:17::i;:::-;21370:31;21364:37;;21262:151;21437:3;:53;;;;21478:12;21457:17;;21444:10;;:30;;;;:::i;:::-;:46;;21437:53;21433:525;;;21519:53;21557:14;;21519:33;21530:21;21549:1;21530:14;;:18;;:21;;;;:::i;:::-;21519:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;21507:65;;21615:40;21645:9;21615;:25;21625:14;;;;;;;;;;;21615:25;;;;;;;;;;;;;;;;:29;;:40;;;;:::i;:::-;21587:9;:25;21597:14;;;;;;;;;;;21587:25;;;;;;;;;;;;;;;:68;;;;21692:14;;;;;;;;;;;21675:43;;21684:6;21675:43;;;21708:9;21675:43;;;;;;:::i;:::-;;;;;;;;21433:525;;;21763:40;21788:14;;21763:20;21774:8;;21763:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;21751:52;;21845:39;21874:9;21845;:24;21863:4;21845:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21818:9;:24;21836:4;21818:24;;;;;;;;;;;;;;;:66;;;;21929:4;21904:42;;21913:6;21904:42;;;21936:9;21904:42;;;;;;:::i;:::-;;;;;;;;21433:525;21977:21;21988:9;21977:6;:10;;:21;;;;:::i;:::-;21970:28;;;;21099:907;;;;;:::o;4372:246::-;4430:7;4459:1;4454;:6;4450:47;;;4484:1;4477:8;;;;4450:47;4507:9;4523:1;4519;:5;;;;:::i;:::-;4507:17;;4552:1;4547;4543;:5;;;;:::i;:::-;:10;4535:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4609:1;4602:8;;;4372:246;;;;;:::o;24530:150::-;24615:6;24598:4;:14;24603:8;24598:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;24632:40;24655:8;24665:6;24632:22;:40::i;:::-;24530:150;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;313:133;;;;:::o;452:137::-;506:5;537:6;531:13;522:22;;553:30;577:5;553:30;:::i;:::-;452:137;;;;:::o;595:139::-;641:5;679:6;666:20;657:29;;695:33;722:5;695:33;:::i;:::-;595:139;;;;:::o;740:143::-;797:5;828:6;822:13;813:22;;844:33;871:5;844:33;:::i;:::-;740:143;;;;:::o;889:329::-;948:6;997:2;985:9;976:7;972:23;968:32;965:119;;;1003:79;;:::i;:::-;965:119;1123:1;1148:53;1193:7;1184:6;1173:9;1169:22;1148:53;:::i;:::-;1138:63;;1094:117;889:329;;;;:::o;1224:345::-;1291:6;1340:2;1328:9;1319:7;1315:23;1311:32;1308:119;;;1346:79;;:::i;:::-;1308:119;1466:1;1491:61;1544:7;1535:6;1524:9;1520:22;1491:61;:::i;:::-;1481:71;;1437:125;1224:345;;;;:::o;1575:474::-;1643:6;1651;1700:2;1688:9;1679:7;1675:23;1671:32;1668:119;;;1706:79;;:::i;:::-;1668:119;1826:1;1851:53;1896:7;1887:6;1876:9;1872:22;1851:53;:::i;:::-;1841:63;;1797:117;1953:2;1979:53;2024:7;2015:6;2004:9;2000:22;1979:53;:::i;:::-;1969:63;;1924:118;1575:474;;;;;:::o;2055:619::-;2132:6;2140;2148;2197:2;2185:9;2176:7;2172:23;2168:32;2165:119;;;2203:79;;:::i;:::-;2165:119;2323:1;2348:53;2393:7;2384:6;2373:9;2369:22;2348:53;:::i;:::-;2338:63;;2294:117;2450:2;2476:53;2521:7;2512:6;2501:9;2497:22;2476:53;:::i;:::-;2466:63;;2421:118;2578:2;2604:53;2649:7;2640:6;2629:9;2625:22;2604:53;:::i;:::-;2594:63;;2549:118;2055:619;;;;;:::o;2680:::-;2757:6;2765;2773;2822:2;2810:9;2801:7;2797:23;2793:32;2790:119;;;2828:79;;:::i;:::-;2790:119;2948:1;2973:53;3018:7;3009:6;2998:9;2994:22;2973:53;:::i;:::-;2963:63;;2919:117;3075:2;3101:53;3146:7;3137:6;3126:9;3122:22;3101:53;:::i;:::-;3091:63;;3046:118;3203:2;3229:53;3274:7;3265:6;3254:9;3250:22;3229:53;:::i;:::-;3219:63;;3174:118;2680:619;;;;;:::o;3305:468::-;3370:6;3378;3427:2;3415:9;3406:7;3402:23;3398:32;3395:119;;;3433:79;;:::i;:::-;3395:119;3553:1;3578:53;3623:7;3614:6;3603:9;3599:22;3578:53;:::i;:::-;3568:63;;3524:117;3680:2;3706:50;3748:7;3739:6;3728:9;3724:22;3706:50;:::i;:::-;3696:60;;3651:115;3305:468;;;;;:::o;3779:474::-;3847:6;3855;3904:2;3892:9;3883:7;3879:23;3875:32;3872:119;;;3910:79;;:::i;:::-;3872:119;4030:1;4055:53;4100:7;4091:6;4080:9;4076:22;4055:53;:::i;:::-;4045:63;;4001:117;4157:2;4183:53;4228:7;4219:6;4208:9;4204:22;4183:53;:::i;:::-;4173:63;;4128:118;3779:474;;;;;:::o;4259:345::-;4326:6;4375:2;4363:9;4354:7;4350:23;4346:32;4343:119;;;4381:79;;:::i;:::-;4343:119;4501:1;4526:61;4579:7;4570:6;4559:9;4555:22;4526:61;:::i;:::-;4516:71;;4472:125;4259:345;;;;:::o;4610:468::-;4675:6;4683;4732:2;4720:9;4711:7;4707:23;4703:32;4700:119;;;4738:79;;:::i;:::-;4700:119;4858:1;4883:50;4925:7;4916:6;4905:9;4901:22;4883:50;:::i;:::-;4873:60;;4829:114;4982:2;5008:53;5053:7;5044:6;5033:9;5029:22;5008:53;:::i;:::-;4998:63;;4953:118;4610:468;;;;;:::o;5084:329::-;5143:6;5192:2;5180:9;5171:7;5167:23;5163:32;5160:119;;;5198:79;;:::i;:::-;5160:119;5318:1;5343:53;5388:7;5379:6;5368:9;5364:22;5343:53;:::i;:::-;5333:63;;5289:117;5084:329;;;;:::o;5419:351::-;5489:6;5538:2;5526:9;5517:7;5513:23;5509:32;5506:119;;;5544:79;;:::i;:::-;5506:119;5664:1;5689:64;5745:7;5736:6;5725:9;5721:22;5689:64;:::i;:::-;5679:74;;5635:128;5419:351;;;;:::o;5776:911::-;5871:6;5879;5887;5895;5903;5952:3;5940:9;5931:7;5927:23;5923:33;5920:120;;;5959:79;;:::i;:::-;5920:120;6079:1;6104:53;6149:7;6140:6;6129:9;6125:22;6104:53;:::i;:::-;6094:63;;6050:117;6206:2;6232:53;6277:7;6268:6;6257:9;6253:22;6232:53;:::i;:::-;6222:63;;6177:118;6334:2;6360:53;6405:7;6396:6;6385:9;6381:22;6360:53;:::i;:::-;6350:63;;6305:118;6462:2;6488:53;6533:7;6524:6;6513:9;6509:22;6488:53;:::i;:::-;6478:63;;6433:118;6590:3;6617:53;6662:7;6653:6;6642:9;6638:22;6617:53;:::i;:::-;6607:63;;6561:119;5776:911;;;;;;;;:::o;6693:179::-;6762:10;6783:46;6825:3;6817:6;6783:46;:::i;:::-;6861:4;6856:3;6852:14;6838:28;;6693:179;;;;:::o;6878:108::-;6955:24;6973:5;6955:24;:::i;:::-;6950:3;6943:37;6878:108;;:::o;6992:118::-;7079:24;7097:5;7079:24;:::i;:::-;7074:3;7067:37;6992:118;;:::o;7146:732::-;7265:3;7294:54;7342:5;7294:54;:::i;:::-;7364:86;7443:6;7438:3;7364:86;:::i;:::-;7357:93;;7474:56;7524:5;7474:56;:::i;:::-;7553:7;7584:1;7569:284;7594:6;7591:1;7588:13;7569:284;;;7670:6;7664:13;7697:63;7756:3;7741:13;7697:63;:::i;:::-;7690:70;;7783:60;7836:6;7783:60;:::i;:::-;7773:70;;7629:224;7616:1;7613;7609:9;7604:14;;7569:284;;;7573:14;7869:3;7862:10;;7270:608;;;7146:732;;;;:::o;7884:109::-;7965:21;7980:5;7965:21;:::i;:::-;7960:3;7953:34;7884:109;;:::o;7999:167::-;8104:55;8153:5;8104:55;:::i;:::-;8099:3;8092:68;7999:167;;:::o;8172:147::-;8267:45;8306:5;8267:45;:::i;:::-;8262:3;8255:58;8172:147;;:::o;8325:364::-;8413:3;8441:39;8474:5;8441:39;:::i;:::-;8496:71;8560:6;8555:3;8496:71;:::i;:::-;8489:78;;8576:52;8621:6;8616:3;8609:4;8602:5;8598:16;8576:52;:::i;:::-;8653:29;8675:6;8653:29;:::i;:::-;8648:3;8644:39;8637:46;;8417:272;8325:364;;;;:::o;8695:366::-;8837:3;8858:67;8922:2;8917:3;8858:67;:::i;:::-;8851:74;;8934:93;9023:3;8934:93;:::i;:::-;9052:2;9047:3;9043:12;9036:19;;8695:366;;;:::o;9067:::-;9209:3;9230:67;9294:2;9289:3;9230:67;:::i;:::-;9223:74;;9306:93;9395:3;9306:93;:::i;:::-;9424:2;9419:3;9415:12;9408:19;;9067:366;;;:::o;9439:::-;9581:3;9602:67;9666:2;9661:3;9602:67;:::i;:::-;9595:74;;9678:93;9767:3;9678:93;:::i;:::-;9796:2;9791:3;9787:12;9780:19;;9439:366;;;:::o;9811:::-;9953:3;9974:67;10038:2;10033:3;9974:67;:::i;:::-;9967:74;;10050:93;10139:3;10050:93;:::i;:::-;10168:2;10163:3;10159:12;10152:19;;9811:366;;;:::o;10183:::-;10325:3;10346:67;10410:2;10405:3;10346:67;:::i;:::-;10339:74;;10422:93;10511:3;10422:93;:::i;:::-;10540:2;10535:3;10531:12;10524:19;;10183:366;;;:::o;10555:::-;10697:3;10718:67;10782:2;10777:3;10718:67;:::i;:::-;10711:74;;10794:93;10883:3;10794:93;:::i;:::-;10912:2;10907:3;10903:12;10896:19;;10555:366;;;:::o;10927:::-;11069:3;11090:67;11154:2;11149:3;11090:67;:::i;:::-;11083:74;;11166:93;11255:3;11166:93;:::i;:::-;11284:2;11279:3;11275:12;11268:19;;10927:366;;;:::o;11299:::-;11441:3;11462:67;11526:2;11521:3;11462:67;:::i;:::-;11455:74;;11538:93;11627:3;11538:93;:::i;:::-;11656:2;11651:3;11647:12;11640:19;;11299:366;;;:::o;11671:::-;11813:3;11834:67;11898:2;11893:3;11834:67;:::i;:::-;11827:74;;11910:93;11999:3;11910:93;:::i;:::-;12028:2;12023:3;12019:12;12012:19;;11671:366;;;:::o;12043:::-;12185:3;12206:67;12270:2;12265:3;12206:67;:::i;:::-;12199:74;;12282:93;12371:3;12282:93;:::i;:::-;12400:2;12395:3;12391:12;12384:19;;12043:366;;;:::o;12415:::-;12557:3;12578:67;12642:2;12637:3;12578:67;:::i;:::-;12571:74;;12654:93;12743:3;12654:93;:::i;:::-;12772:2;12767:3;12763:12;12756:19;;12415:366;;;:::o;12787:::-;12929:3;12950:67;13014:2;13009:3;12950:67;:::i;:::-;12943:74;;13026:93;13115:3;13026:93;:::i;:::-;13144:2;13139:3;13135:12;13128:19;;12787:366;;;:::o;13159:::-;13301:3;13322:67;13386:2;13381:3;13322:67;:::i;:::-;13315:74;;13398:93;13487:3;13398:93;:::i;:::-;13516:2;13511:3;13507:12;13500:19;;13159:366;;;:::o;13531:::-;13673:3;13694:67;13758:2;13753:3;13694:67;:::i;:::-;13687:74;;13770:93;13859:3;13770:93;:::i;:::-;13888:2;13883:3;13879:12;13872:19;;13531:366;;;:::o;13903:118::-;13990:24;14008:5;13990:24;:::i;:::-;13985:3;13978:37;13903:118;;:::o;14027:112::-;14110:22;14126:5;14110:22;:::i;:::-;14105:3;14098:35;14027:112;;:::o;14145:222::-;14238:4;14276:2;14265:9;14261:18;14253:26;;14289:71;14357:1;14346:9;14342:17;14333:6;14289:71;:::i;:::-;14145:222;;;;:::o;14373:442::-;14522:4;14560:2;14549:9;14545:18;14537:26;;14573:71;14641:1;14630:9;14626:17;14617:6;14573:71;:::i;:::-;14654:72;14722:2;14711:9;14707:18;14698:6;14654:72;:::i;:::-;14736;14804:2;14793:9;14789:18;14780:6;14736:72;:::i;:::-;14373:442;;;;;;:::o;14821:348::-;14950:4;14988:2;14977:9;14973:18;14965:26;;15001:71;15069:1;15058:9;15054:17;15045:6;15001:71;:::i;:::-;15082:80;15158:2;15147:9;15143:18;15134:6;15082:80;:::i;:::-;14821:348;;;;;:::o;15175:332::-;15296:4;15334:2;15323:9;15319:18;15311:26;;15347:71;15415:1;15404:9;15400:17;15391:6;15347:71;:::i;:::-;15428:72;15496:2;15485:9;15481:18;15472:6;15428:72;:::i;:::-;15175:332;;;;;:::o;15513:210::-;15600:4;15638:2;15627:9;15623:18;15615:26;;15651:65;15713:1;15702:9;15698:17;15689:6;15651:65;:::i;:::-;15513:210;;;;:::o;15729:258::-;15840:4;15878:2;15867:9;15863:18;15855:26;;15891:89;15977:1;15966:9;15962:17;15953:6;15891:89;:::i;:::-;15729:258;;;;:::o;15993:313::-;16106:4;16144:2;16133:9;16129:18;16121:26;;16193:9;16187:4;16183:20;16179:1;16168:9;16164:17;16157:47;16221:78;16294:4;16285:6;16221:78;:::i;:::-;16213:86;;15993:313;;;;:::o;16312:419::-;16478:4;16516:2;16505:9;16501:18;16493:26;;16565:9;16559:4;16555:20;16551:1;16540:9;16536:17;16529:47;16593:131;16719:4;16593:131;:::i;:::-;16585:139;;16312:419;;;:::o;16737:::-;16903:4;16941:2;16930:9;16926:18;16918:26;;16990:9;16984:4;16980:20;16976:1;16965:9;16961:17;16954:47;17018:131;17144:4;17018:131;:::i;:::-;17010:139;;16737:419;;;:::o;17162:::-;17328:4;17366:2;17355:9;17351:18;17343:26;;17415:9;17409:4;17405:20;17401:1;17390:9;17386:17;17379:47;17443:131;17569:4;17443:131;:::i;:::-;17435:139;;17162:419;;;:::o;17587:::-;17753:4;17791:2;17780:9;17776:18;17768:26;;17840:9;17834:4;17830:20;17826:1;17815:9;17811:17;17804:47;17868:131;17994:4;17868:131;:::i;:::-;17860:139;;17587:419;;;:::o;18012:::-;18178:4;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18012:419;;;:::o;18437:::-;18603:4;18641:2;18630:9;18626:18;18618:26;;18690:9;18684:4;18680:20;18676:1;18665:9;18661:17;18654:47;18718:131;18844:4;18718:131;:::i;:::-;18710:139;;18437:419;;;:::o;18862:::-;19028:4;19066:2;19055:9;19051:18;19043:26;;19115:9;19109:4;19105:20;19101:1;19090:9;19086:17;19079:47;19143:131;19269:4;19143:131;:::i;:::-;19135:139;;18862:419;;;:::o;19287:::-;19453:4;19491:2;19480:9;19476:18;19468:26;;19540:9;19534:4;19530:20;19526:1;19515:9;19511:17;19504:47;19568:131;19694:4;19568:131;:::i;:::-;19560:139;;19287:419;;;:::o;19712:::-;19878:4;19916:2;19905:9;19901:18;19893:26;;19965:9;19959:4;19955:20;19951:1;19940:9;19936:17;19929:47;19993:131;20119:4;19993:131;:::i;:::-;19985:139;;19712:419;;;:::o;20137:::-;20303:4;20341:2;20330:9;20326:18;20318:26;;20390:9;20384:4;20380:20;20376:1;20365:9;20361:17;20354:47;20418:131;20544:4;20418:131;:::i;:::-;20410:139;;20137:419;;;:::o;20562:::-;20728:4;20766:2;20755:9;20751:18;20743:26;;20815:9;20809:4;20805:20;20801:1;20790:9;20786:17;20779:47;20843:131;20969:4;20843:131;:::i;:::-;20835:139;;20562:419;;;:::o;20987:::-;21153:4;21191:2;21180:9;21176:18;21168:26;;21240:9;21234:4;21230:20;21226:1;21215:9;21211:17;21204:47;21268:131;21394:4;21268:131;:::i;:::-;21260:139;;20987:419;;;:::o;21412:::-;21578:4;21616:2;21605:9;21601:18;21593:26;;21665:9;21659:4;21655:20;21651:1;21640:9;21636:17;21629:47;21693:131;21819:4;21693:131;:::i;:::-;21685:139;;21412:419;;;:::o;21837:::-;22003:4;22041:2;22030:9;22026:18;22018:26;;22090:9;22084:4;22080:20;22076:1;22065:9;22061:17;22054:47;22118:131;22244:4;22118:131;:::i;:::-;22110:139;;21837:419;;;:::o;22262:222::-;22355:4;22393:2;22382:9;22378:18;22370:26;;22406:71;22474:1;22463:9;22459:17;22450:6;22406:71;:::i;:::-;22262:222;;;;:::o;22490:831::-;22753:4;22791:3;22780:9;22776:19;22768:27;;22805:71;22873:1;22862:9;22858:17;22849:6;22805:71;:::i;:::-;22886:80;22962:2;22951:9;22947:18;22938:6;22886:80;:::i;:::-;23013:9;23007:4;23003:20;22998:2;22987:9;22983:18;22976:48;23041:108;23144:4;23135:6;23041:108;:::i;:::-;23033:116;;23159:72;23227:2;23216:9;23212:18;23203:6;23159:72;:::i;:::-;23241:73;23309:3;23298:9;23294:19;23285:6;23241:73;:::i;:::-;22490:831;;;;;;;;:::o;23327:214::-;23416:4;23454:2;23443:9;23439:18;23431:26;;23467:67;23531:1;23520:9;23516:17;23507:6;23467:67;:::i;:::-;23327:214;;;;:::o;23628:132::-;23695:4;23718:3;23710:11;;23748:4;23743:3;23739:14;23731:22;;23628:132;;;:::o;23766:114::-;23833:6;23867:5;23861:12;23851:22;;23766:114;;;:::o;23886:99::-;23938:6;23972:5;23966:12;23956:22;;23886:99;;;:::o;23991:113::-;24061:4;24093;24088:3;24084:14;24076:22;;23991:113;;;:::o;24110:184::-;24209:11;24243:6;24238:3;24231:19;24283:4;24278:3;24274:14;24259:29;;24110:184;;;;:::o;24300:169::-;24384:11;24418:6;24413:3;24406:19;24458:4;24453:3;24449:14;24434:29;;24300:169;;;;:::o;24475:305::-;24515:3;24534:20;24552:1;24534:20;:::i;:::-;24529:25;;24568:20;24586:1;24568:20;:::i;:::-;24563:25;;24722:1;24654:66;24650:74;24647:1;24644:81;24641:107;;;24728:18;;:::i;:::-;24641:107;24772:1;24769;24765:9;24758:16;;24475:305;;;;:::o;24786:185::-;24826:1;24843:20;24861:1;24843:20;:::i;:::-;24838:25;;24877:20;24895:1;24877:20;:::i;:::-;24872:25;;24916:1;24906:35;;24921:18;;:::i;:::-;24906:35;24963:1;24960;24956:9;24951:14;;24786:185;;;;:::o;24977:348::-;25017:7;25040:20;25058:1;25040:20;:::i;:::-;25035:25;;25074:20;25092:1;25074:20;:::i;:::-;25069:25;;25262:1;25194:66;25190:74;25187:1;25184:81;25179:1;25172:9;25165:17;25161:105;25158:131;;;25269:18;;:::i;:::-;25158:131;25317:1;25314;25310:9;25299:20;;24977:348;;;;:::o;25331:191::-;25371:4;25391:20;25409:1;25391:20;:::i;:::-;25386:25;;25425:20;25443:1;25425:20;:::i;:::-;25420:25;;25464:1;25461;25458:8;25455:34;;;25469:18;;:::i;:::-;25455:34;25514:1;25511;25507:9;25499:17;;25331:191;;;;:::o;25528:96::-;25565:7;25594:24;25612:5;25594:24;:::i;:::-;25583:35;;25528:96;;;:::o;25630:104::-;25675:7;25704:24;25722:5;25704:24;:::i;:::-;25693:35;;25630:104;;;:::o;25740:90::-;25774:7;25817:5;25810:13;25803:21;25792:32;;25740:90;;;:::o;25836:126::-;25873:7;25913:42;25906:5;25902:54;25891:65;;25836:126;;;:::o;25968:77::-;26005:7;26034:5;26023:16;;25968:77;;;:::o;26051:86::-;26086:7;26126:4;26119:5;26115:16;26104:27;;26051:86;;;:::o;26143:144::-;26211:9;26244:37;26275:5;26244:37;:::i;:::-;26231:50;;26143:144;;;:::o;26293:121::-;26351:9;26384:24;26402:5;26384:24;:::i;:::-;26371:37;;26293:121;;;:::o;26420:126::-;26470:9;26503:37;26534:5;26503:37;:::i;:::-;26490:50;;26420:126;;;:::o;26552:113::-;26602:9;26635:24;26653:5;26635:24;:::i;:::-;26622:37;;26552:113;;;:::o;26671:307::-;26739:1;26749:113;26763:6;26760:1;26757:13;26749:113;;;26848:1;26843:3;26839:11;26833:18;26829:1;26824:3;26820:11;26813:39;26785:2;26782:1;26778:10;26773:15;;26749:113;;;26880:6;26877:1;26874:13;26871:101;;;26960:1;26951:6;26946:3;26942:16;26935:27;26871:101;26720:258;26671:307;;;:::o;26984:180::-;27032:77;27029:1;27022:88;27129:4;27126:1;27119:15;27153:4;27150:1;27143:15;27170:180;27218:77;27215:1;27208:88;27315:4;27312:1;27305:15;27339:4;27336:1;27329:15;27356:180;27404:77;27401:1;27394:88;27501:4;27498:1;27491:15;27525:4;27522:1;27515:15;27542:180;27590:77;27587:1;27580:88;27687:4;27684:1;27677:15;27711:4;27708:1;27701:15;27851:117;27960:1;27957;27950:12;27974:102;28015:6;28066:2;28062:7;28057:2;28050:5;28046:14;28042:28;28032:38;;27974:102;;;:::o;28082:222::-;28222:34;28218:1;28210:6;28206:14;28199:58;28291:5;28286:2;28278:6;28274:15;28267:30;28082:222;:::o;28310:221::-;28450:34;28446:1;28438:6;28434:14;28427:58;28519:4;28514:2;28506:6;28502:15;28495:29;28310:221;:::o;28537:174::-;28677:26;28673:1;28665:6;28661:14;28654:50;28537:174;:::o;28717:177::-;28857:29;28853:1;28845:6;28841:14;28834:53;28717:177;:::o;28900:171::-;29040:23;29036:1;29028:6;29024:14;29017:47;28900:171;:::o;29077:181::-;29217:33;29213:1;29205:6;29201:14;29194:57;29077:181;:::o;29264:220::-;29404:34;29400:1;29392:6;29388:14;29381:58;29473:3;29468:2;29460:6;29456:15;29449:28;29264:220;:::o;29490:172::-;29630:24;29626:1;29618:6;29614:14;29607:48;29490:172;:::o;29668:182::-;29808:34;29804:1;29796:6;29792:14;29785:58;29668:182;:::o;29856:228::-;29996:34;29992:1;29984:6;29980:14;29973:58;30065:11;30060:2;30052:6;30048:15;30041:36;29856:228;:::o;30090:224::-;30230:34;30226:1;30218:6;30214:14;30207:58;30299:7;30294:2;30286:6;30282:15;30275:32;30090:224;:::o;30320:160::-;30460:12;30456:1;30448:6;30444:14;30437:36;30320:160;:::o;30486:223::-;30626:34;30622:1;30614:6;30610:14;30603:58;30695:6;30690:2;30682:6;30678:15;30671:31;30486:223;:::o;30715:225::-;30855:34;30851:1;30843:6;30839:14;30832:58;30924:8;30919:2;30911:6;30907:15;30900:33;30715:225;:::o;30946:122::-;31019:24;31037:5;31019:24;:::i;:::-;31012:5;31009:35;30999:63;;31058:1;31055;31048:12;30999:63;30946:122;:::o;31074:138::-;31155:32;31181:5;31155:32;:::i;:::-;31148:5;31145:43;31135:71;;31202:1;31199;31192:12;31135:71;31074:138;:::o;31218:116::-;31288:21;31303:5;31288:21;:::i;:::-;31281:5;31278:32;31268:60;;31324:1;31321;31314:12;31268:60;31218:116;:::o;31340:122::-;31413:24;31431:5;31413:24;:::i;:::-;31406:5;31403:35;31393:63;;31452:1;31449;31442:12;31393:63;31340:122;:::o

Swarm Source

ipfs://37b0d16f8ec42fd251f91a181408760fd1dcf4f955d197adc78ac035bbc851c4
Block Transaction Difficulty Gas Used Reward
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.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.