ETH Price: $2,119.61 (+2.20%)
Gas: 0.03 Gwei

Contract

0x7DA0e45cE7fD8359544Be00a6618215770851ebB
 

Overview

ETH Balance

0.159121855764353644 ETH

Eth Value

$337.28 (@ $2,119.61/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Process Fees200584202024-06-10 2:22:59643 days ago1717986179IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.000740454.16126424
Set Liquidity Ra...200584132024-06-10 2:21:35643 days ago1717986095IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.000150524.35280064
Set Router200584042024-06-10 2:19:47643 days ago1717985987IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.000109743.57934404
Set Router200401352024-06-07 13:04:59645 days ago1717765499IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0004738615.46118585
Set Liquidity Ra...195128542024-03-25 17:06:11719 days ago1711386371IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0015436744.63822077
Send Treasury Ba...182219612023-09-26 19:14:11900 days ago1695755651IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0006726120.10980301
Send Distribute ...181394872023-09-15 5:15:59912 days ago1694754959IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0008326210.17681578
Send Treasury Ba...181045562023-09-10 7:43:11917 days ago1694331791IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.000318889.53401898
Set Treasury Tar...180160012023-08-28 22:04:59929 days ago1693260299IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0012526739.92211814
Send Distribute ...175616262023-06-26 5:47:59993 days ago1687758479IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0009831712.01684323
Send Treasury Ba...175616202023-06-26 5:46:47993 days ago1687758407IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0004252312.71376198
Process Fees173219662023-05-23 12:34:351026 days ago1684845275IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0145737838.04241734
Send Treasury Ba...168733162023-03-21 3:21:591090 days ago1679368919IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0005685917
Set Treasury Tar...159188782022-11-07 14:55:231223 days ago1667832923IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0008863528.24754273
Set Distribution...156307752022-09-28 8:54:591264 days ago1664355299IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0004425313.20242643
Set Balance Thre...156298792022-09-28 5:55:111264 days ago1664344511IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.000320479.89832968
Set Off Ramp Pai...156275702022-09-27 22:10:231264 days ago1664316623IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0011984825.1465573
Set Treasury Tar...156275602022-09-27 22:08:231264 days ago1664316503IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0007428715.32403267
Set Liquidity To...156275592022-09-27 22:08:111264 days ago1664316491IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0007560315.64617799
Set Distribution...156275582022-09-27 22:07:591264 days ago1664316479IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0007718415.24814477
Set Auxiliary Ta...156275572022-09-27 22:07:471264 days ago1664316467IN
X7 Finance: XDAO Liquidity Hub
0 ETH0.0007385114.60993565

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer210157132024-10-21 18:20:59509 days ago1729534859
X7 Finance: XDAO Liquidity Hub
0.00004409 ETH
Transfer208280382024-09-25 13:52:35535 days ago1727272355
X7 Finance: XDAO Liquidity Hub
0.00045965 ETH
Transfer208215412024-09-24 16:06:35536 days ago1727193995
X7 Finance: XDAO Liquidity Hub
0.00040415 ETH
Transfer205932032024-08-23 18:50:47568 days ago1724439047
X7 Finance: XDAO Liquidity Hub
0.00002247 ETH
Add Liquidity ET...200584202024-06-10 2:22:59643 days ago1717986179
X7 Finance: XDAO Liquidity Hub
0.49607377 ETH
Transfer199422362024-05-24 20:51:11659 days ago1716583871
X7 Finance: XDAO Liquidity Hub
0.49607377 ETH
Swap Exact ETH F...196400012024-04-12 14:03:35701 days ago1712930615
X7 Finance: XDAO Liquidity Hub
0.26060443 ETH
Transfer196400012024-04-12 14:03:35701 days ago1712930615
X7 Finance: XDAO Liquidity Hub
0.05793621 ETH
Transfer195961452024-04-06 10:40:11708 days ago1712400011
X7 Finance: XDAO Liquidity Hub
0.00642098 ETH
Transfer195821892024-04-04 11:45:23710 days ago1712231123
X7 Finance: XDAO Liquidity Hub
0.04498665 ETH
Transfer195787202024-04-04 0:07:35710 days ago1712189255
X7 Finance: XDAO Liquidity Hub
0.02173352 ETH
Transfer195699642024-04-02 18:43:59711 days ago1712083439
X7 Finance: XDAO Liquidity Hub
0.00733687 ETH
Transfer195653402024-04-02 3:08:23712 days ago1712027303
X7 Finance: XDAO Liquidity Hub
0.00520314 ETH
Transfer195626732024-04-01 18:10:23712 days ago1711995023
X7 Finance: XDAO Liquidity Hub
0.01838686 ETH
Transfer195621072024-04-01 16:16:11712 days ago1711988171
X7 Finance: XDAO Liquidity Hub
0.01929166 ETH
Transfer195620192024-04-01 15:57:47712 days ago1711987067
X7 Finance: XDAO Liquidity Hub
0.04064156 ETH
Transfer195547482024-03-31 15:24:59713 days ago1711898699
X7 Finance: XDAO Liquidity Hub
0.02078851 ETH
Transfer195315852024-03-28 9:01:23717 days ago1711616483
X7 Finance: XDAO Liquidity Hub
0.25978747 ETH
Transfer195315852024-03-28 9:01:23717 days ago1711616483
X7 Finance: XDAO Liquidity Hub
0.25978747 ETH
Transfer195315852024-03-28 9:01:23717 days ago1711616483
X7 Finance: XDAO Liquidity Hub
0.29563129 ETH
Transfer195315852024-03-28 9:01:23717 days ago1711616483
X7 Finance: XDAO Liquidity Hub
0.25896469 ETH
Transfer195127712024-03-25 16:48:59719 days ago1711385339
X7 Finance: XDAO Liquidity Hub
0.08765275 ETH
Transfer195097522024-03-25 6:34:11720 days ago1711348451
X7 Finance: XDAO Liquidity Hub
0.08884383 ETH
Transfer195069422024-03-24 21:03:59720 days ago1711314239
X7 Finance: XDAO Liquidity Hub
0.0520351 ETH
Transfer194912362024-03-22 16:04:11722 days ago1711123451
X7 Finance: XDAO Liquidity Hub
0.04224216 ETH
View All Internal Transactions
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:
X7DAOLiquidityHub

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-09-27
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

/*

 /$$   /$$ /$$$$$$$$       /$$$$$$$$ /$$
| $$  / $$|_____ $$/      | $$_____/|__/
|  $$/ $$/     /$$/       | $$       /$$ /$$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$$  /$$$$$$
 \  $$$$/     /$$/        | $$$$$   | $$| $$__  $$ |____  $$| $$__  $$ /$$_____/ /$$__  $$
  >$$  $$    /$$/         | $$__/   | $$| $$  \ $$  /$$$$$$$| $$  \ $$| $$      | $$$$$$$$
 /$$/\  $$  /$$/          | $$      | $$| $$  | $$ /$$__  $$| $$  | $$| $$      | $$_____/
| $$  \ $$ /$$/           | $$      | $$| $$  | $$|  $$$$$$$| $$  | $$|  $$$$$$$|  $$$$$$$
|__/  |__/|__/            |__/      |__/|__/  |__/ \_______/|__/  |__/ \_______/ \_______/

Contract: Smart Contract for managing X7DAO fee tokens

This contract will NOT be renounced.

The following are the only functions that can be called on the contract that affect the contract:

    function setShares(uint256 distributeShare_, uint256 liquidityShare_, uint256 auxiliaryShare_, uint256 treasuryShare_) external onlyOwner {
        require(distributeShare + liquidityShare + auxiliaryShare + treasuryShare == 1000);

        require(distributeShare_ >= minShare && distributeShare_ <= maxShare);
        require(liquidityShare_ >= minShare && liquidityShare_ <= maxShare);
        require(auxiliaryShare_ >= minShare && auxiliaryShare_ <= maxShare);
        require(treasuryShare_ >= minShare && treasuryShare_ <= maxShare);

        distributeShare = distributeShare_;
        liquidityShare = liquidityShare_;
        auxiliaryShare = auxiliaryShare_;
        treasuryShare = treasuryShare_;

        emit SharesSet(distributeShare_, liquidityShare_, auxiliaryShare_, treasuryShare_);
    }

    function setRouter(address router_) external onlyOwner {
        require(router_ != address(router));
        router = IUniswapV2Router(router_);
        emit RouterSet(router_);
    }

    function setOffRampPair(address offRampPairAddress) external onlyOwner {
        require(offRampPair != offRampPairAddress);
        offRampPair = offRampPairAddress;
        emit OffRampPairSet(offRampPairAddress);
    }

    function setBalanceThreshold(uint256 threshold) external onlyOwner {
        require(!balanceThresholdFrozen);
        balanceThreshold = threshold;
        emit BalanceThresholdSet(threshold);
    }

    function setLiquidityRatioTarget(uint256 liquidityRatioTarget_) external onlyOwner {
        require(liquidityRatioTarget_ != liquidityRatioTarget);
        require(liquidityRatioTarget_ >= minLiquidityRatioTarget && liquidityRatioTarget <= maxLiquidityRatioTarget);
        liquidityRatioTarget = liquidityRatioTarget_;
        emit LiquidityRatioTargetSet(liquidityRatioTarget_);
    }

    function setLiquidityTokenReceiver(address liquidityTokenReceiver_) external onlyOwner {
        require(
            liquidityTokenReceiver_ != address(0)
            && liquidityTokenReceiver_ != address(0x000000000000000000000000000000000000dEaD)
            && liquidityTokenReceiver != liquidityTokenReceiver_
        );

        address oldLiquidityTokenReceiver = liquidityTokenReceiver;
        liquidityTokenReceiver = liquidityTokenReceiver_;
        emit LiquidityTokenReceiverSet(oldLiquidityTokenReceiver, liquidityTokenReceiver_);
    }

    function setDistributionTarget(address target) external onlyOwner {
        require(
            target != address(0)
            && target != address(0x000000000000000000000000000000000000dEaD)
            && distributeTarget != payable(target)
        );
        require(!distributeTargetFrozen);
        address oldTarget = address(distributeTarget);
        distributeTarget = payable(target);
        emit DistributeTargetSet(oldTarget, distributeTarget);
    }

    function setAuxiliaryTarget(address target) external onlyOwner {
        require(
            target != address(0) &&
            target != address(0x000000000000000000000000000000000000dEaD)
            && auxiliaryTarget != payable(target)
        );
        require(!auxiliaryTargetFrozen);
        address oldTarget = address(auxiliaryTarget);
        auxiliaryTarget = payable(target);
        emit AuxiliaryTargetSet(oldTarget, target);
    }

    function setTreasuryTarget(address target) external onlyOwner {
        require(
            target != address(0)
            && target != address(0x000000000000000000000000000000000000dEaD)
            && treasuryTarget != payable(target)
        );
        require(!treasuryTargetFrozen);
        address oldTarget = address(treasuryTarget);
        treasuryTarget = payable(target);
        emit TreasuryTargetSet(oldTarget, target);
    }

    function freezeTreasuryTarget() external onlyOwner {
        require(!treasuryTargetFrozen);
        treasuryTargetFrozen = true;
        emit TreasuryTargetFrozen();
    }

    function freezeDistributeTarget() external onlyOwner {
        require(!distributeTargetFrozen);
        distributeTargetFrozen = true;
        emit DistributeTargetFrozen();
    }

    function freezeAuxiliaryTarget() external onlyOwner {
        require(!auxiliaryTargetFrozen);
        auxiliaryTargetFrozen = true;
        emit AuxiliaryTargetFrozen();
    }

    function freezeBalanceThreshold() external onlyOwner {
        require(!balanceThresholdFrozen);
        balanceThresholdFrozen = true;
        emit BalanceThresholdFrozen();
    }

These functions will be passed to DAO governance once the ecosystem stabilizes.

*/

abstract contract Ownable {
    address private _owner;

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

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

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

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

    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

interface IERC20 {
    function circulatingSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
}

interface IUniswapV2Router {
    function WETH() external returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface ILiquidityHub {
    function processFees(address) external;
}

interface IX7EcosystemSplitter {
    function takeBalance() external;
}

interface IWETH {
    function withdraw(uint) external;
}

contract X7DAOLiquidityHub is Ownable, ILiquidityHub {

    IUniswapV2Router public router;
    address public offRampPair;

    IERC20 public x7dao;
    address public liquidityTokenReceiver;
    uint256 public minLiquidityRatioTarget = 5;
    uint256 public maxLiquidityRatioTarget = 99;

    uint256 public liquidityRatioTarget = 15;

    uint256 public minShare = 150;
    uint256 public maxShare = 400;

    uint256 public distributeShare = 300;
    uint256 public liquidityShare = 200;
    uint256 public auxiliaryShare = 250;
    uint256 public treasuryShare = 250;

    uint256 public balanceThreshold = 1 ether;

    uint256 public distributeBalance;
    uint256 public auxiliaryBalance;
    uint256 public treasuryBalance;
    uint256 public liquidityBalance;
    uint256 public x7daoLiquidityBalance;

    address payable public distributeTarget;
    address payable public auxiliaryTarget;
    address payable public treasuryTarget;

    bool public distributeTargetFrozen;
    bool public auxiliaryTargetFrozen;
    bool public treasuryTargetFrozen;
    bool public balanceThresholdFrozen;

    event SharesSet(uint256 distributeShare, uint256 liquidityShare, uint256 auxiliaryShare, uint256 treasuryShare);
    event OffRampPairSet(address indexed offRampPair);
    event DistributeTargetSet(address indexed oldTarget, address indexed newTarget);
    event AuxiliaryTargetSet(address indexed oldTarget, address indexed newTarget);
    event TreasuryTargetSet(address indexed oldTarget, address indexed newTarget);
    event LiquidityRatioTargetSet(uint256 liquidityRatioTarget);
    event LiquidityTokenReceiverSet(address indexed oldReciever, address indexed newReceiver);
    event BalanceThresholdSet(uint256 threshold);
    event RouterSet(address router);
    event TreasuryTargetFrozen();
    event AuxiliaryTargetFrozen();
    event DistributeTargetFrozen();
    event BalanceThresholdFrozen();

    constructor(address x7dao_, address router_) Ownable(address(0x7000a09c425ABf5173FF458dF1370C25d1C58105)) {
        router = IUniswapV2Router(router_);
        x7dao = IERC20(x7dao_);
        emit RouterSet(router_);
    }

    receive() external payable {}

    function setShares(uint256 distributeShare_, uint256 liquidityShare_, uint256 auxiliaryShare_, uint256 treasuryShare_) external onlyOwner {
        require(distributeShare + liquidityShare + auxiliaryShare + treasuryShare == 1000);

        require(distributeShare_ >= minShare && distributeShare_ <= maxShare);
        require(liquidityShare_ >= minShare && liquidityShare_ <= maxShare);
        require(auxiliaryShare_ >= minShare && auxiliaryShare_ <= maxShare);
        require(treasuryShare_ >= minShare && treasuryShare_ <= maxShare);

        distributeShare = distributeShare_;
        liquidityShare = liquidityShare_;
        auxiliaryShare = auxiliaryShare_;
        treasuryShare = treasuryShare_;

        emit SharesSet(distributeShare_, liquidityShare_, auxiliaryShare_, treasuryShare_);
    }

    function setRouter(address router_) external onlyOwner {
        require(router_ != address(router));
        router = IUniswapV2Router(router_);
        emit RouterSet(router_);
    }

    function setOffRampPair(address offRampPairAddress) external onlyOwner {
        require(offRampPair != offRampPairAddress);
        offRampPair = offRampPairAddress;
        emit OffRampPairSet(offRampPairAddress);
    }

    function setBalanceThreshold(uint256 threshold) external onlyOwner {
        require(!balanceThresholdFrozen);
        balanceThreshold = threshold;
        emit BalanceThresholdSet(threshold);
    }

    function setLiquidityRatioTarget(uint256 liquidityRatioTarget_) external onlyOwner {
        require(liquidityRatioTarget_ != liquidityRatioTarget);
        require(liquidityRatioTarget_ >= minLiquidityRatioTarget && liquidityRatioTarget <= maxLiquidityRatioTarget);
        liquidityRatioTarget = liquidityRatioTarget_;
        emit LiquidityRatioTargetSet(liquidityRatioTarget_);
    }

    function setLiquidityTokenReceiver(address liquidityTokenReceiver_) external onlyOwner {
        require(
            liquidityTokenReceiver_ != address(0)
            && liquidityTokenReceiver_ != address(0x000000000000000000000000000000000000dEaD)
            && liquidityTokenReceiver != liquidityTokenReceiver_
        );

        address oldLiquidityTokenReceiver = liquidityTokenReceiver;
        liquidityTokenReceiver = liquidityTokenReceiver_;
        emit LiquidityTokenReceiverSet(oldLiquidityTokenReceiver, liquidityTokenReceiver_);
    }

    function setDistributionTarget(address target) external onlyOwner {
        require(
            target != address(0)
            && target != address(0x000000000000000000000000000000000000dEaD)
            && distributeTarget != payable(target)
        );
        require(!distributeTargetFrozen);
        address oldTarget = address(distributeTarget);
        distributeTarget = payable(target);
        emit DistributeTargetSet(oldTarget, distributeTarget);
    }

    function setAuxiliaryTarget(address target) external onlyOwner {
        require(
            target != address(0) &&
            target != address(0x000000000000000000000000000000000000dEaD)
            && auxiliaryTarget != payable(target)
        );
        require(!auxiliaryTargetFrozen);
        address oldTarget = address(auxiliaryTarget);
        auxiliaryTarget = payable(target);
        emit AuxiliaryTargetSet(oldTarget, target);
    }

    function setTreasuryTarget(address target) external onlyOwner {
        require(
            target != address(0)
            && target != address(0x000000000000000000000000000000000000dEaD)
            && treasuryTarget != payable(target)
        );
        require(!treasuryTargetFrozen);
        address oldTarget = address(treasuryTarget);
        treasuryTarget = payable(target);
        emit TreasuryTargetSet(oldTarget, target);
    }

    function freezeTreasuryTarget() external onlyOwner {
        require(!treasuryTargetFrozen);
        treasuryTargetFrozen = true;
        emit TreasuryTargetFrozen();
    }

    function freezeDistributeTarget() external onlyOwner {
        require(!distributeTargetFrozen);
        distributeTargetFrozen = true;
        emit DistributeTargetFrozen();
    }

    function freezeAuxiliaryTarget() external onlyOwner {
        require(!auxiliaryTargetFrozen);
        auxiliaryTargetFrozen = true;
        emit AuxiliaryTargetFrozen();
    }

    function freezeBalanceThreshold() external onlyOwner {
        require(!balanceThresholdFrozen);
        balanceThresholdFrozen = true;
        emit BalanceThresholdFrozen();
    }

    function processFees(address tokenAddress) external {
        uint256 startingETHBalance = address(this).balance;

        uint256 tokensToSwap = IERC20(tokenAddress).balanceOf(address(this));

        if (tokenAddress == address(x7dao)) {
            tokensToSwap -= x7daoLiquidityBalance;
        }

        if (tokensToSwap > 0) {
            swapTokensForEth(tokenAddress, tokensToSwap);
        }

        uint256 ETHForDistribution = address(this).balance - startingETHBalance;

        distributeBalance += ETHForDistribution * distributeShare / 1000;
        auxiliaryBalance += ETHForDistribution * auxiliaryShare / 1000;
        treasuryBalance += ETHForDistribution * treasuryShare / 1000;
        liquidityBalance = address(this).balance - distributeBalance - auxiliaryBalance - treasuryBalance;

        if (distributeBalance >= balanceThreshold) {
            sendDistributeBalance();
        }

        if (auxiliaryBalance >= balanceThreshold) {
            sendAuxiliaryBalance();
        }

        if (treasuryBalance >= balanceThreshold) {
            sendTreasuryBalance();
        }

        if (liquidityBalance >= balanceThreshold) {
            buyBackAndAddLiquidity();
        }
    }

    function sendDistributeBalance() public {
        if (distributeTarget == address(0)) {
            return;
        }

        IX7EcosystemSplitter(distributeTarget).takeBalance();

        uint256 ethToSend = distributeBalance;
        distributeBalance = 0;

        (bool success,) = distributeTarget.call{value: ethToSend}("");

        if (!success) {
            distributeBalance = ethToSend;
        }
    }

    function sendTreasuryBalance() public {
        if (treasuryTarget == address(0)) {
            return;
        }

        uint256 ethToSend = treasuryBalance;
        treasuryBalance = 0;

        (bool success,) = treasuryTarget.call{value: ethToSend}("");

        if (!success) {
            treasuryBalance = ethToSend;
        }
    }

    function sendAuxiliaryBalance() internal {
        if (auxiliaryTarget == address(0)) {
            return;
        }

        uint256 ethToSend = auxiliaryBalance;
        auxiliaryBalance = 0;

        (bool success,) = auxiliaryTarget.call{value: ethToSend}("");

        if (!success) {
            auxiliaryBalance = ethToSend;
        }
    }

    function buyBackAndAddLiquidity() internal {
        uint256 ethForSwap;
        uint256 startingETHBalance = address(this).balance;

        if (x7dao.balanceOf(offRampPair) > x7dao.circulatingSupply() * liquidityRatioTarget / 100 ) {
            ethForSwap = liquidityBalance;
            liquidityBalance = 0;
            swapEthForTokens(ethForSwap);
        } else {
            ethForSwap = liquidityBalance;
            liquidityBalance = 0;

            if (x7dao.balanceOf(address(this)) > 0) {
                addLiquidityETH(x7dao.balanceOf(address(this)), ethForSwap);
                ethForSwap = ethForSwap - (startingETHBalance - address(this).balance);
            }

            if (ethForSwap > 0) {
                uint256 ethLeft = ethForSwap;
                ethForSwap = ethLeft / 2;
                uint256 ethForLiquidity = ethLeft - ethForSwap;
                swapEthForTokens(ethForSwap);
                addLiquidityETH(x7dao.balanceOf(address(this)), ethForLiquidity);
            }
        }

        x7daoLiquidityBalance = x7dao.balanceOf(address(this));

    }

    function addLiquidityETH(uint256 tokenAmount, uint256 ethAmount) internal {
        x7dao.approve(address(router), tokenAmount);
        router.addLiquidityETH{value: ethAmount}(
            address(x7dao),
            tokenAmount,
            0,
            0,
            liquidityTokenReceiver,
            block.timestamp
        );
    }

    function swapTokensForEth(address tokenAddress, uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = tokenAddress;
        path[1] = router.WETH();

        IERC20(tokenAddress).approve(address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapEthForTokens(uint256 ethAmount) internal {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(x7dao);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function rescueWETH() external {
        address wethAddress = router.WETH();
        IWETH(wethAddress).withdraw(IERC20(wethAddress).balanceOf(address(this)));
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"x7dao_","type":"address"},{"internalType":"address","name":"router_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"AuxiliaryTargetFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"AuxiliaryTargetSet","type":"event"},{"anonymous":false,"inputs":[],"name":"BalanceThresholdFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"BalanceThresholdSet","type":"event"},{"anonymous":false,"inputs":[],"name":"DistributeTargetFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"DistributeTargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityRatioTarget","type":"uint256"}],"name":"LiquidityRatioTargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldReciever","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"}],"name":"LiquidityTokenReceiverSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"offRampPair","type":"address"}],"name":"OffRampPairSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"router","type":"address"}],"name":"RouterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"distributeShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"auxiliaryShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryShare","type":"uint256"}],"name":"SharesSet","type":"event"},{"anonymous":false,"inputs":[],"name":"TreasuryTargetFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TreasuryTargetSet","type":"event"},{"inputs":[],"name":"auxiliaryBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auxiliaryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auxiliaryTarget","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auxiliaryTargetFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceThresholdFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeTarget","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeTargetFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeAuxiliaryTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeBalanceThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeDistributeTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTreasuryTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityRatioTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTokenReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityRatioTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minLiquidityRatioTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"offRampPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"processFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendDistributeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendTreasuryBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"setAuxiliaryTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setBalanceThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"setDistributionTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityRatioTarget_","type":"uint256"}],"name":"setLiquidityRatioTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenReceiver_","type":"address"}],"name":"setLiquidityTokenReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"offRampPairAddress","type":"address"}],"name":"setOffRampPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router_","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"distributeShare_","type":"uint256"},{"internalType":"uint256","name":"liquidityShare_","type":"uint256"},{"internalType":"uint256","name":"auxiliaryShare_","type":"uint256"},{"internalType":"uint256","name":"treasuryShare_","type":"uint256"}],"name":"setShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"setTreasuryTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryTarget","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryTargetFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"x7dao","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"x7daoLiquidityBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600580556063600655600f600755609660085561019060095561012c600a5560c8600b5560fa600c5560fa600d55670de0b6b3a7640000600e553480156200004b57600080fd5b50604051620038ba380380620038ba833981810160405281019062000071919062000289565b737000a09c425abf5173ff458df1370c25d1c5810562000097816200015b60201b60201c565b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d15816040516200014b9190620002e1565b60405180910390a15050620002fe565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002518262000224565b9050919050565b620002638162000244565b81146200026f57600080fd5b50565b600081519050620002838162000258565b92915050565b60008060408385031215620002a357620002a26200021f565b5b6000620002b38582860162000272565b9250506020620002c68582860162000272565b9150509250929050565b620002db8162000244565b82525050565b6000602082019050620002f86000830184620002d0565b92915050565b6135ac806200030e6000396000f3fe6080604052600436106102805760003560e01c8063933401a41161014f578063cb3f4f17116100c1578063e97ca4b11161007a578063e97ca4b114610894578063f03b6ffc146108bd578063f2fde38b146108e6578063f48167a51461090f578063f7b9f7621461093a578063f887ea401461096557610287565b8063cb3f4f1714610792578063cd92c5ee146107bd578063d938a3e6146107e8578063dbc609f814610813578063e0f0edc61461083e578063e2568ad21461086957610287565b8063be1c714211610113578063be1c7142146106a8578063c0d78655146106d1578063c3173774146106fa578063c38ec0b614610725578063c3926a291461073c578063c96f4d4d1461076757610287565b8063933401a4146105e557806399eefadb146105fc578063a1a8d3c814610627578063b5fb217414610652578063b68e204c1461067d57610287565b806373bdeb49116101f3578063838bf401116101ac578063838bf401146104e757806387020d6b146105125780638ad107921461053b5780638bb28de2146105665780638da5cb5b1461059157806390d8dec7146105bc57610287565b806373bdeb49146103fb5780637796ff371461041257806377e7e2021461043d5780637943da69146104665780637b31bd78146104915780637c513ce6146104bc57610287565b8063517cafef11610245578063517cafef146103275780635a75a8091461035057806361582eaa1461037b57806366096ebf146103a45780636aea97f0146103cd578063715018a6146103e457610287565b8062e553121461028c578063099f833e146102a357806315291cd4146102ba578063313dab20146102e55780633802fa431461031057610287565b3661028757005b600080fd5b34801561029857600080fd5b506102a1610990565b005b3480156102af57600080fd5b506102b8610a96565b005b3480156102c657600080fd5b506102cf610c1e565b6040516102dc9190612bf5565b60405180910390f35b3480156102f157600080fd5b506102fa610c24565b6040516103079190612bf5565b60405180910390f35b34801561031c57600080fd5b50610325610c2a565b005b34801561033357600080fd5b5061034e60048036038101906103499190612c73565b610c92565b005b34801561035c57600080fd5b50610365610e6a565b6040516103729190612bf5565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190612c73565b610e70565b005b3480156103b057600080fd5b506103cb60048036038101906103c69190612c73565b61109a565b005b3480156103d957600080fd5b506103e2611250565b005b3480156103f057600080fd5b506103f96112bb565b005b34801561040757600080fd5b506104106112cf565b005b34801561041e57600080fd5b5061042761133a565b6040516104349190612bf5565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190612c73565b611340565b005b34801561047257600080fd5b5061047b6114dc565b6040516104889190612bf5565b60405180910390f35b34801561049d57600080fd5b506104a66114e2565b6040516104b39190612caf565b60405180910390f35b3480156104c857600080fd5b506104d1611508565b6040516104de9190612bf5565b60405180910390f35b3480156104f357600080fd5b506104fc61150e565b6040516105099190612bf5565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612cf6565b611514565b005b34801561054757600080fd5b50610550611577565b60405161055d9190612bf5565b60405180910390f35b34801561057257600080fd5b5061057b61157d565b6040516105889190612bf5565b60405180910390f35b34801561059d57600080fd5b506105a6611583565b6040516105b39190612caf565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612cf6565b6115ac565b005b3480156105f157600080fd5b506105fa611622565b005b34801561060857600080fd5b5061061161168d565b60405161061e9190612bf5565b60405180910390f35b34801561063357600080fd5b5061063c611693565b6040516106499190612d82565b60405180910390f35b34801561065e57600080fd5b506106676116b9565b6040516106749190612dbe565b60405180910390f35b34801561068957600080fd5b506106926116df565b60405161069f9190612dbe565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca9190612c73565b611705565b005b3480156106dd57600080fd5b506106f860048036038101906106f39190612c73565b6117ee565b005b34801561070657600080fd5b5061070f6118cb565b60405161071c9190612bf5565b60405180910390f35b34801561073157600080fd5b5061073a6118d1565b005b34801561074857600080fd5b50610751611a4f565b60405161075e9190612bf5565b60405180910390f35b34801561077357600080fd5b5061077c611a55565b6040516107899190612bf5565b60405180910390f35b34801561079e57600080fd5b506107a7611a5b565b6040516107b49190612df4565b60405180910390f35b3480156107c957600080fd5b506107d2611a6e565b6040516107df9190612df4565b60405180910390f35b3480156107f457600080fd5b506107fd611a81565b60405161080a9190612df4565b60405180910390f35b34801561081f57600080fd5b50610828611a92565b6040516108359190612bf5565b60405180910390f35b34801561084a57600080fd5b50610853611a98565b6040516108609190612df4565b60405180910390f35b34801561087557600080fd5b5061087e611aab565b60405161088b9190612bf5565b60405180910390f35b3480156108a057600080fd5b506108bb60048036038101906108b69190612c73565b611ab1565b005b3480156108c957600080fd5b506108e460048036038101906108df9190612e0f565b611c65565b005b3480156108f257600080fd5b5061090d60048036038101906109089190612c73565b611d77565b005b34801561091b57600080fd5b50610924611dfa565b6040516109319190612caf565b60405180910390f35b34801561094657600080fd5b5061094f611e20565b60405161095c9190612dbe565b60405180910390f35b34801561097157600080fd5b5061097a611e46565b6040516109879190612e97565b60405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610a94576000601154905060006011819055506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610a3e90612ee3565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b5050905080610a9157816011819055505b50505b565b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610c1c57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329a2192b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050506000600f5490506000600f819055506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610bc690612ee3565b60006040518083038185875af1925050503d8060008114610c03576040519150601f19603f3d011682016040523d82523d6000602084013e610c08565b606091505b5050905080610c195781600f819055505b50505b565b600b5481565b60115481565b610c32611e6c565b60168054906101000a900460ff1615610c4a57600080fd5b60016016806101000a81548160ff0219169083151502179055507fbe12b38d4cf4c293207b3ef208df8a6fcdd921b2f47ef87a780c5cf0dc8b8e8b60405160405180910390a1565b610c9a611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610d05575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610d5f57508073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b610d6857600080fd5b601660149054906101000a900460ff1615610d8257600080fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f035f81230cd5b48929f16ee6e30f062311fb20ffbc64091e16b40a97fcccb86060405160405180910390a35050565b60095481565b600047905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eb09190612caf565b602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612f0d565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f595760135481610f569190612f69565b90505b6000811115610f6d57610f6c8382611ee3565b5b60008247610f7b9190612f69565b90506103e8600a5482610f8e9190612f9d565b610f989190613026565b600f6000828254610fa99190613057565b925050819055506103e8600c5482610fc19190612f9d565b610fcb9190613026565b60106000828254610fdc9190613057565b925050819055506103e8600d5482610ff49190612f9d565b610ffe9190613026565b6011600082825461100f9190613057565b92505081905550601154601054600f544761102a9190612f69565b6110349190612f69565b61103e9190612f69565b601281905550600e54600f541061105857611057610a96565b5b600e546010541061106c5761106b61219d565b5b600e54601154106110805761107f610990565b5b600e5460125410611094576110936122a3565b5b50505050565b6110a2611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561110d575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561116757508073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61117057600080fd5b601660159054906101000a900460ff161561118a57600080fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffdf720622c2647f671ee76a7e1fa6a1deb3dcba5a7922bfb3880fc1dcf3b594f60405160405180910390a35050565b611258611e6c565b601660149054906101000a900460ff161561127257600080fd5b6001601660146101000a81548160ff0219169083151502179055507f6e646a980ba56ee7cb3031c878bc514eee5ea01f8d11b005ab630c470a5cfe8960405160405180910390a1565b6112c3611e6c565b6112cd6000612727565b565b6112d7611e6c565b601660179054906101000a900460ff16156112f157600080fd5b6001601660176101000a81548160ff0219169083151502179055507ff0fee47614f22f38389abedf99711a8247311a440e37da802db457410f79b44960405160405180910390a1565b600d5481565b611348611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156113b3575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561140d57508073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61141657600080fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3431bc932834bba479a2b59e0fc776b87c0e05ea4837cf59330044387228809c60405160405180910390a35050565b600f5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60135481565b61151c611e6c565b601660179054906101000a900460ff161561153657600080fd5b80600e819055507fe8c946fc4a31c5e8b0827f04d65a6871a11eed499a6a4c7a5575984ee57fcaaf8160405161156c9190612bf5565b60405180910390a150565b60105481565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b4611e6c565b60075481036115c257600080fd5b60055481101580156115d8575060065460075411155b6115e157600080fd5b806007819055507fdd892b1378d52503cedc68cc47f2cc1154ba54000d37699cd219ee8ee226031c816040516116179190612bf5565b60405180910390a150565b61162a611e6c565b601660159054906101000a900460ff161561164457600080fd5b6001601660156101000a81548160ff0219169083151502179055507f6c8aff4615cb4702edc0f0c4a9bc2cddc262e4b884e109d104be54242458794f60405160405180910390a1565b60065481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61170d611e6c565b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361176757600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f205890426c74334fba9f3d65990e94e55dac01584e054394ab50173c4a01da2d60405160405180910390a250565b6117f6611e6c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361185057600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d15816040516118c09190612caf565b60405180910390a150565b600e5481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906130c2565b90508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119bd9190612caf565b602060405180830381865afa1580156119da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fe9190612f0d565b6040518263ffffffff1660e01b8152600401611a1a9190612bf5565b600060405180830381600087803b158015611a3457600080fd5b505af1158015611a48573d6000803e3d6000fd5b5050505050565b60125481565b60075481565b601660149054906101000a900460ff1681565b601660159054906101000a900460ff1681565b60168054906101000a900460ff1681565b60055481565b601660179054906101000a900460ff1681565b600a5481565b611ab9611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611b24575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b7e57508073ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b611b8757600080fd5b60168054906101000a900460ff1615611b9f57600080fd5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f1d440445044acc67b35f82fda02fc5d23c22f882b4bde500e8949931a3d990e160405160405180910390a35050565b611c6d611e6c565b6103e8600d54600c54600b54600a54611c869190613057565b611c909190613057565b611c9a9190613057565b14611ca457600080fd5b6008548410158015611cb857506009548411155b611cc157600080fd5b6008548310158015611cd557506009548311155b611cde57600080fd5b6008548210158015611cf257506009548211155b611cfb57600080fd5b6008548110158015611d0f57506009548111155b611d1857600080fd5b83600a8190555082600b8190555081600c8190555080600d819055507fdba57146a04ecfe691533212d4dc5dd0f01e5622f6da6351e42fc10876bcfa3e84848484604051611d6994939291906130ef565b60405180910390a150505050565b611d7f611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de5906131b7565b60405180910390fd5b611df781612727565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611e8b611583565b73ffffffffffffffffffffffffffffffffffffffff1614611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed890613223565b60405180910390fd5b565b6000600267ffffffffffffffff811115611f0057611eff613243565b5b604051908082528060200260200182016040528015611f2e5781602001602082028036833780820191505090505b5090508281600081518110611f4657611f45613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201391906130c2565b8160018151811061202757612026613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016120be9291906132a1565b6020604051808303816000875af11580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210191906132f6565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161216695949392919061341c565b600060405180830381600087803b15801561218057600080fd5b505af1158015612194573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156122a1576000601054905060006010819055506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161224b90612ee3565b60006040518083038185875af1925050503d8060008114612288576040519150601f19603f3d011682016040523d82523d6000602084013e61228d565b606091505b505090508061229e57816010819055505b50505b565b6000804790506064600754600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639358928b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233f9190612f0d565b6123499190612f9d565b6123539190613026565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123d09190612caf565b602060405180830381865afa1580156123ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124119190612f0d565b1115612432576012549150600060128190555061242d826127eb565b612681565b601254915060006012819055506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161249c9190612caf565b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd9190612f0d565b11156125a257612588600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125419190612caf565b602060405180830381865afa15801561255e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125829190612f0d565b83612a24565b47816125949190612f69565b8261259f9190612f69565b91505b60008211156126805760008290506002816125bd9190613026565b9250600083826125cd9190612f69565b90506125d8846127eb565b61267d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126369190612caf565b602060405180830381865afa158015612653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126779190612f0d565b82612a24565b50505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126dc9190612caf565b602060405180830381865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190612f0d565b6013819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561280857612807613243565b5b6040519080825280602002602001820160405280156128365781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b81526004016020604051808303816000875af11580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc91906130c2565b816000815181106128e0576128df613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061295157612950613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016129ee9493929190613476565b6000604051808303818588803b158015612a0757600080fd5b505af1158015612a1b573d6000803e3d6000fd5b50505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612aa39291906132a1565b6020604051808303816000875af1158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae691906132f6565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b92969594939291906134c2565b60606040518083038185885af1158015612bb0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bd59190613523565b5050505050565b6000819050919050565b612bef81612bdc565b82525050565b6000602082019050612c0a6000830184612be6565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4082612c15565b9050919050565b612c5081612c35565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b600060208284031215612c8957612c88612c10565b5b6000612c9784828501612c5e565b91505092915050565b612ca981612c35565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b612cd381612bdc565b8114612cde57600080fd5b50565b600081359050612cf081612cca565b92915050565b600060208284031215612d0c57612d0b612c10565b5b6000612d1a84828501612ce1565b91505092915050565b6000819050919050565b6000612d48612d43612d3e84612c15565b612d23565b612c15565b9050919050565b6000612d5a82612d2d565b9050919050565b6000612d6c82612d4f565b9050919050565b612d7c81612d61565b82525050565b6000602082019050612d976000830184612d73565b92915050565b6000612da882612c15565b9050919050565b612db881612d9d565b82525050565b6000602082019050612dd36000830184612daf565b92915050565b60008115159050919050565b612dee81612dd9565b82525050565b6000602082019050612e096000830184612de5565b92915050565b60008060008060808587031215612e2957612e28612c10565b5b6000612e3787828801612ce1565b9450506020612e4887828801612ce1565b9350506040612e5987828801612ce1565b9250506060612e6a87828801612ce1565b91505092959194509250565b6000612e8182612d4f565b9050919050565b612e9181612e76565b82525050565b6000602082019050612eac6000830184612e88565b92915050565b600081905092915050565b50565b6000612ecd600083612eb2565b9150612ed882612ebd565b600082019050919050565b6000612eee82612ec0565b9150819050919050565b600081519050612f0781612cca565b92915050565b600060208284031215612f2357612f22612c10565b5b6000612f3184828501612ef8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f7482612bdc565b9150612f7f83612bdc565b925082821015612f9257612f91612f3a565b5b828203905092915050565b6000612fa882612bdc565b9150612fb383612bdc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fec57612feb612f3a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061303182612bdc565b915061303c83612bdc565b92508261304c5761304b612ff7565b5b828204905092915050565b600061306282612bdc565b915061306d83612bdc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130a2576130a1612f3a565b5b828201905092915050565b6000815190506130bc81612c47565b92915050565b6000602082840312156130d8576130d7612c10565b5b60006130e6848285016130ad565b91505092915050565b60006080820190506131046000830187612be6565b6131116020830186612be6565b61311e6040830185612be6565b61312b6060830184612be6565b95945050505050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131a1602683613134565b91506131ac82613145565b604082019050919050565b600060208201905081810360008301526131d081613194565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061320d602083613134565b9150613218826131d7565b602082019050919050565b6000602082019050818103600083015261323c81613200565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506132b66000830185612ca0565b6132c36020830184612be6565b9392505050565b6132d381612dd9565b81146132de57600080fd5b50565b6000815190506132f0816132ca565b92915050565b60006020828403121561330c5761330b612c10565b5b600061331a848285016132e1565b91505092915050565b6000819050919050565b600061334861334361333e84613323565b612d23565b612bdc565b9050919050565b6133588161332d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61339381612c35565b82525050565b60006133a5838361338a565b60208301905092915050565b6000602082019050919050565b60006133c98261335e565b6133d38185613369565b93506133de8361337a565b8060005b8381101561340f5781516133f68882613399565b9750613401836133b1565b9250506001810190506133e2565b5085935050505092915050565b600060a0820190506134316000830188612be6565b61343e602083018761334f565b818103604083015261345081866133be565b905061345f6060830185612ca0565b61346c6080830184612be6565b9695505050505050565b600060808201905061348b600083018761334f565b818103602083015261349d81866133be565b90506134ac6040830185612ca0565b6134b96060830184612be6565b95945050505050565b600060c0820190506134d76000830189612ca0565b6134e46020830188612be6565b6134f1604083018761334f565b6134fe606083018661334f565b61350b6080830185612ca0565b61351860a0830184612be6565b979650505050505050565b60008060006060848603121561353c5761353b612c10565b5b600061354a86828701612ef8565b935050602061355b86828701612ef8565b925050604061356c86828701612ef8565b915050925092509256fea264697066735822122046110ac2c7107175301b3b7520ed3b0ea7bf55f15329c63d25f36066794d1bd664736f6c634300080f00330000000000000000000000007105e64bf67eca3ae9b123f0e5ca2b83b2ef2da00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102805760003560e01c8063933401a41161014f578063cb3f4f17116100c1578063e97ca4b11161007a578063e97ca4b114610894578063f03b6ffc146108bd578063f2fde38b146108e6578063f48167a51461090f578063f7b9f7621461093a578063f887ea401461096557610287565b8063cb3f4f1714610792578063cd92c5ee146107bd578063d938a3e6146107e8578063dbc609f814610813578063e0f0edc61461083e578063e2568ad21461086957610287565b8063be1c714211610113578063be1c7142146106a8578063c0d78655146106d1578063c3173774146106fa578063c38ec0b614610725578063c3926a291461073c578063c96f4d4d1461076757610287565b8063933401a4146105e557806399eefadb146105fc578063a1a8d3c814610627578063b5fb217414610652578063b68e204c1461067d57610287565b806373bdeb49116101f3578063838bf401116101ac578063838bf401146104e757806387020d6b146105125780638ad107921461053b5780638bb28de2146105665780638da5cb5b1461059157806390d8dec7146105bc57610287565b806373bdeb49146103fb5780637796ff371461041257806377e7e2021461043d5780637943da69146104665780637b31bd78146104915780637c513ce6146104bc57610287565b8063517cafef11610245578063517cafef146103275780635a75a8091461035057806361582eaa1461037b57806366096ebf146103a45780636aea97f0146103cd578063715018a6146103e457610287565b8062e553121461028c578063099f833e146102a357806315291cd4146102ba578063313dab20146102e55780633802fa431461031057610287565b3661028757005b600080fd5b34801561029857600080fd5b506102a1610990565b005b3480156102af57600080fd5b506102b8610a96565b005b3480156102c657600080fd5b506102cf610c1e565b6040516102dc9190612bf5565b60405180910390f35b3480156102f157600080fd5b506102fa610c24565b6040516103079190612bf5565b60405180910390f35b34801561031c57600080fd5b50610325610c2a565b005b34801561033357600080fd5b5061034e60048036038101906103499190612c73565b610c92565b005b34801561035c57600080fd5b50610365610e6a565b6040516103729190612bf5565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190612c73565b610e70565b005b3480156103b057600080fd5b506103cb60048036038101906103c69190612c73565b61109a565b005b3480156103d957600080fd5b506103e2611250565b005b3480156103f057600080fd5b506103f96112bb565b005b34801561040757600080fd5b506104106112cf565b005b34801561041e57600080fd5b5061042761133a565b6040516104349190612bf5565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190612c73565b611340565b005b34801561047257600080fd5b5061047b6114dc565b6040516104889190612bf5565b60405180910390f35b34801561049d57600080fd5b506104a66114e2565b6040516104b39190612caf565b60405180910390f35b3480156104c857600080fd5b506104d1611508565b6040516104de9190612bf5565b60405180910390f35b3480156104f357600080fd5b506104fc61150e565b6040516105099190612bf5565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612cf6565b611514565b005b34801561054757600080fd5b50610550611577565b60405161055d9190612bf5565b60405180910390f35b34801561057257600080fd5b5061057b61157d565b6040516105889190612bf5565b60405180910390f35b34801561059d57600080fd5b506105a6611583565b6040516105b39190612caf565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612cf6565b6115ac565b005b3480156105f157600080fd5b506105fa611622565b005b34801561060857600080fd5b5061061161168d565b60405161061e9190612bf5565b60405180910390f35b34801561063357600080fd5b5061063c611693565b6040516106499190612d82565b60405180910390f35b34801561065e57600080fd5b506106676116b9565b6040516106749190612dbe565b60405180910390f35b34801561068957600080fd5b506106926116df565b60405161069f9190612dbe565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca9190612c73565b611705565b005b3480156106dd57600080fd5b506106f860048036038101906106f39190612c73565b6117ee565b005b34801561070657600080fd5b5061070f6118cb565b60405161071c9190612bf5565b60405180910390f35b34801561073157600080fd5b5061073a6118d1565b005b34801561074857600080fd5b50610751611a4f565b60405161075e9190612bf5565b60405180910390f35b34801561077357600080fd5b5061077c611a55565b6040516107899190612bf5565b60405180910390f35b34801561079e57600080fd5b506107a7611a5b565b6040516107b49190612df4565b60405180910390f35b3480156107c957600080fd5b506107d2611a6e565b6040516107df9190612df4565b60405180910390f35b3480156107f457600080fd5b506107fd611a81565b60405161080a9190612df4565b60405180910390f35b34801561081f57600080fd5b50610828611a92565b6040516108359190612bf5565b60405180910390f35b34801561084a57600080fd5b50610853611a98565b6040516108609190612df4565b60405180910390f35b34801561087557600080fd5b5061087e611aab565b60405161088b9190612bf5565b60405180910390f35b3480156108a057600080fd5b506108bb60048036038101906108b69190612c73565b611ab1565b005b3480156108c957600080fd5b506108e460048036038101906108df9190612e0f565b611c65565b005b3480156108f257600080fd5b5061090d60048036038101906109089190612c73565b611d77565b005b34801561091b57600080fd5b50610924611dfa565b6040516109319190612caf565b60405180910390f35b34801561094657600080fd5b5061094f611e20565b60405161095c9190612dbe565b60405180910390f35b34801561097157600080fd5b5061097a611e46565b6040516109879190612e97565b60405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610a94576000601154905060006011819055506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610a3e90612ee3565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b5050905080610a9157816011819055505b50505b565b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610c1c57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329a2192b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050506000600f5490506000600f819055506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610bc690612ee3565b60006040518083038185875af1925050503d8060008114610c03576040519150601f19603f3d011682016040523d82523d6000602084013e610c08565b606091505b5050905080610c195781600f819055505b50505b565b600b5481565b60115481565b610c32611e6c565b60168054906101000a900460ff1615610c4a57600080fd5b60016016806101000a81548160ff0219169083151502179055507fbe12b38d4cf4c293207b3ef208df8a6fcdd921b2f47ef87a780c5cf0dc8b8e8b60405160405180910390a1565b610c9a611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610d05575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610d5f57508073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b610d6857600080fd5b601660149054906101000a900460ff1615610d8257600080fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f035f81230cd5b48929f16ee6e30f062311fb20ffbc64091e16b40a97fcccb86060405160405180910390a35050565b60095481565b600047905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eb09190612caf565b602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612f0d565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f595760135481610f569190612f69565b90505b6000811115610f6d57610f6c8382611ee3565b5b60008247610f7b9190612f69565b90506103e8600a5482610f8e9190612f9d565b610f989190613026565b600f6000828254610fa99190613057565b925050819055506103e8600c5482610fc19190612f9d565b610fcb9190613026565b60106000828254610fdc9190613057565b925050819055506103e8600d5482610ff49190612f9d565b610ffe9190613026565b6011600082825461100f9190613057565b92505081905550601154601054600f544761102a9190612f69565b6110349190612f69565b61103e9190612f69565b601281905550600e54600f541061105857611057610a96565b5b600e546010541061106c5761106b61219d565b5b600e54601154106110805761107f610990565b5b600e5460125410611094576110936122a3565b5b50505050565b6110a2611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561110d575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561116757508073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61117057600080fd5b601660159054906101000a900460ff161561118a57600080fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffdf720622c2647f671ee76a7e1fa6a1deb3dcba5a7922bfb3880fc1dcf3b594f60405160405180910390a35050565b611258611e6c565b601660149054906101000a900460ff161561127257600080fd5b6001601660146101000a81548160ff0219169083151502179055507f6e646a980ba56ee7cb3031c878bc514eee5ea01f8d11b005ab630c470a5cfe8960405160405180910390a1565b6112c3611e6c565b6112cd6000612727565b565b6112d7611e6c565b601660179054906101000a900460ff16156112f157600080fd5b6001601660176101000a81548160ff0219169083151502179055507ff0fee47614f22f38389abedf99711a8247311a440e37da802db457410f79b44960405160405180910390a1565b600d5481565b611348611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156113b3575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561140d57508073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61141657600080fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3431bc932834bba479a2b59e0fc776b87c0e05ea4837cf59330044387228809c60405160405180910390a35050565b600f5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60135481565b61151c611e6c565b601660179054906101000a900460ff161561153657600080fd5b80600e819055507fe8c946fc4a31c5e8b0827f04d65a6871a11eed499a6a4c7a5575984ee57fcaaf8160405161156c9190612bf5565b60405180910390a150565b60105481565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b4611e6c565b60075481036115c257600080fd5b60055481101580156115d8575060065460075411155b6115e157600080fd5b806007819055507fdd892b1378d52503cedc68cc47f2cc1154ba54000d37699cd219ee8ee226031c816040516116179190612bf5565b60405180910390a150565b61162a611e6c565b601660159054906101000a900460ff161561164457600080fd5b6001601660156101000a81548160ff0219169083151502179055507f6c8aff4615cb4702edc0f0c4a9bc2cddc262e4b884e109d104be54242458794f60405160405180910390a1565b60065481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61170d611e6c565b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361176757600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f205890426c74334fba9f3d65990e94e55dac01584e054394ab50173c4a01da2d60405160405180910390a250565b6117f6611e6c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361185057600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d15816040516118c09190612caf565b60405180910390a150565b600e5481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906130c2565b90508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119bd9190612caf565b602060405180830381865afa1580156119da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fe9190612f0d565b6040518263ffffffff1660e01b8152600401611a1a9190612bf5565b600060405180830381600087803b158015611a3457600080fd5b505af1158015611a48573d6000803e3d6000fd5b5050505050565b60125481565b60075481565b601660149054906101000a900460ff1681565b601660159054906101000a900460ff1681565b60168054906101000a900460ff1681565b60055481565b601660179054906101000a900460ff1681565b600a5481565b611ab9611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611b24575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b7e57508073ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b611b8757600080fd5b60168054906101000a900460ff1615611b9f57600080fd5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f1d440445044acc67b35f82fda02fc5d23c22f882b4bde500e8949931a3d990e160405160405180910390a35050565b611c6d611e6c565b6103e8600d54600c54600b54600a54611c869190613057565b611c909190613057565b611c9a9190613057565b14611ca457600080fd5b6008548410158015611cb857506009548411155b611cc157600080fd5b6008548310158015611cd557506009548311155b611cde57600080fd5b6008548210158015611cf257506009548211155b611cfb57600080fd5b6008548110158015611d0f57506009548111155b611d1857600080fd5b83600a8190555082600b8190555081600c8190555080600d819055507fdba57146a04ecfe691533212d4dc5dd0f01e5622f6da6351e42fc10876bcfa3e84848484604051611d6994939291906130ef565b60405180910390a150505050565b611d7f611e6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de5906131b7565b60405180910390fd5b611df781612727565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611e8b611583565b73ffffffffffffffffffffffffffffffffffffffff1614611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed890613223565b60405180910390fd5b565b6000600267ffffffffffffffff811115611f0057611eff613243565b5b604051908082528060200260200182016040528015611f2e5781602001602082028036833780820191505090505b5090508281600081518110611f4657611f45613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201391906130c2565b8160018151811061202757612026613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016120be9291906132a1565b6020604051808303816000875af11580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210191906132f6565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161216695949392919061341c565b600060405180830381600087803b15801561218057600080fd5b505af1158015612194573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156122a1576000601054905060006010819055506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161224b90612ee3565b60006040518083038185875af1925050503d8060008114612288576040519150601f19603f3d011682016040523d82523d6000602084013e61228d565b606091505b505090508061229e57816010819055505b50505b565b6000804790506064600754600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639358928b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233f9190612f0d565b6123499190612f9d565b6123539190613026565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123d09190612caf565b602060405180830381865afa1580156123ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124119190612f0d565b1115612432576012549150600060128190555061242d826127eb565b612681565b601254915060006012819055506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161249c9190612caf565b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd9190612f0d565b11156125a257612588600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125419190612caf565b602060405180830381865afa15801561255e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125829190612f0d565b83612a24565b47816125949190612f69565b8261259f9190612f69565b91505b60008211156126805760008290506002816125bd9190613026565b9250600083826125cd9190612f69565b90506125d8846127eb565b61267d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126369190612caf565b602060405180830381865afa158015612653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126779190612f0d565b82612a24565b50505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126dc9190612caf565b602060405180830381865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190612f0d565b6013819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561280857612807613243565b5b6040519080825280602002602001820160405280156128365781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b81526004016020604051808303816000875af11580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc91906130c2565b816000815181106128e0576128df613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061295157612950613272565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016129ee9493929190613476565b6000604051808303818588803b158015612a0757600080fd5b505af1158015612a1b573d6000803e3d6000fd5b50505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612aa39291906132a1565b6020604051808303816000875af1158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae691906132f6565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b92969594939291906134c2565b60606040518083038185885af1158015612bb0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bd59190613523565b5050505050565b6000819050919050565b612bef81612bdc565b82525050565b6000602082019050612c0a6000830184612be6565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4082612c15565b9050919050565b612c5081612c35565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b600060208284031215612c8957612c88612c10565b5b6000612c9784828501612c5e565b91505092915050565b612ca981612c35565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b612cd381612bdc565b8114612cde57600080fd5b50565b600081359050612cf081612cca565b92915050565b600060208284031215612d0c57612d0b612c10565b5b6000612d1a84828501612ce1565b91505092915050565b6000819050919050565b6000612d48612d43612d3e84612c15565b612d23565b612c15565b9050919050565b6000612d5a82612d2d565b9050919050565b6000612d6c82612d4f565b9050919050565b612d7c81612d61565b82525050565b6000602082019050612d976000830184612d73565b92915050565b6000612da882612c15565b9050919050565b612db881612d9d565b82525050565b6000602082019050612dd36000830184612daf565b92915050565b60008115159050919050565b612dee81612dd9565b82525050565b6000602082019050612e096000830184612de5565b92915050565b60008060008060808587031215612e2957612e28612c10565b5b6000612e3787828801612ce1565b9450506020612e4887828801612ce1565b9350506040612e5987828801612ce1565b9250506060612e6a87828801612ce1565b91505092959194509250565b6000612e8182612d4f565b9050919050565b612e9181612e76565b82525050565b6000602082019050612eac6000830184612e88565b92915050565b600081905092915050565b50565b6000612ecd600083612eb2565b9150612ed882612ebd565b600082019050919050565b6000612eee82612ec0565b9150819050919050565b600081519050612f0781612cca565b92915050565b600060208284031215612f2357612f22612c10565b5b6000612f3184828501612ef8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f7482612bdc565b9150612f7f83612bdc565b925082821015612f9257612f91612f3a565b5b828203905092915050565b6000612fa882612bdc565b9150612fb383612bdc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fec57612feb612f3a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061303182612bdc565b915061303c83612bdc565b92508261304c5761304b612ff7565b5b828204905092915050565b600061306282612bdc565b915061306d83612bdc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130a2576130a1612f3a565b5b828201905092915050565b6000815190506130bc81612c47565b92915050565b6000602082840312156130d8576130d7612c10565b5b60006130e6848285016130ad565b91505092915050565b60006080820190506131046000830187612be6565b6131116020830186612be6565b61311e6040830185612be6565b61312b6060830184612be6565b95945050505050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131a1602683613134565b91506131ac82613145565b604082019050919050565b600060208201905081810360008301526131d081613194565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061320d602083613134565b9150613218826131d7565b602082019050919050565b6000602082019050818103600083015261323c81613200565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506132b66000830185612ca0565b6132c36020830184612be6565b9392505050565b6132d381612dd9565b81146132de57600080fd5b50565b6000815190506132f0816132ca565b92915050565b60006020828403121561330c5761330b612c10565b5b600061331a848285016132e1565b91505092915050565b6000819050919050565b600061334861334361333e84613323565b612d23565b612bdc565b9050919050565b6133588161332d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61339381612c35565b82525050565b60006133a5838361338a565b60208301905092915050565b6000602082019050919050565b60006133c98261335e565b6133d38185613369565b93506133de8361337a565b8060005b8381101561340f5781516133f68882613399565b9750613401836133b1565b9250506001810190506133e2565b5085935050505092915050565b600060a0820190506134316000830188612be6565b61343e602083018761334f565b818103604083015261345081866133be565b905061345f6060830185612ca0565b61346c6080830184612be6565b9695505050505050565b600060808201905061348b600083018761334f565b818103602083015261349d81866133be565b90506134ac6040830185612ca0565b6134b96060830184612be6565b95945050505050565b600060c0820190506134d76000830189612ca0565b6134e46020830188612be6565b6134f1604083018761334f565b6134fe606083018661334f565b61350b6080830185612ca0565b61351860a0830184612be6565b979650505050505050565b60008060006060848603121561353c5761353b612c10565b5b600061354a86828701612ef8565b935050602061355b86828701612ef8565b925050604061356c86828701612ef8565b915050925092509256fea264697066735822122046110ac2c7107175301b3b7520ed3b0ea7bf55f15329c63d25f36066794d1bd664736f6c634300080f0033

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

