ETH Price: $2,155.45 (+0.33%)

Contract

0xCbCFEeCb839BD1049018ba185B5e77D7e6221dBA
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve243579432026-01-31 22:49:3548 days ago1769899775IN
0xCbCFEeCb...7e6221dBA
0 ETH0.000098032.11374441
Approve218687162025-02-17 21:14:59396 days ago1739826899IN
0xCbCFEeCb...7e6221dBA
0 ETH0.000099672.1385291
Approve195476802024-03-30 15:33:11720 days ago1711812791IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0007897332.45274142
Approve190454462024-01-20 3:40:35791 days ago1705722035IN
0xCbCFEeCb...7e6221dBA
0 ETH0.000714515.32644193
Approve190454272024-01-20 3:36:47791 days ago1705721807IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0003970914.82844479
Approve190454262024-01-20 3:36:35791 days ago1705721795IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0007353515.75353478
Approve188709592023-12-26 16:07:47815 days ago1703606867IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0007494830.76813559
Approve188706102023-12-26 14:56:59815 days ago1703602619IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0005718523.4994293
Approve188648732023-12-25 19:39:35816 days ago1703533175IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0007345815.7571766
Approve187633972023-12-11 13:55:23830 days ago1702302923IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0020093543.10169373
Approve187560302023-12-10 13:12:35831 days ago1702213955IN
0xCbCFEeCb...7e6221dBA
0 ETH0.001006821.59643875
Approve186699162023-11-28 11:46:47843 days ago1701172007IN
0xCbCFEeCb...7e6221dBA
0 ETH0.000701428.82301458
Approve186699162023-11-28 11:46:47843 days ago1701172007IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0007031328.82301458
Approve186699152023-11-28 11:46:35843 days ago1701171995IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0007239929.6778243
Approve186693392023-11-28 9:50:23843 days ago1701165023IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0006550324.70424159
Approve186693362023-11-28 9:49:47843 days ago1701164987IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0011353424.46072075
Approve186657842023-11-27 21:54:11844 days ago1701122051IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0027344658.91344919
Approve186479232023-11-25 9:49:35846 days ago1700905775IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0009354720.06636355
Approve186478032023-11-25 9:25:35846 days ago1700904335IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0005104420.92434399
Approve186454192023-11-25 1:25:23847 days ago1700875523IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0011564924.77554807
Approve186453602023-11-25 1:13:23847 days ago1700874803IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0010861623.26878054
Approve186426342023-11-24 16:03:47847 days ago1700841827IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0020923844.82498553
Approve186357072023-11-23 16:45:11848 days ago1700757911IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0010133437.89190253
Approve186319462023-11-23 4:07:23849 days ago1700712443IN
0xCbCFEeCb...7e6221dBA
0 ETH0.0018086238.79582439
Approve186319332023-11-23 4:04:47849 days ago1700712287IN
0xCbCFEeCb...7e6221dBA
0 ETH0.001548933.20756236
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PartyParrot

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-11-16
*/

// 
// ██████╗░░█████╗░██████╗░████████╗██╗░░░██╗  ██████╗░░█████╗░██████╗░██████╗░░█████╗░████████╗
// ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝╚██╗░██╔╝  ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝
// ██████╔╝███████║██████╔╝░░░██║░░░░╚████╔╝░  ██████╔╝███████║██████╔╝██████╔╝██║░░██║░░░██║░░░
// ██╔═══╝░██╔══██║██╔══██╗░░░██║░░░░░╚██╔╝░░  ██╔═══╝░██╔══██║██╔══██╗██╔══██╗██║░░██║░░░██║░░░
// ██║░░░░░██║░░██║██║░░██║░░░██║░░░░░░██║░░░  ██║░░░░░██║░░██║██║░░██║██║░░██║╚█████╔╝░░░██║░░░
// ╚═╝░░░░░╚═╝░░╚═╝╚═╝░░╚═╝░░░╚═╝░░░░░░╚═╝░░░  ╚═╝░░░░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░
//
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣤⣤⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣔⣦⣀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⠿⠛⠉⠉⠀⠀⠀⠀⠀⠈⠉⠙⠻⢿⣿⣿⣷⣄⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⠟⠉⢠⣤⣤⡀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⢘⣿⣿⣿⣧⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⠟⠁⠀⠀⣿⣿⣿⣿⠀⠀⢀⣴⣿⣿⣿⣿⣷⣦⠀⣾⣿⣿⣿⣿⣧⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⣼⣿⣿⠋⠀⠀⠀⠀⢻⣿⣿⣿⠀⠀⣼⣿⡟⠁⠀⠈⢻⣿⣧⠘⠿⡿⢿⣿⣿⣆⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀  ⢸⣿⣿⡏⠀⠀⠀⠀⠀⠀⠈⠉⠁⠀⢰⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⠀⠀⢻⣿⣿⡆⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⢸⣿⣧⠀⠀⠀⠀⢿⣿⣿⡀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⠀⠀⠀⠀⠀⢸⣿⡏⠀⠀⠀⠀⢸⣿⣿⡇
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣇⠀⠀⠀⢀⣿⣿⠇⠀⠀⠀⠀⠀⣿⣿⡇
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣆⠀⢀⣾⣿⡟⠀⠀⠀⠀⠀⢸⣿⣿⡇
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣧⣾⣿⠏⠀⠀⠀⠀⠀⠀⣿⣿⣿⠃
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⠟⢿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⠏⠀⠀⠀⠀⠀⠀⣸⣿⣿⡏⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⠋⠀⠈⢿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠏⠀⠀⠀⠀⠀⠀⢰⣿⣿⡿⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⠟⠁⠀⠀⠀⠈⠻⣿⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⠁⠀⠀
//⠀⠀⠀⠀⠀⢀⣴⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣶⣤⣤⣀⣀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡟⡇⠀⠀⠀
//⠀⠀⠀⢀⣴⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠛⠿⠿⠿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠀⠀⠀⠀
//⠀⠀⣠⣾⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣟⡆⠀⠀⠀
//⢠⣾⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣇⠀⠀⠀
//⣿⣿⣿⣁⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣻⣿⣿⣄⠀⠀
//⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠆⠀

// TG: https://t.me/PartyParrotERC
// twitter:https://twitter.com/partyparrotETH
// Website: https://partyparrot-eth.club


// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

/********************************************************************************************
  INTERFACE
********************************************************************************************/

interface IERC20 {
    
    // EVENT 

    event Transfer(address indexed from, address indexed to, uint256 value);
    
    event Approval(address indexed owner, address indexed spender, uint256 value);

    // FUNCTION

    function name() external view returns (string memory);
    
    function symbol() external view returns (string memory);
    
    function decimals() external view returns (uint8);
    
    function totalSupply() external view returns (uint256);
    
    function balanceOf(address account) external view returns (uint256);
    
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IPair {

    // FUNCTION

    function token0() external view returns (address);

    function token1() external view returns (address);
}

interface IFactory {

    // FUNCTION

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

interface IRouter {

    // FUNCTION

    function WETH() external pure returns (address);
        
    function factory() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    
    function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
}

interface ICommonError {

    // ERROR

    error CannotUseCurrentAddress(address current);

    error CannotUseCurrentValue(uint256 current);

    error CannotUseCurrentState(bool current);

    error InvalidAddress(address invalid);

    error InvalidValue(uint256 invalid);
}

/********************************************************************************************
  ACCESS
********************************************************************************************/

abstract contract Ownable {
    
    // DATA

    address private _owner;

    // MODIFIER

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    // ERROR

    error InvalidOwner(address account);

    error UnauthorizedAccount(address account);

    // CONSTRUCTOR

    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
    }

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

    // FUNCTION
    
    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        if (owner() != msg.sender) {
            revert UnauthorizedAccount(msg.sender);
        }
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert InvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/********************************************************************************************
  TOKEN
********************************************************************************************/

contract PartyParrot is Ownable, ICommonError, IERC20 {

    // DATA

    IRouter public router;

    string private constant NAME = "PARTY PARROT";
    string private constant SYMBOL = "PARTYP";

    uint8 private constant DECIMALS = 18;

    uint256 private _totalSupply;
    
    uint256 public constant FEEDENOMINATOR = 10_000;

    uint256 public buyFee = 0;
    uint256 public buyBurnFee = 0;
    uint256 public buyMarketingFee = 0;
    uint256 public sellFee = 700;
    uint256 public sellBurnFee = 100;
    uint256 public sellMarketingFee = 600;
    uint256 public transferFee = 0;
    uint256 public transferBurnFee = 0;
    uint256 public transferMarketingFee = 0;
    uint256 public walletLimit = 1;
    uint256 public walletLimitTime = 20 seconds;
    uint256 public tradeStartTime = 0;
    uint256 public totalFeeCollected = 0;
    uint256 public totalFeeRedeemed = 0;
    uint256 public totalTriggerZeusBuyback = 0;
    uint256 public lastTriggerZeusTimestamp = 0;
    uint256 public minSwap = 1_000 ether;

    bool private constant ISPARTYP = true;

    bool public tradeEnabled = false;
    bool public isFeeActive = false;
    bool public isFeeLocked = false;
    bool public isSwapEnabled = false;
    bool public inSwap = false;

    address public immutable PROJECTOWNER;
    address public feeReceiver;

    address public pair;
    
    // MAPPING

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludeFromFees;
    mapping(address => bool) public isExcludeFromWalletLimits;
    mapping(address => bool) public isPairLP;

    // MODIFIER

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // ERROR

    error InvalidTradeEnabledState(bool current);

    error InvalidFeeActiveState(bool current);

    error InvalidSwapEnabledState(bool current);

    error PresaleAlreadyFinalized(bool current);

    error ExceedMaxFeeAllowed(uint256 limit);

    error ExceedWalletLimit(uint256 limit);

    error TradeDisabled();

    error CannotUseCurrentFees();

    error FeeUpdateLocked();

    // CONSTRUCTOR

    constructor(
        address feeReceiverAdr,
        address routerAdr
    ) Ownable (msg.sender) {
        if (feeReceiverAdr == address(0)) {
            revert InvalidAddress(feeReceiverAdr);
        }
        if (routerAdr == address(0)) {
            revert InvalidAddress(routerAdr);
        }
        feeReceiver = feeReceiverAdr;
        PROJECTOWNER = msg.sender;
        _mint(msg.sender, 1_000_000 * 10**DECIMALS);

        router = IRouter(routerAdr);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());

        isPairLP[pair] = true;

        isExcludeFromFees[msg.sender] = true;
        isExcludeFromFees[address(router)] = true;

        isExcludeFromWalletLimits[msg.sender] = true;
        isExcludeFromWalletLimits[pair] = true;
    }

    // EVENT

    event UpdateRouter(address oldRouter, address newRouter, address caller, uint256 timestamp);

    event UpdateMinSwap(uint256 oldMinSwap, uint256 newMinSwap, address caller, uint256 timestamp);

