ETH Price: $2,099.22 (+2.86%)
Gas: 0.18 Gwei

Contract

0x08A5144632330eD24CC56a839427dc9C1bFc73b2
 

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
Transfer Ownersh...213446322024-12-06 16:24:59461 days ago1733502299IN
0x08A51446...C1bFc73b2
0 ETH0.0009539733.26280638
Approve193624002024-03-04 14:29:11738 days ago1709562551IN
0x08A51446...C1bFc73b2
0 ETH0.00541961116.31063311
Approve192569392024-02-18 20:05:35753 days ago1708286735IN
0x08A51446...C1bFc73b2
0 ETH0.0016528835.42702328
Approve192461892024-02-17 7:46:35755 days ago1708155995IN
0x08A51446...C1bFc73b2
0 ETH0.0008776818.81181381
Approve191316822024-02-01 6:03:59771 days ago1706767439IN
0x08A51446...C1bFc73b2
0 ETH0.0007805916.82171793
Approve190597882024-01-22 4:04:11781 days ago1705896251IN
0x08A51446...C1bFc73b2
0 ETH0.0005618612.05826513
Approve190485202024-01-20 13:57:23782 days ago1705759043IN
0x08A51446...C1bFc73b2
0 ETH0.0007430715.94726035
Transfer190484972024-01-20 13:52:47782 days ago1705758767IN
0x08A51446...C1bFc73b2
0 ETH0.0037177316.60421494
Transfer190226472024-01-16 23:11:23786 days ago1705446683IN
0x08A51446...C1bFc73b2
0 ETH0.0014585328.41262842
Approve189716302024-01-09 19:57:11793 days ago1704830231IN
0x08A51446...C1bFc73b2
0 ETH0.0010683722.92847441
Approve189715672024-01-09 19:44:11793 days ago1704829451IN
0x08A51446...C1bFc73b2
0 ETH0.0009917921.28496878
Transfer189715432024-01-09 19:39:23793 days ago1704829163IN
0x08A51446...C1bFc73b2
0 ETH0.0039866720.49926746
Transfer189715242024-01-09 19:35:35793 days ago1704828935IN
0x08A51446...C1bFc73b2
0 ETH0.0045574523.43416851
Transfer189714592024-01-09 19:22:35793 days ago1704828155IN
0x08A51446...C1bFc73b2
0 ETH0.004052320.83671011
Transfer189714242024-01-09 19:15:11793 days ago1704827711IN
0x08A51446...C1bFc73b2
0 ETH0.0044648422.95654016
Transfer189713332024-01-09 18:56:59793 days ago1704826619IN
0x08A51446...C1bFc73b2
0 ETH0.0031349916.11898325
Approve189710122024-01-09 17:52:23793 days ago1704822743IN
0x08A51446...C1bFc73b2
0 ETH0.0014022530.09385872
Transfer189708782024-01-09 17:25:23793 days ago1704821123IN
0x08A51446...C1bFc73b2
0 ETH0.0034505117.74235288
Approve189306142024-01-04 1:12:59799 days ago1704330779IN
0x08A51446...C1bFc73b2
0 ETH0.0010847523.27997653
Approve189243252024-01-03 4:02:11800 days ago1704254531IN
0x08A51446...C1bFc73b2
0 ETH0.0006839214.67775737
Approve189237412024-01-03 2:04:35800 days ago1704247475IN
0x08A51446...C1bFc73b2
0 ETH0.0008778318.83917757
Approve189042352023-12-31 8:20:47802 days ago1704010847IN
0x08A51446...C1bFc73b2
0 ETH0.0006173113.24822897
Approve189042152023-12-31 8:16:47802 days ago1704010607IN
0x08A51446...C1bFc73b2
0 ETH0.0006229113.36845772
Approve189042052023-12-31 8:14:47802 days ago1704010487IN
0x08A51446...C1bFc73b2
0 ETH0.0006545914.04835578
Approve189041972023-12-31 8:13:11802 days ago1704010391IN
0x08A51446...C1bFc73b2
0 ETH0.0005976112.82541886
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:
PandaFinanc3

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-22
*/

// ██████  ███████ ██    ██  ██████  ██      ██    ██ ███████ ██  ██████  ███    ██                   
// ██   ██ ██      ██    ██ ██    ██ ██      ██    ██     ██  ██ ██    ██ ████   ██                  
// ██████  █████   ██    ██ ██    ██ ██      ██    ██   ██    ██ ██    ██ ██ ██  ██                   
// ██   ██ ██       ██  ██  ██    ██ ██      ██    ██  ██     ██ ██    ██ ██  ██ ██                   
// ██   ██ ███████   ████    ██████  ███████  ██████  ███████ ██  ██████  ██   ████    

// SAFU CONTRACT DEVELOPED BY REVOLUZION

// Revoluzion Ecosystem
// WEB: https://revoluzion.io
// DAPP: https://revoluzion.app

// 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);
}

interface IStaking {

    // FUNCTION

    function deposit(uint256 amount) external;
}

