Contract 0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f5

 

Contract Overview

Balance:
0.001340101090273438 BNB

BNB Value:
$0.46 (@ $340.78/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8ce12d54d71e60a2cec8c82b3b21ad73fdb596eac02d33968e762a63409cad96Approve112832432021-09-27 15:48:202 hrs 6 mins ago0x09fcbecae1a9d912c2d02dc901a6e7ee9a097306 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xb8796d6de7a540cfb2e7309c67d741e9ac3e7e9d6fcdadd17370c36463a75f2aApprove112822392021-09-27 14:58:082 hrs 56 mins ago0x4c67d546a2ef9fd75ad84837fd04b8683b068fe8 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.00026715
0x351723a301afa906059cb683d49f5c8fe8d283c6df7c2b5690c5655f7752c2d3Approve112772402021-09-27 10:46:037 hrs 9 mins ago0x5a7a99915eefae12d71554a84891afcd9b9f617e IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xde7d0bf9a18d5d1103549022895d4a6d88d9b411b8b7a56f9b3f4ff89a8e6d34Approve112759202021-09-27 9:39:408 hrs 15 mins ago0x582f78281558c3487b6f2f639e7c5cce1a4ebf1c IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0x0989fdb648468b7d1d84a934e3784bbe08ce04392aaa30eee6bd92fdb98c8340Transfer112694892021-09-27 4:14:2713 hrs 40 mins ago0xfdfd5885f2a8031cac6bb7112abab48e68ef3a8b IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000234085
0x14ec5366275d20328a6834e9ae54db530f4791dad64e6b52d37a9634d2862325Approve112682352021-09-27 3:10:5414 hrs 44 mins ago0x2f4e40e68aa2ec408574ef18b64ceab694c5326b IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xa697415ab790b6ab296d41b26379467728b8ff6d746812e861d9e57a069255b0Transfer112670222021-09-27 2:06:4215 hrs 48 mins ago0xed94dc1a1494907c582bca1ed687564aaafeaa86 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000234085
0xb66e0c6ff0efc554923903a8e7814c0644e3d7294001fa0534d122636c414329Transfer112668712021-09-27 1:59:0815 hrs 55 mins ago0x911c7366f5bc52ad39b8863a4fb4ab856a404e58 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000309085
0x5168d80f7f48a9492889131652f59ce635ff1af8230d435f1f92c06c454eb107Approve112608142021-09-26 20:54:1121 hrs ago0x5b72c7708541ee8a40c02060b51bee59a5583a4e IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xea5ad70c3a3e25409d33eb85f6865536b6c0564f437452e50a22c303e4efc67fApprove112600872021-09-26 20:17:2521 hrs 37 mins ago0x9e96317c322b6e4ee4595b41c4bf8d0d9705f875 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0x4b7bc0fcb6d8de9c699a13579182c8ef3af78f1512a5ab082e8f502e60006146Approve112555722021-09-26 16:29:591 day 1 hr ago0x593adf6ba07675e537c19aadb13d6069c6d10bbe IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xb1a642971f54070829755663b5e359a80842bc5570900e9fc1c7e6450c4480aeTransfer112526762021-09-26 14:03:321 day 3 hrs ago0x36493edcd544231cbd741dbe20a02fa6cf907e0b IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000309085
0x783643c143aaafa3744bcdb7ff9284eed17956559702b6b7a4e0d3a746328233Approve112523922021-09-26 13:49:201 day 4 hrs ago0xcacd02b9f72e0fe7fa9621f43dbee73c47fd2730 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0x1e2a909d251c934f5ef0e13861ec358448237633075885c73d311fc21838ad5cApprove112501012021-09-26 11:53:531 day 6 hrs ago0xfb69f5c11ca5d1650c5f5db29861e9da24107556 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.00026715
0x3a7a57be8b0950e6646e7cb8c5b79ce6d886510caadf25a480fa5978ece342d6Transfer112496442021-09-26 11:31:001 day 6 hrs ago0x1ebfc02cffdfc9fddd447898e69e52dc2159ea62 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000309085
0xc5fde89c378170c324fc9b0d110aa13ddadcb25f420d7a23fbc58dfc701e22aaApprove112485252021-09-26 10:34:111 day 7 hrs ago0x29ca87c63a878a6ad3cfa86c2aebb12729b9055f IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xa7039b9d43581bd17d077db3529ec08a951bc352ed5b1eae82c8959771b0d228Approve112485102021-09-26 10:33:261 day 7 hrs ago0xa494b9ebd5e16e34dcb6fe068fa28cde2ed8e9db IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xf53f7854fd5ab35ed4a0915d89a870f7a12a5ddc25e70a23ca3b28ea449c44bdApprove112457742021-09-26 8:15:481 day 9 hrs ago0x434eaa43751e17f1488c077d28c22e7959eea4ab IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0x502dbc457ac1f811ab3e13e2867cd10e00b33b080cc109673356a5d59f14f247Approve112422382021-09-26 5:16:511 day 12 hrs ago0xfb264845cb6aa89d663441a3b75260dd78eb8266 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xe698f5cf8c2d3e34bd40cf45398ae73527e79147b6e72efffc2b26e1541ab72cApprove112414362021-09-26 4:36:401 day 13 hrs ago0x571472eb90edaf589035162cb8674fdbe0fe1b67 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0x20bbb96351ff803ffeca7b30a6f9570845526d338f16fa75f561b3bacc7cdc25Approve112402792021-09-26 3:38:201 day 14 hrs ago0x5e03900b28ac9ce70425ae0383ad9d69ae341362 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0x6b9709e5d34a21e62eff3ff69638096773b32a081c4f78785d17acdcf04452e3Approve112391542021-09-26 2:41:161 day 15 hrs ago0x12f199a13f7e026f1a88d2edd91abe1ed805ca09 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000311675
0x3e0fd08f8ccc6abca0e46c3613200c6b741be47ea0b5ee4e68d435621b8f3a6fApprove112360202021-09-26 0:04:291 day 17 hrs ago0x8cac123547768dd5049ee3c897adb75130414322 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
0xf0680a692ad97db2a18e27d8b26e9a7f0e6631a19af26d0ff1a1ab74fdda0c99Approve112295652021-09-25 18:41:331 day 23 hrs ago0x7df4f3ae83ca900ab0f1f3c1a7486503544692b6 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.00026715
0x8c27de8e13b80944f62dc265008019eb116a103226b90bd39330757c3265b46dApprove112245102021-09-25 14:26:042 days 3 hrs ago0x4998571aa91ff48f3fcc8231e5284d07c9551bb7 IN  0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50 BNB0.000222625
[ Download CSV Export 
Latest 3 internal transactions
Parent Txn Hash Block From To Value
0xd3f57ae348bbe056eb53160850375ea56c37cfda22f1a54c23191b3f06b093ec106617932021-09-05 22:27:1921 days 19 hrs ago PancakeSwap: Router v2 0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50.001340101090273438 BNB
0xd3f57ae348bbe056eb53160850375ea56c37cfda22f1a54c23191b3f06b093ec106617932021-09-05 22:27:1921 days 19 hrs ago 0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f5 PancakeSwap: Router v20.339275632138548557 BNB
0xd3f57ae348bbe056eb53160850375ea56c37cfda22f1a54c23191b3f06b093ec106617932021-09-05 22:27:1921 days 19 hrs ago PancakeSwap: Router v2 0x0efe961c733ff46ce34c56a73eba0c6a0e18e0f50.339275632138548557 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SwappToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface GuardianInterface {
    function checkTransfer(address sender, address recipient, uint256 amount, uint256 senderBalance, uint256 recipientBalance) 
    external returns (uint256 sBalance, uint256 rBalance, uint256 taxAmount, uint256 recipientAmount);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    
    mapping(address => bool) public minters;
    mapping(address => bool) public pausers;
    mapping (address => bool) private _isExcludedFromFee;
    uint256 public liquidityFee = 200; // 2.0%
    uint256 private _previousLiquidityFee = liquidityFee;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    uint256 public maxTxAmount = 5000000 ether;
    uint256 private _numTokensSellToAddToLiquidity = 25000 ether; 
    bool public paused = false;
    
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public guardian;
    address public taxer;
    address public wallet;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    modifier onlyMinter() {
        require(minters[_msgSender()], "Caller is not the minter");
        _;
    }
    
    modifier onlyWallet() {
        require(msg.sender == wallet, "Only multisig wallet can perfrom this action");
        _;
    }

    modifier whenNotPaused() {
        require(!paused, "Contract is paused");
        _;
    }
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);

    constructor() {
        _name = 'Swapp Token';
        _symbol = 'SWAPP';
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        
        wallet = 0xcF00d2403C08Ef845b6C9CB215D4FaAd3E18C71e;
    }

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }
    
    /**
     * @dev Creates `amount` new tokens for `to`.
     *
     * See {ERC20-_mint}.
     */
    function mint(address to, uint256 amount) public virtual onlyMinter {
        _mint(to, amount);
    }
    
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(sender != owner() && recipient != owner())
            require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        
        _handleLiquidity(sender);

        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        
        if (guardian != address(0)) {
            (uint256 sBalance, uint256 rBalance, uint256 taxAmount, uint256 recipientAmount) 
                = GuardianInterface(guardian).checkTransfer(sender, recipient, amount, _balances[sender], _balances[recipient]);
            
            _balances[sender] = sBalance;
            uint256 fee = takeLiquidityFee(sender, recipient, amount);
            _balances[recipient] = rBalance - fee;
            recipientAmount -= fee;
            
            if (taxAmount > 0) {
                _balances[taxer] += taxAmount;
                emit Transfer(sender, taxer, taxAmount);
            }
            emit Transfer(sender, recipient, recipientAmount);
        } else {
            uint256 fee = takeLiquidityFee(sender, recipient, amount);
            amount -= fee;
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
        }

        _afterTokenTransfer(sender, recipient, amount);
    }

    function takeLiquidityFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint fee = 0;
        //if any account belongs to _isExcludedFromFee account then do not take fee
        if(!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
            fee = calculateLiquidityFee(amount);
            if (fee > 0) {
                _balances[address(this)] += fee;
                emit Transfer(sender, address(this), fee);
            }
        }
        return fee;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual whenNotPaused {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
    
    function _handleLiquidity(address sender) internal {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        
        if(contractTokenBalance >= maxTxAmount) {
            contractTokenBalance = maxTxAmount;
        }
        
        bool overMinTokenBalance = contractTokenBalance >= _numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            sender != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = _numTokensSellToAddToLiquidity;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
    }
    
    function handleLiquidity() public onlyOwner {
        _handleLiquidity(msg.sender);
    }
    
    //to recieve from uniswapV2Router when swaping
    receive() external payable {}
    
    function excludeFromFee(address account) public onlyWallet {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyWallet {
        _isExcludedFromFee[account] = false;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    // must be in bases point ( 1,5% = 150 bp)
    function setLiquidityFeePercent(uint256 _liquidityFee) external onlyWallet {
        liquidityFee = _liquidityFee;
    }
    
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyWallet {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
    function setMaxTxAmount(uint256 amount) external onlyWallet {
        maxTxAmount = amount;
    }
    
    function setNumTokensSellToAddToLiquidity(uint256 amount) external onlyWallet {
        _numTokensSellToAddToLiquidity = amount;
    }
    
    function getTokens(address to, address tokenAddress) external onlyWallet {
      uint256 balance = IERC20(tokenAddress).balanceOf(address(this));
      if (balance > 0) {
        IERC20(tokenAddress).transfer(to, balance);
      }
    }
    
    function getCurrency(uint256 amount) external onlyWallet {
        uint256 balance = address(this).balance;
        require(balance >= amount, 'Not enough funds');
        address to = owner();
        payable(to).transfer(amount);
    }
    
    function addMinter(address minter) external onlyWallet {
        minters[minter] = true;
    }
    
    function deleteMinter(address minter) external onlyWallet {
        minters[minter] = false;
    }
    
    function addPauser(address pauser) external onlyWallet {
        pausers[pauser] = true;
    }
    
    function deletePauser(address pauser) external onlyWallet {
        pausers[pauser] = false;
    }
    
    function setGuardian(address _guardian) external onlyWallet {
        guardian = _guardian;
    }

    function setTaxer(address _taxer) external onlyWallet {
        taxer = _taxer;
    }
    
    function pause(bool _paused) external {
        require(msg.sender == wallet || pausers[msg.sender], "Only multisig wallet or pauser can perfrom this action");
        paused = _paused;
    }
    
    function calculateLiquidityFee(uint256 _amount) internal view returns (uint256) {
        return _amount * liquidityFee / 10**4;
    }
    
    function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance / 2;
        uint256 otherHalf = contractTokenBalance - half;

        // capture the contract's current network base currency balance.
        // this is so that we can capture exactly the amount of network base currency that the
        // swap creates, and not make the liquidity event include any network base currency that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for network base currency
        swapTokensForBaseCurrency(half);

        // how much network base currency did we just swap into?
        uint256 newBalance = address(this).balance - initialBalance;

        // add liquidity to dex
        addLiquidity(otherHalf, newBalance);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForBaseCurrency(uint256 tokenAmount) internal {
        // generate the uniswap pair path of token -> wrapped base currency
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"minter","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pauser","type":"address"}],"name":"addPauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"deleteMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pauser","type":"address"}],"name":"deletePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"handleLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pausers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxer","type":"address"}],"name":"setTaxer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260c86009819055600a55600b805461ff0019166101001790556a0422ca8b0a00a425000000600c5569054b40b1f852bda00000600d55600e805460ff191690553480156200005157600080fd5b506200005d33620002e9565b60408051808201909152600b8082526a29bbb0b838102a37b5b2b760a91b6020909201918252620000919160049162000339565b5060408051808201909152600580825264053574150560dc1b6020909201918252620000be918162000339565b50600160086000620000d86000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600883528190208054909316600117909255815163c45a015560e01b815291517310ed43c718714eb63d5aa57b78b54704e256024e92839263c45a015592600480840193829003018186803b1580156200016057600080fd5b505afa15801562000175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019b9190620003df565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f9190620003df565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200026857600080fd5b505af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a39190620003df565b6001600160601b0319606091821b811660a05291901b16608052601080546001600160a01b03191673cf00d2403c08ef845b6c9cb215d4faad3e18c71e1790556200044c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805462000347906200040f565b90600052602060002090601f0160209004810192826200036b5760008555620003b6565b82601f106200038657805160ff1916838001178555620003b6565b82800160010185558215620003b6579182015b82811115620003b657825182559160200191906001019062000399565b50620003c4929150620003c8565b5090565b5b80821115620003c45760008155600101620003c9565b600060208284031215620003f1578081fd5b81516001600160a01b038116811462000408578182fd5b9392505050565b600181811c908216806200042457607f821691505b602082108114156200044657634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c6123c7620004a2600039600081816104920152611a8601526000818161032601528181611d0401528181611dda01528181611e1601528181611e900152611eb701526123c76000f3fe60806040526004361061026b5760003560e01c806380f51c1211610144578063a9059cbb116100b6578063ea2f0b371161007a578063ea2f0b37146107bb578063ec28438a146107db578063f0f165af146107fb578063f2fde38b1461081b578063f46eccc41461083b578063ffbf8a141461086b57600080fd5b8063a9059cbb146106f5578063c49b9a8014610715578063cdf9b77e14610735578063d82f94a314610755578063dd62ed3e1461077557600080fd5b80638da5cb5b116101085780638da5cb5b1461064c5780638ee88c531461066a57806395d89b411461068a57806398118cb41461069f578063983b2d56146106b5578063a457c2d7146106d557600080fd5b806380f51c12146105a657806382dc1ec4146105d65780638a0dac4a146105f65780638c0b5e22146106165780638d0e8e1d1461062c57600080fd5b806342966c68116101dd578063521eb273116101a1578063521eb273146104d35780635342acb4146104f35780635c975abb1461052c57806370a0823114610546578063715018a61461057c57806380a179d91461059157600080fd5b806342966c681461041b578063437823ec1461043b578063452a93201461045b57806349bd5a5e146104805780634a74bb02146104b457600080fd5b806317c81c1d1161022f57806317c81c1d1461036057806318160ddd1461038057806323b872dd1461039f578063313ce567146103bf57806339509351146103db57806340c10f19146103fb57600080fd5b806302329a291461027757806306fdde0314610299578063095ea7b3146102c45780630d2f0b2e146102f45780631694505e1461031457600080fd5b3661027257005b600080fd5b34801561028357600080fd5b50610297610292366004612081565b61088b565b005b3480156102a557600080fd5b506102ae610936565b6040516102bb919061214b565b60405180910390f35b3480156102d057600080fd5b506102e46102df366004612056565b6109c8565b60405190151581526020016102bb565b34801561030057600080fd5b5061029761030f366004611f9f565b6109de565b34801561032057600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102bb565b34801561036c57600080fd5b50600f54610348906001600160a01b031681565b34801561038c57600080fd5b506003545b6040519081526020016102bb565b3480156103ab57600080fd5b506102e46103ba366004612016565b610a2a565b3480156103cb57600080fd5b50604051601281526020016102bb565b3480156103e757600080fd5b506102e46103f6366004612056565b610ad4565b34801561040757600080fd5b50610297610416366004612056565b610b10565b34801561042757600080fd5b506102976104363660046120b9565b610b7d565b34801561044757600080fd5b50610297610456366004611f9f565b610b8a565b34801561046757600080fd5b50600e546103489061010090046001600160a01b031681565b34801561048c57600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b3480156104c057600080fd5b50600b546102e490610100900460ff1681565b3480156104df57600080fd5b50601054610348906001600160a01b031681565b3480156104ff57600080fd5b506102e461050e366004611f9f565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561053857600080fd5b50600e546102e49060ff1681565b34801561055257600080fd5b50610391610561366004611f9f565b6001600160a01b031660009081526001602052604090205490565b34801561058857600080fd5b50610297610bd8565b34801561059d57600080fd5b50610297610c0e565b3480156105b257600080fd5b506102e46105c1366004611f9f565b60076020526000908152604090205460ff1681565b3480156105e257600080fd5b506102976105f1366004611f9f565b610c41565b34801561060257600080fd5b50610297610611366004611f9f565b610c8f565b34801561062257600080fd5b50610391600c5481565b34801561063857600080fd5b50610297610647366004611fde565b610ce1565b34801561065857600080fd5b506000546001600160a01b0316610348565b34801561067657600080fd5b506102976106853660046120b9565b610e16565b34801561069657600080fd5b506102ae610e45565b3480156106ab57600080fd5b5061039160095481565b3480156106c157600080fd5b506102976106d0366004611f9f565b610e54565b3480156106e157600080fd5b506102e46106f0366004612056565b610ea2565b34801561070157600080fd5b506102e4610710366004612056565b610f3b565b34801561072157600080fd5b50610297610730366004612081565b610f48565b34801561074157600080fd5b506102976107503660046120b9565b610fc6565b34801561076157600080fd5b50610297610770366004611f9f565b611070565b34801561078157600080fd5b50610391610790366004611fde565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156107c757600080fd5b506102976107d6366004611f9f565b6110bb565b3480156107e757600080fd5b506102976107f63660046120b9565b611106565b34801561080757600080fd5b506102976108163660046120b9565b611135565b34801561082757600080fd5b50610297610836366004611f9f565b611164565b34801561084757600080fd5b506102e4610856366004611f9f565b60066020526000908152604090205460ff1681565b34801561087757600080fd5b50610297610886366004611f9f565b6111fc565b6010546001600160a01b03163314806108b357503360009081526007602052604090205460ff165b6109235760405162461bcd60e51b815260206004820152603660248201527f4f6e6c79206d756c74697369672077616c6c6574206f7220706175736572206360448201527530b7103832b9333937b6903a3434b99030b1ba34b7b760511b60648201526084015b60405180910390fd5b600e805460ff1916911515919091179055565b606060048054610945906122fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610971906122fd565b80156109be5780601f10610993576101008083540402835291602001916109be565b820191906000526020600020905b8154815290600101906020018083116109a157829003601f168201915b5050505050905090565b60006109d5338484611247565b50600192915050565b6010546001600160a01b03163314610a085760405162461bcd60e51b815260040161091a9061219e565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a3784848461136b565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610abc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161091a565b610ac98533858403611247565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916109d5918590610b0b90869061228f565b611247565b3360009081526006602052604090205460ff16610b6f5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420746865206d696e7465720000000000000000604482015260640161091a565b610b7982826117d7565b5050565b610b8733826118b0565b50565b6010546001600160a01b03163314610bb45760405162461bcd60e51b815260040161091a9061219e565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314610c025760405162461bcd60e51b815260040161091a906121ea565b610c0c60006119f8565b565b6000546001600160a01b03163314610c385760405162461bcd60e51b815260040161091a906121ea565b610c0c33611a48565b6010546001600160a01b03163314610c6b5760405162461bcd60e51b815260040161091a9061219e565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6010546001600160a01b03163314610cb95760405162461bcd60e51b815260040161091a9061219e565b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6010546001600160a01b03163314610d0b5760405162461bcd60e51b815260040161091a9061219e565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610d4d57600080fd5b505afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906120d1565b90508015610e115760405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb90604401602060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0f919061209d565b505b505050565b6010546001600160a01b03163314610e405760405162461bcd60e51b815260040161091a9061219e565b600955565b606060058054610945906122fd565b6010546001600160a01b03163314610e7e5760405162461bcd60e51b815260040161091a9061219e565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610f245760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161091a565b610f313385858403611247565b5060019392505050565b60006109d533848461136b565b6010546001600160a01b03163314610f725760405162461bcd60e51b815260040161091a9061219e565b600b80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610fbb90831515815260200190565b60405180910390a150565b6010546001600160a01b03163314610ff05760405162461bcd60e51b815260040161091a9061219e565b47818110156110345760405162461bcd60e51b815260206004820152601060248201526f4e6f7420656e6f7567682066756e647360801b604482015260640161091a565b600080546040516001600160a01b039091169182916108fc86150291869190818181858888f19350505050158015610e0f573d6000803e3d6000fd5b6010546001600160a01b0316331461109a5760405162461bcd60e51b815260040161091a9061219e565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6010546001600160a01b031633146110e55760405162461bcd60e51b815260040161091a9061219e565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6010546001600160a01b031633146111305760405162461bcd60e51b815260040161091a9061219e565b600c55565b6010546001600160a01b0316331461115f5760405162461bcd60e51b815260040161091a9061219e565b600d55565b6000546001600160a01b0316331461118e5760405162461bcd60e51b815260040161091a906121ea565b6001600160a01b0381166111f35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091a565b610b87816119f8565b6010546001600160a01b031633146112265760405162461bcd60e51b815260040161091a9061219e565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b0383166112a95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161091a565b6001600160a01b03821661130a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161091a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161091a565b6001600160a01b0382166114315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161091a565b61143c838383611ae1565b6001600160a01b038316600090815260016020526040902054818110156114b45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161091a565b6000546001600160a01b038581169116148015906114e057506000546001600160a01b03848116911614155b1561154857600c548211156115485760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161091a565b61155184611a48565b6001600160a01b0380851660009081526001602052604090208383039055600e546101009004161561174957600e546001600160a01b0385811660008181526001602052604080822054888516808452828420549251631ebc758b60e11b815260048101959095526024850152604484018890526064840152608483015292839283928392610100900490911690633d78eb169060a401608060405180830381600087803b15801561160257600080fd5b505af1158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190612116565b6001600160a01b038c1660009081526001602052604081208590559397509195509350915061166a898989611b29565b905061167681856122e6565b6001600160a01b03891660009081526001602052604090205561169981836122e6565b9150821561170457600f546001600160a01b0316600090815260016020526040812080548592906116cb90849061228f565b9091555050600f546040518481526001600160a01b03918216918b16906000805160206123728339815191529060200160405180910390a35b876001600160a01b0316896001600160a01b03166000805160206123728339815191528460405161173791815260200190565b60405180910390a35050505050610e0f565b6000611756858585611b29565b905061176281846122e6565b6001600160a01b03851660009081526001602052604081208054929550859290919061178f90849061228f565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612372833981519152856040516117c991815260200190565b60405180910390a350610e0f565b6001600160a01b03821661182d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161091a565b61183960008383611ae1565b806003600082825461184b919061228f565b90915550506001600160a01b0382166000908152600160205260408120805483929061187890849061228f565b90915550506040518181526001600160a01b038316906000906000805160206123728339815191529060200160405180910390a35050565b6001600160a01b0382166119105760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161091a565b61191c82600083611ae1565b6001600160a01b038216600090815260016020526040902054818110156119905760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161091a565b6001600160a01b03831660009081526001602052604081208383039055600380548492906119bf9084906122e6565b90915550506040518281526000906001600160a01b038516906000805160206123728339815191529060200160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b30600090815260016020526040902054600c548110611a665750600c545b600d5481108015908190611a7d5750600b5460ff16155b8015611abb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b8015611ace5750600b54610100900460ff165b15610e1157600d549150610e1182611bde565b600e5460ff1615610e115760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604482015260640161091a565b6001600160a01b038316600090815260086020526040812054819060ff16158015611b6d57506001600160a01b03841660009081526008602052604090205460ff16155b15611bd657611b7b83611c7c565b90508015611bd6573060009081526001602052604081208054839290611ba290849061228f565b909155505060405181815230906001600160a01b038716906000805160206123728339815191529060200160405180910390a35b949350505050565b600b805460ff191660011790556000611bf86002836122a7565b90506000611c0682846122e6565b905047611c1283611c9f565b6000611c1e82476122e6565b9050611c2a8382611e8a565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050600b805460ff19169055505050565b600061271060095483611c8f91906122c7565b611c9991906122a7565b92915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5b57600080fd5b505afa158015611d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d939190611fc2565b81600181518110611db457634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611dff307f000000000000000000000000000000000000000000000000000000000000000084611247565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611e5490859060009086903090429060040161221f565b600060405180830381600087803b158015611e6e57600080fd5b505af1158015611e82573d6000803e3d6000fd5b505050505050565b611eb5307f000000000000000000000000000000000000000000000000000000000000000084611247565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080611efc6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611f5f57600080fd5b505af1158015611f73573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f9891906120e9565b5050505050565b600060208284031215611fb0578081fd5b8135611fbb8161234e565b9392505050565b600060208284031215611fd3578081fd5b8151611fbb8161234e565b60008060408385031215611ff0578081fd5b8235611ffb8161234e565b9150602083013561200b8161234e565b809150509250929050565b60008060006060848603121561202a578081fd5b83356120358161234e565b925060208401356120458161234e565b929592945050506040919091013590565b60008060408385031215612068578182fd5b82356120738161234e565b946020939093013593505050565b600060208284031215612092578081fd5b8135611fbb81612363565b6000602082840312156120ae578081fd5b8151611fbb81612363565b6000602082840312156120ca578081fd5b5035919050565b6000602082840312156120e2578081fd5b5051919050565b6000806000606084860312156120fd578283fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561212b578081fd5b505082516020840151604085015160609095015191969095509092509050565b6000602080835283518082850152825b818110156121775785810183015185820160400152820161215b565b818111156121885783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602c908201527f4f6e6c79206d756c74697369672077616c6c65742063616e2070657266726f6d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561226e5784516001600160a01b031683529383019391830191600101612249565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156122a2576122a2612338565b500190565b6000826122c257634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156122e1576122e1612338565b500290565b6000828210156122f8576122f8612338565b500390565b600181811c9082168061231157607f821691505b6020821081141561233257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b8757600080fd5b8015158114610b8757600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220189f15fcf6d9d468312358064a5cf1b4fb6ca83464b96935f31788e8ed30386d64736f6c63430008040033

Deployed ByteCode Sourcemap

8587:20202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26291:194;;;;;;;;;;-1:-1:-1;26291:194:0;;;;;:::i;:::-;;:::i;:::-;;10952:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13119:169;;;;;;;;;;-1:-1:-1;13119:169:0;;;;;:::i;:::-;;:::i;:::-;;;5148:14:1;;5141:22;5123:41;;5111:2;5096:18;13119:169:0;5078:92:1;26192:87:0;;;;;;;;;;-1:-1:-1;26192:87:0;;;;;:::i;:::-;;:::i;9388:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3524:32:1;;;3506:51;;3494:2;3479:18;9388:51:0;3461:102:1;9521:20:0;;;;;;;;;;-1:-1:-1;9521:20:0;;;;-1:-1:-1;;;;;9521:20:0;;;12072:108;;;;;;;;;;-1:-1:-1;12160:12:0;;12072:108;;;13226:25:1;;;13214:2;13199:18;12072:108:0;13181:76:1;13770:492:0;;;;;;;;;;-1:-1:-1;13770:492:0;;;;;:::i;:::-;;:::i;11914:93::-;;;;;;;;;;-1:-1:-1;11914:93:0;;11997:2;14716:36:1;;14704:2;14689:18;11914:93:0;14671:87:1;:215:0;;;;;;;;;;-1:-1:-1;14671:215:0;;;;;:::i;:::-;;:::i;15918:104::-;;;;;;;;;;-1:-1:-1;15918:104:0;;;;;:::i;:::-;;:::i;16142:91::-;;;;;;;;;;-1:-1:-1;16142:91:0;;;;;:::i;:::-;;:::i;24131:112::-;;;;;;;;;;-1:-1:-1;24131:112:0;;;;;:::i;:::-;;:::i;9491:23::-;;;;;;;;;;-1:-1:-1;9491:23:0;;;;;;;-1:-1:-1;;;;;9491:23:0;;;9446:38;;;;;;;;;;;;;;;9179:40;;;;;;;;;;-1:-1:-1;9179:40:0;;;;;;;;;;;9548:21;;;;;;;;;;-1:-1:-1;9548:21:0;;;;-1:-1:-1;;;;;9548:21:0;;;24378:123;;;;;;;;;;-1:-1:-1;24378:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;24466:27:0;24442:4;24466:27;;;:18;:27;;;;;;;;;24378:123;9349:26;;;;;;;;;;-1:-1:-1;9349:26:0;;;;;;;;12243:127;;;;;;;;;;-1:-1:-1;12243:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12344:18:0;12317:7;12344:18;;;:9;:18;;;;;;;12243:127;5670:94;;;;;;;;;;;;;:::i;23935:91::-;;;;;;;;;;;;;:::i;8933:39::-;;;;;;;;;;-1:-1:-1;8933:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25865:96;;;;;;;;;;-1:-1:-1;25865:96:0;;;;;:::i;:::-;;:::i;26085:99::-;;;;;;;;;;-1:-1:-1;26085:99:0;;;;;:::i;:::-;;:::i;9232:42::-;;;;;;;;;;;;;;;;25138:241;;;;;;;;;;-1:-1:-1;25138:241:0;;;;;:::i;:::-;;:::i;5019:87::-;;;;;;;;;;-1:-1:-1;5065:7:0;5092:6;-1:-1:-1;;;;;5092:6:0;5019:87;;24561:122;;;;;;;;;;-1:-1:-1;24561:122:0;;;;;:::i;:::-;;:::i;11171:104::-;;;;;;;;;;;;;:::i;9038:33::-;;;;;;;;;;;;;;;;25645:96;;;;;;;;;;-1:-1:-1;25645:96:0;;;;;:::i;:::-;;:::i;15389:413::-;;;;;;;;;;-1:-1:-1;15389:413:0;;;;;:::i;:::-;;:::i;12583:175::-;;;;;;;;;;-1:-1:-1;12583:175:0;;;;;:::i;:::-;;:::i;24695:172::-;;;;;;;;;;-1:-1:-1;24695:172:0;;;;;:::i;:::-;;:::i;25391:242::-;;;;;;;;;;-1:-1:-1;25391:242:0;;;;;:::i;:::-;;:::i;25753:100::-;;;;;;;;;;-1:-1:-1;25753:100:0;;;;;:::i;:::-;;:::i;12821:151::-;;;;;;;;;;-1:-1:-1;12821:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;12937:18:0;;;12910:7;12937:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12821:151;24255:111;;;;;;;;;;-1:-1:-1;24255:111:0;;;;;:::i;:::-;;:::i;24879:99::-;;;;;;;;;;-1:-1:-1;24879:99:0;;;;;:::i;:::-;;:::i;24990:136::-;;;;;;;;;;-1:-1:-1;24990:136:0;;;;;:::i;:::-;;:::i;5919:192::-;;;;;;;;;;-1:-1:-1;5919:192:0;;;;;:::i;:::-;;:::i;8887:39::-;;;;;;;;;;-1:-1:-1;8887:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25973:100;;;;;;;;;;-1:-1:-1;25973:100:0;;;;;:::i;:::-;;:::i;26291:194::-;26362:6;;-1:-1:-1;;;;;26362:6:0;26348:10;:20;;:43;;-1:-1:-1;26380:10:0;26372:19;;;;:7;:19;;;;;;;;26348:43;26340:110;;;;-1:-1:-1;;;26340:110:0;;9001:2:1;26340:110:0;;;8983:21:1;9040:2;9020:18;;;9013:30;9079:34;9059:18;;;9052:62;-1:-1:-1;;;9130:18:1;;;9123:52;9192:19;;26340:110:0;;;;;;;;;26461:6;:16;;-1:-1:-1;;26461:16:0;;;;;;;;;;26291:194::o;10952:100::-;11006:13;11039:5;11032:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10952:100;:::o;13119:169::-;13202:4;13219:39;3975:10;13242:7;13251:6;13219:8;:39::i;:::-;-1:-1:-1;13276:4:0;13119:169;;;;:::o;26192:87::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;26257:5:::1;:14:::0;;-1:-1:-1;;;;;;26257:14:0::1;-1:-1:-1::0;;;;;26257:14:0;;;::::1;::::0;;;::::1;::::0;;26192:87::o;13770:492::-;13910:4;13927:36;13937:6;13945:9;13956:6;13927:9;:36::i;:::-;-1:-1:-1;;;;;14003:19:0;;13976:24;14003:19;;;:11;:19;;;;;;;;3975:10;14003:33;;;;;;;;14055:26;;;;14047:79;;;;-1:-1:-1;;;14047:79:0;;10186:2:1;14047:79:0;;;10168:21:1;10225:2;10205:18;;;10198:30;10264:34;10244:18;;;10237:62;-1:-1:-1;;;10315:18:1;;;10308:38;10363:19;;14047:79:0;10158:230:1;14047:79:0;14162:57;14171:6;3975:10;14212:6;14193:16;:25;14162:8;:57::i;:::-;-1:-1:-1;14250:4:0;;13770:492;-1:-1:-1;;;;13770:492:0:o;14671:215::-;3975:10;14759:4;14808:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14808:34:0;;;;;;;;;;14759:4;;14776:80;;14799:7;;14808:47;;14845:10;;14808:47;:::i;:::-;14776:8;:80::i;15918:104::-;3975:10;9745:21;;;;:7;:21;;;;;;;;9737:58;;;;-1:-1:-1;;;9737:58:0;;9424:2:1;9737:58:0;;;9406:21:1;9463:2;9443:18;;;9436:30;9502:26;9482:18;;;9475:54;9546:18;;9737:58:0;9396:174:1;9737:58:0;15997:17:::1;16003:2;16007:6;15997:5;:17::i;:::-;15918:104:::0;;:::o;16142:91::-;16198:27;3975:10;16218:6;16198:5;:27::i;:::-;16142:91;:::o;24131:112::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24201:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24201:34:0::1;24231:4;24201:34;::::0;;24131:112::o;5670:94::-;5065:7;5092:6;-1:-1:-1;;;;;5092:6:0;3975:10;5239:23;5231:68;;;;-1:-1:-1;;;5231:68:0;;;;;;;:::i;:::-;5735:21:::1;5753:1;5735:9;:21::i;:::-;5670:94::o:0;23935:91::-;5065:7;5092:6;-1:-1:-1;;;;;5092:6:0;3975:10;5239:23;5231:68;;;;-1:-1:-1;;;5231:68:0;;;;;;;:::i;:::-;23990:28:::1;24007:10;23990:16;:28::i;25865:96::-:0;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25931:15:0::1;;::::0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;25931:22:0::1;25949:4;25931:22;::::0;;25865:96::o;26085:99::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;26156:8:::1;:20:::0;;-1:-1:-1;;;;;26156:20:0;;::::1;;;-1:-1:-1::0;;;;;;26156:20:0;;::::1;::::0;;;::::1;::::0;;26085:99::o;25138:241::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;25238:45:::1;::::0;-1:-1:-1;;;25238:45:0;;25277:4:::1;25238:45;::::0;::::1;3506:51:1::0;25220:15:0::1;::::0;-1:-1:-1;;;;;25238:30:0;::::1;::::0;::::1;::::0;3479:18:1;;25238:45:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25220:63:::0;-1:-1:-1;25296:11:0;;25292:80:::1;;25320:42;::::0;-1:-1:-1;;;25320:42:0;;-1:-1:-1;;;;;4284:32:1;;;25320:42:0::1;::::0;::::1;4266:51:1::0;4333:18;;;4326:34;;;25320:29:0;::::1;::::0;::::1;::::0;4239:18:1;;25320:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25292:80;9948:1;25138:241:::0;;:::o;24561:122::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;24647:12:::1;:28:::0;24561:122::o;11171:104::-;11227:13;11260:7;11253:14;;;;;:::i;25645:96::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25711:15:0::1;;::::0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;25711:22:0::1;25729:4;25711:22;::::0;;25645:96::o;15389:413::-;3975:10;15482:4;15526:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15526:34:0;;;;;;;;;;15579:35;;;;15571:85;;;;-1:-1:-1;;;15571:85:0;;12516:2:1;15571:85:0;;;12498:21:1;12555:2;12535:18;;;12528:30;12594:34;12574:18;;;12567:62;-1:-1:-1;;;12645:18:1;;;12638:35;12690:19;;15571:85:0;12488:227:1;15571:85:0;15692:67;3975:10;15715:7;15743:15;15724:16;:34;15692:8;:67::i;:::-;-1:-1:-1;15790:4:0;;15389:413;-1:-1:-1;;;15389:413:0:o;12583:175::-;12669:4;12686:42;3975:10;12710:9;12721:6;12686:9;:42::i;24695:172::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;24773:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;24773:32:0;;::::1;;::::0;;24821:38:::1;::::0;::::1;::::0;::::1;::::0;24797:8;5148:14:1;5141:22;5123:41;;5111:2;5096:18;;5078:92;24821:38:0::1;;;;;;;;24695:172:::0;:::o;25391:242::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;25477:21:::1;25517:17:::0;;::::1;;25509:46;;;::::0;-1:-1:-1;;;25509:46:0;;8249:2:1;25509:46:0::1;::::0;::::1;8231:21:1::0;8288:2;8268:18;;;8261:30;-1:-1:-1;;;8307:18:1;;;8300:46;8363:18;;25509:46:0::1;8221:166:1::0;25509:46:0::1;25566:10;5092:6:::0;;25597:28:::1;::::0;-1:-1:-1;;;;;5092:6:0;;;;;;25597:28:::1;::::0;::::1;;::::0;;;;;25566:10;25597:28;;5092:6;25597:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;25753:100:::0;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25822:15:0::1;25840:5;25822:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;25822:23:0::1;::::0;;25753:100::o;24255:111::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24323:27:0::1;24353:5;24323:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;24323:35:0::1;::::0;;24255:111::o;24879:99::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;24950:11:::1;:20:::0;24879:99::o;24990:136::-;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;25079:30:::1;:39:::0;24990:136::o;5919:192::-;5065:7;5092:6;-1:-1:-1;;;;;5092:6:0;3975:10;5239:23;5231:68;;;;-1:-1:-1;;;5231:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6008:22:0;::::1;6000:73;;;::::0;-1:-1:-1;;;6000:73:0;;7439:2:1;6000:73:0::1;::::0;::::1;7421:21:1::0;7478:2;7458:18;;;7451:30;7517:34;7497:18;;;7490:62;-1:-1:-1;;;7568:18:1;;;7561:36;7614:19;;6000:73:0::1;7411:228:1::0;6000:73:0::1;6084:19;6094:8;6084:9;:19::i;25973:100::-:0;9882:6;;-1:-1:-1;;;;;9882:6:0;9868:10;:20;9860:77;;;;-1:-1:-1;;;9860:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26042:15:0::1;26060:5;26042:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;26042:23:0::1;::::0;;25973:100::o;21103:380::-;-1:-1:-1;;;;;21239:19:0;;21231:68;;;;-1:-1:-1;;;21231:68:0;;11764:2:1;21231:68:0;;;11746:21:1;11803:2;11783:18;;;11776:30;11842:34;11822:18;;;11815:62;-1:-1:-1;;;11893:18:1;;;11886:34;11937:19;;21231:68:0;11736:226:1;21231:68:0;-1:-1:-1;;;;;21318:21:0;;21310:68;;;;-1:-1:-1;;;21310:68:0;;7846:2:1;21310:68:0;;;7828:21:1;7885:2;7865:18;;;7858:30;7924:34;7904:18;;;7897:62;-1:-1:-1;;;7975:18:1;;;7968:32;8017:19;;21310:68:0;7818:224:1;21310:68:0;-1:-1:-1;;;;;21391:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21443:32;;13226:25:1;;;21443:32:0;;13199:18:1;21443:32:0;;;;;;;21103:380;;;:::o;16723:1792::-;-1:-1:-1;;;;;16863:20:0;;16855:70;;;;-1:-1:-1;;;16855:70:0;;11358:2:1;16855:70:0;;;11340:21:1;11397:2;11377:18;;;11370:30;11436:34;11416:18;;;11409:62;-1:-1:-1;;;11487:18:1;;;11480:35;11532:19;;16855:70:0;11330:227:1;16855:70:0;-1:-1:-1;;;;;16944:23:0;;16936:71;;;;-1:-1:-1;;;16936:71:0;;6219:2:1;16936:71:0;;;6201:21:1;6258:2;6238:18;;;6231:30;6297:34;6277:18;;;6270:62;-1:-1:-1;;;6348:18:1;;;6341:33;6391:19;;16936:71:0;6191:225:1;16936:71:0;17020:47;17041:6;17049:9;17060:6;17020:20;:47::i;:::-;-1:-1:-1;;;;;17112:17:0;;17088:21;17112:17;;;:9;:17;;;;;;17148:23;;;;17140:74;;;;-1:-1:-1;;;17140:74:0;;8594:2:1;17140:74:0;;;8576:21:1;8633:2;8613:18;;;8606:30;8672:34;8652:18;;;8645:62;-1:-1:-1;;;8723:18:1;;;8716:36;8769:19;;17140:74:0;8566:228:1;17140:74:0;5065:7;5092:6;-1:-1:-1;;;;;17228:17:0;;;5092:6;;17228:17;;;;:41;;-1:-1:-1;5065:7:0;5092:6;-1:-1:-1;;;;;17249:20:0;;;5092:6;;17249:20;;17228:41;17225:133;;;17302:11;;17292:6;:21;;17284:74;;;;-1:-1:-1;;;17284:74:0;;9777:2:1;17284:74:0;;;9759:21:1;9816:2;9796:18;;;9789:30;9855:34;9835:18;;;9828:62;-1:-1:-1;;;9906:18:1;;;9899:38;9954:19;;17284:74:0;9749:230:1;17284:74:0;17379:24;17396:6;17379:16;:24::i;:::-;-1:-1:-1;;;;;17441:17:0;;;;;;;:9;:17;;;;;17461:22;;;17441:42;;17519:8;;;;;;:22;17515:934;;17677:8;;-1:-1:-1;;;;;17728:17:0;;;17559:16;17728:17;;;17677:8;17728:17;;;;;;;17747:20;;;;;;;;;;17659:109;;-1:-1:-1;;;17659:109:0;;;;;3865:34:1;;;;3915:18;;;3908:43;3967:18;;;3960:34;;;4010:18;;;4003:34;4053:19;;;4046:35;17559:16:0;;;;;;;17677:8;;;;;;;17659:41;;3799:19:1;;17659:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17797:17:0;;;;;;:9;:17;;;;;:28;;;17558:210;;-1:-1:-1;17558:210:0;;-1:-1:-1;17558:210:0;-1:-1:-1;17558:210:0;-1:-1:-1;17854:43:0;17807:6;17879:9;17890:6;17854:16;:43::i;:::-;17840:57;-1:-1:-1;17935:14:0;17840:57;17935:8;:14;:::i;:::-;-1:-1:-1;;;;;17912:20:0;;;;;;:9;:20;;;;;:37;17964:22;17983:3;17964:22;;:::i;:::-;;-1:-1:-1;18019:13:0;;18015:141;;18063:5;;-1:-1:-1;;;;;18063:5:0;18053:16;;;;:9;:16;;;;;:29;;18073:9;;18053:16;:29;;18073:9;;18053:29;:::i;:::-;;;;-1:-1:-1;;18123:5:0;;18106:34;;13226:25:1;;;-1:-1:-1;;;;;18123:5:0;;;;18106:34;;;-1:-1:-1;;;;;;;;;;;18106:34:0;13214:2:1;13199:18;18106:34:0;;;;;;;18015:141;18192:9;-1:-1:-1;;;;;18175:44:0;18184:6;-1:-1:-1;;;;;18175:44:0;-1:-1:-1;;;;;;;;;;;18203:15:0;18175:44;;;;13226:25:1;;13214:2;13199:18;;13181:76;18175:44:0;;;;;;;;17515:934;;;;;18461:46;25138:241;17515:934;18252:11;18266:43;18283:6;18291:9;18302:6;18266:16;:43::i;:::-;18252:57;-1:-1:-1;18324:13:0;18252:57;18324:13;;:::i;:::-;-1:-1:-1;;;;;18352:20:0;;;;;;:9;:20;;;;;:30;;18324:13;;-1:-1:-1;18324:13:0;;18352:20;;;:30;;18324:13;;18352:30;:::i;:::-;;;;;;;;18419:9;-1:-1:-1;;;;;18402:35:0;18411:6;-1:-1:-1;;;;;18402:35:0;-1:-1:-1;;;;;;;;;;;18430:6:0;18402:35;;;;13226:25:1;;13214:2;13199:18;;13181:76;18402:35:0;;;;;;;;17515:934;18461:46;25138:241;19342:399;-1:-1:-1;;;;;19426:21:0;;19418:65;;;;-1:-1:-1;;;19418:65:0;;12922:2:1;19418:65:0;;;12904:21:1;12961:2;12941:18;;;12934:30;13000:33;12980:18;;;12973:61;13051:18;;19418:65:0;12894:181:1;19418:65:0;19496:49;19525:1;19529:7;19538:6;19496:20;:49::i;:::-;19574:6;19558:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;19591:18:0;;;;;;:9;:18;;;;;:28;;19613:6;;19591:18;:28;;19613:6;;19591:28;:::i;:::-;;;;-1:-1:-1;;19635:37:0;;13226:25:1;;;-1:-1:-1;;;;;19635:37:0;;;19652:1;;-1:-1:-1;;;;;;;;;;;19635:37:0;13214:2:1;13199:18;19635:37:0;;;;;;;15918:104;;:::o;20074:591::-;-1:-1:-1;;;;;20158:21:0;;20150:67;;;;-1:-1:-1;;;20150:67:0;;10956:2:1;20150:67:0;;;10938:21:1;10995:2;10975:18;;;10968:30;11034:34;11014:18;;;11007:62;-1:-1:-1;;;11085:18:1;;;11078:31;11126:19;;20150:67:0;10928:223:1;20150:67:0;20230:49;20251:7;20268:1;20272:6;20230:20;:49::i;:::-;-1:-1:-1;;;;;20317:18:0;;20292:22;20317:18;;;:9;:18;;;;;;20354:24;;;;20346:71;;;;-1:-1:-1;;;20346:71:0;;6623:2:1;20346:71:0;;;6605:21:1;6662:2;6642:18;;;6635:30;6701:34;6681:18;;;6674:62;-1:-1:-1;;;6752:18:1;;;6745:32;6794:19;;20346:71:0;6595:224:1;20346:71:0;-1:-1:-1;;;;;20453:18:0;;;;;;:9;:18;;;;;20474:23;;;20453:44;;20519:12;:22;;20491:6;;20453:18;20519:22;;20491:6;;20519:22;:::i;:::-;;;;-1:-1:-1;;20559:37:0;;13226:25:1;;;20585:1:0;;-1:-1:-1;;;;;20559:37:0;;;-1:-1:-1;;;;;;;;;;;20559:37:0;13214:2:1;13199:18;20559:37:0;;;;;;;9948:1:::1;25138:241:::0;;:::o;6119:173::-;6175:16;6194:6;;-1:-1:-1;;;;;6211:17:0;;;-1:-1:-1;;;;;;6211:17:0;;;;;;6244:40;;6194:6;;;;;;;6244:40;;6175:16;6244:40;6119:173;;:::o;22962:961::-;23355:4;23306:28;12344:18;;;:9;:18;;;;;;23409:11;;23385:35;;23382:101;;-1:-1:-1;23460:11:0;;23382:101;23554:30;;23530:54;;;;;;;23613:53;;-1:-1:-1;23650:16:0;;;;23649:17;23613:53;:93;;;;;23693:13;-1:-1:-1;;;;;23683:23:0;:6;-1:-1:-1;;;;;23683:23:0;;;23613:93;:131;;;;-1:-1:-1;23723:21:0;;;;;;;23613:131;23595:321;;;23794:30;;23771:53;;23868:36;23883:20;23868:14;:36::i;22083:139::-;10010:6;;;;10009:7;10001:38;;;;-1:-1:-1;;;10001:38:0;;12169:2:1;10001:38:0;;;12151:21:1;12208:2;12188:18;;;12181:30;-1:-1:-1;;;12227:18:1;;;12220:48;12285:18;;10001:38:0;12141:168:1;18523:532:0;-1:-1:-1;;;;;18750:26:0;;18618:7;18750:26;;;:18;:26;;;;;;18618:7;;18750:26;;18749:27;:61;;;;-1:-1:-1;;;;;;18781:29:0;;;;;;:18;:29;;;;;;;;18780:30;18749:61;18746:281;;;18833:29;18855:6;18833:21;:29::i;:::-;18827:35;-1:-1:-1;18881:7:0;;18877:139;;18927:4;18909:24;;;;:9;:24;;;;;:31;;18937:3;;18909:24;:31;;18937:3;;18909:31;:::i;:::-;;;;-1:-1:-1;;18964:36:0;;13226:25:1;;;18989:4:0;;-1:-1:-1;;;;;18964:36:0;;;-1:-1:-1;;;;;;;;;;;18964:36:0;13214:2:1;13199:18;18964:36:0;;;;;;;18877:139;19044:3;18523:532;-1:-1:-1;;;;18523:532:0:o;26645:1002::-;9614:16;:23;;-1:-1:-1;;9614:23:0;9633:4;9614:23;;;:16;26797:24:::1;26820:1;26797:20:::0;:24:::1;:::i;:::-;26782:39:::0;-1:-1:-1;26832:17:0::1;26852:27;26782:39:::0;26852:20;:27:::1;:::i;:::-;26832:47:::0;-1:-1:-1;27236:21:0::1;27320:31;27346:4:::0;27320:25:::1;:31::i;:::-;27430:18;27451:38;27475:14:::0;27451:21:::1;:38;:::i;:::-;27430:59;;27535:35;27548:9;27559:10;27535:12;:35::i;:::-;27596:43;::::0;;14452:25:1;;;14508:2;14493:18;;14486:34;;;14536:18;;;14529:34;;;27596:43:0::1;::::0;14440:2:1;14425:18;27596:43:0::1;;;;;;;-1:-1:-1::0;;9660:16:0;:24;;-1:-1:-1;;9660:24:0;;;-1:-1:-1;;;26645:1002:0:o;26497:136::-;26568:7;26620:5;26605:12;;26595:7;:22;;;;:::i;:::-;:30;;;;:::i;:::-;26588:37;26497:136;-1:-1:-1;;26497:136:0:o;27655:609::-;27832:16;;;27846:1;27832:16;;;;;;;;27808:21;;27832:16;;;;;;;;;;-1:-1:-1;27832:16:0;27808:40;;27877:4;27859;27864:1;27859:7;;;;;;-1:-1:-1;;;27859:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;27859:23:0;;;-1:-1:-1;;;;;27859:23:0;;;;;27903:15;-1:-1:-1;;;;;27903:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27893:4;27898:1;27893:7;;;;;;-1:-1:-1;;;27893:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;27893:32:0;;;-1:-1:-1;;;;;27893:32:0;;;;;27938:62;27955:4;27970:15;27988:11;27938:8;:62::i;:::-;28039:217;;-1:-1:-1;;;28039:217:0;;-1:-1:-1;;;;;28039:15:0;:66;;;;:217;;28120:11;;28146:1;;28183:4;;28210;;28230:15;;28039:217;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27655:609;;:::o;28272:514::-;28421:62;28438:4;28453:15;28471:11;28421:8;:62::i;:::-;28526:15;-1:-1:-1;;;;;28526:31:0;;28565:9;28598:4;28618:11;28644:1;28687;28730:7;5065;5092:6;-1:-1:-1;;;;;5092:6:0;;5019:87;28730:7;28526:252;;;;;;-1:-1:-1;;;;;;28526:252:0;;;-1:-1:-1;;;;;4730:15:1;;;28526:252:0;;;4712:34:1;4762:18;;;4755:34;;;;4805:18;;;4798:34;;;;4848:18;;;4841:34;4912:15;;;4891:19;;;4884:44;28752:15:0;4944:19:1;;;4937:35;4646:19;;28526:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28272:514;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;:::-;260:5;84:187;-1:-1:-1;;;84:187:1:o;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:1;1386:18;;;;1373:32;;1049:362::o;1416:325::-;1484:6;1492;1545:2;1533:9;1524:7;1520:23;1516:32;1513:2;;;1566:6;1558;1551:22;1513:2;1610:9;1597:23;1629:31;1654:5;1629:31;:::i;:::-;1679:5;1731:2;1716:18;;;;1703:32;;-1:-1:-1;;;1503:238:1:o;1746:251::-;1802:6;1855:2;1843:9;1834:7;1830:23;1826:32;1823:2;;;1876:6;1868;1861:22;1823:2;1920:9;1907:23;1939:28;1961:5;1939:28;:::i;2002:255::-;2069:6;2122:2;2110:9;2101:7;2097:23;2093:32;2090:2;;;2143:6;2135;2128:22;2090:2;2180:9;2174:16;2199:28;2221:5;2199:28;:::i;2262:190::-;2321:6;2374:2;2362:9;2353:7;2349:23;2345:32;2342:2;;;2395:6;2387;2380:22;2342:2;-1:-1:-1;2423:23:1;;2332:120;-1:-1:-1;2332:120:1:o;2457:194::-;2527:6;2580:2;2568:9;2559:7;2555:23;2551:32;2548:2;;;2601:6;2593;2586:22;2548:2;-1:-1:-1;2629:16:1;;2538:113;-1:-1:-1;2538:113:1:o;2656:316::-;2744:6;2752;2760;2813:2;2801:9;2792:7;2788:23;2784:32;2781:2;;;2834:6;2826;2819:22;2781:2;2868:9;2862:16;2852:26;;2918:2;2907:9;2903:18;2897:25;2887:35;;2962:2;2951:9;2947:18;2941:25;2931:35;;2771:201;;;;;:::o;2977:378::-;3074:6;3082;3090;3098;3151:3;3139:9;3130:7;3126:23;3122:33;3119:2;;;3173:6;3165;3158:22;3119:2;-1:-1:-1;;3201:16:1;;3257:2;3242:18;;3236:25;3301:2;3286:18;;3280:25;3345:2;3330:18;;;3324:25;3201:16;;3236:25;;-1:-1:-1;3324:25:1;;-1:-1:-1;3109:246:1;-1:-1:-1;3109:246:1:o;5409:603::-;5521:4;5550:2;5579;5568:9;5561:21;5611:6;5605:13;5654:6;5649:2;5638:9;5634:18;5627:34;5679:4;5692:140;5706:6;5703:1;5700:13;5692:140;;;5801:14;;;5797:23;;5791:30;5767:17;;;5786:2;5763:26;5756:66;5721:10;;5692:140;;;5850:6;5847:1;5844:13;5841:2;;;5920:4;5915:2;5906:6;5895:9;5891:22;5887:31;5880:45;5841:2;-1:-1:-1;5996:2:1;5975:15;-1:-1:-1;;5971:29:1;5956:45;;;;6003:2;5952:54;;5530:482;-1:-1:-1;;;5530:482:1:o;6824:408::-;7026:2;7008:21;;;7065:2;7045:18;;;7038:30;7104:34;7099:2;7084:18;;7077:62;-1:-1:-1;;;7170:2:1;7155:18;;7148:42;7222:3;7207:19;;6998:234::o;10393:356::-;10595:2;10577:21;;;10614:18;;;10607:30;10673:34;10668:2;10653:18;;10646:62;10740:2;10725:18;;10567:182::o;13262:983::-;13524:4;13572:3;13561:9;13557:19;13603:6;13592:9;13585:25;13629:2;13667:6;13662:2;13651:9;13647:18;13640:34;13710:3;13705:2;13694:9;13690:18;13683:31;13734:6;13769;13763:13;13800:6;13792;13785:22;13838:3;13827:9;13823:19;13816:26;;13877:2;13869:6;13865:15;13851:29;;13898:4;13911:195;13925:6;13922:1;13919:13;13911:195;;;13990:13;;-1:-1:-1;;;;;13986:39:1;13974:52;;14081:15;;;;14046:12;;;;14022:1;13940:9;13911:195;;;-1:-1:-1;;;;;;;14162:32:1;;;;14157:2;14142:18;;14135:60;-1:-1:-1;;;14226:3:1;14211:19;14204:35;14123:3;13533:712;-1:-1:-1;;;13533:712:1:o;14763:128::-;14803:3;14834:1;14830:6;14827:1;14824:13;14821:2;;;14840:18;;:::i;:::-;-1:-1:-1;14876:9:1;;14811:80::o;14896:217::-;14936:1;14962;14952:2;;-1:-1:-1;;;14987:31:1;;15041:4;15038:1;15031:15;15069:4;14994:1;15059:15;14952:2;-1:-1:-1;15098:9:1;;14942:171::o;15118:168::-;15158:7;15224:1;15220;15216:6;15212:14;15209:1;15206:21;15201:1;15194:9;15187:17;15183:45;15180:2;;;15231:18;;:::i;:::-;-1:-1:-1;15271:9:1;;15170:116::o;15291:125::-;15331:4;15359:1;15356;15353:8;15350:2;;;15364:18;;:::i;:::-;-1:-1:-1;15401:9:1;;15340:76::o;15421:380::-;15500:1;15496:12;;;;15543;;;15564:2;;15618:4;15610:6;15606:17;15596:27;;15564:2;15671;15663:6;15660:14;15640:18;15637:38;15634:2;;;15717:10;15712:3;15708:20;15705:1;15698:31;15752:4;15749:1;15742:15;15780:4;15777:1;15770:15;15634:2;;15476:325;;;:::o;15806:127::-;15867:10;15862:3;15858:20;15855:1;15848:31;15898:4;15895:1;15888:15;15922:4;15919:1;15912:15;15938:131;-1:-1:-1;;;;;16013:31:1;;16003:42;;15993:2;;16059:1;16056;16049:12;16074:118;16160:5;16153:13;16146:21;16139:5;16136:32;16126:2;;16182:1;16179;16172:12

Swarm Source

ipfs://189f15fcf6d9d468312358064a5cf1b4fb6ca83464b96935f31788e8ed30386d
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.