0000000000000000000000007105e64bf67eca3ae9b123f0e5ca2b83b2ef2da00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : x7dao_ (address): 0x7105E64bF67ECA3Ae9b123F0e5Ca2b83b2eF2dA0
Arg [1] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007105e64bf67eca3ae9b123f0e5ca2b83b2ef2da0
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

7965:11791:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16504:353;;;;;;;;;;;;;:::i;:::-;;16066:430;;;;;;;;;;;;;:::i;:::-;;8436:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8690:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14056:176;;;;;;;;;;;;;:::i;:::-;;12646:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8355:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14812:1246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13130:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14240:184;;;;;;;;;;;;;:::i;:::-;;6139:103;;;;;;;;;;;;;:::i;:::-;;14620:184;;;;;;;;;;;;;:::i;:::-;;8520:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12078:560;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8613:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8064:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8478:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8765:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11467:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8652:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8319:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5906:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11678:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14432:180;;;;;;;;;;;;;:::i;:::-;;8218:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8099:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8810:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8901:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11234:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11038:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8563:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19584:169;;;;;;;;;;;;;:::i;:::-;;8727:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8270:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8947:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8988:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9028:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8169:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9067:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8393:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13596:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10208:822;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6250:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8125:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8856:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8027:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16504:353;16583:1;16557:28;;:14;;;;;;;;;;;:28;;;16553:67;16602:7;16553:67;16632:17;16652:15;;16632:35;;16696:1;16678:15;:19;;;;16711:12;16728:14;;;;;;;;;;;:19;;16755:9;16728:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16710:59;;;16787:7;16782:68;;16829:9;16811:15;:27;;;;16782:68;16542:315;;16504:353;:::o;16066:430::-;16149:1;16121:30;;:16;;;;;;;;;;;:30;;;16117:69;16168:7;16117:69;16219:16;;;;;;;;;;;16198:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16263:17;16283;;16263:37;;16331:1;16311:17;:21;;;;16346:12;16363:16;;;;;;;;;;;:21;;16392:9;16363:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16345:61;;;16424:7;16419:70;;16468:9;16448:17;:29;;;;16419:70;16106:390;;16066:430;:::o;8436:35::-;;;;:::o;8690:30::-;;;;:::o;14056:176::-;5865:13;:11;:13::i;:::-;14127:20:::1;::::0;::::1;;;;;;;;14126:21;14118:30;;;::::0;::::1;;14182:4;14159:20;::::0;:27:::1;;;;;;;;;;;;;;;;;;14202:22;;;;;;;;;;14056:176::o:0;12646:476::-;5865:13;:11;:13::i;:::-;12763:1:::1;12745:20;;:6;:20;;;;:98;;;;;12800:42;12782:61;;:6;:61;;;;12745:98;:150;;;;;12888:6;12860:35;;:16;;;;;;;;;;;:35;;;;12745:150;12723:183;;;::::0;::::1;;12926:22;;;;;;;;;;;12925:23;12917:32;;;::::0;::::1;;12960:17;12988:16;;;;;;;;;;;12960:45;;13043:6;13016:16;;:34;;;;;;;;;;;;;;;;;;13097:16;;;;;;;;;;;13066:48;;13086:9;13066:48;;;;;;;;;;;;12712:410;12646:476:::0;:::o;8355:29::-;;;;:::o;14812:1246::-;14875:26;14904:21;14875:50;;14938:20;14968:12;14961:30;;;15000:4;14961:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14938:68;;15047:5;;;;;;;;;;;15023:30;;:12;:30;;;15019:100;;15086:21;;15070:37;;;;;:::i;:::-;;;15019:100;15150:1;15135:12;:16;15131:93;;;15168:44;15185:12;15199;15168:16;:44::i;:::-;15131:93;15236:26;15289:18;15265:21;:42;;;;:::i;:::-;15236:71;;15380:4;15362:15;;15341:18;:36;;;;:::i;:::-;:43;;;;:::i;:::-;15320:17;;:64;;;;;;;:::i;:::-;;;;;;;;15453:4;15436:14;;15415:18;:35;;;;:::i;:::-;:42;;;;:::i;:::-;15395:16;;:62;;;;;;;:::i;:::-;;;;;;;;15524:4;15508:13;;15487:18;:34;;;;:::i;:::-;:41;;;;:::i;:::-;15468:15;;:60;;;;;;;:::i;:::-;;;;;;;;15621:15;;15602:16;;15582:17;;15558:21;:41;;;;:::i;:::-;:60;;;;:::i;:::-;:78;;;;:::i;:::-;15539:16;:97;;;;15674:16;;15653:17;;:37;15649:93;;15707:23;:21;:23::i;:::-;15649:93;15778:16;;15758;;:36;15754:91;;15811:22;:20;:22::i;:::-;15754:91;15880:16;;15861:15;;:35;15857:89;;15913:21;:19;:21::i;:::-;15857:89;15982:16;;15962;;:36;15958:93;;16015:24;:22;:24::i;:::-;15958:93;14864:1194;;;14812:1246;:::o;13130:458::-;5865:13;:11;:13::i;:::-;13244:1:::1;13226:20;;:6;:20;;;;:98;;;;;13281:42;13263:61;;:6;:61;;;;13226:98;:149;;;;;13368:6;13341:34;;:15;;;;;;;;;;;:34;;;;13226:149;13204:182;;;::::0;::::1;;13406:21;;;;;;;;;;;13405:22;13397:31;;;::::0;::::1;;13439:17;13467:15;;;;;;;;;;;13439:44;;13520:6;13494:15;;:33;;;;;;;;;;;;;;;;;;13573:6;13543:37;;13562:9;13543:37;;;;;;;;;;;;13193:395;13130:458:::0;:::o;14240:184::-;5865:13;:11;:13::i;:::-;14313:22:::1;;;;;;;;;;;14312:23;14304:32;;;::::0;::::1;;14372:4;14347:22;;:29;;;;;;;;;;;;;;;;;;14392:24;;;;;;;;;;14240:184::o:0;6139:103::-;5865:13;:11;:13::i;:::-;6204:30:::1;6231:1;6204:18;:30::i;:::-;6139:103::o:0;14620:184::-;5865:13;:11;:13::i;:::-;14693:22:::1;;;;;;;;;;;14692:23;14684:32;;;::::0;::::1;;14752:4;14727:22;;:29;;;;;;;;;;;;;;;;;;14772:24;;;;;;;;;;14620:184::o:0;8520:34::-;;;;:::o;12078:560::-;5865:13;:11;:13::i;:::-;12233:1:::1;12198:37;;:23;:37;;;;:132;;;;;12287:42;12252:78;;:23;:78;;;;12198:132;:198;;;;;12373:23;12347:49;;:22;;;;;;;;;;;:49;;;;12198:198;12176:231;;;::::0;::::1;;12420:33;12456:22;;;;;;;;;;;12420:58;;12514:23;12489:22;;:48;;;;;;;;;;;;;;;;;;12606:23;12553:77;;12579:25;12553:77;;;;;;;;;;;;12165:473;12078:560:::0;:::o;8613:32::-;;;;:::o;8064:26::-;;;;;;;;;;;;;:::o;8478:35::-;;;;:::o;8765:36::-;;;;:::o;11467:203::-;5865:13;:11;:13::i;:::-;11554:22:::1;;;;;;;;;;;11553:23;11545:32;;;::::0;::::1;;11607:9;11588:16;:28;;;;11632:30;11652:9;11632:30;;;;;;:::i;:::-;;;;;;;;11467:203:::0;:::o;8652:31::-;;;;:::o;8319:29::-;;;;:::o;5906:87::-;5952:7;5979:6;;;;;;;;;;;5972:13;;5906:87;:::o;11678:392::-;5865:13;:11;:13::i;:::-;11805:20:::1;;11780:21;:45:::0;11772:54:::1;;;::::0;::::1;;11870:23;;11845:21;:48;;:99;;;;;11921:23;;11897:20;;:47;;11845:99;11837:108;;;::::0;::::1;;11979:21;11956:20;:44;;;;12016:46;12040:21;12016:46;;;;;;:::i;:::-;;;;;;;;11678:392:::0;:::o;14432:180::-;5865:13;:11;:13::i;:::-;14504:21:::1;;;;;;;;;;;14503:22;14495:31;;;::::0;::::1;;14561:4;14537:21;;:28;;;;;;;;;;;;;;;;;;14581:23;;;;;;;;;;14432:180::o:0;8218:43::-;;;;:::o;8099:19::-;;;;;;;;;;;;;:::o;8810:39::-;;;;;;;;;;;;;:::o;8901:37::-;;;;;;;;;;;;;:::o;11234:225::-;5865:13;:11;:13::i;:::-;11339:18:::1;11324:33;;:11;;;;;;;;;;;:33;;::::0;11316:42:::1;;;::::0;::::1;;11383:18;11369:11;;:32;;;;;;;;;;;;;;;;;;11432:18;11417:34;;;;;;;;;;;;11234:225:::0;:::o;11038:188::-;5865:13;:11;:13::i;:::-;11131:6:::1;;;;;;;;;;;11112:26;;:7;:26;;::::0;11104:35:::1;;;::::0;::::1;;11176:7;11150:6;;:34;;;;;;;;;;;;;;;;;;11200:18;11210:7;11200:18;;;;;;:::i;:::-;;;;;;;;11038:188:::0;:::o;8563:41::-;;;;:::o;19584:169::-;19626:19;19648:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19626:35;;19678:11;19672:27;;;19707:11;19700:29;;;19738:4;19700:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19672:73;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19615:138;19584:169::o;8727:31::-;;;;:::o;8270:40::-;;;;:::o;8947:34::-;;;;;;;;;;;;;:::o;8988:33::-;;;;;;;;;;;;;:::o;9028:32::-;;;;;;;;;;;;:::o;8169:42::-;;;;:::o;9067:34::-;;;;;;;;;;;;;:::o;8393:36::-;;;;:::o;13596:452::-;5865:13;:11;:13::i;:::-;13709:1:::1;13691:20;;:6;:20;;;;:98;;;;;13746:42;13728:61;;:6;:61;;;;13691:98;:148;;;;;13832:6;13806:33;;:14;;;;;;;;;;;:33;;;;13691:148;13669:181;;;::::0;::::1;;13870:20;::::0;::::1;;;;;;;;13869:21;13861:30;;;::::0;::::1;;13902:17;13930:14;;;;;;;;;;;13902:43;;13981:6;13956:14;;:32;;;;;;;;;;;;;;;;;;14033:6;14004:36;;14022:9;14004:36;;;;;;;;;;;;13658:390;13596:452:::0;:::o;10208:822::-;5865:13;:11;:13::i;:::-;10434:4:::1;10417:13;;10400:14;;10383;;10365:15;;:32;;;;:::i;:::-;:49;;;;:::i;:::-;:65;;;;:::i;:::-;:73;10357:82;;;::::0;::::1;;10480:8;;10460:16;:28;;:60;;;;;10512:8;;10492:16;:28;;10460:60;10452:69;;;::::0;::::1;;10559:8;;10540:15;:27;;:58;;;;;10590:8;;10571:15;:27;;10540:58;10532:67;;;::::0;::::1;;10637:8;;10618:15;:27;;:58;;;;;10668:8;;10649:15;:27;;10618:58;10610:67;;;::::0;::::1;;10714:8;;10696:14;:26;;:56;;;;;10744:8;;10726:14;:26;;10696:56;10688:65;;;::::0;::::1;;10784:16;10766:15;:34;;;;10828:15;10811:14;:32;;;;10871:15;10854:14;:32;;;;10913:14;10897:13;:30;;;;10945:77;10955:16;10973:15;10990;11007:14;10945:77;;;;;;;;;:::i;:::-;;;;;;;;10208:822:::0;;;;:::o;6250:201::-;5865:13;:11;:13::i;:::-;6359:1:::1;6339:22;;:8;:22;;::::0;6331:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6415:28;6434:8;6415:18;:28::i;:::-;6250:201:::0;:::o;8125:37::-;;;;;;;;;;;;;:::o;8856:38::-;;;;;;;;;;;;;:::o;8027:30::-;;;;;;;;;;;;;:::o;6001:130::-;6076:10;6065:21;;:7;:5;:7::i;:::-;:21;;;6057:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6001:130::o;18723:473::-;18812:21;18850:1;18836:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18812:40;;18873:12;18863:4;18868:1;18863:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;18906:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18896:4;18901:1;18896:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18939:12;18932:28;;;18969:6;;;;;;;;;;;18978:11;18932:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19001:6;;;;;;;;;;;:57;;;19073:11;19099:1;19115:4;19142;19162:15;19001:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18801:395;18723:473;;:::o;16865:361::-;16948:1;16921:29;;:15;;;;;;;;;;;:29;;;16917:68;16967:7;16917:68;16997:17;17017:16;;16997:36;;17063:1;17044:16;:20;;;;17078:12;17095:15;;;;;;;;;;;:20;;17123:9;17095:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17077:60;;;17155:7;17150:69;;17198:9;17179:16;:28;;;;17150:69;16906:320;;16865:361;:::o;17234:1121::-;17288:18;17317:26;17346:21;17317:50;;17466:3;17443:20;;17415:5;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;;:::i;:::-;:54;;;;:::i;:::-;17384:5;;;;;;;;;;;:15;;;17400:11;;;;;;;;;;;17384:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;17380:899;;;17500:16;;17487:29;;17550:1;17531:16;:20;;;;17566:28;17583:10;17566:16;:28::i;:::-;17380:899;;;17640:16;;17627:29;;17690:1;17671:16;:20;;;;17745:1;17712:5;;;;;;;;;;;:15;;;17736:4;17712:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;17708:223;;;17767:59;17783:5;;;;;;;;;;;:15;;;17807:4;17783:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17815:10;17767:15;:59::i;:::-;17893:21;17872:18;:42;;;;:::i;:::-;17858:10;:57;;;;:::i;:::-;17845:70;;17708:223;17964:1;17951:10;:14;17947:321;;;17986:15;18004:10;17986:28;;18056:1;18046:7;:11;;;;:::i;:::-;18033:24;;18076:23;18112:10;18102:7;:20;;;;:::i;:::-;18076:46;;18141:28;18158:10;18141:16;:28::i;:::-;18188:64;18204:5;;;;;;;;;;;:15;;;18228:4;18204:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18236:15;18188;:64::i;:::-;17967:301;;17947:321;17380:899;18315:5;;;;;;;;;;;:15;;;18339:4;18315:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18291:21;:54;;;;17277:1078;;17234:1121::o;6459:191::-;6533:16;6552:6;;;;;;;;;;;6533:25;;6578:8;6569:6;;:17;;;;;;;;;;;;;;;;;;6633:8;6602:40;;6623:8;6602:40;;;;;;;;;;;;6522:128;6459:191;:::o;19204:372::-;19269:21;19307:1;19293:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19269:40;;19330:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19320:4;19325:1;19320:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19372:5;;;;;;;;;;;19354:4;19359:1;19354:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;19389:6;;;;;;;;;;;:57;;;19454:9;19479:1;19495:4;19522;19542:15;19389:179;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19258:318;19204:372;:::o;18363:352::-;18448:5;;;;;;;;;;;:13;;;18470:6;;;;;;;;;;;18479:11;18448:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18502:6;;;;;;;;;;;:22;;;18532:9;18565:5;;;;;;;;;;;18586:11;18612:1;18628;18644:22;;;;;;;;;;;18681:15;18502:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18363:352;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:126;806:7;846:42;839:5;835:54;824:65;;769:126;;;:::o;901:96::-;938:7;967:24;985:5;967:24;:::i;:::-;956:35;;901:96;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:122::-;2036:24;2054:5;2036:24;:::i;:::-;2029:5;2026:35;2016:63;;2075:1;2072;2065:12;2016:63;1963:122;:::o;2091:139::-;2137:5;2175:6;2162:20;2153:29;;2191:33;2218:5;2191:33;:::i;:::-;2091:139;;;;:::o;2236:329::-;2295:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:119;;;2350:79;;:::i;:::-;2312:119;2470:1;2495:53;2540:7;2531:6;2520:9;2516:22;2495:53;:::i;:::-;2485:63;;2441:117;2236:329;;;;:::o;2571:60::-;2599:3;2620:5;2613:12;;2571:60;;;:::o;2637:142::-;2687:9;2720:53;2738:34;2747:24;2765:5;2747:24;:::i;:::-;2738:34;:::i;:::-;2720:53;:::i;:::-;2707:66;;2637:142;;;:::o;2785:126::-;2835:9;2868:37;2899:5;2868:37;:::i;:::-;2855:50;;2785:126;;;:::o;2917:140::-;2981:9;3014:37;3045:5;3014:37;:::i;:::-;3001:50;;2917:140;;;:::o;3063:159::-;3164:51;3209:5;3164:51;:::i;:::-;3159:3;3152:64;3063:159;;:::o;3228:250::-;3335:4;3373:2;3362:9;3358:18;3350:26;;3386:85;3468:1;3457:9;3453:17;3444:6;3386:85;:::i;:::-;3228:250;;;;:::o;3484:104::-;3529:7;3558:24;3576:5;3558:24;:::i;:::-;3547:35;;3484:104;;;:::o;3594:142::-;3697:32;3723:5;3697:32;:::i;:::-;3692:3;3685:45;3594:142;;:::o;3742:254::-;3851:4;3889:2;3878:9;3874:18;3866:26;;3902:87;3986:1;3975:9;3971:17;3962:6;3902:87;:::i;:::-;3742:254;;;;:::o;4002:90::-;4036:7;4079:5;4072:13;4065:21;4054:32;;4002:90;;;:::o;4098:109::-;4179:21;4194:5;4179:21;:::i;:::-;4174:3;4167:34;4098:109;;:::o;4213:210::-;4300:4;4338:2;4327:9;4323:18;4315:26;;4351:65;4413:1;4402:9;4398:17;4389:6;4351:65;:::i;:::-;4213:210;;;;:::o;4429:765::-;4515:6;4523;4531;4539;4588:3;4576:9;4567:7;4563:23;4559:33;4556:120;;;4595:79;;:::i;:::-;4556:120;4715:1;4740:53;4785:7;4776:6;4765:9;4761:22;4740:53;:::i;:::-;4730:63;;4686:117;4842:2;4868:53;4913:7;4904:6;4893:9;4889:22;4868:53;:::i;:::-;4858:63;;4813:118;4970:2;4996:53;5041:7;5032:6;5021:9;5017:22;4996:53;:::i;:::-;4986:63;;4941:118;5098:2;5124:53;5169:7;5160:6;5149:9;5145:22;5124:53;:::i;:::-;5114:63;;5069:118;4429:765;;;;;;;:::o;5200:150::-;5274:9;5307:37;5338:5;5307:37;:::i;:::-;5294:50;;5200:150;;;:::o;5356:179::-;5467:61;5522:5;5467:61;:::i;:::-;5462:3;5455:74;5356:179;;:::o;5541:270::-;5658:4;5696:2;5685:9;5681:18;5673:26;;5709:95;5801:1;5790:9;5786:17;5777:6;5709:95;:::i;:::-;5541:270;;;;:::o;5817:147::-;5918:11;5955:3;5940:18;;5817:147;;;;:::o;5970:114::-;;:::o;6090:398::-;6249:3;6270:83;6351:1;6346:3;6270:83;:::i;:::-;6263:90;;6362:93;6451:3;6362:93;:::i;:::-;6480:1;6475:3;6471:11;6464:18;;6090:398;;;:::o;6494:379::-;6678:3;6700:147;6843:3;6700:147;:::i;:::-;6693:154;;6864:3;6857:10;;6494:379;;;:::o;6879:143::-;6936:5;6967:6;6961:13;6952:22;;6983:33;7010:5;6983:33;:::i;:::-;6879:143;;;;:::o;7028:351::-;7098:6;7147:2;7135:9;7126:7;7122:23;7118:32;7115:119;;;7153:79;;:::i;:::-;7115:119;7273:1;7298:64;7354:7;7345:6;7334:9;7330:22;7298:64;:::i;:::-;7288:74;;7244:128;7028:351;;;;:::o;7385:180::-;7433:77;7430:1;7423:88;7530:4;7527:1;7520:15;7554:4;7551:1;7544:15;7571:191;7611:4;7631:20;7649:1;7631:20;:::i;:::-;7626:25;;7665:20;7683:1;7665:20;:::i;:::-;7660:25;;7704:1;7701;7698:8;7695:34;;;7709:18;;:::i;:::-;7695:34;7754:1;7751;7747:9;7739:17;;7571:191;;;;:::o;7768:348::-;7808:7;7831:20;7849:1;7831:20;:::i;:::-;7826:25;;7865:20;7883:1;7865:20;:::i;:::-;7860:25;;8053:1;7985:66;7981:74;7978:1;7975:81;7970:1;7963:9;7956:17;7952:105;7949:131;;;8060:18;;:::i;:::-;7949:131;8108:1;8105;8101:9;8090:20;;7768:348;;;;:::o;8122:180::-;8170:77;8167:1;8160:88;8267:4;8264:1;8257:15;8291:4;8288:1;8281:15;8308:185;8348:1;8365:20;8383:1;8365:20;:::i;:::-;8360:25;;8399:20;8417:1;8399:20;:::i;:::-;8394:25;;8438:1;8428:35;;8443:18;;:::i;:::-;8428:35;8485:1;8482;8478:9;8473:14;;8308:185;;;;:::o;8499:305::-;8539:3;8558:20;8576:1;8558:20;:::i;:::-;8553:25;;8592:20;8610:1;8592:20;:::i;:::-;8587:25;;8746:1;8678:66;8674:74;8671:1;8668:81;8665:107;;;8752:18;;:::i;:::-;8665:107;8796:1;8793;8789:9;8782:16;;8499:305;;;;:::o;8810:143::-;8867:5;8898:6;8892:13;8883:22;;8914:33;8941:5;8914:33;:::i;:::-;8810:143;;;;:::o;8959:351::-;9029:6;9078:2;9066:9;9057:7;9053:23;9049:32;9046:119;;;9084:79;;:::i;:::-;9046:119;9204:1;9229:64;9285:7;9276:6;9265:9;9261:22;9229:64;:::i;:::-;9219:74;;9175:128;8959:351;;;;:::o;9316:553::-;9493:4;9531:3;9520:9;9516:19;9508:27;;9545:71;9613:1;9602:9;9598:17;9589:6;9545:71;:::i;:::-;9626:72;9694:2;9683:9;9679:18;9670:6;9626:72;:::i;:::-;9708;9776:2;9765:9;9761:18;9752:6;9708:72;:::i;:::-;9790;9858:2;9847:9;9843:18;9834:6;9790:72;:::i;:::-;9316:553;;;;;;;:::o;9875:169::-;9959:11;9993:6;9988:3;9981:19;10033:4;10028:3;10024:14;10009:29;;9875:169;;;;:::o;10050:225::-;10190:34;10186:1;10178:6;10174:14;10167:58;10259:8;10254:2;10246:6;10242:15;10235:33;10050:225;:::o;10281:366::-;10423:3;10444:67;10508:2;10503:3;10444:67;:::i;:::-;10437:74;;10520:93;10609:3;10520:93;:::i;:::-;10638:2;10633:3;10629:12;10622:19;;10281:366;;;:::o;10653:419::-;10819:4;10857:2;10846:9;10842:18;10834:26;;10906:9;10900:4;10896:20;10892:1;10881:9;10877:17;10870:47;10934:131;11060:4;10934:131;:::i;:::-;10926:139;;10653:419;;;:::o;11078:182::-;11218:34;11214:1;11206:6;11202:14;11195:58;11078:182;:::o;11266:366::-;11408:3;11429:67;11493:2;11488:3;11429:67;:::i;:::-;11422:74;;11505:93;11594:3;11505:93;:::i;:::-;11623:2;11618:3;11614:12;11607:19;;11266:366;;;:::o;11638:419::-;11804:4;11842:2;11831:9;11827:18;11819:26;;11891:9;11885:4;11881:20;11877:1;11866:9;11862:17;11855:47;11919:131;12045:4;11919:131;:::i;:::-;11911:139;;11638:419;;;:::o;12063:180::-;12111:77;12108:1;12101:88;12208:4;12205:1;12198:15;12232:4;12229:1;12222:15;12249:180;12297:77;12294:1;12287:88;12394:4;12391:1;12384:15;12418:4;12415:1;12408:15;12435:332;12556:4;12594:2;12583:9;12579:18;12571:26;;12607:71;12675:1;12664:9;12660:17;12651:6;12607:71;:::i;:::-;12688:72;12756:2;12745:9;12741:18;12732:6;12688:72;:::i;:::-;12435:332;;;;;:::o;12773:116::-;12843:21;12858:5;12843:21;:::i;:::-;12836:5;12833:32;12823:60;;12879:1;12876;12869:12;12823:60;12773:116;:::o;12895:137::-;12949:5;12980:6;12974:13;12965:22;;12996:30;13020:5;12996:30;:::i;:::-;12895:137;;;;:::o;13038:345::-;13105:6;13154:2;13142:9;13133:7;13129:23;13125:32;13122:119;;;13160:79;;:::i;:::-;13122:119;13280:1;13305:61;13358:7;13349:6;13338:9;13334:22;13305:61;:::i;:::-;13295:71;;13251:125;13038:345;;;;:::o;13389:85::-;13434:7;13463:5;13452:16;;13389:85;;;:::o;13480:158::-;13538:9;13571:61;13589:42;13598:32;13624:5;13598:32;:::i;:::-;13589:42;:::i;:::-;13571:61;:::i;:::-;13558:74;;13480:158;;;:::o;13644:147::-;13739:45;13778:5;13739:45;:::i;:::-;13734:3;13727:58;13644:147;;:::o;13797:114::-;13864:6;13898:5;13892:12;13882:22;;13797:114;;;:::o;13917:184::-;14016:11;14050:6;14045:3;14038:19;14090:4;14085:3;14081:14;14066:29;;13917:184;;;;:::o;14107:132::-;14174:4;14197:3;14189:11;;14227:4;14222:3;14218:14;14210:22;;14107:132;;;:::o;14245:108::-;14322:24;14340:5;14322:24;:::i;:::-;14317:3;14310:37;14245:108;;:::o;14359:179::-;14428:10;14449:46;14491:3;14483:6;14449:46;:::i;:::-;14527:4;14522:3;14518:14;14504:28;;14359:179;;;;:::o;14544:113::-;14614:4;14646;14641:3;14637:14;14629:22;;14544:113;;;:::o;14693:732::-;14812:3;14841:54;14889:5;14841:54;:::i;:::-;14911:86;14990:6;14985:3;14911:86;:::i;:::-;14904:93;;15021:56;15071:5;15021:56;:::i;:::-;15100:7;15131:1;15116:284;15141:6;15138:1;15135:13;15116:284;;;15217:6;15211:13;15244:63;15303:3;15288:13;15244:63;:::i;:::-;15237:70;;15330:60;15383:6;15330:60;:::i;:::-;15320:70;;15176:224;15163:1;15160;15156:9;15151:14;;15116:284;;;15120:14;15416:3;15409:10;;14817:608;;;14693:732;;;;:::o;15431:831::-;15694:4;15732:3;15721:9;15717:19;15709:27;;15746:71;15814:1;15803:9;15799:17;15790:6;15746:71;:::i;:::-;15827:80;15903:2;15892:9;15888:18;15879:6;15827:80;:::i;:::-;15954:9;15948:4;15944:20;15939:2;15928:9;15924:18;15917:48;15982:108;16085:4;16076:6;15982:108;:::i;:::-;15974:116;;16100:72;16168:2;16157:9;16153:18;16144:6;16100:72;:::i;:::-;16182:73;16250:3;16239:9;16235:19;16226:6;16182:73;:::i;:::-;15431:831;;;;;;;;:::o;16268:720::-;16503:4;16541:3;16530:9;16526:19;16518:27;;16555:79;16631:1;16620:9;16616:17;16607:6;16555:79;:::i;:::-;16681:9;16675:4;16671:20;16666:2;16655:9;16651:18;16644:48;16709:108;16812:4;16803:6;16709:108;:::i;:::-;16701:116;;16827:72;16895:2;16884:9;16880:18;16871:6;16827:72;:::i;:::-;16909;16977:2;16966:9;16962:18;16953:6;16909:72;:::i;:::-;16268:720;;;;;;;:::o;16994:807::-;17243:4;17281:3;17270:9;17266:19;17258:27;;17295:71;17363:1;17352:9;17348:17;17339:6;17295:71;:::i;:::-;17376:72;17444:2;17433:9;17429:18;17420:6;17376:72;:::i;:::-;17458:80;17534:2;17523:9;17519:18;17510:6;17458:80;:::i;:::-;17548;17624:2;17613:9;17609:18;17600:6;17548:80;:::i;:::-;17638:73;17706:3;17695:9;17691:19;17682:6;17638:73;:::i;:::-;17721;17789:3;17778:9;17774:19;17765:6;17721:73;:::i;:::-;16994:807;;;;;;;;;:::o;17807:663::-;17895:6;17903;17911;17960:2;17948:9;17939:7;17935:23;17931:32;17928:119;;;17966:79;;:::i;:::-;17928:119;18086:1;18111:64;18167:7;18158:6;18147:9;18143:22;18111:64;:::i;:::-;18101:74;;18057:128;18224:2;18250:64;18306:7;18297:6;18286:9;18282:22;18250:64;:::i;:::-;18240:74;;18195:129;18363:2;18389:64;18445:7;18436:6;18425:9;18421:22;18389:64;:::i;:::-;18379:74;;18334:129;17807:663;;;;;:::o

Swarm Source

ipfs://46110ac2c7107175301b3b7520ed3b0ea7bf55f15329c63d25f36066794d1bd6

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The XDAO Liquidity Hub swaps fee tokens for native tokens and allocates capital between X7DAO and other parts of the X7 Ecosystem.

Loading...
Loading
[ Download: CSV Export  ]
[ 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.