/********************************************************************************************
  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 PandaFinanc3 is Ownable, ICommonError, IERC20 {

    // DATA

    IRouter public router;

    string private constant NAME = "PandaFinanc3";
    string private constant SYMBOL = "PAF";

    uint8 private constant DECIMALS = 18;

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

    uint256 public constant BUYFEEMARKETING = 100;
    uint256 public constant SELLFEEMARKETING = 100;
    uint256 public constant TRANSFERFEEMARKETING = 0;
    uint256 public constant BUYFEESTAKING = 100;
    uint256 public constant SELLFEESTAKING = 100;
    uint256 public constant TRANSFERFEESTAKING = 0;
    uint256 public constant BUYFEEBURN = 100;
    uint256 public constant SELLFEEBURN = 100;
    uint256 public constant TRANSFERFEEBURN = 0;

    uint256 public totalMarketingFeeCollected = 0;
    uint256 public totalMarketingFeeRedeemed = 0;
    uint256 public totalStakingFeeCollected = 0;
    uint256 public totalStakingFeeRedeemed = 0;
    uint256 public totalBurnFeeCollected = 0;
    uint256 public totalBurnFeeRedeemed = 0;
    uint256 public totalFeeCollected = 0;
    uint256 public totalFeeRedeemed = 0;
    uint256 public totalTriggerZeusBuyback = 0;
    uint256 public lastTriggerZeusTimestamp = 0;
    uint256 public minSwap = 100_000 ether;

    bool private constant ISPAF = true;

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

    address public constant ZERO = address(0);
    address public constant DEAD = address(0xdead);
    address public constant PROJECTOWNER = 0x37e25Fa9E27E12211572E555a49495B60d585f76;
    address public constant FEERECEIVER = 0xa3d552C0709A867d024AC73A6444520C1444d450;

    address public pair;
    address public stakingReceiver;
    
    // MAPPING

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludeFromFees;
    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 InvalidStakingAddress(address staking);

    error TradeDisabled();

    error CannotUseMainPair();

    // CONSTRUCTOR

    constructor(
        address stakingAddress,
        bool isContract
    ) Ownable (msg.sender) {
        _mint(msg.sender, 11_000_000_000 * 10**DECIMALS);

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

        if (stakingAddress == ZERO) {
            revert InvalidStakingAddress(stakingAddress);
        }

        stakingReceiver = stakingAddress;
        isStakingContract = isContract;

        isPairLP[pair] = true;

        isExcludeFromFees[msg.sender] = true;
        isExcludeFromFees[PROJECTOWNER] = true;
        isExcludeFromFees[address(router)] = 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 UpdateSwapEnabled(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event AutoRedeem(uint256 marketingAmount, uint256 stakingAmount, uint256 burnAmount, uint256 amountToRedeem, address caller, uint256 timestamp);

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

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

    event UpdateStakingReceiver(address oldReceiver, address newReceiver, 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;
    }

    /* Redeem */

    function autoRedeem(uint256 amountToRedeem) public swapping {          
        uint256 totalFee = BUYFEEMARKETING + BUYFEESTAKING + BUYFEEBURN;
        uint256 marketingRedeem = amountToRedeem * BUYFEEMARKETING / totalFee;
        uint256 stakingRedeem = amountToRedeem * BUYFEESTAKING / totalFee;
        uint256 burnRedeem = amountToRedeem - marketingRedeem - stakingRedeem;
        totalFeeRedeemed += amountToRedeem;
        totalMarketingFeeRedeemed += marketingRedeem;
        totalStakingFeeRedeemed += stakingRedeem;
        totalBurnFeeRedeemed += burnRedeem;

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

        if (stakingReceiver == ZERO) {
            revert InvalidStakingAddress(stakingReceiver);
        }

        if (isStakingContract) {
            _approve(address(this), address(stakingReceiver), marketingRedeem);
            IStaking(stakingReceiver).deposit(stakingRedeem);
        } else {
            _basicTransfer(address(this), stakingReceiver, stakingRedeem);
        }

        _basicTransfer(address(this), DEAD, burnRedeem);
        _approve(address(this), address(router), marketingRedeem);
        
        emit AutoRedeem(marketingRedeem, stakingRedeem, burnRedeem, amountToRedeem, msg.sender, block.timestamp);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            marketingRedeem,
            0,
            path,
            FEERECEIVER,
            block.timestamp
        );
    }

    /* Check */

    function isPandaFinanc3() external pure returns (bool) {
        return ISPAF;
    }

    function circulatingSupply() external view returns (uint256) {
        return totalSupply() - balanceOf(DEAD) - balanceOf(ZERO);
    }

    /* Update */

    function updateRouter(address newRouter) external onlyOwner {
        if (address(router) == newRouter) { revert CannotUseCurrentAddress(newRouter); }
        address oldRouter = address(router);
        router = IRouter(newRouter);
        address oldPair = pair;
        
        isPairLP[oldPair] = false;
        isExcludeFromFees[oldRouter] = false;
        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 (isFeeActive == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isFeeActive;
        isFeeActive = newStatus;
        emit UpdateFeeActive(oldStatus, newStatus, 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 updateIsStakingContract(bool newStatus) external onlyOwner {
        if (isStakingContract == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isStakingContract;
        isStakingContract = newStatus;
        emit UpdateIsStakingContract(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateStakingReceiver(address newReceiver) external onlyOwner {
        if (stakingReceiver == newReceiver) { revert CannotUseCurrentAddress(newReceiver); }
        address oldReceiver = stakingReceiver;
        stakingReceiver = newReceiver;
        emit UpdateStakingReceiver(oldReceiver, newReceiver, msg.sender, block.timestamp);
    }

    function setExcludeFromFees(address user, bool status) external onlyOwner {
        if (isExcludeFromFees[user] == status) { revert CannotUseCurrentState(status); }
        isExcludeFromFees[user] = status;
    }

    function setPairLP(address lpPair, bool status) external onlyOwner {
        if (lpPair == pair) { revert CannotUseMainPair(); }
        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) internal swapping returns (uint256) {
        uint256 feeAmountMarketing = amount * BUYFEEMARKETING / FEEDENOMINATOR;
        uint256 feeAmountStaking = amount * BUYFEESTAKING / FEEDENOMINATOR;
        uint256 feeAmountBurn = amount * BUYFEEBURN / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmountMarketing - feeAmountStaking - feeAmountBurn;
        if ((feeAmountMarketing + feeAmountStaking + feeAmountBurn) > 0) {
            tallyCollection(from, feeAmountMarketing, feeAmountStaking, feeAmountBurn);
        }
        return newAmount;
    }

    function takeSellFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmountMarketing = amount * SELLFEEMARKETING / FEEDENOMINATOR;
        uint256 feeAmountStaking = amount * SELLFEESTAKING / FEEDENOMINATOR;
        uint256 feeAmountBurn = amount * SELLFEEBURN / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmountMarketing - feeAmountStaking - feeAmountBurn;
        if ((feeAmountMarketing + feeAmountStaking + feeAmountBurn) > 0) {
            tallyCollection(from, feeAmountMarketing, feeAmountStaking, feeAmountBurn);
        }
        return newAmount;
    }

    function takeTransferFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmountMarketing = amount * TRANSFERFEEMARKETING / FEEDENOMINATOR;
        uint256 feeAmountStaking = amount * TRANSFERFEESTAKING / FEEDENOMINATOR;
        uint256 feeAmountBurn = amount * TRANSFERFEEBURN / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmountMarketing - feeAmountStaking - feeAmountBurn;
        if ((feeAmountMarketing + feeAmountStaking + feeAmountBurn) > 0) {
            tallyCollection(from, feeAmountMarketing, feeAmountStaking, feeAmountBurn);
        }
        return newAmount;
    }

    function tallyCollection(address from, uint256 collectFeeMarketing, uint256 collectFeeStaking, uint256 collectFeeBurn) internal swapping {
        uint256 collectFee = collectFeeMarketing + collectFeeStaking + collectFeeBurn;
        totalMarketingFeeCollected += collectFeeMarketing;
        totalStakingFeeCollected += collectFeeStaking;
        totalBurnFeeCollected += collectFeeBurn;
        totalFeeCollected += collectFee;
        _basicTransfer(from, address(this), collectFee);
    }

    /* Buyback */

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

    function buyTokens(uint256 amount, address to) internal swapping {
        if (msg.sender == DEAD) { revert InvalidAddress(DEAD); }
        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 == ZERO) { 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 == ZERO) { revert InvalidAddress(provider); }
        if (spender == ZERO) { 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 == ZERO) { revert InvalidAddress(from); }
        if (to == ZERO) { 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);
        }

        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) {
        if (isPairLP[from] && ((BUYFEEMARKETING + BUYFEESTAKING + BUYFEEBURN) > 0)) {
            return takeBuyFee(from, amount);
        }
        if (isPairLP[to] && ((SELLFEEMARKETING + SELLFEESTAKING + SELLFEEBURN) > 0)) {
            return takeSellFee(from, amount);
        }
        if (!isPairLP[from] && !isPairLP[to] && ((TRANSFERFEEMARKETING + TRANSFERFEESTAKING + TRANSFERFEEBURN) > 0)) {
            return takeTransferFee(from, amount);
        }
        return amount;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"stakingAddress","type":"address"},{"internalType":"bool","name":"isContract","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"current","type":"address"}],"name":"CannotUseCurrentAddress","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":[],"name":"CannotUseMainPair","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":"address","name":"staking","type":"address"}],"name":"InvalidStakingAddress","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":"marketingAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakingAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnAmount","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":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":"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":"UpdateIsStakingContract","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":"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":"UpdateStakingReceiver","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"},{"inputs":[],"name":"BUYFEEBURN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUYFEEMARKETING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUYFEESTAKING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEEDENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEERECEIVER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROJECTOWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELLFEEBURN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELLFEEMARKETING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELLFEESTAKING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFERFEEBURN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFERFEEMARKETING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFERFEESTAKING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","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":"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":"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":[],"name":"isFeeActive","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":"isPandaFinanc3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isStakingContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludeFromFees","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":"stakingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnFeeRedeemed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"totalMarketingFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingFeeRedeemed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakingFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakingFeeRedeemed","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":[{"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":[{"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":[{"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":"bool","name":"newStatus","type":"bool"}],"name":"updateFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateIsStakingContract","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":"address","name":"newReceiver","type":"address"}],"name":"updateStakingReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003819055600481905560058190556006819055600781905560088190556009819055600a819055600b819055600c5569152d02c7e14af6800000600d55600e805464ffffffffff191690553480156200005f57600080fd5b5060405162002c5338038062002c53833981016040819052620000829162000464565b336200008e8162000356565b50620000b933620000a26012600a620005b9565b620000b39064028fa6ae00620005d1565b620003a6565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200011e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001449190620005eb565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cd9190620005eb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002419190620005eb565b600e8054600160281b600160c81b031916650100000000006001600160a01b0393841602179055821662000298576040516314eec6eb60e01b81526001600160a01b03831660048201526024015b60405180910390fd5b600f80546001600160a01b0319166001600160a01b03938416179055600e805460ff60201b191664010000000092151592909202919091179081905565010000000000900481166000908152601360209081526040808320805460ff199081166001908117909255338552601290935281842080548416821790557fcfe550faf7e3cb438965c4e9838cfec9a39c98e9c457cbe10b0b5e00cf194409805484168217905580549094168352909120805490911690911790556200061f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620003da57604051634726455360e11b81526001600160a01b03831660048201526024016200028f565b8060026000828254620003ee919062000609565b90915550506001600160a01b0382166000818152601060209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b03811681146200045f57600080fd5b919050565b600080604083850312156200047857600080fd5b620004838362000447565b9150602083015180151581146200049957600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004fb578160001904821115620004df57620004df620004a4565b80851615620004ed57918102915b93841c9390800290620004bf565b509250929050565b6000826200051457506001620005b3565b816200052357506000620005b3565b81600181146200053c5760028114620005475762000567565b6001915050620005b3565b60ff8411156200055b576200055b620004a4565b50506001821b620005b3565b5060208310610133831016604e8410600b84101617156200058c575081810a620005b3565b620005988383620004ba565b8060001904821115620005af57620005af620004a4565b0290505b92915050565b6000620005ca60ff84168362000503565b9392505050565b8082028115828204841417620005b357620005b3620004a4565b600060208284031215620005fe57600080fd5b620005ca8262000447565b80820180821115620005b357620005b3620004a4565b612624806200062f6000396000f3fe6080604052600436106103b15760003560e01c80638b5bb970116101e7578063c9aebe1f1161010d578063da4daf71116100a0578063f2a426871161006f578063f2a42687146109fc578063f2fde38b14610a2c578063f887ea4014610a4c578063f924e3e01461045057600080fd5b8063da4daf71146109a7578063dba6281b14610450578063dd62ed3e146109bd578063e43504da146109dd57600080fd5b8063d621e813116100dc578063d621e81314610936578063d63cad2214610950578063d830678614610970578063d84654401461099157600080fd5b8063c9aebe1f146108e0578063cb3966eb146108f6578063d47d87411461051e578063d502a03a1461091657600080fd5b8063a457c2d711610185578063ab37dec811610154578063ab37dec81461088a578063b1080fc114610450578063b9b2b5cd146108aa578063c851cc32146108c057600080fd5b8063a457c2d71461080d578063a8aa1b311461082d578063a9059cbb14610854578063ab28a04c1461087457600080fd5b80639358928b116101c15780639358928b146107a057806395d89b41146107b557806397e1b9d3146107e15780639cd92209146107f757600080fd5b80638b5bb9701461074e5780638da5cb5b14610762578063924de9b71461078057600080fd5b80633a7c43d6116102d75780636e6f7fb01161026a57806375fed3c71161023957806375fed3c7146106db57806378eec331146106fb5780638a2371bb146107235780638a8c523c1461073957600080fd5b80636e6f7fb01461045057806370a082311461067a578063715018a6146106b057806371538eed146106c557600080fd5b806358fa63ca116102a657806358fa63ca1461060f57806359cd903114610624578063625dd6051461063a57806363a954921461065a57600080fd5b80633a7c43d6146104505780633bf31454146105b75780633e934f56146105d7578063526f4ef0146105f957600080fd5b806323b872dd1161034f57806335131df01161031e57806335131df01461051e578063351a964d1461054f578063395093511461056f57806339d445bf1461058f57600080fd5b806323b872dd146104e8578063253a19a3146105085780632dab00e11461051e578063313ce5671461053357600080fd5b806307e16fa51161038b57806307e16fa51461045057806308c4365014610473578063095ea7b3146104b357806318160ddd146104d357600080fd5b806301295143146103bd57806303fd2a45146103df57806306fdde031461041257600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103dd6103d8366004612281565b610a6c565b005b3480156103eb57600080fd5b506103f561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041e57600080fd5b5060408051808201909152600c81526b50616e646146696e616e633360a01b60208201525b604051610409919061229a565b34801561045c57600080fd5b50610465606481565b604051908152602001610409565b34801561047f57600080fd5b506104a361048e3660046122fd565b60136020526000908152604090205460ff1681565b6040519015158152602001610409565b3480156104bf57600080fd5b506104a36104ce36600461231a565b610e0e565b3480156104df57600080fd5b50600254610465565b3480156104f457600080fd5b506104a3610503366004612346565b610e28565b34801561051457600080fd5b5061046560085481565b34801561052a57600080fd5b50610465600081565b34801561053f57600080fd5b5060405160128152602001610409565b34801561055b57600080fd5b50600e546104a39062010000900460ff1681565b34801561057b57600080fd5b506104a361058a36600461231a565b610e4c565b34801561059b57600080fd5b506103f573a3d552c0709a867d024ac73a6444520c1444d45081565b3480156105c357600080fd5b506103dd6105d236600461239c565b610e6e565b3480156105e357600080fd5b50600e546104a390640100000000900460ff1681565b34801561060557600080fd5b5061046560055481565b34801561061b57600080fd5b506103f5600081565b34801561063057600080fd5b50610465600d5481565b34801561064657600080fd5b506103dd6106553660046123b7565b610f0e565b34801561066657600080fd5b506103dd610675366004612281565b6110da565b34801561068657600080fd5b506104656106953660046122fd565b6001600160a01b031660009081526010602052604090205490565b3480156106bc57600080fd5b506103dd61110c565b3480156106d157600080fd5b50610465600a5481565b3480156106e757600080fd5b506103dd6106f6366004612281565b611120565b34801561070757600080fd5b506103f57337e25fa9e27e12211572e555a49495b60d585f7681565b34801561072f57600080fd5b5061046560035481565b34801561074557600080fd5b506103dd61119b565b34801561075a57600080fd5b5060016104a3565b34801561076e57600080fd5b506000546001600160a01b03166103f5565b34801561078c57600080fd5b506103dd61079b36600461239c565b611257565b3480156107ac57600080fd5b506104656112ed565b3480156107c157600080fd5b506040805180820190915260038152622820a360e91b6020820152610443565b3480156107ed57600080fd5b50610465600c5481565b34801561080357600080fd5b5061046560065481565b34801561081957600080fd5b506104a361082836600461231a565b61135d565b34801561083957600080fd5b50600e546103f590600160281b90046001600160a01b031681565b34801561086057600080fd5b506104a361086f36600461231a565b6113e3565b34801561088057600080fd5b5061046561271081565b34801561089657600080fd5b506103dd6108a53660046122fd565b6113f9565b3480156108b657600080fd5b5061046560095481565b3480156108cc57600080fd5b506103dd6108db3660046122fd565b6114a4565b3480156108ec57600080fd5b5061046560045481565b34801561090257600080fd5b50600f546103f5906001600160a01b031681565b34801561092257600080fd5b506103dd61093136600461239c565b611755565b34801561094257600080fd5b50600e546104a39060ff1681565b34801561095c57600080fd5b506103dd61096b3660046123b7565b6117ef565b34801561097c57600080fd5b50600e546104a3906301000000900460ff1681565b34801561099d57600080fd5b5061046560075481565b3480156109b357600080fd5b50610465600b5481565b3480156109c957600080fd5b506104656109d83660046123ec565b611866565b3480156109e957600080fd5b50600e546104a390610100900460ff1681565b348015610a0857600080fd5b506104a3610a173660046122fd565b60126020526000908152604090205460ff1681565b348015610a3857600080fd5b506103dd610a473660046122fd565b611891565b348015610a5857600080fd5b506001546103f5906001600160a01b031681565b600e805463ff0000001916630100000017905560006064610a8d818061243b565b610a97919061243b565b9050600081610aa760648561244e565b610ab19190612465565b9050600082610ac160648661244e565b610acb9190612465565b9050600081610ada8487612487565b610ae49190612487565b905084600a6000828254610af8919061243b565b925050819055508260046000828254610b11919061243b565b925050819055508160066000828254610b2a919061243b565b925050819055508060086000828254610b43919061243b565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610b7d57610b7d61249a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa91906124b0565b81600181518110610c0d57610c0d61249a565b6001600160a01b039283166020918202929092010152600f5416610c5857600f546040516314eec6eb60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600e54640100000000900460ff1615610ce657600f54610c839030906001600160a01b0316866118cc565b600f5460405163b6b55f2560e01b8152600481018590526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015610cc957600080fd5b505af1158015610cdd573d6000803e3d6000fd5b50505050610d00565b600f54610cfe9030906001600160a01b031685611991565b505b610d0d3061dead84611991565b50600154610d269030906001600160a01b0316866118cc565b6040805185815260208101859052908101839052606081018790523360808201524260a08201527f095046c58a377d54685857e96b2bbfd471ec5fe130ece4bd1fbf1369b1be25e49060c00160405180910390a160015460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dc7908790600090869073a3d552c0709a867d024ac73a6444520c1444d450904290600401612511565b600060405180830381600087803b158015610de157600080fd5b505af1158015610df5573d6000803e3d6000fd5b5050600e805463ff000000191690555050505050505050565b600033610e1c8185856118cc565b60019150505b92915050565b600033610e36858285611a3d565b610e41858585611ab7565b9150505b9392505050565b600033610e1c818585610e5f8383611866565b610e69919061243b565b6118cc565b610e76611d4e565b801515600e60019054906101000a900460ff16151503610eac5760405162a7e72d60e41b81528115156004820152602401610c4f565b600e805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610f0290839085903390429061254d565b60405180910390a15050565b610f16611d4e565b600e546001600160a01b03600160281b909104811690831603610f4c57604051631807bf8160e01b815260040160405180910390fd5b6001600160a01b03821660009081526013602052604090205481151560ff909116151503610f905760405162a7e72d60e41b81528115156004820152602401610c4f565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc91906124b0565b6001600160a01b0316141580156110865750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107a91906124b0565b6001600160a01b031614155b156110af57604051634726455360e11b81526001600160a01b0383166004820152602401610c4f565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6110e2611d4e565b80600b60008282546110f4919061243b565b909155505042600c556111098161dead611d8a565b50565b611114611d4e565b61111e6000611f23565b565b611128611d4e565b80600d540361114d5760405163657e16cf60e01b815260048101829052602401610c4f565b600d805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590608001610f02565b6111a3611d4e565b600e5460ff16156111d257600e546040516301bf623960e61b815260ff90911615156004820152602401610c4f565b600e54610100900460ff161561120a57600e54604051630eff900b60e21b815261010090910460ff1615156004820152602401610c4f565b600e5462010000900460ff161561124457600e5460405163610a8e6760e01b81526201000090910460ff1615156004820152602401610c4f565b600e805462ffffff191662010101179055565b61125f611d4e565b801515600e60029054906101000a900460ff161515036112955760405162a7e72d60e41b81528115156004820152602401610c4f565b600e805462ff00001981166201000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610f0290839085903390429061254d565b60106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015461dead60009081527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b695460025491929161134e9190612487565b6113589190612487565b905090565b6000338161136b8286611866565b9050838110156113cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c4f565b6113d882868684036118cc565b506001949350505050565b6000336113f1818585611ab7565b949350505050565b611401611d4e565b600f546001600160a01b0380831691160361143a5760405163a936636960e01b81526001600160a01b0382166004820152602401610c4f565b600f80546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935233918101919091524260608201527f7e90f9d2659130ec0a3b94870d2ffaa623d443d4317811b3bb508f0b4e39c73c90608001610f02565b6114ac611d4e565b6001546001600160a01b038083169116036114e55760405163a936636960e01b81526001600160a01b0382166004820152602401610c4f565b600180546001600160a01b038381166001600160a01b0319831681178455600e54600160281b900482166000818152601360209081526040808320805460ff1990811690915595909616808352601282528683208054871690558483529186902080549095169096179093558351838152948501919091523392840192909252426060840152917fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161091906124b0565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611672573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169691906124b0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170791906124b0565b600e805465010000000000600160c81b031916600160281b6001600160a01b03938416810291909117918290559004166000908152601360205260409020805460ff19166001179055505050565b61175d611d4e565b801515600e60049054906101000a900460ff161515036117935760405162a7e72d60e41b81528115156004820152602401610c4f565b600e805464ff0000000019811664010000000084151581029190911790925560405191900460ff16907fc3398fc30ad42edc812ea6d29f22432b21b112fed472b850516b88a357ed4ce690610f0290839085903390429061254d565b6117f7611d4e565b6001600160a01b03821660009081526012602052604090205481151560ff90911615150361183b5760405162a7e72d60e41b81528115156004820152602401610c4f565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b611899611d4e565b6001600160a01b0381166118c35760405163b20f76e360e01b815260006004820152602401610c4f565b61110981611f23565b6001600160a01b0383166118fe57604051634726455360e11b81526001600160a01b0384166004820152602401610c4f565b6001600160a01b03821661193057604051634726455360e11b81526001600160a01b0383166004820152602401610c4f565b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260106020526040812054828110156119ca5760405162461bcd60e51b8152600401610c4f90612573565b6001600160a01b0380861660008181526010602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a2a9087815260200190565b60405180910390a3506001949350505050565b6000611a498484611866565b90506000198114611ab15781811015611aa45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c4f565b611ab184848484036118cc565b50505050565b60006001600160a01b038416611aeb57604051634726455360e11b81526001600160a01b0385166004820152602401610c4f565b6001600160a01b038316611b1d57604051634726455360e11b81526001600160a01b0384166004820152602401610c4f565b600e5460ff16158015611b4957506001600160a01b03841660009081526012602052604090205460ff16155b8015611b6e57506001600160a01b03831660009081526012602052604090205460ff16155b15611b8c57604051632b61510560e11b815260040160405180910390fd5b600e546301000000900460ff1680611bbc57506001600160a01b03841660009081526012602052604090205460ff165b15611bd357611bcc848484611991565b9050610e45565b600e546001600160a01b03858116600160281b9092041614801590611c005750600e5462010000900460ff165b8015611c1d5750600d543060009081526010602052604090205410155b8015611c3a5750600d54600a54600954611c379190612487565b10155b15611c4a57611c4a600d54610a6c565b600e548290610100900460ff168015611c7c57506001600160a01b03851660009081526012602052604090205460ff16155b8015611ca157506001600160a01b03841660009081526012602052604090205460ff16155b15611cb457611cb1858585611f73565b90505b6001600160a01b038516600090815260106020526040902054811115611cec5760405162461bcd60e51b8152600401610c4f90612573565b6001600160a01b03808616600081815260106020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a2a9085815260200190565b33611d616000546001600160a01b031690565b6001600160a01b03161461111e576040516332b2baa360e01b8152336004820152602401610c4f565b600e805463ff0000001916630100000017905561deac193301611dc457604051634726455360e11b815261dead6004820152602401610c4f565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5291906124b0565b81600081518110611e6557611e6561249a565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611e9957611e9961249a565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de95908590611edf906000908690889042906004016125b9565b6000604051808303818588803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b5050600e805463ff00000019169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e805463ff000000191663010000001790556001600160a01b03831660009081526013602052604081205460ff168015611fc3575060006064611fb7818061243b565b611fc1919061243b565b115b15611fd957611fd284836120ad565b9050612099565b6001600160a01b03831660009081526013602052604090205460ff16801561201657506000606461200a818061243b565b612014919061243b565b115b1561202557611fd284836120ad565b6001600160a01b03841660009081526013602052604090205460ff1615801561206757506001600160a01b03831660009081526013602052604090205460ff16155b8015612087575060008061207b818061243b565b612085919061243b565b115b1561209657611fd28483612179565b50805b600e805463ff000000191690559392505050565b600e805463ff000000191663010000001790556000806127106120d160648561244e565b6120db9190612465565b905060006127106120ed60648661244e565b6120f79190612465565b9050600061271061210960648761244e565b6121139190612465565b9050600081836121238689612487565b61212d9190612487565b6121379190612487565b9050600082612146858761243b565b612150919061243b565b111561216257612162878585856121d2565b600e805463ff000000191690559695505050505050565b600e805463ff0000001916630100000017905560008061271061219c828561244e565b6121a69190612465565b905060006127106121b7828661244e565b6121c19190612465565b90506000612710612109828761244e565b600e805463ff000000191663010000001790556000816121f2848661243b565b6121fc919061243b565b90508360036000828254612210919061243b565b925050819055508260056000828254612229919061243b565b925050819055508160076000828254612242919061243b565b92505081905550806009600082825461225b919061243b565b9091555061226c9050853083611991565b5050600e805463ff0000001916905550505050565b60006020828403121561229357600080fd5b5035919050565b600060208083528351808285015260005b818110156122c7578581018301518582016040015282016122ab565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461110957600080fd5b60006020828403121561230f57600080fd5b8135610e45816122e8565b6000806040838503121561232d57600080fd5b8235612338816122e8565b946020939093013593505050565b60008060006060848603121561235b57600080fd5b8335612366816122e8565b92506020840135612376816122e8565b929592945050506040919091013590565b8035801515811461239757600080fd5b919050565b6000602082840312156123ae57600080fd5b610e4582612387565b600080604083850312156123ca57600080fd5b82356123d5816122e8565b91506123e360208401612387565b90509250929050565b600080604083850312156123ff57600080fd5b823561240a816122e8565b9150602083013561241a816122e8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e2257610e22612425565b8082028115828204841417610e2257610e22612425565b60008261248257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610e2257610e22612425565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156124c257600080fd5b8151610e45816122e8565b600081518084526020808501945080840160005b838110156125065781516001600160a01b0316875295820195908201906001016124e1565b509495945050505050565b85815284602082015260a06040820152600061253060a08301866124cd565b6001600160a01b0394909416606083015250608001529392505050565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8481526080602082015260006125d260808301866124cd565b6001600160a01b0394909416604083015250606001529291505056fea264697066735822122049ae586a0c9197fb54edb0b6dfb370e7b8d06caec535af383e6d6c6f3d0421c264736f6c63430008120033000000000000000000000000a3d552c0709a867d024ac73a6444520c1444d4500000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x6080604052600436106103b15760003560e01c80638b5bb970116101e7578063c9aebe1f1161010d578063da4daf71116100a0578063f2a426871161006f578063f2a42687146109fc578063f2fde38b14610a2c578063f887ea4014610a4c578063f924e3e01461045057600080fd5b8063da4daf71146109a7578063dba6281b14610450578063dd62ed3e146109bd578063e43504da146109dd57600080fd5b8063d621e813116100dc578063d621e81314610936578063d63cad2214610950578063d830678614610970578063d84654401461099157600080fd5b8063c9aebe1f146108e0578063cb3966eb146108f6578063d47d87411461051e578063d502a03a1461091657600080fd5b8063a457c2d711610185578063ab37dec811610154578063ab37dec81461088a578063b1080fc114610450578063b9b2b5cd146108aa578063c851cc32146108c057600080fd5b8063a457c2d71461080d578063a8aa1b311461082d578063a9059cbb14610854578063ab28a04c1461087457600080fd5b80639358928b116101c15780639358928b146107a057806395d89b41146107b557806397e1b9d3146107e15780639cd92209146107f757600080fd5b80638b5bb9701461074e5780638da5cb5b14610762578063924de9b71461078057600080fd5b80633a7c43d6116102d75780636e6f7fb01161026a57806375fed3c71161023957806375fed3c7146106db57806378eec331146106fb5780638a2371bb146107235780638a8c523c1461073957600080fd5b80636e6f7fb01461045057806370a082311461067a578063715018a6146106b057806371538eed146106c557600080fd5b806358fa63ca116102a657806358fa63ca1461060f57806359cd903114610624578063625dd6051461063a57806363a954921461065a57600080fd5b80633a7c43d6146104505780633bf31454146105b75780633e934f56146105d7578063526f4ef0146105f957600080fd5b806323b872dd1161034f57806335131df01161031e57806335131df01461051e578063351a964d1461054f578063395093511461056f57806339d445bf1461058f57600080fd5b806323b872dd146104e8578063253a19a3146105085780632dab00e11461051e578063313ce5671461053357600080fd5b806307e16fa51161038b57806307e16fa51461045057806308c4365014610473578063095ea7b3146104b357806318160ddd146104d357600080fd5b806301295143146103bd57806303fd2a45146103df57806306fdde031461041257600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103dd6103d8366004612281565b610a6c565b005b3480156103eb57600080fd5b506103f561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041e57600080fd5b5060408051808201909152600c81526b50616e646146696e616e633360a01b60208201525b604051610409919061229a565b34801561045c57600080fd5b50610465606481565b604051908152602001610409565b34801561047f57600080fd5b506104a361048e3660046122fd565b60136020526000908152604090205460ff1681565b6040519015158152602001610409565b3480156104bf57600080fd5b506104a36104ce36600461231a565b610e0e565b3480156104df57600080fd5b50600254610465565b3480156104f457600080fd5b506104a3610503366004612346565b610e28565b34801561051457600080fd5b5061046560085481565b34801561052a57600080fd5b50610465600081565b34801561053f57600080fd5b5060405160128152602001610409565b34801561055b57600080fd5b50600e546104a39062010000900460ff1681565b34801561057b57600080fd5b506104a361058a36600461231a565b610e4c565b34801561059b57600080fd5b506103f573a3d552c0709a867d024ac73a6444520c1444d45081565b3480156105c357600080fd5b506103dd6105d236600461239c565b610e6e565b3480156105e357600080fd5b50600e546104a390640100000000900460ff1681565b34801561060557600080fd5b5061046560055481565b34801561061b57600080fd5b506103f5600081565b34801561063057600080fd5b50610465600d5481565b34801561064657600080fd5b506103dd6106553660046123b7565b610f0e565b34801561066657600080fd5b506103dd610675366004612281565b6110da565b34801561068657600080fd5b506104656106953660046122fd565b6001600160a01b031660009081526010602052604090205490565b3480156106bc57600080fd5b506103dd61110c565b3480156106d157600080fd5b50610465600a5481565b3480156106e757600080fd5b506103dd6106f6366004612281565b611120565b34801561070757600080fd5b506103f57337e25fa9e27e12211572e555a49495b60d585f7681565b34801561072f57600080fd5b5061046560035481565b34801561074557600080fd5b506103dd61119b565b34801561075a57600080fd5b5060016104a3565b34801561076e57600080fd5b506000546001600160a01b03166103f5565b34801561078c57600080fd5b506103dd61079b36600461239c565b611257565b3480156107ac57600080fd5b506104656112ed565b3480156107c157600080fd5b506040805180820190915260038152622820a360e91b6020820152610443565b3480156107ed57600080fd5b50610465600c5481565b34801561080357600080fd5b5061046560065481565b34801561081957600080fd5b506104a361082836600461231a565b61135d565b34801561083957600080fd5b50600e546103f590600160281b90046001600160a01b031681565b34801561086057600080fd5b506104a361086f36600461231a565b6113e3565b34801561088057600080fd5b5061046561271081565b34801561089657600080fd5b506103dd6108a53660046122fd565b6113f9565b3480156108b657600080fd5b5061046560095481565b3480156108cc57600080fd5b506103dd6108db3660046122fd565b6114a4565b3480156108ec57600080fd5b5061046560045481565b34801561090257600080fd5b50600f546103f5906001600160a01b031681565b34801561092257600080fd5b506103dd61093136600461239c565b611755565b34801561094257600080fd5b50600e546104a39060ff1681565b34801561095c57600080fd5b506103dd61096b3660046123b7565b6117ef565b34801561097c57600080fd5b50600e546104a3906301000000900460ff1681565b34801561099d57600080fd5b5061046560075481565b3480156109b357600080fd5b50610465600b5481565b3480156109c957600080fd5b506104656109d83660046123ec565b611866565b3480156109e957600080fd5b50600e546104a390610100900460ff1681565b348015610a0857600080fd5b506104a3610a173660046122fd565b60126020526000908152604090205460ff1681565b348015610a3857600080fd5b506103dd610a473660046122fd565b611891565b348015610a5857600080fd5b506001546103f5906001600160a01b031681565b600e805463ff0000001916630100000017905560006064610a8d818061243b565b610a97919061243b565b9050600081610aa760648561244e565b610ab19190612465565b9050600082610ac160648661244e565b610acb9190612465565b9050600081610ada8487612487565b610ae49190612487565b905084600a6000828254610af8919061243b565b925050819055508260046000828254610b11919061243b565b925050819055508160066000828254610b2a919061243b565b925050819055508060086000828254610b43919061243b565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610b7d57610b7d61249a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa91906124b0565b81600181518110610c0d57610c0d61249a565b6001600160a01b039283166020918202929092010152600f5416610c5857600f546040516314eec6eb60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600e54640100000000900460ff1615610ce657600f54610c839030906001600160a01b0316866118cc565b600f5460405163b6b55f2560e01b8152600481018590526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015610cc957600080fd5b505af1158015610cdd573d6000803e3d6000fd5b50505050610d00565b600f54610cfe9030906001600160a01b031685611991565b505b610d0d3061dead84611991565b50600154610d269030906001600160a01b0316866118cc565b6040805185815260208101859052908101839052606081018790523360808201524260a08201527f095046c58a377d54685857e96b2bbfd471ec5fe130ece4bd1fbf1369b1be25e49060c00160405180910390a160015460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dc7908790600090869073a3d552c0709a867d024ac73a6444520c1444d450904290600401612511565b600060405180830381600087803b158015610de157600080fd5b505af1158015610df5573d6000803e3d6000fd5b5050600e805463ff000000191690555050505050505050565b600033610e1c8185856118cc565b60019150505b92915050565b600033610e36858285611a3d565b610e41858585611ab7565b9150505b9392505050565b600033610e1c818585610e5f8383611866565b610e69919061243b565b6118cc565b610e76611d4e565b801515600e60019054906101000a900460ff16151503610eac5760405162a7e72d60e41b81528115156004820152602401610c4f565b600e805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610f0290839085903390429061254d565b60405180910390a15050565b610f16611d4e565b600e546001600160a01b03600160281b909104811690831603610f4c57604051631807bf8160e01b815260040160405180910390fd5b6001600160a01b03821660009081526013602052604090205481151560ff909116151503610f905760405162a7e72d60e41b81528115156004820152602401610c4f565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc91906124b0565b6001600160a01b0316141580156110865750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107a91906124b0565b6001600160a01b031614155b156110af57604051634726455360e11b81526001600160a01b0383166004820152602401610c4f565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6110e2611d4e565b80600b60008282546110f4919061243b565b909155505042600c556111098161dead611d8a565b50565b611114611d4e565b61111e6000611f23565b565b611128611d4e565b80600d540361114d5760405163657e16cf60e01b815260048101829052602401610c4f565b600d805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590608001610f02565b6111a3611d4e565b600e5460ff16156111d257600e546040516301bf623960e61b815260ff90911615156004820152602401610c4f565b600e54610100900460ff161561120a57600e54604051630eff900b60e21b815261010090910460ff1615156004820152602401610c4f565b600e5462010000900460ff161561124457600e5460405163610a8e6760e01b81526201000090910460ff1615156004820152602401610c4f565b600e805462ffffff191662010101179055565b61125f611d4e565b801515600e60029054906101000a900460ff161515036112955760405162a7e72d60e41b81528115156004820152602401610c4f565b600e805462ff00001981166201000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610f0290839085903390429061254d565b60106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015461dead60009081527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b695460025491929161134e9190612487565b6113589190612487565b905090565b6000338161136b8286611866565b9050838110156113cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c4f565b6113d882868684036118cc565b506001949350505050565b6000336113f1818585611ab7565b949350505050565b611401611d4e565b600f546001600160a01b0380831691160361143a5760405163a936636960e01b81526001600160a01b0382166004820152602401610c4f565b600f80546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935233918101919091524260608201527f7e90f9d2659130ec0a3b94870d2ffaa623d443d4317811b3bb508f0b4e39c73c90608001610f02565b6114ac611d4e565b6001546001600160a01b038083169116036114e55760405163a936636960e01b81526001600160a01b0382166004820152602401610c4f565b600180546001600160a01b038381166001600160a01b0319831681178455600e54600160281b900482166000818152601360209081526040808320805460ff1990811690915595909616808352601282528683208054871690558483529186902080549095169096179093558351838152948501919091523392840192909252426060840152917fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161091906124b0565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611672573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169691906124b0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170791906124b0565b600e805465010000000000600160c81b031916600160281b6001600160a01b03938416810291909117918290559004166000908152601360205260409020805460ff19166001179055505050565b61175d611d4e565b801515600e60049054906101000a900460ff161515036117935760405162a7e72d60e41b81528115156004820152602401610c4f565b600e805464ff0000000019811664010000000084151581029190911790925560405191900460ff16907fc3398fc30ad42edc812ea6d29f22432b21b112fed472b850516b88a357ed4ce690610f0290839085903390429061254d565b6117f7611d4e565b6001600160a01b03821660009081526012602052604090205481151560ff90911615150361183b5760405162a7e72d60e41b81528115156004820152602401610c4f565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b611899611d4e565b6001600160a01b0381166118c35760405163b20f76e360e01b815260006004820152602401610c4f565b61110981611f23565b6001600160a01b0383166118fe57604051634726455360e11b81526001600160a01b0384166004820152602401610c4f565b6001600160a01b03821661193057604051634726455360e11b81526001600160a01b0383166004820152602401610c4f565b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260106020526040812054828110156119ca5760405162461bcd60e51b8152600401610c4f90612573565b6001600160a01b0380861660008181526010602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a2a9087815260200190565b60405180910390a3506001949350505050565b6000611a498484611866565b90506000198114611ab15781811015611aa45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c4f565b611ab184848484036118cc565b50505050565b60006001600160a01b038416611aeb57604051634726455360e11b81526001600160a01b0385166004820152602401610c4f565b6001600160a01b038316611b1d57604051634726455360e11b81526001600160a01b0384166004820152602401610c4f565b600e5460ff16158015611b4957506001600160a01b03841660009081526012602052604090205460ff16155b8015611b6e57506001600160a01b03831660009081526012602052604090205460ff16155b15611b8c57604051632b61510560e11b815260040160405180910390fd5b600e546301000000900460ff1680611bbc57506001600160a01b03841660009081526012602052604090205460ff165b15611bd357611bcc848484611991565b9050610e45565b600e546001600160a01b03858116600160281b9092041614801590611c005750600e5462010000900460ff165b8015611c1d5750600d543060009081526010602052604090205410155b8015611c3a5750600d54600a54600954611c379190612487565b10155b15611c4a57611c4a600d54610a6c565b600e548290610100900460ff168015611c7c57506001600160a01b03851660009081526012602052604090205460ff16155b8015611ca157506001600160a01b03841660009081526012602052604090205460ff16155b15611cb457611cb1858585611f73565b90505b6001600160a01b038516600090815260106020526040902054811115611cec5760405162461bcd60e51b8152600401610c4f90612573565b6001600160a01b03808616600081815260106020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a2a9085815260200190565b33611d616000546001600160a01b031690565b6001600160a01b03161461111e576040516332b2baa360e01b8152336004820152602401610c4f565b600e805463ff0000001916630100000017905561deac193301611dc457604051634726455360e11b815261dead6004820152602401610c4f565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5291906124b0565b81600081518110611e6557611e6561249a565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611e9957611e9961249a565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de95908590611edf906000908690889042906004016125b9565b6000604051808303818588803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b5050600e805463ff00000019169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e805463ff000000191663010000001790556001600160a01b03831660009081526013602052604081205460ff168015611fc3575060006064611fb7818061243b565b611fc1919061243b565b115b15611fd957611fd284836120ad565b9050612099565b6001600160a01b03831660009081526013602052604090205460ff16801561201657506000606461200a818061243b565b612014919061243b565b115b1561202557611fd284836120ad565b6001600160a01b03841660009081526013602052604090205460ff1615801561206757506001600160a01b03831660009081526013602052604090205460ff16155b8015612087575060008061207b818061243b565b612085919061243b565b115b1561209657611fd28483612179565b50805b600e805463ff000000191690559392505050565b600e805463ff000000191663010000001790556000806127106120d160648561244e565b6120db9190612465565b905060006127106120ed60648661244e565b6120f79190612465565b9050600061271061210960648761244e565b6121139190612465565b9050600081836121238689612487565b61212d9190612487565b6121379190612487565b9050600082612146858761243b565b612150919061243b565b111561216257612162878585856121d2565b600e805463ff000000191690559695505050505050565b600e805463ff0000001916630100000017905560008061271061219c828561244e565b6121a69190612465565b905060006127106121b7828661244e565b6121c19190612465565b90506000612710612109828761244e565b600e805463ff000000191663010000001790556000816121f2848661243b565b6121fc919061243b565b90508360036000828254612210919061243b565b925050819055508260056000828254612229919061243b565b925050819055508160076000828254612242919061243b565b92505081905550806009600082825461225b919061243b565b9091555061226c9050853083611991565b5050600e805463ff0000001916905550505050565b60006020828403121561229357600080fd5b5035919050565b600060208083528351808285015260005b818110156122c7578581018301518582016040015282016122ab565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461110957600080fd5b60006020828403121561230f57600080fd5b8135610e45816122e8565b6000806040838503121561232d57600080fd5b8235612338816122e8565b946020939093013593505050565b60008060006060848603121561235b57600080fd5b8335612366816122e8565b92506020840135612376816122e8565b929592945050506040919091013590565b8035801515811461239757600080fd5b919050565b6000602082840312156123ae57600080fd5b610e4582612387565b600080604083850312156123ca57600080fd5b82356123d5816122e8565b91506123e360208401612387565b90509250929050565b600080604083850312156123ff57600080fd5b823561240a816122e8565b9150602083013561241a816122e8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e2257610e22612425565b8082028115828204841417610e2257610e22612425565b60008261248257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610e2257610e22612425565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156124c257600080fd5b8151610e45816122e8565b600081518084526020808501945080840160005b838110156125065781516001600160a01b0316875295820195908201906001016124e1565b509495945050505050565b85815284602082015260a06040820152600061253060a08301866124cd565b6001600160a01b0394909416606083015250608001529392505050565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8481526080602082015260006125d260808301866124cd565b6001600160a01b0394909416604083015250606001529291505056fea264697066735822122049ae586a0c9197fb54edb0b6dfb370e7b8d06caec535af383e6d6c6f3d0421c264736f6c63430008120033

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

000000000000000000000000a3d552c0709a867d024ac73a6444520c1444d4500000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : stakingAddress (address): 0xa3d552C0709A867d024AC73A6444520C1444d450
Arg [1] : isContract (bool): True

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a3d552c0709a867d024ac73a6444520c1444d450
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

5373:18037:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10093:1558;;;;;;;;;;-1:-1:-1;10093:1558:0;;;;;:::i;:::-;;:::i;:::-;;6997:46;;;;;;;;;;;;7036:6;6997:46;;;;;-1:-1:-1;;;;;363:32:1;;;345:51;;333:2;318:18;6997:46:0;;;;;;;;17930:101;;;;;;;;;;-1:-1:-1;18019:4:0;;;;;;;;;;;;-1:-1:-1;;;18019:4:0;;;;17930:101;;;;;;;:::i;5723:45::-;;;;;;;;;;;;5765:3;5723:45;;;;;1106:25:1;;;1094:2;1079:18;5723:45:0;960:177:1;7496:40:0;;;;;;;;;;-1:-1:-1;7496:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1695:14:1;;1688:22;1670:41;;1658:2;1643:18;7496:40:0;1530:187:1;18897:205:0;;;;;;;;;;-1:-1:-1;18897:205:0;;;;;:::i;:::-;;:::i;18273:108::-;;;;;;;;;;-1:-1:-1;18361:12:0;;18273:108;;19114:246;;;;;;;;;;-1:-1:-1;19114:246:0;;;;;:::i;:::-;;:::i;6433:39::-;;;;;;;;;;;;;;;;6132:43;;;;;;;;;;;;6174:1;6132:43;;18160:101;;;;;;;;;;-1:-1:-1;18160:101:0;;5615:2;2645:36:1;;2633:2;2618:18;18160:101:0;2503:184:1;6830:33:0;;;;;;;;;;-1:-1:-1;6830:33:0;;;;;;;;;;;19372:247;;;;;;;;;;-1:-1:-1;19372:247:0;;;;;:::i;:::-;;:::i;7138:80::-;;;;;;;;;;;;7176:42;7138:80;;12868:307;;;;;;;;;;-1:-1:-1;12868:307:0;;;;;:::i;:::-;;:::i;6903:37::-;;;;;;;;;;-1:-1:-1;6903:37:0;;;;;;;;;;;6287:43;;;;;;;;;;;;;;;;6949:41;;;;;;;;;;;;6988:1;6949:41;;6663:38;;;;;;;;;;;;;;;;14441:387;;;;;;;;;;-1:-1:-1;14441:387:0;;;;;:::i;:::-;;:::i;17286:202::-;;;;;;;;;;-1:-1:-1;17286:202:0;;;;;:::i;:::-;;:::i;18393:127::-;;;;;;;;;;-1:-1:-1;18393:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;18494:18:0;18467:7;18494:18;;;:9;:18;;;;;;;18393:127;4642:103;;;;;;;;;;;;;:::i;6522:35::-;;;;;;;;;;;;;;;;12556:304;;;;;;;;;;-1:-1:-1;12556:304:0;;;;;:::i;:::-;;:::i;7050:81::-;;;;;;;;;;;;7089:42;7050:81;;6184:45;;;;;;;;;;;;;;;;9693:372;;;;;;;;;;;;;:::i;11678:86::-;;;;;;;;;;-1:-1:-1;6740:4:0;11678:86;;4384:87;;;;;;;;;;-1:-1:-1;4430:7:0;4457:6;-1:-1:-1;;;;;4457:6:0;4384:87;;13183:317;;;;;;;;;;-1:-1:-1;13183:317:0;;;;;:::i;:::-;;:::i;11772:136::-;;;;;;;;;;;;;:::i;18043:105::-;;;;;;;;;;-1:-1:-1;18134:6:0;;;;;;;;;;;;-1:-1:-1;;;18134:6:0;;;;18043:105;;6613:43;;;;;;;;;;;;;;;;6337:42;;;;;;;;;;;;;;;;19631:445;;;;;;;;;;-1:-1:-1;19631:445:0;;;;;:::i;:::-;;:::i;7227:19::-;;;;;;;;;;-1:-1:-1;7227:19:0;;;;-1:-1:-1;;;7227:19:0;;-1:-1:-1;;;;;7227:19:0;;;18532:184;;;;;;;;;;-1:-1:-1;18532:184:0;;;;;:::i;:::-;;:::i;5667:47::-;;;;;;;;;;;;5708:6;5667:47;;13857:353;;;;;;;;;;-1:-1:-1;13857:353:0;;;;;:::i;:::-;;:::i;6479:36::-;;;;;;;;;;;;;;;;11936:612;;;;;;;;;;-1:-1:-1;11936:612:0;;;;;:::i;:::-;;:::i;6236:44::-;;;;;;;;;;;;;;;;7253:30;;;;;;;;;;-1:-1:-1;7253:30:0;;;;-1:-1:-1;;;;;7253:30:0;;;13508:341;;;;;;;;;;-1:-1:-1;13508:341:0;;;;;:::i;:::-;;:::i;6753:32::-;;;;;;;;;;-1:-1:-1;6753:32:0;;;;;;;;14218:215;;;;;;;;;;-1:-1:-1;14218:215:0;;;;;:::i;:::-;;:::i;6870:26::-;;;;;;;;;;-1:-1:-1;6870:26:0;;;;;;;;;;;6386:40;;;;;;;;;;;;;;;;6564:42;;;;;;;;;;;;;;;;18728:157;;;;;;;;;;-1:-1:-1;18728:157:0;;;;;:::i;:::-;;:::i;6792:31::-;;;;;;;;;;-1:-1:-1;6792:31:0;;;;;;;;;;;7440:49;;;;;;;;;;-1:-1:-1;7440:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4753:213;;;;;;;;;;-1:-1:-1;4753:213:0;;;;;:::i;:::-;;:::i;5452:21::-;;;;;;;;;;-1:-1:-1;5452:21:0;;;;-1:-1:-1;;;;;5452:21:0;;;10093:1558;7595:6;:13;;-1:-1:-1;;7595:13:0;;;;;;6074:3:::1;10193:31;6074:3:::0;;10193:31:::1;:::i;:::-;:44;;;;:::i;:::-;10174:63:::0;-1:-1:-1;10248:23:0::1;10174:63:::0;10274:32:::1;5765:3;10274:14:::0;:32:::1;:::i;:::-;:43;;;;:::i;:::-;10248:69:::0;-1:-1:-1;10328:21:0::1;10385:8:::0;10352:30:::1;5923:3;10352:14:::0;:30:::1;:::i;:::-;:41;;;;:::i;:::-;10328:65:::0;-1:-1:-1;10404:18:0::1;10328:65:::0;10425:32:::1;10442:15:::0;10425:14;:32:::1;:::i;:::-;:48;;;;:::i;:::-;10404:69;;10504:14;10484:16;;:34;;;;;;;:::i;:::-;;;;;;;;10558:15;10529:25;;:44;;;;;;;:::i;:::-;;;;;;;;10611:13;10584:23;;:40;;;;;;;:::i;:::-;;;;;;;;10659:10;10635:20;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10706:16:0::1;::::0;;10720:1:::1;10706:16:::0;;;;;::::1;::::0;;10682:21:::1;::::0;10706:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10706:16:0::1;10682:40;;10751:4;10733;10738:1;10733:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10733:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10777:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;10777:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;10733:7;;10777:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10767:4;10772:1;10767:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10767:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;10807:15:::1;::::0;::::1;10803:101;;10876:15;::::0;10854:38:::1;::::0;-1:-1:-1;;;10854:38:0;;-1:-1:-1;;;;;10876:15:0;;::::1;10854:38;::::0;::::1;345:51:1::0;318:18;;10854:38:0::1;;;;;;;;10803:101;10920:17;::::0;;;::::1;;;10916:273;;;10986:15;::::0;10954:66:::1;::::0;10971:4:::1;::::0;-1:-1:-1;;;;;10986:15:0::1;11004::::0;10954:8:::1;:66::i;:::-;11044:15;::::0;11035:48:::1;::::0;-1:-1:-1;;;11035:48:0;;::::1;::::0;::::1;1106:25:1::0;;;-1:-1:-1;;;;;11044:15:0;;::::1;::::0;11035:33:::1;::::0;1079:18:1;;11035:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10916:273;;;11146:15;::::0;11116:61:::1;::::0;11139:4:::1;::::0;-1:-1:-1;;;;;11146:15:0::1;11163:13:::0;11116:14:::1;:61::i;:::-;;10916:273;11201:47;11224:4;7036:6;11237:10;11201:14;:47::i;:::-;-1:-1:-1::0;11291:6:0::1;::::0;11259:57:::1;::::0;11276:4:::1;::::0;-1:-1:-1;;;;;11291:6:0::1;11300:15:::0;11259:8:::1;:57::i;:::-;11342:99;::::0;;5575:25:1;;;5631:2;5616:18;;5609:34;;;5659:18;;;5652:34;;;5717:2;5702:18;;5695:34;;;11413:10:0::1;5760:3:1::0;5745:19;;5738:61;11425:15:0::1;5786:3:1::0;5815:19;;5808:35;11342:99:0::1;::::0;5562:3:1;5547:19;11342:99:0::1;;;;;;;11454:6;::::0;:189:::1;::::0;-1:-1:-1;;;11454:189:0;;-1:-1:-1;;;;;11454:6:0;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;11526:15;;11454:6:::1;::::0;11572:4;;7176:42:::1;::::0;11617:15:::1;::::0;11454:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7631:6:0;:14;;-1:-1:-1;;7631:14:0;;;-1:-1:-1;;;;;;;;10093:1558:0:o;18897:205::-;18980:4;19016:10;19037:35;19016:10;19056:7;19065:6;19037:8;:35::i;:::-;19090:4;19083:11;;;18897:205;;;;;:::o;19114:246::-;19213:4;19248:10;19269:38;19285:4;19248:10;19300:6;19269:15;:38::i;:::-;19325:27;19335:4;19341:2;19345:6;19325:9;:27::i;:::-;19318:34;;;19114:246;;;;;;:::o;19372:247::-;19462:4;19498:10;19519:70;19498:10;19538:7;19578:10;19547:28;19498:10;19538:7;19547:9;:28::i;:::-;:41;;;;:::i;:::-;19519:8;:70::i;12868:307::-;3982:13;:11;:13::i;:::-;12958:9:::1;12943:24;;:11;;;;;;;;;;;:24;;::::0;12939:74:::1;;12978:32;::::0;-1:-1:-1;;;12978:32:0;;1695:14:1;;1688:22;12978:32:0::1;::::0;::::1;1670:41:1::0;1643:18;;12978:32:0::1;1530:187:1::0;12939:74:0::1;13040:11;::::0;;-1:-1:-1;;13062:23:0;::::1;13040:11;13062:23:::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;13101:66:::1;::::0;13040:11;;::::1;;;::::0;13101:66:::1;::::0;::::1;::::0;13040:11;;13062:23;;13139:10:::1;::::0;13151:15:::1;::::0;13101:66:::1;:::i;:::-;;;;;;;;12928:247;12868:307:::0;:::o;14441:387::-;3982:13;:11;:13::i;:::-;14533:4:::1;::::0;-1:-1:-1;;;;;;;;14533:4:0;;::::1;::::0;::::1;14523:14:::0;;::::1;::::0;14519:51:::1;;14548:19;;-1:-1:-1::0;;;14548:19:0::1;;;;;;;;;;;14519:51;-1:-1:-1::0;;;;;14584:16:0;::::1;;::::0;;;:8:::1;:16;::::0;;;;;:26;::::1;;:16;::::0;;::::1;:26;;::::0;14580:73:::1;;14621:29;::::0;-1:-1:-1;;;14621:29:0;;1695:14:1;;1688:22;14621:29:0::1;::::0;::::1;1670:41:1::0;1643:18;;14621:29:0::1;1530:187:1::0;14580:73:0::1;14701:4;-1:-1:-1::0;;;;;14667:39:0::1;14673:6;-1:-1:-1::0;;;;;14667:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14667:39:0::1;;;:82;;;;;14744:4;-1:-1:-1::0;;;;;14710:39:0::1;14716:6;-1:-1:-1::0;;;;;14710:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14710:39:0::1;;;14667:82;14663:122;;;14760:22;::::0;-1:-1:-1;;;14760:22:0;;-1:-1:-1;;;;;363:32:1;;14760:22:0::1;::::0;::::1;345:51:1::0;318:18;;14760:22:0::1;199:203:1::0;14663:122:0::1;-1:-1:-1::0;;;;;14795:16:0;;;::::1;;::::0;;;:8:::1;:16;::::0;;;;:25;;-1:-1:-1;;14795:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14441:387::o;17286:202::-;3982:13;:11;:13::i;:::-;17387:6:::1;17360:23;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17431:15:0::1;17404:24;:42:::0;17457:23:::1;17467:6:::0;7036::::1;17457:9;:23::i;:::-;17286:202:::0;:::o;4642:103::-;3982:13;:11;:13::i;:::-;4707:30:::1;4734:1;4707:18;:30::i;:::-;4642:103::o:0;12556:304::-;3982:13;:11;:13::i;:::-;12644:10:::1;12633:7;;:21:::0;12629:72:::1;;12665:33;::::0;-1:-1:-1;;;12665:33:0;;::::1;::::0;::::1;1106:25:1::0;;;1079:18;;12665:33:0::1;960:177:1::0;12629:72:0::1;12732:7;::::0;;12750:20;;;;12786:66:::1;::::0;;7580:25:1;;;7636:2;7621:18;;7614:34;;;12824:10:0::1;7664:18:1::0;;;7657:60;;;;12836:15:0::1;7748:2:1::0;7733:18;;7726:34;12786:66:0::1;::::0;7567:3:1;7552:19;12786:66:0::1;7349:417:1::0;9693:372:0;3982:13;:11;:13::i;:::-;9752:12:::1;::::0;::::1;;9748:68;;;9800:12;::::0;9775:38:::1;::::0;-1:-1:-1;;;9775:38:0;;9800:12:::1;::::0;;::::1;1695:14:1::0;1688:22;9775:38:0::1;::::0;::::1;1670:41:1::0;1643:18;;9775:38:0::1;1530:187:1::0;9748:68:0::1;9830:11;::::0;::::1;::::0;::::1;;;9826:63;;;9874:11;::::0;9852:34:::1;::::0;-1:-1:-1;;;9852:34:0;;9874:11:::1;::::0;;::::1;;;1695:14:1::0;1688:22;9852:34:0::1;::::0;::::1;1670:41:1::0;1643:18;;9852:34:0::1;1530:187:1::0;9826:63:0::1;9903:13;::::0;;;::::1;;;9899:69;;;9951:13;::::0;9927:38:::1;::::0;-1:-1:-1;;;9927:38:0;;9951:13;;;::::1;;;1695:14:1::0;1688:22;9927:38:0::1;::::0;::::1;1670:41:1::0;1643:18;;9927:38:0::1;1530:187:1::0;9899:69:0::1;9978:12;:19:::0;;-1:-1:-1;;10037:20:0;;;;;9693:372::o;13183:317::-;3982:13;:11;:13::i;:::-;13277:9:::1;13260:26;;:13;;;;;;;;;;;:26;;::::0;13256:76:::1;;13297:32;::::0;-1:-1:-1;;;13297:32:0;;1695:14:1;;1688:22;13297:32:0::1;::::0;::::1;1670:41:1::0;1643:18;;13297:32:0::1;1530:187:1::0;13256:76:0::1;13359:13;::::0;;-1:-1:-1;;13383:25:0;::::1;13359:13:::0;13383:25;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;13424:68:::1;::::0;13359:13;;::::1;;;::::0;13424:68:::1;::::0;::::1;::::0;13359:13;;13383:25;;13464:10:::1;::::0;13476:15:::1;::::0;13424:68:::1;:::i;11772:136::-:0;18494:9;:18;;;;7036:6;11824:7;18494:18;;;;;18361:12;;11824:7;;18494:18;11851:31;;18494:18;11851:31;:::i;:::-;:49;;;;:::i;:::-;11844:56;;11772:136;:::o;19631:445::-;19726:4;19762:10;19726:4;19810:28;19762:10;19830:7;19810:9;:28::i;:::-;19783:55;;19877:15;19857:16;:35;;19849:85;;;;-1:-1:-1;;;19849:85:0;;7973:2:1;19849:85:0;;;7955:21:1;8012:2;7992:18;;;7985:30;8051:34;8031:18;;;8024:62;-1:-1:-1;;;8102:18:1;;;8095:35;8147:19;;19849:85:0;7771:401:1;19849:85:0;19970:63;19979:8;19989:7;20017:15;19998:16;:34;19970:8;:63::i;:::-;-1:-1:-1;20064:4:0;;19631:445;-1:-1:-1;;;;19631:445:0:o;18532:184::-;18613:4;18649:10;18677:31;18649:10;18697:2;18701:6;18677:9;:31::i;:::-;18670:38;18532:184;-1:-1:-1;;;;18532:184:0:o;13857:353::-;3982:13;:11;:13::i;:::-;13943:15:::1;::::0;-1:-1:-1;;;;;13943:30:0;;::::1;:15:::0;::::1;:30:::0;13939:84:::1;;13984:36;::::0;-1:-1:-1;;;13984:36:0;;-1:-1:-1;;;;;363:32:1;;13984:36:0::1;::::0;::::1;345:51:1::0;318:18;;13984:36:0::1;199:203:1::0;13939:84:0::1;14055:15;::::0;;-1:-1:-1;;;;;14081:29:0;;::::1;-1:-1:-1::0;;;;;;14081:29:0;::::1;::::0;::::1;::::0;;;14126:76:::1;::::0;;14055:15;;;::::1;8446:34:1::0;;;8511:2;8496:18;;8489:43;;;;14174:10:0::1;8548:18:1::0;;;8541:43;;;;14186:15:0::1;8615:2:1::0;8600:18;;8593:34;14126:76:0::1;::::0;8395:3:1;8380:19;14126:76:0::1;8177:456:1::0;11936:612:0;3982:13;:11;:13::i;:::-;12019:6:::1;::::0;-1:-1:-1;;;;;12011:28:0;;::::1;12019:6:::0;::::1;12011:28:::0;12007:80:::1;;12050:34;::::0;-1:-1:-1;;;12050:34:0;;-1:-1:-1;;;;;363:32:1;;12050:34:0::1;::::0;::::1;345:51:1::0;318:18;;12050:34:0::1;199:203:1::0;12007:80:0::1;12125:6;::::0;;-1:-1:-1;;;;;12143:27:0;;::::1;-1:-1:-1::0;;;;;;12143:27:0;::::1;::::0;::::1;::::0;;12199:4:::1;::::0;-1:-1:-1;;;12199:4:0;::::1;::::0;::::1;-1:-1:-1::0;12224:17:0;;;:8:::1;:17;::::0;;;;;;;:25;;-1:-1:-1;;12224:25:0;;::::1;::::0;;;12125:6;;;::::1;12260:28:::0;;;:17:::1;:28:::0;;;;;:36;;;::::1;::::0;;12307:28;;;;;;;:35;;;;::::1;::::0;;::::1;::::0;;;12360:63;;8446:34:1;;;8496:18;;;8489:43;;;;12395:10:0::1;8548:18:1::0;;;8541:43;;;;12407:15:0::1;8615:2:1::0;8600:18;;8593:34;12125:6:0;12360:63:::1;::::0;8395:3:1;8380:19;12360:63:0::1;;;;;;;12450:6;;;;;;;;;-1:-1:-1::0;;;;;12450:6:0::1;-1:-1:-1::0;;;;;12450:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12441:37:0::1;;12487:4;12494:6;;;;;;;;;-1:-1:-1::0;;;;;12494:6:0::1;-1:-1:-1::0;;;;;12494:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12441:67;::::0;-1:-1:-1;;;;;;12441:67:0::1;::::0;;;;;;-1:-1:-1;;;;;8868:15:1;;;12441:67:0::1;::::0;::::1;8850:34:1::0;8920:15;;8900:18;;;8893:43;8785:18;;12441:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12434:4;:74:::0;;-1:-1:-1;;;;;;12434:74:0::1;-1:-1:-1::0;;;;;;;;12434:74:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12528:4;::::1;;-1:-1:-1::0;12519:14:0;;;:8:::1;:14;::::0;;;;:21;;-1:-1:-1;;12519:21:0::1;-1:-1:-1::0;12519:21:0::1;::::0;;-1:-1:-1;;;11936:612:0:o;13508:341::-;3982:13;:11;:13::i;:::-;13612:9:::1;13591:30;;:17;;;;;;;;;;;:30;;::::0;13587:80:::1;;13632:32;::::0;-1:-1:-1;;;13632:32:0;;1695:14:1;;1688:22;13632:32:0::1;::::0;::::1;1670:41:1::0;1643:18;;13632:32:0::1;1530:187:1::0;13587:80:0::1;13694:17;::::0;;-1:-1:-1;;13722:29:0;::::1;13694:17:::0;13722:29;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;13767:74:::1;::::0;13694:17;;::::1;;;::::0;13767:74:::1;::::0;::::1;::::0;13694:17;;13722:29;;13813:10:::1;::::0;13825:15:::1;::::0;13767:74:::1;:::i;14218:215::-:0;3982:13;:11;:13::i;:::-;-1:-1:-1;;;;;14307:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;:33;::::1;;:23;::::0;;::::1;:33;;::::0;14303:80:::1;;14351:29;::::0;-1:-1:-1;;;14351:29:0;;1695:14:1;;1688:22;14351:29:0::1;::::0;::::1;1670:41:1::0;1643:18;;14351:29:0::1;1530:187:1::0;14303:80:0::1;-1:-1:-1::0;;;;;14393:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:32;;-1:-1:-1;;14393:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14218:215::o;18728:157::-;-1:-1:-1;;;;;18847:21:0;;;18820:7;18847:21;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;18728:157::o;4753:213::-;3982:13;:11;:13::i;:::-;-1:-1:-1;;;;;4838:22:0;::::1;4834:86;;4884:24;::::0;-1:-1:-1;;;4884:24:0;;4905:1:::1;4884:24;::::0;::::1;345:51:1::0;318:18;;4884:24:0::1;199:203:1::0;4834:86:0::1;4930:28;4949:8;4930:18;:28::i;20398:331::-:0;-1:-1:-1;;;;;20499:16:0;;20495:58;;20526:24;;-1:-1:-1;;;20526:24:0;;-1:-1:-1;;;;;363:32:1;;20526:24:0;;;345:51:1;318:18;;20526:24:0;199:203:1;20495:58:0;-1:-1:-1;;;;;20567:15:0;;20563:56;;20593:23;;-1:-1:-1;;;20593:23:0;;-1:-1:-1;;;;;363:32:1;;20593:23:0;;;345:51:1;318:18;;20593:23:0;199:203:1;20563:56:0;-1:-1:-1;;;;;20631:21:0;;;;;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;:39;;;20686:35;;1106:25:1;;;20686:35:0;;1079:18:1;20686:35:0;;;;;;;20398:331;;;:::o;21201:418::-;-1:-1:-1;;;;;21324:15:0;;21285:4;21324:15;;;:9;:15;;;;;;21358:21;;;;21350:72;;;;-1:-1:-1;;;21350:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21458:15:0;;;;;;;:9;:15;;;;;;21476:20;;;21458:38;;21511:13;;;;;;;;;;:23;;;;;;21563:26;;;;;;21490:6;1106:25:1;;1094:2;1079:18;;960:177;21563:26:0;;;;;;;;-1:-1:-1;21607:4:0;;21201:418;-1:-1:-1;;;;21201:418:0:o;20741:428::-;20845:24;20872:28;20882:8;20892:7;20872:9;:28::i;:::-;20845:55;;-1:-1:-1;;20915:16:0;:37;20911:251;;20997:6;20977:16;:26;;20969:68;;;;-1:-1:-1;;;20969:68:0;;9556:2:1;20969:68:0;;;9538:21:1;9595:2;9575:18;;;9568:30;9634:31;9614:18;;;9607:59;9683:18;;20969:68:0;9354:353:1;20969:68:0;21081:54;21090:8;21100:7;21128:6;21109:16;:25;21081:8;:54::i;:::-;20834:335;20741:428;;;:::o;21655:1124::-;21742:4;-1:-1:-1;;;;;21763:12:0;;21759:50;;21786:20;;-1:-1:-1;;;21786:20:0;;-1:-1:-1;;;;;363:32:1;;21786:20:0;;;345:51:1;318:18;;21786:20:0;199:203:1;21759:50:0;-1:-1:-1;;;;;21823:10:0;;21819:46;;21844:18;;-1:-1:-1;;;21844:18:0;;-1:-1:-1;;;;;363:32:1;;21844:18:0;;;345:51:1;318:18;;21844::0;199:203:1;21819:46:0;21882:12;;;;21881:13;:41;;;;-1:-1:-1;;;;;;21899:23:0;;;;;;:17;:23;;;;;;;;21898:24;21881:41;:67;;;;-1:-1:-1;;;;;;21927:21:0;;;;;;:17;:21;;;;;;;;21926:22;21881:67;21877:100;;;21959:15;;-1:-1:-1;;;21959:15:0;;;;;;;;;;;21877:100;21993:6;;;;;;;;:33;;-1:-1:-1;;;;;;22003:23:0;;;;;;:17;:23;;;;;;;;21993:33;21989:105;;;22050:32;22065:4;22071:2;22075:6;22050:14;:32::i;:::-;22043:39;;;;21989:105;22118:4;;-1:-1:-1;;;;;22110:12:0;;;-1:-1:-1;;;22118:4:0;;;;22110:12;;;;:29;;-1:-1:-1;22126:13:0;;;;;;;22110:29;:68;;;;-1:-1:-1;22171:7:0;;22161:4;18467:7;18494:18;;;:9;:18;;;;;;22143:35;;22110:68;:119;;;;;22222:7;;22202:16;;22182:17;;:36;;;;:::i;:::-;:47;;22110:119;22106:171;;;22246:19;22257:7;;22246:10;:19::i;:::-;22332:11;;22309:6;;22332:11;;;;;:39;;;;-1:-1:-1;;;;;;22348:23:0;;;;;;:17;:23;;;;;;;;22347:24;22332:39;:65;;;;-1:-1:-1;;;;;;22376:21:0;;;;;;:17;:21;;;;;;;;22375:22;22332:65;22328:148;;;22426:38;22447:4;22453:2;22457:6;22426:20;:38::i;:::-;22414:50;;22328:148;-1:-1:-1;;;;;22496:15:0;;;;;;:9;:15;;;;;;:28;-1:-1:-1;22496:28:0;22488:79;;;;-1:-1:-1;;;22488:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22621:15:0;;;;;;;:9;:15;;;;;;;;:27;;;22603:45;;22663:13;;;;;;;;;;:26;;;;;;22718:29;;;;;;22639:9;1106:25:1;;1094:2;1079:18;;960:177;4479:155:0;4550:10;4539:7;4430;4457:6;-1:-1:-1;;;;;4457:6:0;;4384:87;4539:7;-1:-1:-1;;;;;4539:21:0;;4535:92;;4584:31;;-1:-1:-1;;;4584:31:0;;4604:10;4584:31;;;345:51:1;318:18;;4584:31:0;199:203:1;17496:398:0;7595:6;:13;;-1:-1:-1;;7595:13:0;;;;;-1:-1:-1;;17576:10:0::1;:18:::0;17572:56:::1;;17605:20;::::0;-1:-1:-1;;;17605:20:0;;7036:6:::1;17605:20;::::0;::::1;345:51:1::0;318:18;;17605:20:0::1;199:203:1::0;17572:56:0::1;17662:16;::::0;;17676:1:::1;17662:16:::0;;;;;::::1;::::0;;17638:21:::1;::::0;17662:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;17699:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17699:13:0;;;;17638:40;;-1:-1:-1;;;;;;17699:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;17699:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17689:4;17694:1;17689:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;17689:23:0::1;;;-1:-1:-1::0;;;;;17689:23:0::1;;;::::0;::::1;17741:4;17723;17728:1;17723:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17723:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17759:6:::1;::::0;:127:::1;::::0;-1:-1:-1;;;17759:127:0;;:6;::::1;::::0;:57:::1;::::0;17838:6;;17759:127:::1;::::0;:6:::1;::::0;17860:4;;17866:2;;17870:15:::1;::::0;17759:127:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7631:6:0;:14;;-1:-1:-1;;7631:14:0;;;-1:-1:-1;;;;;;17496:398:0:o;4974:191::-;5048:16;5067:6;;-1:-1:-1;;;;;5084:17:0;;;-1:-1:-1;;;;;;5084:17:0;;;;;;5117:40;;5067:6;;;;;;;5117:40;;5048:16;5117:40;5037:128;4974:191;:::o;22787:620::-;7595:6;:13;;-1:-1:-1;;7595:13:0;;;;;-1:-1:-1;;;;;22918:14:0;::::1;22894:7:::0;22918:14;;;:8:::1;:14;::::0;;;;;7595:13;22918:14:::1;:70:::0;::::1;;;-1:-1:-1::0;22986:1:0::1;6074:3;22938:31;6074:3:::0;;22938:31:::1;:::i;:::-;:44;;;;:::i;:::-;22937:50;22918:70;22914:134;;;23012:24;23023:4;23029:6;23012:10;:24::i;:::-;23005:31;;;;22914:134;-1:-1:-1::0;;;;;23062:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;:71:::0;::::1;;;-1:-1:-1::0;23131:1:0::1;6122:3;23080:33;6122:3:::0;;23080:33:::1;:::i;:::-;:47;;;;:::i;:::-;23079:53;23062:71;23058:136;;;23157:25;23169:4;23175:6;23157:11;:25::i;23058:136::-;-1:-1:-1::0;;;;;23209:14:0;::::1;;::::0;;;:8:::1;:14;::::0;;;;;::::1;;23208:15;:32:::0;::::1;;;-1:-1:-1::0;;;;;;23228:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;23227:13;23208:32;:103;;;;-1:-1:-1::0;23309:1:0::1;::::0;23246:41:::1;23309:1:::0;;23246:41:::1;:::i;:::-;:59;;;;:::i;:::-;23245:65;23208:103;23204:172;;;23335:29;23351:4;23357:6;23335:15;:29::i;23204:172::-;-1:-1:-1::0;23393:6:0;7619:1:::1;7631:6:::0;:14;;-1:-1:-1;;7631:14:0;;;22787:620;;-1:-1:-1;;;22787:620:0:o;14853:619::-;7595:6;:13;;-1:-1:-1;;7595:13:0;;;;;14930:7;;5708:6:::1;14979:24;5765:3;14979:6:::0;:24:::1;:::i;:::-;:41;;;;:::i;:::-;14950:70:::0;-1:-1:-1;15031:24:0::1;5708:6;15058:22;5923:3;15058:6:::0;:22:::1;:::i;:::-;:39;;;;:::i;:::-;15031:66:::0;-1:-1:-1;15108:21:0::1;5708:6;15132:19;6074:3;15132:6:::0;:19:::1;:::i;:::-;:36;;;;:::i;:::-;15108:60:::0;-1:-1:-1;15179:17:0::1;15108:60:::0;15229:16;15199:27:::1;15208:18:::0;15199:6;:27:::1;:::i;:::-;:46;;;;:::i;:::-;:62;;;;:::i;:::-;15179:82:::0;-1:-1:-1;15334:1:0::1;15317:13:::0;15277:37:::1;15298:16:::0;15277:18;:37:::1;:::i;:::-;:53;;;;:::i;:::-;15276:59;15272:166;;;15352:74;15368:4;15374:18;15394:16;15412:13;15352:15;:74::i;:::-;7631:6:::0;:14;;-1:-1:-1;;7631:14:0;;;15455:9;14853:619;-1:-1:-1;;;;;;14853:619:0:o;16111:639::-;7595:6;:13;;-1:-1:-1;;7595:13:0;;;;;16193:7;;5708:6:::1;16242:29;16193:7:::0;16242:6;:29:::1;:::i;:::-;:46;;;;:::i;:::-;16213:75:::0;-1:-1:-1;16299:24:0::1;5708:6;16326:27;16299:24:::0;16326:6;:27:::1;:::i;:::-;:44;;;;:::i;:::-;16299:71:::0;-1:-1:-1;16381:21:0::1;5708:6;16405:24;16381:21:::0;16405:6;:24:::1;:::i;16758:499::-:0;7595:6;:13;;-1:-1:-1;;7595:13:0;;;;;;16969:14;16927:39:::1;16949:17:::0;16927:19;:39:::1;:::i;:::-;:56;;;;:::i;:::-;16906:77;;17024:19;16994:26;;:49;;;;;;;:::i;:::-;;;;;;;;17082:17;17054:24;;:45;;;;;;;:::i;:::-;;;;;;;;17135:14;17110:21;;:39;;;;;;;:::i;:::-;;;;;;;;17181:10;17160:17;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;17202:47:0::1;::::0;-1:-1:-1;17217:4:0;17231::::1;17238:10:::0;17202:14:::1;:47::i;:::-;-1:-1:-1::0;;7631:6:0;:14;;-1:-1:-1;;7631:14:0;;;-1:-1:-1;;;;16758:499: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;407:548::-;519:4;548:2;577;566:9;559:21;609:6;603:13;652:6;647:2;636:9;632:18;625:34;677:1;687:140;701:6;698:1;695:13;687:140;;;796:14;;;792:23;;786:30;762:17;;;781:2;758:26;751:66;716:10;;687:140;;;691:3;876:1;871:2;862:6;851:9;847:22;843:31;836:42;946:2;939;935:7;930:2;922:6;918:15;914:29;903:9;899:45;895:54;887:62;;;;407:548;;;;:::o;1142:131::-;-1:-1:-1;;;;;1217:31:1;;1207:42;;1197:70;;1263:1;1260;1253:12;1278:247;1337:6;1390:2;1378:9;1369:7;1365:23;1361:32;1358:52;;;1406:1;1403;1396:12;1358:52;1445:9;1432:23;1464:31;1489:5;1464:31;:::i;1722:315::-;1790:6;1798;1851:2;1839:9;1830:7;1826:23;1822:32;1819:52;;;1867:1;1864;1857:12;1819:52;1906:9;1893:23;1925:31;1950:5;1925:31;:::i;:::-;1975:5;2027:2;2012:18;;;;1999:32;;-1:-1:-1;;;1722:315:1:o;2042:456::-;2119:6;2127;2135;2188:2;2176:9;2167:7;2163:23;2159:32;2156:52;;;2204:1;2201;2194:12;2156:52;2243:9;2230:23;2262:31;2287:5;2262:31;:::i;:::-;2312:5;-1:-1:-1;2369:2:1;2354:18;;2341:32;2382:33;2341:32;2382:33;:::i;:::-;2042:456;;2434:7;;-1:-1:-1;;;2488:2:1;2473:18;;;;2460:32;;2042:456::o;2692:160::-;2757:20;;2813:13;;2806:21;2796:32;;2786:60;;2842:1;2839;2832:12;2786:60;2692:160;;;:::o;2857:180::-;2913:6;2966:2;2954:9;2945:7;2941:23;2937:32;2934:52;;;2982:1;2979;2972:12;2934:52;3005:26;3021:9;3005:26;:::i;3042:315::-;3107:6;3115;3168:2;3156:9;3147:7;3143:23;3139:32;3136:52;;;3184:1;3181;3174:12;3136:52;3223:9;3210:23;3242:31;3267:5;3242:31;:::i;:::-;3292:5;-1:-1:-1;3316:35:1;3347:2;3332:18;;3316:35;:::i;:::-;3306:45;;3042:315;;;;;:::o;3362:388::-;3430:6;3438;3491:2;3479:9;3470:7;3466:23;3462:32;3459:52;;;3507:1;3504;3497:12;3459:52;3546:9;3533:23;3565:31;3590:5;3565:31;:::i;:::-;3615:5;-1:-1:-1;3672:2:1;3657:18;;3644:32;3685:33;3644:32;3685:33;:::i;:::-;3737:7;3727:17;;;3362:388;;;;;:::o;3978:127::-;4039:10;4034:3;4030:20;4027:1;4020:31;4070:4;4067:1;4060:15;4094:4;4091:1;4084:15;4110:125;4175:9;;;4196:10;;;4193:36;;;4209:18;;:::i;4240:168::-;4313:9;;;4344;;4361:15;;;4355:22;;4341:37;4331:71;;4382:18;;:::i;4413:217::-;4453:1;4479;4469:132;;4523:10;4518:3;4514:20;4511:1;4504:31;4558:4;4555:1;4548:15;4586:4;4583:1;4576:15;4469:132;-1:-1:-1;4615:9:1;;4413:217::o;4635:128::-;4702:9;;;4723:11;;;4720:37;;;4737:18;;:::i;4900:127::-;4961:10;4956:3;4952:20;4949:1;4942:31;4992:4;4989:1;4982:15;5016:4;5013:1;5006:15;5032:251;5102:6;5155:2;5143:9;5134:7;5130:23;5126:32;5123:52;;;5171:1;5168;5161:12;5123:52;5203:9;5197:16;5222:31;5247:5;5222:31;:::i;5854:461::-;5907:3;5945:5;5939:12;5972:6;5967:3;5960:19;5998:4;6027:2;6022:3;6018:12;6011:19;;6064:2;6057:5;6053:14;6085:1;6095:195;6109:6;6106:1;6103:13;6095:195;;;6174:13;;-1:-1:-1;;;;;6170:39:1;6158:52;;6230:12;;;;6265:15;;;;6206:1;6124:9;6095:195;;;-1:-1:-1;6306:3:1;;5854:461;-1:-1:-1;;;;;5854:461:1:o;6320:582::-;6619:6;6608:9;6601:25;6662:6;6657:2;6646:9;6642:18;6635:34;6705:3;6700:2;6689:9;6685:18;6678:31;6582:4;6726:57;6778:3;6767:9;6763:19;6755:6;6726:57;:::i;:::-;-1:-1:-1;;;;;6819:32:1;;;;6814:2;6799:18;;6792:60;-1:-1:-1;6883:3:1;6868:19;6861:35;6718:65;6320:582;-1:-1:-1;;;6320:582:1:o;6907:437::-;7151:14;;7144:22;7126:41;;7210:14;;7203:22;7198:2;7183:18;;7176:50;-1:-1:-1;;;;;7262:32:1;7257:2;7242:18;;7235:60;7326:2;7311:18;;7304:34;7113:3;7098:19;;6907:437::o;8947:402::-;9149:2;9131:21;;;9188:2;9168:18;;;9161:30;9227:34;9222:2;9207:18;;9200:62;-1:-1:-1;;;9293:2:1;9278:18;;9271:36;9339:3;9324:19;;8947:402::o;9712:510::-;9983:6;9972:9;9965:25;10026:3;10021:2;10010:9;10006:18;9999:31;9946:4;10047:57;10099:3;10088:9;10084:19;10076:6;10047:57;:::i;:::-;-1:-1:-1;;;;;10140:32:1;;;;10135:2;10120:18;;10113:60;-1:-1:-1;10204:2:1;10189:18;10182:34;10039:65;9712:510;-1:-1:-1;;9712:510:1:o

Swarm Source

ipfs://49ae586a0c9197fb54edb0b6dfb370e7b8d06caec535af383e6d6c6f3d0421c2

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.