    event UpdateFeeActive(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event UpdateFeeLocked(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event UpdateFeeReceiver(address oldReceiver, address newReceiver, address caller, uint256 timestamp);

    event UpdateBuyFee(uint256 oldBurnFee, uint256 oldMarketingFee, uint256 newBurnFee, uint256 newMarketingFee, address caller, uint256 timestamp);

    event UpdateSellFee(uint256 oldBurnFee, uint256 oldMarketingFee, uint256 newBurnFee, uint256 newMarketingFee, address caller, uint256 timestamp);

    event UpdateTransferFee(uint256 oldBurnFee, uint256 oldMarketingFee, uint256 newBurnFee, uint256 newMarketingFee, address caller, uint256 timestamp);

    event UpdateSwapEnabled(bool oldStatus, bool newStatus, address caller, uint256 timestamp);
        
    event AutoRedeem(uint256 feeDistribution, uint256 amountToRedeem, address caller, uint256 timestamp);

    event EnableTrading(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event ExcludeFromFees(bool oldStatus, bool newStatus, address caller, uint256 timestamp);
    
    event ExcludeFromWalletLimits(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    // FUNCTION

    /* General */

    receive() external payable {}

    function enableTrading() external onlyOwner {
        if (tradeEnabled) { revert InvalidTradeEnabledState(tradeEnabled); }
        if (isFeeActive) { revert InvalidFeeActiveState(isFeeActive); }
        if (isSwapEnabled) { revert InvalidSwapEnabledState(isSwapEnabled); }
        tradeEnabled = true;
        isFeeActive = true;
        isSwapEnabled = true;
        tradeStartTime = block.timestamp;
    }

    /* Redeem */

    function autoRedeem(uint256 amountToRedeem) public swapping {          
        totalFeeRedeemed += amountToRedeem;

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

        _approve(address(this), address(router), amountToRedeem);
        
        emit AutoRedeem(amountToRedeem, amountToRedeem, msg.sender, block.timestamp);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToRedeem,
            0,
            path,
            feeReceiver,
            block.timestamp
        );
    }

    /* Check */

    function isPartyParrot() external pure returns (bool) {
        return ISPARTYP;
    }

    function circulatingSupply() external view returns (uint256) {
        return totalSupply() - balanceOf(address(0xdead)) - balanceOf(address(0));
    }

    function checkWalletLimit(uint256 amount, address to) public view {
        uint256 limit = totalSupply() * walletLimit / FEEDENOMINATOR;
        if ((tradeStartTime < 1 || block.timestamp - tradeStartTime < walletLimitTime) && !isExcludeFromWalletLimits[to]) {
            if (balanceOf(to) + amount > limit) {
                revert ExceedWalletLimit(limit);
            }
        }
    }

    function getBuyFee() public view returns (uint256, uint256) {
        uint256 diff = block.timestamp - tradeStartTime;
        if (diff <= 3 minutes) {
            return (100, 2_400);
        }
        if (diff > 3 minutes && diff <= 7 minutes) {
            return (100, 900);
        }
        if (diff > 7 minutes && diff <= 460 seconds) {
            return (0, 0);
        }
        return (buyBurnFee, buyMarketingFee);
    }

    function getSellFee() public view returns (uint256, uint256) {
        uint256 diff = block.timestamp - tradeStartTime;
        if (diff <= 3 minutes) {
            return (100, 3_000);
        }
        if (diff > 3 minutes && diff <= 7 minutes) {
            return (100, 900);
        }
        if (diff > 7 minutes && diff <= 460 seconds) {
            return (100, 9_800);
        }
        return (sellBurnFee, sellMarketingFee);
    }

    function getTransferFee() public view returns (uint256, uint256) {
        uint256 diff = block.timestamp - tradeStartTime;
        if (diff <= 3 minutes) {
            return (0, 0);
        }
        if (diff > 3 minutes && diff <= 7 minutes) {
            return (0, 0);
        }
        if (diff > 7 minutes && diff <= 460 seconds) {
            return (0, 0);
        }
        return (transferBurnFee, transferMarketingFee);
    }

    /* Update */

    function updateRouter(address newRouter) external onlyOwner {
        if (address(router) == newRouter) { revert CannotUseCurrentAddress(newRouter); }
        address oldRouter = address(router);
        router = IRouter(newRouter);
        
        isExcludeFromFees[newRouter] = true;

        emit UpdateRouter(oldRouter, newRouter, msg.sender, block.timestamp);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        isPairLP[pair] = true;
    }

    function updateMinSwap(uint256 newMinSwap) external onlyOwner {
        if (minSwap == newMinSwap) { revert CannotUseCurrentValue(newMinSwap); }
        uint256 oldMinSwap = minSwap;
        minSwap = newMinSwap;
        emit UpdateMinSwap(oldMinSwap, newMinSwap, msg.sender, block.timestamp);
    }

    function updateFeeActive(bool newStatus) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (isFeeActive == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isFeeActive;
        isFeeActive = newStatus;
        emit UpdateFeeActive(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateBuyFee(uint256 newBurnFee, uint256 newMarketingFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newBurnFee == buyBurnFee && newMarketingFee == buyMarketingFee) { revert CannotUseCurrentFees(); }
        if (newBurnFee + newMarketingFee >= 1_000) { revert ExceedMaxFeeAllowed(1_000); }
        uint256 oldBurnFee = buyBurnFee;
        uint256 oldMarketingFee = buyMarketingFee;
        buyBurnFee = newBurnFee;
        buyMarketingFee = newMarketingFee;
        emit UpdateBuyFee(oldBurnFee, oldMarketingFee, newBurnFee, newMarketingFee, msg.sender, block.timestamp);
    }

    function updateSellFee(uint256 newBurnFee, uint256 newMarketingFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newBurnFee == sellBurnFee && newMarketingFee == sellMarketingFee) { revert CannotUseCurrentFees(); }
        if (newBurnFee + newMarketingFee >= 1_000) { revert ExceedMaxFeeAllowed(1_000); }
        uint256 oldBurnFee = sellBurnFee;
        uint256 oldMarketingFee = sellMarketingFee;
        sellBurnFee = newBurnFee;
        sellMarketingFee = newMarketingFee;
        emit UpdateSellFee(oldBurnFee, oldMarketingFee, newBurnFee, newMarketingFee, msg.sender, block.timestamp);
    }

    function updateTransferFee(uint256 newBurnFee, uint256 newMarketingFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newBurnFee == transferBurnFee && newMarketingFee == transferMarketingFee) { revert CannotUseCurrentFees(); }
        if (newBurnFee + newMarketingFee >= 1_000) { revert ExceedMaxFeeAllowed(1_000); }
        uint256 oldBurnFee = transferBurnFee;
        uint256 oldMarketingFee = transferMarketingFee;
        transferBurnFee = newBurnFee;
        transferMarketingFee = newMarketingFee;
        emit UpdateTransferFee(oldBurnFee, oldMarketingFee, newBurnFee, newMarketingFee, msg.sender, block.timestamp);
    }

    function updateFeeReceiver(address newReceiver) external onlyOwner {
        if (feeReceiver == newReceiver) { revert CannotUseCurrentAddress(newReceiver); }
        address oldReceiver = feeReceiver;
        feeReceiver = newReceiver;
        emit UpdateFeeReceiver(oldReceiver, newReceiver, msg.sender, block.timestamp);
    }

    function updateSwapEnabled(bool newStatus) external onlyOwner {
        if (isSwapEnabled == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isSwapEnabled;
        isSwapEnabled = newStatus;
        emit UpdateSwapEnabled(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function setExcludeFromFees(address user, bool newStatus) external onlyOwner {
        if (isExcludeFromFees[user] == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isExcludeFromFees[user];
        isExcludeFromFees[user] = newStatus;
        emit ExcludeFromFees(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function setExcludeFromWalletLimits(address user, bool newStatus) external onlyOwner {
        if (isExcludeFromWalletLimits[user] == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isExcludeFromWalletLimits[user];
        isExcludeFromWalletLimits[user] = newStatus;
        emit ExcludeFromWalletLimits(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function setPairLP(address lpPair, bool status) external onlyOwner {
        if (isPairLP[lpPair] == status) { revert CannotUseCurrentState(status); }
        if (IPair(lpPair).token0() != address(this) && IPair(lpPair).token1() != address(this)) { revert InvalidAddress(lpPair); }
        isPairLP[lpPair] = status;
    }

    /* Fee */

    function takeBuyFee(address from, uint256 amount, uint256 burn, uint256 marketing) internal swapping returns (uint256) {
        uint256 burnAmount = amount * burn / FEEDENOMINATOR;
        uint256 marketingAmount = amount * marketing / FEEDENOMINATOR;
        uint256 newAmount = amount - burnAmount - marketingAmount;
        if (burnAmount + marketingAmount > 0) {
            tallyCollection(from, burnAmount, marketingAmount);
        }
        return newAmount;
    }

    function takeSellFee(address from, uint256 amount, uint256 burn, uint256 marketing) internal swapping returns (uint256) {
        uint256 burnAmount = amount * burn / FEEDENOMINATOR;
        uint256 marketingAmount = amount * marketing / FEEDENOMINATOR;
        uint256 newAmount = amount - burnAmount - marketingAmount;
        if (burnAmount + marketingAmount > 0) {
            tallyCollection(from, burnAmount, marketingAmount);
        }
        return newAmount;
    }

    function takeTransferFee(address from, uint256 amount, uint256 burn, uint256 marketing) internal swapping returns (uint256) {
        uint256 burnAmount = amount * burn / FEEDENOMINATOR;
        uint256 marketingAmount = amount * marketing / FEEDENOMINATOR;
        uint256 newAmount = amount - burnAmount - marketingAmount;
        if (burnAmount + marketingAmount > 0) {
            tallyCollection(from, burnAmount, marketingAmount);
        }
        return newAmount;
    }

    function tallyCollection(address from, uint256 collectBurnFee, uint256 collectMarketingFee) internal swapping {
        uint256 totalFee = collectBurnFee + collectMarketingFee;
        totalFeeCollected += totalFee;
        totalFeeRedeemed += collectBurnFee;
        _basicTransfer(from, address(0xdead), collectBurnFee);
        _basicTransfer(from, address(this), collectMarketingFee);
    }

    /* Buyback */

    function triggerZeusBuyback(uint256 amount) external onlyOwner {
        totalTriggerZeusBuyback += amount;
        lastTriggerZeusTimestamp = block.timestamp;
        buyTokens(amount, address(0xdead));
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        if (msg.sender == address(0xdead)) { revert InvalidAddress(address(0xdead)); }
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

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

    /* ERC20 Standard */

    function name() external view virtual override returns (string memory) {
        return NAME;
    }
    
    function symbol() external view virtual override returns (string memory) {
        return SYMBOL;
    }
    
    function decimals() external view virtual override returns (uint8) {
        return DECIMALS;
    }
    
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address to, uint256 amount) external virtual override returns (bool) {
        address provider = msg.sender;
        return _transfer(provider, to, amount);
    }
    
    function allowance(address provider, address spender) public view virtual override returns (uint256) {
        return _allowances[provider][spender];
    }
    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, amount);
        return true;
    }
    
    function transferFrom(address from, address to, uint256 amount) external virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        return _transfer(from, to, amount);
    }
    
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, allowance(provider, spender) + addedValue);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        address provider = msg.sender;
        uint256 currentAllowance = allowance(provider, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(provider, spender, currentAllowance - subtractedValue);
        }

        return true;
    }
    
    function _mint(address account, uint256 amount) internal virtual {
        if (account == address(0)) { revert InvalidAddress(account); }

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

    function _approve(address provider, address spender, uint256 amount) internal virtual {
        if (provider == address(0)) { revert InvalidAddress(provider); }
        if (spender == address(0)) { revert InvalidAddress(spender); }

        _allowances[provider][spender] = amount;
        emit Approval(provider, spender, amount);
    }
    
    function _spendAllowance(address provider, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(provider, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(provider, spender, currentAllowance - amount);
            }
        }
    }

    /* Additional */

    function _basicTransfer(address from, address to, uint256 amount ) internal returns (bool) {
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
        return true;
    }
    
    /* Overrides */
 
    function _transfer(address from, address to, uint256 amount) internal virtual returns (bool) {
        if (from == address(0)) { revert InvalidAddress(from); }
        if (to == address(0)) { revert InvalidAddress(to); }

        if (!tradeEnabled && !isExcludeFromFees[from] && !isExcludeFromFees[to]) {
            revert TradeDisabled();
        }

        if (inSwap || isExcludeFromFees[from]) {
            return _basicTransfer(from, to, amount);
        }

        if (from != pair && isSwapEnabled && balanceOf(address(this)) >= minSwap && totalFeeCollected - totalFeeRedeemed >= minSwap) {
            autoRedeem(minSwap);
        }

        uint256 newAmount = amount;

        if (isFeeActive && !isExcludeFromFees[from] && !isExcludeFromFees[to]) {
            newAmount = _beforeTokenTransfer(from, to, amount);
        }

        checkWalletLimit(newAmount, to);

        require(_balances[from] >= newAmount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = _balances[from] - newAmount;
            _balances[to] += newAmount;
        }

        emit Transfer(from, to, newAmount);

        return true;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal swapping virtual returns (uint256) {
        uint256 burn = 0;
        uint256 marketing = 0;
        
        if (isPairLP[from]) {
            (burn, marketing) = getBuyFee();
            if (burn + marketing > 0) {
                return takeBuyFee(from, amount, burn, marketing);
            }
        }
        if (isPairLP[to]) {
            (burn, marketing) = getSellFee();
            if (burn + marketing > 0) {
                return takeSellFee(from, amount, burn, marketing);
            }
        }
        if (!isPairLP[from] && !isPairLP[to]) {
            (burn, marketing) = getTransferFee();
            if (burn + marketing > 0) {
                return takeTransferFee(from, amount, burn, marketing);
            }
        }
        return amount;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"feeReceiverAdr","type":"address"},{"internalType":"address","name":"routerAdr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"current","type":"address"}],"name":"CannotUseCurrentAddress","type":"error"},{"inputs":[],"name":"CannotUseCurrentFees","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"CannotUseCurrentState","type":"error"},{"inputs":[{"internalType":"uint256","name":"current","type":"uint256"}],"name":"CannotUseCurrentValue","type":"error"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"ExceedMaxFeeAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"ExceedWalletLimit","type":"error"},{"inputs":[],"name":"FeeUpdateLocked","type":"error"},{"inputs":[{"internalType":"address","name":"invalid","type":"address"}],"name":"InvalidAddress","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidFeeActiveState","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"InvalidOwner","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidSwapEnabledState","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidTradeEnabledState","type":"error"},{"inputs":[{"internalType":"uint256","name":"invalid","type":"uint256"}],"name":"InvalidValue","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"PresaleAlreadyFinalized","type":"error"},{"inputs":[],"name":"TradeDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeDistribution","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRedeem","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AutoRedeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"EnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromWalletLimits","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"newReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeReceiver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMinSwap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinSwap","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateMinSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSellFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateTransferFee","type":"event"},{"inputs":[],"name":"FEEDENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROJECTOWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToRedeem","type":"uint256"}],"name":"autoRedeem","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":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"checkWalletLimit","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromWalletLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPairLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPartyParrot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTriggerZeusTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromWalletLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpPair","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setPairLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeRedeemed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTriggerZeusBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"}],"name":"updateFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinSwap","type":"uint256"}],"name":"updateMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"updateTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletLimitTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405260006003819055600481905560058190556102bc60065560646007556102586008556009819055600a819055600b8190556001600c556014600d819055600e829055600f82905560108290556011829055601291909155683635c9adc5dea00000601355805464ffffffffff191690553480156200008157600080fd5b50604051620030d1380380620030d1833981016040819052620000a4916200048c565b33620000b0816200037e565b506001600160a01b038216620000e957604051634726455360e11b81526001600160a01b03831660048201526024015b60405180910390fd5b6001600160a01b0381166200011d57604051634726455360e11b81526001600160a01b0382166004820152602401620000e0565b60148054600160281b600160c81b031916650100000000006001600160a01b0385160217905533608081905262000171906200015c6012600a620005d9565b6200016b90620f4240620005f1565b620003ce565b600180546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f191906200060b565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a91906200060b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ee91906200060b565b601580546001600160a01b0319166001600160a01b0392831690811782556000908152601a60209081526040808320805460ff199081166001908117909255338086526018855283862080548316841790558254881686528386208054831684179055855260199093528184208054841682179055935490941682529290208054909216179055506200063f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200040257604051634726455360e11b81526001600160a01b0383166004820152602401620000e0565b806002600082825462000416919062000629565b90915550506001600160a01b0382166000818152601660209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b03811681146200048757600080fd5b919050565b60008060408385031215620004a057600080fd5b620004ab836200046f565b9150620004bb602084016200046f565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200051b578160001904821115620004ff57620004ff620004c4565b808516156200050d57918102915b93841c9390800290620004df565b509250929050565b6000826200053457506001620005d3565b816200054357506000620005d3565b81600181146200055c5760028114620005675762000587565b6001915050620005d3565b60ff8411156200057b576200057b620004c4565b50506001821b620005d3565b5060208310610133831016604e8410600b8410161715620005ac575081810a620005d3565b620005b88383620004da565b8060001904821115620005cf57620005cf620004c4565b0290505b92915050565b6000620005ea60ff84168362000523565b9392505050565b8082028115828204841417620005d357620005d3620004c4565b6000602082840312156200061e57600080fd5b620005ea826200046f565b80820180821115620005d357620005d3620004c4565b608051612a766200065b60003960006107390152612a766000f3fe6080604052600436106103c75760003560e01c806392136913116101f2578063beffc7d41161010d578063da4daf71116100a0578063f2a426871161006f578063f2a4268714610b0b578063f2fde38b14610b3b578063f31d5c7a14610b5b578063f887ea4014610b7b57600080fd5b8063da4daf7114610aa0578063dd62ed3e14610ab6578063e43504da14610ad6578063e71dc3f514610af557600080fd5b8063c9ab366b116100dc578063c9ab366b14610a2f578063d621e81314610a45578063d63cad2214610a5f578063d830678614610a7f57600080fd5b8063beffc7d4146109bb578063c520c1fb146109db578063c69bebe4146109ef578063c851cc3214610a0f57600080fd5b8063a9059cbb11610185578063adc7b55611610154578063adc7b5561461092e578063b3f006741461095e578063b908de8c14610985578063b9b2b5cd146109a557600080fd5b8063a9059cbb146108cc578063ab28a04c146108ec578063acb2ad6f14610902578063adb873bd1461091857600080fd5b806397e1b9d3116101c157806397e1b9d3146108615780639a17d8c114610877578063a457c2d71461088c578063a8aa1b31146108ac57600080fd5b806392136913146107e7578063924de9b7146107fd5780639358928b1461081d57806395d89b411461083257600080fd5b806347062402116102e257806371538eed1161027557806385c5b3191161024457806385c5b319146107895780638a8c523c1461079f5780638da5cb5b146107b45780638f818b90146107d257600080fd5b806371538eed146106f157806375fed3c71461070757806378eec331146107275780637bce5a041461077357600080fd5b806363a95492116102b157806363a954921461066657806363fcc9221461068657806370a08231146106a6578063715018a6146106dc57600080fd5b806347062402146105fa57806359cd903114610610578063610e34b914610626578063625dd6051461064657600080fd5b80632b14ca561161035a578063395093511161032957806339509351146105845780633bf31454146105a45780633c8463a1146105c45780633d3359cb146105da57600080fd5b80632b14ca561461051b5780632c735ef814610531578063313ce56714610547578063351a964d1461056357600080fd5b806318160ddd1161039657806318160ddd1461049c5780631c8a6adc146104bb57806323b872dd146104d1578063289af0d8146104f157600080fd5b806301295143146103d357806306fdde03146103f557806308c436501461043c578063095ea7b31461047c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103f36103ee36600461265b565b610b9b565b005b34801561040157600080fd5b5060408051808201909152600c81526b1410549516481410549493d560a21b60208201525b6040516104339190612674565b60405180910390f35b34801561044857600080fd5b5061046c6104573660046126d7565b601a6020526000908152604090205460ff1681565b6040519015158152602001610433565b34801561048857600080fd5b5061046c6104973660046126f4565b610d81565b3480156104a857600080fd5b506002545b604051908152602001610433565b3480156104c757600080fd5b506104ad600a5481565b3480156104dd57600080fd5b5061046c6104ec366004612720565b610d9b565b3480156104fd57600080fd5b50610506610dbf565b60408051928352602083019190915201610433565b34801561052757600080fd5b506104ad60065481565b34801561053d57600080fd5b506104ad600e5481565b34801561055357600080fd5b5060405160128152602001610433565b34801561056f57600080fd5b5060145461046c906301000000900460ff1681565b34801561059057600080fd5b5061046c61059f3660046126f4565b610e41565b3480156105b057600080fd5b506103f36105bf366004612776565b610e63565b3480156105d057600080fd5b506104ad600c5481565b3480156105e657600080fd5b506103f36105f5366004612791565b610f32565b34801561060657600080fd5b506104ad60035481565b34801561061c57600080fd5b506104ad60135481565b34801561063257600080fd5b506103f3610641366004612791565b61101d565b34801561065257600080fd5b506103f36106613660046127b3565b6110fa565b34801561067257600080fd5b506103f361068136600461265b565b611290565b34801561069257600080fd5b506103f36106a13660046127e8565b6112c2565b3480156106b257600080fd5b506104ad6106c13660046126d7565b6001600160a01b031660009081526016602052604090205490565b3480156106e857600080fd5b506103f3611383565b3480156106fd57600080fd5b506104ad60105481565b34801561071357600080fd5b506103f361072236600461265b565b611397565b34801561073357600080fd5b5061075b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610433565b34801561077f57600080fd5b506104ad60055481565b34801561079557600080fd5b506104ad600b5481565b3480156107ab57600080fd5b506103f3611412565b3480156107c057600080fd5b506000546001600160a01b031661075b565b3480156107de57600080fd5b506105066114d6565b3480156107f357600080fd5b506104ad60085481565b34801561080957600080fd5b506103f3610818366004612776565b611556565b34801561082957600080fd5b506104ad6115ee565b34801561083e57600080fd5b5060408051808201909152600681526505041525459560d41b6020820152610426565b34801561086d57600080fd5b506104ad60125481565b34801561088357600080fd5b5061050661165e565b34801561089857600080fd5b5061046c6108a73660046126f4565b6116da565b3480156108b857600080fd5b5060155461075b906001600160a01b031681565b3480156108d857600080fd5b5061046c6108e73660046126f4565b611760565b3480156108f857600080fd5b506104ad61271081565b34801561090e57600080fd5b506104ad60095481565b34801561092457600080fd5b506104ad60075481565b34801561093a57600080fd5b5061046c6109493660046126d7565b60196020526000908152604090205460ff1681565b34801561096a57600080fd5b5060145461075b90600160281b90046001600160a01b031681565b34801561099157600080fd5b5060145461046c9062010000900460ff1681565b3480156109b157600080fd5b506104ad600f5481565b3480156109c757600080fd5b506103f36109d6366004612791565b611776565b3480156109e757600080fd5b50600161046c565b3480156109fb57600080fd5b506103f3610a0a3660046126d7565b611853565b348015610a1b57600080fd5b506103f3610a2a3660046126d7565b611915565b348015610a3b57600080fd5b506104ad600d5481565b348015610a5157600080fd5b5060145461046c9060ff1681565b348015610a6b57600080fd5b506103f3610a7a3660046127b3565b611b84565b348015610a8b57600080fd5b5060145461046c90600160201b900460ff1681565b348015610aac57600080fd5b506104ad60115481565b348015610ac257600080fd5b506104ad610ad1366004612818565b611c40565b348015610ae257600080fd5b5060145461046c90610100900460ff1681565b348015610b0157600080fd5b506104ad60045481565b348015610b1757600080fd5b5061046c610b263660046126d7565b60186020526000908152604090205460ff1681565b348015610b4757600080fd5b506103f3610b563660046126d7565b611c6b565b348015610b6757600080fd5b506103f3610b763660046127b3565b611ca6565b348015610b8757600080fd5b5060015461075b906001600160a01b031681565b6014805460ff60201b1916600160201b17905560108054829190600090610bc390849061285c565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610bfd57610bfd61286f565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a9190612885565b81600181518110610c8d57610c8d61286f565b6001600160a01b039283166020918202929092010152600154610cb39130911684611d55565b6040805183815260208101849052338183015242606082015290517fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c309181900360800190a160015460145460405163791ac94760e01b81526001600160a01b039283169263791ac94792610d3e9287926000928892600160281b9091049091169042906004016128e6565b600060405180830381600087803b158015610d5857600080fd5b505af1158015610d6c573d6000803e3d6000fd5b50506014805460ff60201b1916905550505050565b600033610d8f818585611d55565b60019150505b92915050565b600033610da9858285611e1a565b610db4858585611e94565b9150505b9392505050565b6000806000600e5442610dd29190612922565b905060b48111610de95750606492610bb892509050565b60b481118015610dfb57506101a48111155b15610e0d575060649261038492509050565b6101a481118015610e2057506101cc8111155b15610e32575060649261264892509050565b60075460085492509250509091565b600033610d8f818585610e548383611c40565b610e5e919061285c565b611d55565b610e6b612142565b60145462010000900460ff1615610e95576040516334d2d20d60e01b815260040160405180910390fd5b801515601460019054906101000a900460ff16151503610ed05760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b6014805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610f26908390859033904290612935565b60405180910390a15050565b610f3a612142565b60145462010000900460ff1615610f64576040516334d2d20d60e01b815260040160405180910390fd5b600a5482148015610f765750600b5481145b15610f945760405163e5cca11f60e01b815260040160405180910390fd5b6103e8610fa1828461285c565b10610fc35760405163bcbac79d60e01b81526103e86004820152602401610ec7565b600a8054600b8054928590558390556040519091907fc136c847ae8a727a6c93d9f84c5401e6a6441d05efd508466161ce23337cff5b9061100f9084908490889088903390429061295b565b60405180910390a150505050565b611025612142565b60145462010000900460ff161561104f576040516334d2d20d60e01b815260040160405180910390fd5b60045482148015611061575060055481145b1561107f5760405163e5cca11f60e01b815260040160405180910390fd5b6103e861108c828461285c565b106110ae5760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6004805460058054928590558390556040519091907ffe2932ef95c6475e661168503e475c702d42a654b8894b63e1cf394485d2821c9061100f9084908490889088903390429061295b565b611102612142565b6001600160a01b0382166000908152601a602052604090205481151560ff9091161515036111465760405162a7e72d60e41b81528115156004820152602401610ec7565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190612885565b6001600160a01b03161415801561123c5750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112309190612885565b6001600160a01b031614155b1561126557604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b611298612142565b80601160008282546112aa919061285c565b9091555050426012556112bf8161dead61217e565b50565b6000612710600c546112d360025490565b6112dd919061298c565b6112e791906129a3565b90506001600e5410806113075750600d54600e546113059042612922565b105b801561132c57506001600160a01b03821660009081526019602052604090205460ff16155b1561137e578083611352846001600160a01b031660009081526016602052604090205490565b61135c919061285c565b111561137e57604051633ad0b44360e11b815260048101829052602401610ec7565b505050565b61138b612142565b6113956000612317565b565b61139f612142565b80601354036113c45760405163657e16cf60e01b815260048101829052602401610ec7565b6013805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590608001610f26565b61141a612142565b60145460ff1615611449576014546040516301bf623960e61b815260ff90911615156004820152602401610ec7565b601454610100900460ff161561148157601454604051630eff900b60e21b815261010090910460ff1615156004820152602401610ec7565b6014546301000000900460ff16156114bd5760145460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610ec7565b6014805463ff00ffff1916630100010117905542600e55565b6000806000600e54426114e99190612922565b905060b48111611500575060649261096092509050565b60b48111801561151257506101a48111155b15611524575060649261038492509050565b6101a48111801561153757506101cc8111155b1561154757506000928392509050565b60045460055492509250509091565b61155e612142565b801515601460039054906101000a900460ff161515036115945760405162a7e72d60e41b81528115156004820152602401610ec7565b6014805463ff000000198116630100000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610f26908390859033904290612935565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead60009081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b575460025491929161164f9190612922565b6116599190612922565b905090565b6000806000600e54426116719190612922565b905060b4811161168657506000928392509050565b60b48111801561169857506101a48111155b156116a857506000928392509050565b6101a4811180156116bb57506101cc8111155b156116cb57506000928392509050565b600a54600b5492509250509091565b600033816116e88286611c40565b9050838110156117485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ec7565b6117558286868403611d55565b506001949350505050565b60003361176e818585611e94565b949350505050565b61177e612142565b60145462010000900460ff16156117a8576040516334d2d20d60e01b815260040160405180910390fd5b600754821480156117ba575060085481145b156117d85760405163e5cca11f60e01b815260040160405180910390fd5b6103e86117e5828461285c565b106118075760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6007805460088054928590558390556040519091907ffd1d173bff70c08be0edb34ff54ac9f282d66241eb9848cdf123d283a7f354e69061100f9084908490889088903390429061295b565b61185b612142565b6014546001600160a01b03808316600160281b909204160361189b5760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b601480546001600160a01b03838116600160281b81810265010000000000600160c81b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907f8398165ebfaa5831ed8697905b76704b18bb44c19f6630c76c8fa68f32dc7dfe90608001610f26565b61191d612142565b6001546001600160a01b038083169116036119565760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260186020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a519190612885565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190612885565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b489190612885565b601580546001600160a01b0319166001600160a01b039290921691821790556000908152601a60205260409020805460ff191660011790555050565b611b8c612142565b6001600160a01b03821660009081526018602052604090205481151560ff909116151503611bd05760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526018602052604090819020805483151560ff19821617909155905160ff909116907f4c18d53c2d0e765ff1dc3e5d53d8c51002cc0b5c114aa07199d629d54fad593e90611c33908390859033904290612935565b60405180910390a1505050565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b611c73612142565b6001600160a01b038116611c9d5760405163b20f76e360e01b815260006004820152602401610ec7565b6112bf81612317565b611cae612142565b6001600160a01b03821660009081526019602052604090205481151560ff909116151503611cf25760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526019602052604090819020805483151560ff19821617909155905160ff909116907f887bfffde87b3f64221a6b7de2ee5ef7503d2388b41b153cfb301c26087a7f3c90611c33908390859033904290612935565b6001600160a01b038316611d8757604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b6001600160a01b038216611db957604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611e268484611c40565b90506000198114611e8e5781811015611e815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ec7565b611e8e8484848403611d55565b50505050565b60006001600160a01b038416611ec857604051634726455360e11b81526001600160a01b0385166004820152602401610ec7565b6001600160a01b038316611efa57604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b60145460ff16158015611f2657506001600160a01b03841660009081526018602052604090205460ff16155b8015611f4b57506001600160a01b03831660009081526018602052604090205460ff16155b15611f6957604051632b61510560e11b815260040160405180910390fd5b601454600160201b900460ff1680611f9957506001600160a01b03841660009081526018602052604090205460ff165b15611fb057611fa9848484612367565b9050610db8565b6015546001600160a01b03858116911614801590611fd757506014546301000000900460ff165b8015611ff457506013543060009081526016602052604090205410155b80156120115750601354601054600f5461200e9190612922565b10155b1561202157612021601354610b9b565b6014548290610100900460ff16801561205357506001600160a01b03851660009081526018602052604090205460ff16155b801561207857506001600160a01b03841660009081526018602052604090205460ff16155b1561208b57612088858585612400565b90505b61209581856112c2565b6001600160a01b0385166000908152601660205260409020548111156120cd5760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b03808616600081815260166020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9085815260200190565b60405180910390a3506001949350505050565b336121556000546001600160a01b031690565b6001600160a01b031614611395576040516332b2baa360e01b8152336004820152602401610ec7565b6014805460ff60201b1916600160201b17905561deac1933016121b857604051634726455360e11b815261dead6004820152602401610ec7565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122469190612885565b816000815181106122595761225961286f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061228d5761228d61286f565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de959085906122d390600090869088904290600401612a0b565b6000604051808303818588803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506014805460ff60201b19169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260166020526040812054828110156123a05760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b0380861660008181526016602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9087815260200190565b6014805460ff60201b1916600160201b1790556001600160a01b0383166000908152601a60205260408120548190819060ff161561246c576124406114d6565b90925090506000612451828461285c565b111561246c5761246386858484612544565b92505050612530565b6001600160a01b0385166000908152601a602052604090205460ff16156124b857612495610dbf565b909250905060006124a6828461285c565b11156124b85761246386858484612544565b6001600160a01b0386166000908152601a602052604090205460ff161580156124fa57506001600160a01b0385166000908152601a602052604090205460ff16155b1561252a5761250761165e565b90925090506000612518828461285c565b111561252a5761246386858484612544565b83925050505b6014805460ff60201b191690559392505050565b6014805460ff60201b1916600160201b179055600080612710612567858761298c565b61257191906129a3565b90506000612710612582858861298c565b61258c91906129a3565b905060008161259b8489612922565b6125a59190612922565b905060006125b3838561285c565b11156125c4576125c48884846125dc565b6014805460ff60201b19169055979650505050505050565b6014805460ff60201b1916600160201b17905560006125fb828461285c565b905080600f600082825461260f919061285c565b925050819055508260106000828254612628919061285c565b9091555061263b90508461dead85612367565b50612647843084612367565b50506014805460ff60201b19169055505050565b60006020828403121561266d57600080fd5b5035919050565b600060208083528351808285015260005b818110156126a157858101830151858201604001528201612685565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112bf57600080fd5b6000602082840312156126e957600080fd5b8135610db8816126c2565b6000806040838503121561270757600080fd5b8235612712816126c2565b946020939093013593505050565b60008060006060848603121561273557600080fd5b8335612740816126c2565b92506020840135612750816126c2565b929592945050506040919091013590565b8035801515811461277157600080fd5b919050565b60006020828403121561278857600080fd5b610db882612761565b600080604083850312156127a457600080fd5b50508035926020909101359150565b600080604083850312156127c657600080fd5b82356127d1816126c2565b91506127df60208401612761565b90509250929050565b600080604083850312156127fb57600080fd5b82359150602083013561280d816126c2565b809150509250929050565b6000806040838503121561282b57600080fd5b8235612836816126c2565b9150602083013561280d816126c2565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d9557610d95612846565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561289757600080fd5b8151610db8816126c2565b600081518084526020808501945080840160005b838110156128db5781516001600160a01b0316875295820195908201906001016128b6565b509495945050505050565b85815284602082015260a06040820152600061290560a08301866128a2565b6001600160a01b0394909416606083015250608001529392505050565b81810381811115610d9557610d95612846565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b9586526020860194909452604085019290925260608401526001600160a01b0316608083015260a082015260c00190565b8082028115828204841417610d9557610d95612846565b6000826129c057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b848152608060208201526000612a2460808301866128a2565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220da918ee548f1c878a2d4696d08054bb54e751278d60bb7c852fdff41286e68a064736f6c634300081200330000000000000000000000008cf3144ba596d87a3cb8c12f73814bec6eea3d090000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103c75760003560e01c806392136913116101f2578063beffc7d41161010d578063da4daf71116100a0578063f2a426871161006f578063f2a4268714610b0b578063f2fde38b14610b3b578063f31d5c7a14610b5b578063f887ea4014610b7b57600080fd5b8063da4daf7114610aa0578063dd62ed3e14610ab6578063e43504da14610ad6578063e71dc3f514610af557600080fd5b8063c9ab366b116100dc578063c9ab366b14610a2f578063d621e81314610a45578063d63cad2214610a5f578063d830678614610a7f57600080fd5b8063beffc7d4146109bb578063c520c1fb146109db578063c69bebe4146109ef578063c851cc3214610a0f57600080fd5b8063a9059cbb11610185578063adc7b55611610154578063adc7b5561461092e578063b3f006741461095e578063b908de8c14610985578063b9b2b5cd146109a557600080fd5b8063a9059cbb146108cc578063ab28a04c146108ec578063acb2ad6f14610902578063adb873bd1461091857600080fd5b806397e1b9d3116101c157806397e1b9d3146108615780639a17d8c114610877578063a457c2d71461088c578063a8aa1b31146108ac57600080fd5b806392136913146107e7578063924de9b7146107fd5780639358928b1461081d57806395d89b411461083257600080fd5b806347062402116102e257806371538eed1161027557806385c5b3191161024457806385c5b319146107895780638a8c523c1461079f5780638da5cb5b146107b45780638f818b90146107d257600080fd5b806371538eed146106f157806375fed3c71461070757806378eec331146107275780637bce5a041461077357600080fd5b806363a95492116102b157806363a954921461066657806363fcc9221461068657806370a08231146106a6578063715018a6146106dc57600080fd5b806347062402146105fa57806359cd903114610610578063610e34b914610626578063625dd6051461064657600080fd5b80632b14ca561161035a578063395093511161032957806339509351146105845780633bf31454146105a45780633c8463a1146105c45780633d3359cb146105da57600080fd5b80632b14ca561461051b5780632c735ef814610531578063313ce56714610547578063351a964d1461056357600080fd5b806318160ddd1161039657806318160ddd1461049c5780631c8a6adc146104bb57806323b872dd146104d1578063289af0d8146104f157600080fd5b806301295143146103d357806306fdde03146103f557806308c436501461043c578063095ea7b31461047c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103f36103ee36600461265b565b610b9b565b005b34801561040157600080fd5b5060408051808201909152600c81526b1410549516481410549493d560a21b60208201525b6040516104339190612674565b60405180910390f35b34801561044857600080fd5b5061046c6104573660046126d7565b601a6020526000908152604090205460ff1681565b6040519015158152602001610433565b34801561048857600080fd5b5061046c6104973660046126f4565b610d81565b3480156104a857600080fd5b506002545b604051908152602001610433565b3480156104c757600080fd5b506104ad600a5481565b3480156104dd57600080fd5b5061046c6104ec366004612720565b610d9b565b3480156104fd57600080fd5b50610506610dbf565b60408051928352602083019190915201610433565b34801561052757600080fd5b506104ad60065481565b34801561053d57600080fd5b506104ad600e5481565b34801561055357600080fd5b5060405160128152602001610433565b34801561056f57600080fd5b5060145461046c906301000000900460ff1681565b34801561059057600080fd5b5061046c61059f3660046126f4565b610e41565b3480156105b057600080fd5b506103f36105bf366004612776565b610e63565b3480156105d057600080fd5b506104ad600c5481565b3480156105e657600080fd5b506103f36105f5366004612791565b610f32565b34801561060657600080fd5b506104ad60035481565b34801561061c57600080fd5b506104ad60135481565b34801561063257600080fd5b506103f3610641366004612791565b61101d565b34801561065257600080fd5b506103f36106613660046127b3565b6110fa565b34801561067257600080fd5b506103f361068136600461265b565b611290565b34801561069257600080fd5b506103f36106a13660046127e8565b6112c2565b3480156106b257600080fd5b506104ad6106c13660046126d7565b6001600160a01b031660009081526016602052604090205490565b3480156106e857600080fd5b506103f3611383565b3480156106fd57600080fd5b506104ad60105481565b34801561071357600080fd5b506103f361072236600461265b565b611397565b34801561073357600080fd5b5061075b7f00000000000000000000000073bb81df2262668cf0762978db1104dd538bc20e81565b6040516001600160a01b039091168152602001610433565b34801561077f57600080fd5b506104ad60055481565b34801561079557600080fd5b506104ad600b5481565b3480156107ab57600080fd5b506103f3611412565b3480156107c057600080fd5b506000546001600160a01b031661075b565b3480156107de57600080fd5b506105066114d6565b3480156107f357600080fd5b506104ad60085481565b34801561080957600080fd5b506103f3610818366004612776565b611556565b34801561082957600080fd5b506104ad6115ee565b34801561083e57600080fd5b5060408051808201909152600681526505041525459560d41b6020820152610426565b34801561086d57600080fd5b506104ad60125481565b34801561088357600080fd5b5061050661165e565b34801561089857600080fd5b5061046c6108a73660046126f4565b6116da565b3480156108b857600080fd5b5060155461075b906001600160a01b031681565b3480156108d857600080fd5b5061046c6108e73660046126f4565b611760565b3480156108f857600080fd5b506104ad61271081565b34801561090e57600080fd5b506104ad60095481565b34801561092457600080fd5b506104ad60075481565b34801561093a57600080fd5b5061046c6109493660046126d7565b60196020526000908152604090205460ff1681565b34801561096a57600080fd5b5060145461075b90600160281b90046001600160a01b031681565b34801561099157600080fd5b5060145461046c9062010000900460ff1681565b3480156109b157600080fd5b506104ad600f5481565b3480156109c757600080fd5b506103f36109d6366004612791565b611776565b3480156109e757600080fd5b50600161046c565b3480156109fb57600080fd5b506103f3610a0a3660046126d7565b611853565b348015610a1b57600080fd5b506103f3610a2a3660046126d7565b611915565b348015610a3b57600080fd5b506104ad600d5481565b348015610a5157600080fd5b5060145461046c9060ff1681565b348015610a6b57600080fd5b506103f3610a7a3660046127b3565b611b84565b348015610a8b57600080fd5b5060145461046c90600160201b900460ff1681565b348015610aac57600080fd5b506104ad60115481565b348015610ac257600080fd5b506104ad610ad1366004612818565b611c40565b348015610ae257600080fd5b5060145461046c90610100900460ff1681565b348015610b0157600080fd5b506104ad60045481565b348015610b1757600080fd5b5061046c610b263660046126d7565b60186020526000908152604090205460ff1681565b348015610b4757600080fd5b506103f3610b563660046126d7565b611c6b565b348015610b6757600080fd5b506103f3610b763660046127b3565b611ca6565b348015610b8757600080fd5b5060015461075b906001600160a01b031681565b6014805460ff60201b1916600160201b17905560108054829190600090610bc390849061285c565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610bfd57610bfd61286f565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a9190612885565b81600181518110610c8d57610c8d61286f565b6001600160a01b039283166020918202929092010152600154610cb39130911684611d55565b6040805183815260208101849052338183015242606082015290517fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c309181900360800190a160015460145460405163791ac94760e01b81526001600160a01b039283169263791ac94792610d3e9287926000928892600160281b9091049091169042906004016128e6565b600060405180830381600087803b158015610d5857600080fd5b505af1158015610d6c573d6000803e3d6000fd5b50506014805460ff60201b1916905550505050565b600033610d8f818585611d55565b60019150505b92915050565b600033610da9858285611e1a565b610db4858585611e94565b9150505b9392505050565b6000806000600e5442610dd29190612922565b905060b48111610de95750606492610bb892509050565b60b481118015610dfb57506101a48111155b15610e0d575060649261038492509050565b6101a481118015610e2057506101cc8111155b15610e32575060649261264892509050565b60075460085492509250509091565b600033610d8f818585610e548383611c40565b610e5e919061285c565b611d55565b610e6b612142565b60145462010000900460ff1615610e95576040516334d2d20d60e01b815260040160405180910390fd5b801515601460019054906101000a900460ff16151503610ed05760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b6014805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610f26908390859033904290612935565b60405180910390a15050565b610f3a612142565b60145462010000900460ff1615610f64576040516334d2d20d60e01b815260040160405180910390fd5b600a5482148015610f765750600b5481145b15610f945760405163e5cca11f60e01b815260040160405180910390fd5b6103e8610fa1828461285c565b10610fc35760405163bcbac79d60e01b81526103e86004820152602401610ec7565b600a8054600b8054928590558390556040519091907fc136c847ae8a727a6c93d9f84c5401e6a6441d05efd508466161ce23337cff5b9061100f9084908490889088903390429061295b565b60405180910390a150505050565b611025612142565b60145462010000900460ff161561104f576040516334d2d20d60e01b815260040160405180910390fd5b60045482148015611061575060055481145b1561107f5760405163e5cca11f60e01b815260040160405180910390fd5b6103e861108c828461285c565b106110ae5760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6004805460058054928590558390556040519091907ffe2932ef95c6475e661168503e475c702d42a654b8894b63e1cf394485d2821c9061100f9084908490889088903390429061295b565b611102612142565b6001600160a01b0382166000908152601a602052604090205481151560ff9091161515036111465760405162a7e72d60e41b81528115156004820152602401610ec7565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190612885565b6001600160a01b03161415801561123c5750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112309190612885565b6001600160a01b031614155b1561126557604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b611298612142565b80601160008282546112aa919061285c565b9091555050426012556112bf8161dead61217e565b50565b6000612710600c546112d360025490565b6112dd919061298c565b6112e791906129a3565b90506001600e5410806113075750600d54600e546113059042612922565b105b801561132c57506001600160a01b03821660009081526019602052604090205460ff16155b1561137e578083611352846001600160a01b031660009081526016602052604090205490565b61135c919061285c565b111561137e57604051633ad0b44360e11b815260048101829052602401610ec7565b505050565b61138b612142565b6113956000612317565b565b61139f612142565b80601354036113c45760405163657e16cf60e01b815260048101829052602401610ec7565b6013805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590608001610f26565b61141a612142565b60145460ff1615611449576014546040516301bf623960e61b815260ff90911615156004820152602401610ec7565b601454610100900460ff161561148157601454604051630eff900b60e21b815261010090910460ff1615156004820152602401610ec7565b6014546301000000900460ff16156114bd5760145460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610ec7565b6014805463ff00ffff1916630100010117905542600e55565b6000806000600e54426114e99190612922565b905060b48111611500575060649261096092509050565b60b48111801561151257506101a48111155b15611524575060649261038492509050565b6101a48111801561153757506101cc8111155b1561154757506000928392509050565b60045460055492509250509091565b61155e612142565b801515601460039054906101000a900460ff161515036115945760405162a7e72d60e41b81528115156004820152602401610ec7565b6014805463ff000000198116630100000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610f26908390859033904290612935565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead60009081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b575460025491929161164f9190612922565b6116599190612922565b905090565b6000806000600e54426116719190612922565b905060b4811161168657506000928392509050565b60b48111801561169857506101a48111155b156116a857506000928392509050565b6101a4811180156116bb57506101cc8111155b156116cb57506000928392509050565b600a54600b5492509250509091565b600033816116e88286611c40565b9050838110156117485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ec7565b6117558286868403611d55565b506001949350505050565b60003361176e818585611e94565b949350505050565b61177e612142565b60145462010000900460ff16156117a8576040516334d2d20d60e01b815260040160405180910390fd5b600754821480156117ba575060085481145b156117d85760405163e5cca11f60e01b815260040160405180910390fd5b6103e86117e5828461285c565b106118075760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6007805460088054928590558390556040519091907ffd1d173bff70c08be0edb34ff54ac9f282d66241eb9848cdf123d283a7f354e69061100f9084908490889088903390429061295b565b61185b612142565b6014546001600160a01b03808316600160281b909204160361189b5760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b601480546001600160a01b03838116600160281b81810265010000000000600160c81b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907f8398165ebfaa5831ed8697905b76704b18bb44c19f6630c76c8fa68f32dc7dfe90608001610f26565b61191d612142565b6001546001600160a01b038083169116036119565760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260186020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a519190612885565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190612885565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b489190612885565b601580546001600160a01b0319166001600160a01b039290921691821790556000908152601a60205260409020805460ff191660011790555050565b611b8c612142565b6001600160a01b03821660009081526018602052604090205481151560ff909116151503611bd05760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526018602052604090819020805483151560ff19821617909155905160ff909116907f4c18d53c2d0e765ff1dc3e5d53d8c51002cc0b5c114aa07199d629d54fad593e90611c33908390859033904290612935565b60405180910390a1505050565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b611c73612142565b6001600160a01b038116611c9d5760405163b20f76e360e01b815260006004820152602401610ec7565b6112bf81612317565b611cae612142565b6001600160a01b03821660009081526019602052604090205481151560ff909116151503611cf25760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526019602052604090819020805483151560ff19821617909155905160ff909116907f887bfffde87b3f64221a6b7de2ee5ef7503d2388b41b153cfb301c26087a7f3c90611c33908390859033904290612935565b6001600160a01b038316611d8757604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b6001600160a01b038216611db957604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611e268484611c40565b90506000198114611e8e5781811015611e815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ec7565b611e8e8484848403611d55565b50505050565b60006001600160a01b038416611ec857604051634726455360e11b81526001600160a01b0385166004820152602401610ec7565b6001600160a01b038316611efa57604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b60145460ff16158015611f2657506001600160a01b03841660009081526018602052604090205460ff16155b8015611f4b57506001600160a01b03831660009081526018602052604090205460ff16155b15611f6957604051632b61510560e11b815260040160405180910390fd5b601454600160201b900460ff1680611f9957506001600160a01b03841660009081526018602052604090205460ff165b15611fb057611fa9848484612367565b9050610db8565b6015546001600160a01b03858116911614801590611fd757506014546301000000900460ff165b8015611ff457506013543060009081526016602052604090205410155b80156120115750601354601054600f5461200e9190612922565b10155b1561202157612021601354610b9b565b6014548290610100900460ff16801561205357506001600160a01b03851660009081526018602052604090205460ff16155b801561207857506001600160a01b03841660009081526018602052604090205460ff16155b1561208b57612088858585612400565b90505b61209581856112c2565b6001600160a01b0385166000908152601660205260409020548111156120cd5760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b03808616600081815260166020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9085815260200190565b60405180910390a3506001949350505050565b336121556000546001600160a01b031690565b6001600160a01b031614611395576040516332b2baa360e01b8152336004820152602401610ec7565b6014805460ff60201b1916600160201b17905561deac1933016121b857604051634726455360e11b815261dead6004820152602401610ec7565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122469190612885565b816000815181106122595761225961286f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061228d5761228d61286f565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de959085906122d390600090869088904290600401612a0b565b6000604051808303818588803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506014805460ff60201b19169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260166020526040812054828110156123a05760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b0380861660008181526016602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9087815260200190565b6014805460ff60201b1916600160201b1790556001600160a01b0383166000908152601a60205260408120548190819060ff161561246c576124406114d6565b90925090506000612451828461285c565b111561246c5761246386858484612544565b92505050612530565b6001600160a01b0385166000908152601a602052604090205460ff16156124b857612495610dbf565b909250905060006124a6828461285c565b11156124b85761246386858484612544565b6001600160a01b0386166000908152601a602052604090205460ff161580156124fa57506001600160a01b0385166000908152601a602052604090205460ff16155b1561252a5761250761165e565b90925090506000612518828461285c565b111561252a5761246386858484612544565b83925050505b6014805460ff60201b191690559392505050565b6014805460ff60201b1916600160201b179055600080612710612567858761298c565b61257191906129a3565b90506000612710612582858861298c565b61258c91906129a3565b905060008161259b8489612922565b6125a59190612922565b905060006125b3838561285c565b11156125c4576125c48884846125dc565b6014805460ff60201b19169055979650505050505050565b6014805460ff60201b1916600160201b17905560006125fb828461285c565b905080600f600082825461260f919061285c565b925050819055508260106000828254612628919061285c565b9091555061263b90508461dead85612367565b50612647843084612367565b50506014805460ff60201b19169055505050565b60006020828403121561266d57600080fd5b5035919050565b600060208083528351808285015260005b818110156126a157858101830151858201604001528201612685565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112bf57600080fd5b6000602082840312156126e957600080fd5b8135610db8816126c2565b6000806040838503121561270757600080fd5b8235612712816126c2565b946020939093013593505050565b60008060006060848603121561273557600080fd5b8335612740816126c2565b92506020840135612750816126c2565b929592945050506040919091013590565b8035801515811461277157600080fd5b919050565b60006020828403121561278857600080fd5b610db882612761565b600080604083850312156127a457600080fd5b50508035926020909101359150565b600080604083850312156127c657600080fd5b82356127d1816126c2565b91506127df60208401612761565b90509250929050565b600080604083850312156127fb57600080fd5b82359150602083013561280d816126c2565b809150509250929050565b6000806040838503121561282b57600080fd5b8235612836816126c2565b9150602083013561280d816126c2565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d9557610d95612846565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561289757600080fd5b8151610db8816126c2565b600081518084526020808501945080840160005b838110156128db5781516001600160a01b0316875295820195908201906001016128b6565b509495945050505050565b85815284602082015260a06040820152600061290560a08301866128a2565b6001600160a01b0394909416606083015250608001529392505050565b81810381811115610d9557610d95612846565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b9586526020860194909452604085019290925260608401526001600160a01b0316608083015260a082015260c00190565b8082028115828204841417610d9557610d95612846565b6000826129c057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b848152608060208201526000612a2460808301866128a2565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220da918ee548f1c878a2d4696d08054bb54e751278d60bb7c852fdff41286e68a064736f6c63430008120033

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

0000000000000000000000008cf3144ba596d87a3cb8c12f73814bec6eea3d090000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : feeReceiverAdr (address): 0x8cf3144bA596d87A3Cb8c12F73814bec6eEA3d09
Arg [1] : routerAdr (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008cf3144ba596d87a3cb8c12f73814bec6eea3d09
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

9222:21190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14336:611;;;;;;;;;;-1:-1:-1;14336:611:0;;;;;:::i;:::-;;:::i;:::-;;24577:101;;;;;;;;;;-1:-1:-1;24666:4:0;;;;;;;;;;;;-1:-1:-1;;;24666:4:0;;;;24577:101;;;;;;;:::i;:::-;;;;;;;;10892:40;;;;;;;;;;-1:-1:-1;10892:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1305:14:1;;1298:22;1280:41;;1268:2;1253:18;10892:40:0;1140:187:1;25544:205:0;;;;;;;;;;-1:-1:-1;25544:205:0;;;;;:::i;:::-;;:::i;24920:108::-;;;;;;;;;;-1:-1:-1;25008:12:0;;24920:108;;;1798:25:1;;;1786:2;1771:18;24920:108:0;1652:177:1;9838:34:0;;;;;;;;;;;;;;;;25761:246;;;;;;;;;;-1:-1:-1;25761:246:0;;;;;:::i;:::-;;:::i;16088:453::-;;;;;;;;;;;;;:::i;:::-;;;;2469:25:1;;;2525:2;2510:18;;2503:34;;;;2442:18;16088:453:0;2295:248:1;9683:28:0;;;;;;;;;;;;;;;;10012:33;;;;;;;;;;;;;;;;24807:101;;;;;;;;;;-1:-1:-1;24807:101:0;;9466:2;2690:36:1;;2678:2;2663:18;24807:101:0;2548:184:1;10442:33:0;;;;;;;;;;-1:-1:-1;10442:33:0;;;;;;;;;;;26019:247;;;;;;;;;;-1:-1:-1;26019:247:0;;;;;:::i;:::-;;:::i;17842:363::-;;;;;;;;;;-1:-1:-1;17842:363:0;;;;;:::i;:::-;;:::i;9925:30::-;;;;;;;;;;;;;;;;19517:680;;;;;;;;;;-1:-1:-1;19517:680:0;;;;;:::i;:::-;;:::i;9574:25::-;;;;;;;;;;;;;;;;10236:36;;;;;;;;;;;;;;;;18213:640;;;;;;;;;;-1:-1:-1;18213:640:0;;;;;:::i;:::-;;:::i;21647:326::-;;;;;;;;;;-1:-1:-1;21647:326:0;;;;;:::i;:::-;;:::i;23900:213::-;;;;;;;;;;-1:-1:-1;23900:213:0;;;;;:::i;:::-;;:::i;15231:397::-;;;;;;;;;;-1:-1:-1;15231:397:0;;;;;:::i;:::-;;:::i;25040:127::-;;;;;;;;;;-1:-1:-1;25040:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;25141:18:0;25114:7;25141:18;;;:9;:18;;;;;;;25040:127;8491:103;;;;;;;;;;;;;:::i;10095:35::-;;;;;;;;;;;;;;;;17530:304;;;;;;;;;;-1:-1:-1;17530:304:0;;;;;:::i;:::-;;:::i;10517:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4144:32:1;;;4126:51;;4114:2;4099:18;10517:37:0;3980:203:1;9642:34:0;;;;;;;;;;;;;;;;9879:39;;;;;;;;;;;;;;;;13893:415;;;;;;;;;;;;;:::i;8233:87::-;;;;;;;;;;-1:-1:-1;8279:7:0;8306:6;-1:-1:-1;;;;;8306:6:0;8233:87;;15636:444;;;;;;;;;;;;;:::i;9757:37::-;;;;;;;;;;;;;;;;20546:317;;;;;;;;;;-1:-1:-1;20546:317:0;;;;;:::i;:::-;;:::i;15070:153::-;;;;;;;;;;;;;:::i;24690:105::-;;;;;;;;;;-1:-1:-1;24781:6:0;;;;;;;;;;;;-1:-1:-1;;;24781:6:0;;;;24690:105;;10186:43;;;;;;;;;;;;;;;;16549:449;;;;;;;;;;;;;:::i;26278:445::-;;;;;;;;;;-1:-1:-1;26278:445:0;;;;;:::i;:::-;;:::i;10596:19::-;;;;;;;;;;-1:-1:-1;10596:19:0;;;;-1:-1:-1;;;;;10596:19:0;;;25179:184;;;;;;;;;;-1:-1:-1;25179:184:0;;;;;:::i;:::-;;:::i;9518:47::-;;;;;;;;;;;;9559:6;9518:47;;9801:30;;;;;;;;;;;;;;;;9718:32;;;;;;;;;;;;;;;;10828:57;;;;;;;;;;-1:-1:-1;10828:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10561:26;;;;;;;;;;-1:-1:-1;10561:26:0;;;;-1:-1:-1;;;10561:26:0;;-1:-1:-1;;;;;10561:26:0;;;10404:31;;;;;;;;;;-1:-1:-1;10404:31:0;;;;;;;;;;;10052:36;;;;;;;;;;;;;;;;18861:648;;;;;;;;;;-1:-1:-1;18861:648:0;;;;;:::i;:::-;;:::i;14974:88::-;;;;;;;;;;-1:-1:-1;10314:4:0;14974:88;;20205:333;;;;;;;;;;-1:-1:-1;20205:333:0;;;;;:::i;:::-;;:::i;17026:496::-;;;;;;;;;;-1:-1:-1;17026:496:0;;;;;:::i;:::-;;:::i;9962:43::-;;;;;;;;;;;;;;;;10327:32;;;;;;;;;;-1:-1:-1;10327:32:0;;;;;;;;20871:360;;;;;;;;;;-1:-1:-1;20871:360:0;;;;;:::i;:::-;;:::i;10482:26::-;;;;;;;;;;-1:-1:-1;10482:26:0;;;;-1:-1:-1;;;10482:26:0;;;;;;10137:42;;;;;;;;;;;;;;;;25375:157;;;;;;;;;;-1:-1:-1;25375:157:0;;;;;:::i;:::-;;:::i;10366:31::-;;;;;;;;;;-1:-1:-1;10366:31:0;;;;;;;;;;;9606:29;;;;;;;;;;;;;;;;10772:49;;;;;;;;;;-1:-1:-1;10772:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8602:213;;;;;;;;;;-1:-1:-1;8602:213:0;;;;;:::i;:::-;;:::i;21239:400::-;;;;;;;;;;-1:-1:-1;21239:400:0;;;;;:::i;:::-;;:::i;9300:21::-;;;;;;;;;;-1:-1:-1;9300:21:0;;;;-1:-1:-1;;;;;9300:21:0;;;14336:611;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;14417:16:::1;:34:::0;;14437:14;;14417:16;10991:13;;14417:34:::1;::::0;14437:14;;14417:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;14488:16:0::1;::::0;;14502:1:::1;14488:16:::0;;;;;::::1;::::0;;14464:21:::1;::::0;14488:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14488:16:0::1;14464:40;;14533:4;14515;14520:1;14515:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14515:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14559:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;14559:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;14515:7;;14559:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14549:4;14554:1;14549:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14549:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14617:6:::1;::::0;14585:56:::1;::::0;14602:4:::1;::::0;14617:6:::1;14626:14:::0;14585:8:::1;:56::i;:::-;14667:71;::::0;;5817:25:1;;;5873:2;5858:18;;5851:34;;;14710:10:0::1;5901:18:1::0;;;5894:60;14722:15:0::1;5985:2:1::0;5970:18;;5963:34;14667:71:0;;::::1;::::0;;;;5804:3:1;14667:71:0;;::::1;14751:6;::::0;14887:11:::1;::::0;14751:188:::1;::::0;-1:-1:-1;;;14751:188:0;;-1:-1:-1;;;;;14751:6:0;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14823:14;;14751:6:::1;::::0;14868:4;;-1:-1:-1;;;14887:11:0;;::::1;::::0;;::::1;::::0;14913:15:::1;::::0;14751:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11027:6:0;:14;;-1:-1:-1;;;;11027:14:0;;;-1:-1:-1;;;;14336:611:0:o;25544:205::-;25627:4;25663:10;25684:35;25663:10;25703:7;25712:6;25684:8;:35::i;:::-;25737:4;25730:11;;;25544:205;;;;;:::o;25761:246::-;25860:4;25895:10;25916:38;25932:4;25895:10;25947:6;25916:15;:38::i;:::-;25972:27;25982:4;25988:2;25992:6;25972:9;:27::i;:::-;25965:34;;;25761:246;;;;;;:::o;16088:453::-;16131:7;16140;16160:12;16193:14;;16175:15;:32;;;;:::i;:::-;16160:47;;16230:9;16222:4;:17;16218:69;;-1:-1:-1;16264:3:0;;16269:5;;-1:-1:-1;16088:453:0;-1:-1:-1;16088:453:0:o;16218:69::-;16308:9;16301:4;:16;:37;;;;;16329:9;16321:4;:17;;16301:37;16297:87;;;-1:-1:-1;16363:3:0;;16368;;-1:-1:-1;16088:453:0;-1:-1:-1;16088:453:0:o;16297:87::-;16405:9;16398:4;:16;:39;;;;;16426:11;16418:4;:19;;16398:39;16394:91;;;-1:-1:-1;16462:3:0;;16467:5;;-1:-1:-1;16088:453:0;-1:-1:-1;16088:453:0:o;16394:91::-;16503:11;;16516:16;;16495:38;;;;;16088:453;;:::o;26019:247::-;26109:4;26145:10;26166:70;26145:10;26185:7;26225:10;26194:28;26145:10;26185:7;26194:9;:28::i;:::-;:41;;;;:::i;:::-;26166:8;:70::i;17842:363::-;7831:13;:11;:13::i;:::-;17917:11:::1;::::0;;;::::1;;;17913:46;;;17939:17;;-1:-1:-1::0;;;17939:17:0::1;;;;;;;;;;;17913:46;17988:9;17973:24;;:11;;;;;;;;;;;:24;;::::0;17969:74:::1;;18008:32;::::0;-1:-1:-1;;;18008:32:0;;1305:14:1;;1298:22;18008:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;18008:32:0::1;;;;;;;;17969:74;18070:11;::::0;;-1:-1:-1;;18092:23:0;::::1;18070:11;18092:23:::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;18131:66:::1;::::0;18070:11;;::::1;;;::::0;18131:66:::1;::::0;::::1;::::0;18070:11;;18092:23;;18169:10:::1;::::0;18181:15:::1;::::0;18131:66:::1;:::i;:::-;;;;;;;;17902:303;17842:363:::0;:::o;19517:680::-;7831:13;:11;:13::i;:::-;19623:11:::1;::::0;;;::::1;;;19619:46;;;19645:17;;-1:-1:-1::0;;;19645:17:0::1;;;;;;;;;;;19619:46;19693:15;;19679:10;:29;:72;;;;;19731:20;;19712:15;:39;19679:72;19675:112;;;19762:22;;-1:-1:-1::0;;;19762:22:0::1;;;;;;;;;;;19675:112;19833:5;19801:28;19814:15:::0;19801:10;:28:::1;:::i;:::-;:37;19797:81;;19849:26;::::0;-1:-1:-1;;;19849:26:0;;19869:5:::1;19849:26;::::0;::::1;1798:25:1::0;1771:18;;19849:26:0::1;1652:177:1::0;19797:81:0::1;19909:15;::::0;;19961:20:::1;::::0;;19992:28;;;;20031:38;;;20085:104:::1;::::0;19909:15;;19961:20;20085:104:::1;::::0;::::1;::::0;19909:15;;19961:20;;20010:10;;20054:15;;20161:10:::1;::::0;20173:15:::1;::::0;20085:104:::1;:::i;:::-;;;;;;;;19608:589;;19517:680:::0;;:::o;18213:640::-;7831:13;:11;:13::i;:::-;18314:11:::1;::::0;;;::::1;;;18310:46;;;18336:17;;-1:-1:-1::0;;;18336:17:0::1;;;;;;;;;;;18310:46;18384:10;;18370;:24;:62;;;;;18417:15;;18398;:34;18370:62;18366:102;;;18443:22;;-1:-1:-1::0;;;18443:22:0::1;;;;;;;;;;;18366:102;18514:5;18482:28;18495:15:::0;18482:10;:28:::1;:::i;:::-;:37;18478:81;;18530:26;::::0;-1:-1:-1;;;18530:26:0;;18550:5:::1;18530:26;::::0;::::1;1798:25:1::0;1771:18;;18530:26:0::1;1652:177:1::0;18478:81:0::1;18590:10;::::0;;18637:15:::1;::::0;;18663:23;;;;18697:33;;;18746:99:::1;::::0;18590:10;;18637:15;18746:99:::1;::::0;::::1;::::0;18590:10;;18637:15;;18676:10;;18715:15;;18817:10:::1;::::0;18829:15:::1;::::0;18746:99:::1;:::i;21647:326::-:0;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;21729:16:0;::::1;;::::0;;;:8:::1;:16;::::0;;;;;:26;::::1;;:16;::::0;;::::1;:26;;::::0;21725:73:::1;;21766:29;::::0;-1:-1:-1;;;21766:29:0;;1305:14:1;;1298:22;21766:29:0::1;::::0;::::1;1280:41:1::0;1253:18;;21766:29:0::1;1140:187:1::0;21725:73:0::1;21846:4;-1:-1:-1::0;;;;;21812:39:0::1;21818:6;-1:-1:-1::0;;;;;21812:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21812:39:0::1;;;:82;;;;;21889:4;-1:-1:-1::0;;;;;21855:39:0::1;21861:6;-1:-1:-1::0;;;;;21855:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21855:39:0::1;;;21812:82;21808:122;;;21905:22;::::0;-1:-1:-1;;;21905:22:0;;-1:-1:-1;;;;;4144:32:1;;21905:22:0::1;::::0;::::1;4126:51:1::0;4099:18;;21905:22:0::1;3980:203:1::0;21808:122:0::1;-1:-1:-1::0;;;;;21940:16:0;;;::::1;;::::0;;;:8:::1;:16;::::0;;;;:25;;-1:-1:-1;;21940:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21647:326::o;23900:213::-;7831:13;:11;:13::i;:::-;24001:6:::1;23974:23;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;24045:15:0::1;24018:24;:42:::0;24071:34:::1;24081:6:::0;24097::::1;24071:9;:34::i;:::-;23900:213:::0;:::o;15231:397::-;15308:13;9559:6;15340:11;;15324:13;25008:12;;;24920:108;15324:13;:27;;;;:::i;:::-;:44;;;;:::i;:::-;15308:60;;15401:1;15384:14;;:18;:72;;;-1:-1:-1;15441:15:0;;15424:14;;15406:32;;:15;:32;:::i;:::-;:50;15384:72;15383:108;;;;-1:-1:-1;;;;;;15462:29:0;;;;;;:25;:29;;;;;;;;15461:30;15383:108;15379:242;;;15537:5;15528:6;15512:13;15522:2;-1:-1:-1;;;;;25141:18:0;25114:7;25141:18;;;:9;:18;;;;;;;25040:127;15512:13;:22;;;;:::i;:::-;:30;15508:102;;;15570:24;;-1:-1:-1;;;15570:24:0;;;;;1798:25:1;;;1771:18;;15570:24:0;1652:177:1;15508:102:0;15297:331;15231:397;;:::o;8491:103::-;7831:13;:11;:13::i;:::-;8556:30:::1;8583:1;8556:18;:30::i;:::-;8491:103::o:0;17530:304::-;7831:13;:11;:13::i;:::-;17618:10:::1;17607:7;;:21:::0;17603:72:::1;;17639:33;::::0;-1:-1:-1;;;17639:33:0;;::::1;::::0;::::1;1798:25:1::0;;;1771:18;;17639:33:0::1;1652:177:1::0;17603:72:0::1;17706:7;::::0;;17724:20;;;;17760:66:::1;::::0;;5817:25:1;;;5873:2;5858:18;;5851:34;;;17798:10:0::1;5901:18:1::0;;;5894:60;;;;17810:15:0::1;5985:2:1::0;5970:18;;5963:34;17760:66:0::1;::::0;5804:3:1;5789:19;17760:66:0::1;5586:417:1::0;13893:415:0;7831:13;:11;:13::i;:::-;13952:12:::1;::::0;::::1;;13948:68;;;14000:12;::::0;13975:38:::1;::::0;-1:-1:-1;;;13975:38:0;;14000:12:::1;::::0;;::::1;1305:14:1::0;1298:22;13975:38:0::1;::::0;::::1;1280:41:1::0;1253:18;;13975:38:0::1;1140:187:1::0;13948:68:0::1;14030:11;::::0;::::1;::::0;::::1;;;14026:63;;;14074:11;::::0;14052:34:::1;::::0;-1:-1:-1;;;14052:34:0;;14074:11:::1;::::0;;::::1;;;1305:14:1::0;1298:22;14052:34:0::1;::::0;::::1;1280:41:1::0;1253:18;;14052:34:0::1;1140:187:1::0;14026:63:0::1;14103:13;::::0;;;::::1;;;14099:69;;;14151:13;::::0;14127:38:::1;::::0;-1:-1:-1;;;14127:38:0;;14151:13;;;::::1;;;1305:14:1::0;1298:22;14127:38:0::1;::::0;::::1;1280:41:1::0;1253:18;;14127:38:0::1;1140:187:1::0;14099:69:0::1;14178:12;:19:::0;;-1:-1:-1;;14237:20:0;;;;;14285:15:::1;14268:14;:32:::0;13893:415::o;15636:444::-;15678:7;15687;15707:12;15740:14;;15722:15;:32;;;;:::i;:::-;15707:47;;15777:9;15769:4;:17;15765:69;;-1:-1:-1;15811:3:0;;15816:5;;-1:-1:-1;15636:444:0;-1:-1:-1;15636:444:0:o;15765:69::-;15855:9;15848:4;:16;:37;;;;;15876:9;15868:4;:17;;15848:37;15844:87;;;-1:-1:-1;15910:3:0;;15915;;-1:-1:-1;15636:444:0;-1:-1:-1;15636:444:0:o;15844:87::-;15952:9;15945:4;:16;:39;;;;;15973:11;15965:4;:19;;15945:39;15941:85;;;-1:-1:-1;16009:1:0;;;;-1:-1:-1;15636:444:0;-1:-1:-1;15636:444:0:o;15941:85::-;16044:10;;16056:15;;16036:36;;;;;15636:444;;:::o;20546:317::-;7831:13;:11;:13::i;:::-;20640:9:::1;20623:26;;:13;;;;;;;;;;;:26;;::::0;20619:76:::1;;20660:32;::::0;-1:-1:-1;;;20660:32:0;;1305:14:1;;1298:22;20660:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;20660:32:0::1;1140:187:1::0;20619:76:0::1;20722:13;::::0;;-1:-1:-1;;20746:25:0;::::1;20722:13:::0;20746:25;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;20787:68:::1;::::0;20722:13;;::::1;;;::::0;20787:68:::1;::::0;::::1;::::0;20722:13;;20746:25;;20827:10:::1;::::0;20839:15:::1;::::0;20787:68:::1;:::i;15070:153::-:0;25141:9;:18;;;;15183:6;15122:7;25141:18;;;;;25008:12;;15122:7;;25141:18;15149:42;;25141:18;15149:42;:::i;:::-;:66;;;;:::i;:::-;15142:73;;15070:153;:::o;16549:449::-;16596:7;16605;16625:12;16658:14;;16640:15;:32;;;;:::i;:::-;16625:47;;16695:9;16687:4;:17;16683:63;;-1:-1:-1;16729:1:0;;;;-1:-1:-1;16549:449:0;-1:-1:-1;16549:449:0:o;16683:63::-;16767:9;16760:4;:16;:37;;;;;16788:9;16780:4;:17;;16760:37;16756:83;;;-1:-1:-1;16822:1:0;;;;-1:-1:-1;16549:449:0;-1:-1:-1;16549:449:0:o;16756:83::-;16860:9;16853:4;:16;:39;;;;;16881:11;16873:4;:19;;16853:39;16849:85;;;-1:-1:-1;16917:1:0;;;;-1:-1:-1;16549:449:0;-1:-1:-1;16549:449:0:o;16849:85::-;16952:15;;16969:20;;16944:46;;;;;16549:449;;:::o;26278:445::-;26373:4;26409:10;26373:4;26457:28;26409:10;26477:7;26457:9;:28::i;:::-;26430:55;;26524:15;26504:16;:35;;26496:85;;;;-1:-1:-1;;;26496:85:0;;8992:2:1;26496:85:0;;;8974:21:1;9031:2;9011:18;;;9004:30;9070:34;9050:18;;;9043:62;-1:-1:-1;;;9121:18:1;;;9114:35;9166:19;;26496:85:0;8790:401:1;26496:85:0;26617:63;26626:8;26636:7;26664:15;26645:16;:34;26617:8;:63::i;:::-;-1:-1:-1;26711:4:0;;26278:445;-1:-1:-1;;;;26278:445:0:o;25179:184::-;25260:4;25296:10;25324:31;25296:10;25344:2;25348:6;25324:9;:31::i;:::-;25317:38;25179:184;-1:-1:-1;;;;25179:184:0:o;18861:648::-;7831:13;:11;:13::i;:::-;18963:11:::1;::::0;;;::::1;;;18959:46;;;18985:17;;-1:-1:-1::0;;;18985:17:0::1;;;;;;;;;;;18959:46;19033:11;;19019:10;:25;:64;;;;;19067:16;;19048:15;:35;19019:64;19015:104;;;19094:22;;-1:-1:-1::0;;;19094:22:0::1;;;;;;;;;;;19015:104;19165:5;19133:28;19146:15:::0;19133:10;:28:::1;:::i;:::-;:37;19129:81;;19181:26;::::0;-1:-1:-1;;;19181:26:0;;19201:5:::1;19181:26;::::0;::::1;1798:25:1::0;1771:18;;19181:26:0::1;1652:177:1::0;19129:81:0::1;19241:11;::::0;;19289:16:::1;::::0;;19316:24;;;;19351:34;;;19401:100:::1;::::0;19241:11;;19289:16;19401:100:::1;::::0;::::1;::::0;19241:11;;19289:16;;19330:10;;19370:15;;19473:10:::1;::::0;19485:15:::1;::::0;19401:100:::1;:::i;20205:333::-:0;7831:13;:11;:13::i;:::-;20287:11:::1;::::0;-1:-1:-1;;;;;20287:26:0;;::::1;-1:-1:-1::0;;;20287:11:0;;::::1;;:26:::0;20283:80:::1;;20324:36;::::0;-1:-1:-1;;;20324:36:0;;-1:-1:-1;;;;;4144:32:1;;20324:36:0::1;::::0;::::1;4126:51:1::0;4099:18;;20324:36:0::1;3980:203:1::0;20283:80:0::1;20395:11;::::0;;-1:-1:-1;;;;;20417:25:0;;::::1;-1:-1:-1::0;;;20417:25:0;;::::1;-1:-1:-1::0;;;;;;20417:25:0;::::1;;::::0;;;20458:72:::1;::::0;;20395:11;;;::::1;::::0;;::::1;9465:34:1::0;;;9530:2;9515:18;;9508:43;;;;20502:10:0::1;9567:18:1::0;;;9560:43;;;;20514:15:0::1;9634:2:1::0;9619:18;;9612:34;20395:11:0;20458:72:::1;::::0;9414:3:1;9399:19;20458:72:0::1;9196:456:1::0;17026:496:0;7831:13;:11;:13::i;:::-;17109:6:::1;::::0;-1:-1:-1;;;;;17101:28:0;;::::1;17109:6:::0;::::1;17101:28:::0;17097:80:::1;;17140:34;::::0;-1:-1:-1;;;17140:34:0;;-1:-1:-1;;;;;4144:32:1;;17140:34:0::1;::::0;::::1;4126:51:1::0;4099:18;;17140:34:0::1;3980:203:1::0;17097:80:0::1;17215:6;::::0;;-1:-1:-1;;;;;17233:27:0;;::::1;-1:-1:-1::0;;;;;;17233:27:0;::::1;::::0;::::1;::::0;;-1:-1:-1;17281:28:0;;;:17:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;17281:35:0::1;::::0;;::::1;::::0;;;17334:63;;17215:6;;;::::1;9465:34:1::0;;;9515:18;;;9508:43;17369:10:0::1;9567:18:1::0;;;9560:43;;;;17381:15:0::1;9634:2:1::0;9619:18;;9612:34;17334:63:0::1;::::0;9414:3:1;9399:19;17334:63:0::1;;;;;;;17424:6;;;;;;;;;-1:-1:-1::0;;;;;17424:6:0::1;-1:-1:-1::0;;;;;17424:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17415:37:0::1;;17461:4;17468:6;;;;;;;;;-1:-1:-1::0;;;;;17468:6:0::1;-1:-1:-1::0;;;;;17468:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17415:67;::::0;-1:-1:-1;;;;;;17415:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9887:15:1;;;17415:67:0::1;::::0;::::1;9869:34:1::0;9939:15;;9919:18;;;9912:43;9804:18;;17415:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17408:4;:74:::0;;-1:-1:-1;;;;;;17408:74:0::1;-1:-1:-1::0;;;;;17408:74:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;17493:14:0;;;:8:::1;:14;::::0;;;;:21;;-1:-1:-1;;17493:21:0::1;-1:-1:-1::0;17493:21:0::1;::::0;;-1:-1:-1;;17026:496:0:o;20871:360::-;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;20963:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;:36;::::1;;:23;::::0;;::::1;:36;;::::0;20959:86:::1;;21010:32;::::0;-1:-1:-1;;;21010:32:0;;1305:14:1;;1298:22;21010:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;21010:32:0::1;1140:187:1::0;20959:86:0::1;-1:-1:-1::0;;;;;21072:23:0;::::1;21055:14;21072:23:::0;;;:17:::1;:23;::::0;;;;;;;;21106:35;::::1;;-1:-1:-1::0;;21106:35:0;::::1;;::::0;;;21157:66;;21072:23:::1;::::0;;::::1;::::0;21157:66:::1;::::0;::::1;::::0;21072:23;;21132:9;;21195:10:::1;::::0;21207:15:::1;::::0;21157:66:::1;:::i;:::-;;;;;;;;20948:283;20871:360:::0;;:::o;25375:157::-;-1:-1:-1;;;;;25494:21:0;;;25467:7;25494:21;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;25375:157::o;8602:213::-;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;8687:22:0;::::1;8683:86;;8733:24;::::0;-1:-1:-1;;;8733:24:0;;8754:1:::1;8733:24;::::0;::::1;4126:51:1::0;4099:18;;8733:24:0::1;3980:203:1::0;8683:86:0::1;8779:28;8798:8;8779:18;:28::i;21239:400::-:0;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;21339:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:44;::::1;;:31;::::0;;::::1;:44;;::::0;21335:94:::1;;21394:32;::::0;-1:-1:-1;;;21394:32:0;;1305:14:1;;1298:22;21394:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;21394:32:0::1;1140:187:1::0;21335:94:0::1;-1:-1:-1::0;;;;;21456:31:0;::::1;21439:14;21456:31:::0;;;:25:::1;:31;::::0;;;;;;;;21498:43;::::1;;-1:-1:-1::0;;21498:43:0;::::1;;::::0;;;21557:74;;21456:31:::1;::::0;;::::1;::::0;21557:74:::1;::::0;::::1;::::0;21456:31;;21532:9;;21603:10:::1;::::0;21615:15:::1;::::0;21557:74:::1;:::i;27051:343::-:0;-1:-1:-1;;;;;27152:22:0;;27148:64;;27185:24;;-1:-1:-1;;;27185:24:0;;-1:-1:-1;;;;;4144:32:1;;27185:24:0;;;4126:51:1;4099:18;;27185:24:0;3980:203:1;27148:64:0;-1:-1:-1;;;;;27226:21:0;;27222:62;;27258:23;;-1:-1:-1;;;27258:23:0;;-1:-1:-1;;;;;4144:32:1;;27258:23:0;;;4126:51:1;4099:18;;27258:23:0;3980:203:1;27222:62:0;-1:-1:-1;;;;;27296:21:0;;;;;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;:39;;;27351:35;;1798:25:1;;;27351:35:0;;1771:18:1;27351:35:0;;;;;;;27051:343;;;:::o;27406:428::-;27510:24;27537:28;27547:8;27557:7;27537:9;:28::i;:::-;27510:55;;-1:-1:-1;;27580:16:0;:37;27576:251;;27662:6;27642:16;:26;;27634:68;;;;-1:-1:-1;;;27634:68:0;;10168:2:1;27634:68:0;;;10150:21:1;10207:2;10187:18;;;10180:30;10246:31;10226:18;;;10219:59;10295:18;;27634:68:0;9966:353:1;27634:68:0;27746:54;27755:8;27765:7;27793:6;27774:16;:25;27746:8;:54::i;:::-;27499:335;27406:428;;;:::o;28321:1202::-;28408:4;-1:-1:-1;;;;;28429:18:0;;28425:56;;28458:20;;-1:-1:-1;;;28458:20:0;;-1:-1:-1;;;;;4144:32:1;;28458:20:0;;;4126:51:1;4099:18;;28458:20:0;3980:203:1;28425:56:0;-1:-1:-1;;;;;28495:16:0;;28491:52;;28522:18;;-1:-1:-1;;;28522:18:0;;-1:-1:-1;;;;;4144:32:1;;28522:18:0;;;4126:51:1;4099:18;;28522::0;3980:203:1;28491:52:0;28560:12;;;;28559:13;:41;;;;-1:-1:-1;;;;;;28577:23:0;;;;;;:17;:23;;;;;;;;28576:24;28559:41;:67;;;;-1:-1:-1;;;;;;28605:21:0;;;;;;:17;:21;;;;;;;;28604:22;28559:67;28555:122;;;28650:15;;-1:-1:-1;;;28650:15:0;;;;;;;;;;;28555:122;28693:6;;-1:-1:-1;;;28693:6:0;;;;;:33;;-1:-1:-1;;;;;;28703:23:0;;;;;;:17;:23;;;;;;;;28693:33;28689:105;;;28750:32;28765:4;28771:2;28775:6;28750:14;:32::i;:::-;28743:39;;;;28689:105;28818:4;;-1:-1:-1;;;;;28810:12:0;;;28818:4;;28810:12;;;;:29;;-1:-1:-1;28826:13:0;;;;;;;28810:29;:68;;;;-1:-1:-1;28871:7:0;;28861:4;25114:7;25141:18;;;:9;:18;;;;;;28843:35;;28810:68;:119;;;;;28922:7;;28902:16;;28882:17;;:36;;;;:::i;:::-;:47;;28810:119;28806:171;;;28946:19;28957:7;;28946:10;:19::i;:::-;29032:11;;29009:6;;29032:11;;;;;:39;;;;-1:-1:-1;;;;;;29048:23:0;;;;;;:17;:23;;;;;;;;29047:24;29032:39;:65;;;;-1:-1:-1;;;;;;29076:21:0;;;;;;:17;:21;;;;;;;;29075:22;29032:65;29028:148;;;29126:38;29147:4;29153:2;29157:6;29126:20;:38::i;:::-;29114:50;;29028:148;29188:31;29205:9;29216:2;29188:16;:31::i;:::-;-1:-1:-1;;;;;29240:15:0;;;;;;:9;:15;;;;;;:28;-1:-1:-1;29240:28:0;29232:79;;;;-1:-1:-1;;;29232:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29365:15:0;;;;;;;:9;:15;;;;;;;;:27;;;29347:45;;29407:13;;;;;;;;;;:26;;;;;;29462:29;;;;;;29383:9;1798:25:1;;1786:2;1771:18;;1652:177;29462:29:0;;;;;;;;-1:-1:-1;29511:4:0;;28321:1202;-1:-1:-1;;;;28321:1202:0:o;8328:155::-;8399:10;8388:7;8279;8306:6;-1:-1:-1;;;;;8306:6:0;;8233:87;8388:7;-1:-1:-1;;;;;8388:21:0;;8384:92;;8433:31;;-1:-1:-1;;;8433:31:0;;8453:10;8433:31;;;4126:51:1;4099:18;;8433:31:0;3980:203:1;24121:420:0;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;-1:-1:-1;;24201:10:0::1;:29:::0;24197:78:::1;;24241:31;::::0;-1:-1:-1;;;24241:31:0;;24264:6:::1;24241:31;::::0;::::1;4126:51:1::0;4099:18;;24241:31:0::1;3980:203:1::0;24197:78:0::1;24309:16;::::0;;24323:1:::1;24309:16:::0;;;;;::::1;::::0;;24285:21:::1;::::0;24309:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;24346:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;24346:13:0;;;;24285:40;;-1:-1:-1;;;;;;24346:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;24346:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24336:4;24341:1;24336:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;24336:23:0::1;;;-1:-1:-1::0;;;;;24336:23:0::1;;;::::0;::::1;24388:4;24370;24375:1;24370:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24370:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24406:6:::1;::::0;:127:::1;::::0;-1:-1:-1;;;24406:127:0;;:6;::::1;::::0;:57:::1;::::0;24485:6;;24406:127:::1;::::0;:6:::1;::::0;24507:4;;24513:2;;24517:15:::1;::::0;24406:127:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11027:6:0;:14;;-1:-1:-1;;;;11027:14:0;;;-1:-1:-1;;;;;;24121:420:0:o;8823:191::-;8897:16;8916:6;;-1:-1:-1;;;;;8933:17:0;;;-1:-1:-1;;;;;;8933:17:0;;;;;;8966:40;;8916:6;;;;;;;8966:40;;8897:16;8966:40;8886:128;8823:191;:::o;27866:419::-;-1:-1:-1;;;;;27990:15:0;;27951:4;27990:15;;;:9;:15;;;;;;28024:21;;;;28016:72;;;;-1:-1:-1;;;28016:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28124:15:0;;;;;;;:9;:15;;;;;;28142:20;;;28124:38;;28177:13;;;;;;;;;;:23;;;;;;28229:26;;;;;;28156:6;1798:25:1;;1786:2;1771:18;;1652:177;29531:878:0;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;-1:-1:-1;;;;;29731:14:0;::::1;29638:7:::0;29731:14;;;:8:::1;:14;::::0;;;;;29638:7;;;;10991:13;29731:14:::1;29727:201;;;29782:11;:9;:11::i;:::-;29762:31:::0;;-1:-1:-1;29762:31:0;-1:-1:-1;29831:1:0::1;29812:16;29762:31:::0;;29812:16:::1;:::i;:::-;:20;29808:109;;;29860:41;29871:4;29877:6;29885:4;29891:9;29860:10;:41::i;:::-;29853:48;;;;;;29808:109;-1:-1:-1::0;;;;;29942:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;29938:201;;;29991:12;:10;:12::i;:::-;29971:32:::0;;-1:-1:-1;29971:32:0;-1:-1:-1;30041:1:0::1;30022:16;29971:32:::0;;30022:16:::1;:::i;:::-;:20;30018:110;;;30070:42;30082:4;30088:6;30096:4;30102:9;30070:11;:42::i;30018:110::-;-1:-1:-1::0;;;;;30154:14:0;::::1;;::::0;;;:8:::1;:14;::::0;;;;;::::1;;30153:15;:32:::0;::::1;;;-1:-1:-1::0;;;;;;30173:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;30172:13;30153:32;30149:229;;;30222:16;:14;:16::i;:::-;30202:36:::0;;-1:-1:-1;30202:36:0;-1:-1:-1;30276:1:0::1;30257:16;30202:36:::0;;30257:16:::1;:::i;:::-;:20;30253:114;;;30305:46;30321:4;30327:6;30335:4;30341:9;30305:15;:46::i;30253:114::-;30395:6;30388:13;;;;11015:1;11027:6:::0;:14;;-1:-1:-1;;;;11027:14:0;;;29531:878;;-1:-1:-1;;;29531:878:0:o;21998:481::-;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;22108:7;;9559:6:::1;22149:13;22158:4:::0;22149:6;:13:::1;:::i;:::-;:30;;;;:::i;:::-;22128:51:::0;-1:-1:-1;22190:23:0::1;9559:6;22216:18;22225:9:::0;22216:6;:18:::1;:::i;:::-;:35;;;;:::i;:::-;22190:61:::0;-1:-1:-1;22262:17:0::1;22190:61:::0;22282:19:::1;22291:10:::0;22282:6;:19:::1;:::i;:::-;:37;;;;:::i;:::-;22262:57:::0;-1:-1:-1;22365:1:0::1;22334:28;22347:15:::0;22334:10;:28:::1;:::i;:::-;:32;22330:115;;;22383:50;22399:4;22405:10;22417:15;22383;:50::i;:::-;11027:6:::0;:14;;-1:-1:-1;;;;11027:14:0;;;22462:9;21998:481;-1:-1:-1;;;;;;;21998:481:0:o;23471:400::-;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;;23611:36:::1;23628:19:::0;23611:14;:36:::1;:::i;:::-;23592:55;;23679:8;23658:17;;:29;;;;;;;:::i;:::-;;;;;;;;23718:14;23698:16;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;23743:53:0::1;::::0;-1:-1:-1;23758:4:0;23772:6:::1;23781:14:::0;23743::::1;:53::i;:::-;;23807:56;23822:4;23836;23843:19;23807:14;:56::i;:::-;-1:-1:-1::0;;11027:6:0;:14;;-1:-1:-1;;;;11027:14:0;;;-1:-1:-1;;;23471:400:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:247;947:6;1000:2;988:9;979:7;975:23;971:32;968:52;;;1016:1;1013;1006:12;968:52;1055:9;1042:23;1074:31;1099:5;1074:31;:::i;1332:315::-;1400:6;1408;1461:2;1449:9;1440:7;1436:23;1432:32;1429:52;;;1477:1;1474;1467:12;1429:52;1516:9;1503:23;1535:31;1560:5;1535:31;:::i;:::-;1585:5;1637:2;1622:18;;;;1609:32;;-1:-1:-1;;;1332:315:1:o;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2737:160::-;2802:20;;2858:13;;2851:21;2841:32;;2831:60;;2887:1;2884;2877:12;2831:60;2737:160;;;:::o;2902:180::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3050:26;3066:9;3050:26;:::i;3087:248::-;3155:6;3163;3216:2;3204:9;3195:7;3191:23;3187:32;3184:52;;;3232:1;3229;3222:12;3184:52;-1:-1:-1;;3255:23:1;;;3325:2;3310:18;;;3297:32;;-1:-1:-1;3087:248:1:o;3340:315::-;3405:6;3413;3466:2;3454:9;3445:7;3441:23;3437:32;3434:52;;;3482:1;3479;3472:12;3434:52;3521:9;3508:23;3540:31;3565:5;3540:31;:::i;:::-;3590:5;-1:-1:-1;3614:35:1;3645:2;3630:18;;3614:35;:::i;:::-;3604:45;;3340:315;;;;;:::o;3660:::-;3728:6;3736;3789:2;3777:9;3768:7;3764:23;3760:32;3757:52;;;3805:1;3802;3795:12;3757:52;3841:9;3828:23;3818:33;;3901:2;3890:9;3886:18;3873:32;3914:31;3939:5;3914:31;:::i;:::-;3964:5;3954:15;;;3660:315;;;;;:::o;4188:388::-;4256:6;4264;4317:2;4305:9;4296:7;4292:23;4288:32;4285:52;;;4333:1;4330;4323:12;4285:52;4372:9;4359:23;4391:31;4416:5;4391:31;:::i;:::-;4441:5;-1:-1:-1;4498:2:1;4483:18;;4470:32;4511:33;4470:32;4511:33;:::i;4804:127::-;4865:10;4860:3;4856:20;4853:1;4846:31;4896:4;4893:1;4886:15;4920:4;4917:1;4910:15;4936:125;5001:9;;;5022:10;;;5019:36;;;5035:18;;:::i;5198:127::-;5259:10;5254:3;5250:20;5247:1;5240:31;5290:4;5287:1;5280:15;5314:4;5311:1;5304:15;5330:251;5400:6;5453:2;5441:9;5432:7;5428:23;5424:32;5421:52;;;5469:1;5466;5459:12;5421:52;5501:9;5495:16;5520:31;5545:5;5520:31;:::i;6008:461::-;6061:3;6099:5;6093:12;6126:6;6121:3;6114:19;6152:4;6181:2;6176:3;6172:12;6165:19;;6218:2;6211:5;6207:14;6239:1;6249:195;6263:6;6260:1;6257:13;6249:195;;;6328:13;;-1:-1:-1;;;;;6324:39:1;6312:52;;6384:12;;;;6419:15;;;;6360:1;6278:9;6249:195;;;-1:-1:-1;6460:3:1;;6008:461;-1:-1:-1;;;;;6008:461:1:o;6474:582::-;6773:6;6762:9;6755:25;6816:6;6811:2;6800:9;6796:18;6789:34;6859:3;6854:2;6843:9;6839:18;6832:31;6736:4;6880:57;6932:3;6921:9;6917:19;6909:6;6880:57;:::i;:::-;-1:-1:-1;;;;;6973:32:1;;;;6968:2;6953:18;;6946:60;-1:-1:-1;7037:3:1;7022:19;7015:35;6872:65;6474:582;-1:-1:-1;;;6474:582:1:o;7061:128::-;7128:9;;;7149:11;;;7146:37;;;7163:18;;:::i;7194:437::-;7438:14;;7431:22;7413:41;;7497:14;;7490:22;7485:2;7470:18;;7463:50;-1:-1:-1;;;;;7549:32:1;7544:2;7529:18;;7522:60;7613:2;7598:18;;7591:34;7400:3;7385:19;;7194:437::o;7829:561::-;8116:25;;;8172:2;8157:18;;8150:34;;;;8215:2;8200:18;;8193:34;;;;8258:2;8243:18;;8236:34;-1:-1:-1;;;;;8307:32:1;8301:3;8286:19;;8279:61;8327:3;8356:19;;8349:35;8103:3;8088:19;;7829:561::o;8395:168::-;8468:9;;;8499;;8516:15;;;8510:22;;8496:37;8486:71;;8537:18;;:::i;8568:217::-;8608:1;8634;8624:132;;8678:10;8673:3;8669:20;8666:1;8659:31;8713:4;8710:1;8703:15;8741:4;8738:1;8731:15;8624:132;-1:-1:-1;8770:9:1;;8568:217::o;10324:402::-;10526:2;10508:21;;;10565:2;10545:18;;;10538:30;10604:34;10599:2;10584:18;;10577:62;-1:-1:-1;;;10670:2:1;10655:18;;10648:36;10716:3;10701:19;;10324:402::o;10731:510::-;11002:6;10991:9;10984:25;11045:3;11040:2;11029:9;11025:18;11018:31;10965:4;11066:57;11118:3;11107:9;11103:19;11095:6;11066:57;:::i;:::-;-1:-1:-1;;;;;11159:32:1;;;;11154:2;11139:18;;11132:60;-1:-1:-1;11223:2:1;11208:18;11201:34;11058:65;10731:510;-1:-1:-1;;10731:510:1:o

Swarm Source

ipfs://da918ee548f1c878a2d4696d08054bb54e751278d60bb7c852fdff41286e68a0

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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.