ETH Price: $2,145.08 (+3.52%)

Contract

0xE257B1ac7C12d5a4D30eB772129BD27bb554Df37
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Liquidity Pr...242864112026-01-21 23:20:3542 days ago1769037635IN
0xE257B1ac...bb554Df37
0 ETH0.000056992.03357461
Set Liquidity Pr...241827772026-01-07 12:23:3556 days ago1767788615IN
0xE257B1ac...bb554Df37
0 ETH0.000108482.26341705
Set Liquidity Pr...241543082026-01-03 13:06:2360 days ago1767445583IN
0xE257B1ac...bb554Df37
0 ETH0.000027870.58161325

View more zero value Internal Transactions in Advanced View mode

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
CMTDE_V3_MEVProtection

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai EvmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2026-01-03
*/

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

/**
 * ═══════════════════════════════════════════════════════════════════════════
 * CMTDE V3 MEV PROTECTION - ANTI-BOT & SANDWICH PROTECTION
 * ═══════════════════════════════════════════════════════════════════════════
 * 
 * @title CMTDE_V3_MEVProtection
 * @dev Protects against MEV attacks, sandwich attacks, and malicious bots
 * @notice Deploy with: (CMTDE_V3 address, ConfigRegistry address)
 * 
 * PROTECTION LAYERS:
 * 1. Per-address same-block transfer limit (always on)
 * 2. Per-address cooldown timer (configurable)
 * 3. Approved pools - whitelist specific DEX pools for user trading
 * 4. Global pool cooldown - 1 tx per pool per block (OFF by default, toggle on if attacked)
 * 
 * Updates to this module are INSTANT (no timelock) because:
 * - It's defensive - needs immediate response during attacks
 * - Cannot drain funds - only blocks/allows transfers
 * - Worst case: blocks legitimate users temporarily (fixable)
 * ═══════════════════════════════════════════════════════════════════════════
 */

interface ICMTDE_V3_ConfigRegistry {
    function maxSameBlockTransfers() external view returns (uint256);
    function cooldownPeriod() external view returns (uint256);
    function cooldownEnabled() external view returns (bool);
}

contract CMTDE_V3_MEVProtection {
    
    // ═══════════════════════════════════════════════════════════════════
    //                         STATE VARIABLES
    // ═══════════════════════════════════════════════════════════════════
    
    address public owner;
    address public pendingOwner;
    address public coreToken;
    address public configRegistry;
    
    // Blacklist for malicious addresses
    mapping(address => bool) public blacklisted;
    mapping(address => uint256) public blacklistExpiry;  // 0 = permanent
    
    // Whitelist for liquidity providers (bypass ALL restrictions)
    mapping(address => bool) public liquidityProviders;
    
    // Approved DEX pools (anyone can send to these)
    mapping(address => bool) public approvedPools;
    
    // Same-block transfer tracking per address
    mapping(address => uint256) public lastTransferBlock;
    mapping(address => uint256) public sameBlockTransferCount;
    
    // Cooldown tracking per address
    mapping(address => uint256) public lastTransferTime;
    
    // ═══════════════════════════════════════════════════════════════════
    //                    GLOBAL POOL COOLDOWN (Toggle)
    // ═══════════════════════════════════════════════════════════════════
    // When enabled: only 1 transaction per pool per block
    // This kills sandwich attacks even from multi-wallet bots
    // DEFAULT: OFF - turn on if you detect sandwich attacks
    // ═══════════════════════════════════════════════════════════════════
    
    bool public globalPoolCooldownEnabled = false;  // OFF by default
    mapping(address => uint256) public poolLastInteractionBlock;
    
    // ═══════════════════════════════════════════════════════════════════
    //                           EVENTS
    // ═══════════════════════════════════════════════════════════════════

    event AddressBlacklisted(address indexed account, uint256 expiry);
    event AddressUnblacklisted(address indexed account);
    event LiquidityProviderSet(address indexed account, bool status);
    event ApprovedPoolSet(address indexed pool, bool status);
    event SandwichAttemptBlocked(address indexed attacker, uint256 transferCount);
    event GlobalPoolCooldownBlocked(address indexed pool, address indexed sender, uint256 blockNumber);
    event GlobalPoolCooldownToggled(bool enabled);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    // ═══════════════════════════════════════════════════════════════════
    //                          MODIFIERS
    // ═══════════════════════════════════════════════════════════════════

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }
    
    modifier onlyOwnerOrToken() {
        require(msg.sender == owner || msg.sender == coreToken, "Not authorized");
        _;
    }

    // ═══════════════════════════════════════════════════════════════════
    //                         CONSTRUCTOR
    // ═══════════════════════════════════════════════════════════════════

    constructor(address _coreToken, address _configRegistry) {
        require(_coreToken != address(0), "Zero token");
        require(_configRegistry != address(0), "Zero config");
        owner = msg.sender;
        coreToken = _coreToken;
        configRegistry = _configRegistry;
        
        // Pre-whitelist deployer wallet as liquidity provider
        liquidityProviders[0x743A65950A455f97B8F42017b1891C907550753E] = true;
        emit LiquidityProviderSet(0x743A65950A455f97B8F42017b1891C907550753E, true);
        
        // Pre-whitelist Gnosis Safe as liquidity provider
        liquidityProviders[0xaC0b40C32711dD9C0b9D7343A8743066412ba3AA] = true;
        emit LiquidityProviderSet(0xaC0b40C32711dD9C0b9D7343A8743066412ba3AA, true);
    }

    // ═══════════════════════════════════════════════════════════════════
    //                    TRANSFER VALIDATION
    // ═══════════════════════════════════════════════════════════════════

    /**
     * @dev Called by CMTDE_V3 on every transfer to validate
     * @param from Sender address
     * @param to Recipient address
     * @param amount Transfer amount (unused but available for future rules)
     */
    function checkTransfer(address from, address to, uint256 amount) external onlyOwnerOrToken {
        // Skip checks for owner and LPs
        if (from == owner || liquidityProviders[from]) {
            return;
        }
        
        ICMTDE_V3_ConfigRegistry config = ICMTDE_V3_ConfigRegistry(configRegistry);
        
        // Check blacklist (with expiry)
        require(!_isBlacklisted(from), "Sender blacklisted");
        require(!_isBlacklisted(to), "Recipient blacklisted");
        
        // ═══════════════════════════════════════════════════════════════
        // GLOBAL POOL COOLDOWN (only when enabled)
        // Limits each approved pool to 1 transaction per block
        // This prevents multi-wallet sandwich attacks
        // ═══════════════════════════════════════════════════════════════
        if (globalPoolCooldownEnabled && approvedPools[to]) {
            if (poolLastInteractionBlock[to] == block.number) {
                emit GlobalPoolCooldownBlocked(to, from, block.number);
                revert("Pool already received tx this block");
            }
            poolLastInteractionBlock[to] = block.number;
        }
        
        // Sandwich protection - limit same-block transfers per address
        uint256 maxSameBlock = config.maxSameBlockTransfers();
        if (maxSameBlock > 0) {
            if (lastTransferBlock[from] == block.number) {
                sameBlockTransferCount[from]++;
                if (sameBlockTransferCount[from] > maxSameBlock) {
                    emit SandwichAttemptBlocked(from, sameBlockTransferCount[from]);
                    revert("Too many transfers in same block");
                }
            } else {
                lastTransferBlock[from] = block.number;
                sameBlockTransferCount[from] = 1;
            }
        }
        
        // Cooldown check
        if (config.cooldownEnabled()) {
            uint256 cooldown = config.cooldownPeriod();
            if (cooldown > 0) {
                require(
                    block.timestamp >= lastTransferTime[from] + cooldown,
                    "Cooldown active"
                );
            }
        }
        
        // Update last transfer time
        lastTransferTime[from] = block.timestamp;
        
        // Silence unused parameter warning
        amount;
    }

    // ═══════════════════════════════════════════════════════════════════
    //                    APPROVED POOL MANAGEMENT
    // ═══════════════════════════════════════════════════════════════════

    /**
     * @dev Approve a DEX pool for user trading
     * @param pool The pool contract address (e.g., Uniswap V2 pair)
     * @param status True to approve, false to revoke
     */
    function setApprovedPool(address pool, bool status) external onlyOwner {
        require(pool != address(0), "Zero address");
        approvedPools[pool] = status;
        emit ApprovedPoolSet(pool, status);
    }
    
    /**
     * @dev Batch approve/revoke multiple pools
     */
    function batchSetApprovedPools(address[] calldata pools, bool status) external onlyOwner {
        uint256 length = pools.length;
        require(length <= 20, "Max 20 pools");
        
        for (uint256 i = 0; i < length;) {
            if (pools[i] != address(0)) {
                approvedPools[pools[i]] = status;
                emit ApprovedPoolSet(pools[i], status);
            }
            unchecked { ++i; }
        }
    }
    
    /**
     * @dev Check if a pool is approved
     */
    function isApprovedPool(address pool) external view returns (bool) {
        return approvedPools[pool];
    }
    
    /**
     * @dev Unapprove a single pool (convenience function)
     * @notice Same as setApprovedPool(pool, false)
     */
    function unapprovePool(address pool) external onlyOwner {
        require(pool != address(0), "Zero address");
        approvedPools[pool] = false;
        emit ApprovedPoolSet(pool, false);
    }
    
    /**
     * @dev Batch unapprove multiple pools (convenience function)
     * @notice Same as batchSetApprovedPools(pools, false)
     */
    function batchUnapprovePools(address[] calldata pools) external onlyOwner {
        uint256 length = pools.length;
        require(length <= 20, "Max 20 pools");
        
        for (uint256 i = 0; i < length;) {
            if (pools[i] != address(0)) {
                approvedPools[pools[i]] = false;
                emit ApprovedPoolSet(pools[i], false);
            }
            unchecked { ++i; }
        }
    }

    // ═══════════════════════════════════════════════════════════════════
    //                    GLOBAL POOL COOLDOWN TOGGLE
    // ═══════════════════════════════════════════════════════════════════

    /**
     * @dev Toggle global pool cooldown on/off
     * @notice Turn ON if you detect sandwich attacks on your pools
     *         Turn OFF if legitimate trading is being blocked
     * 
     * When ON:  Only 1 transaction per pool per block (kills all sandwiches)
     * When OFF: Normal trading, per-user cooldowns still apply
     */
    function setGlobalPoolCooldownEnabled(bool enabled) external onlyOwner {
        globalPoolCooldownEnabled = enabled;
        emit GlobalPoolCooldownToggled(enabled);
    }

    // ═══════════════════════════════════════════════════════════════════
    //                      BLACKLIST MANAGEMENT
    // ═══════════════════════════════════════════════════════════════════

    /**
     * @dev Add address to blacklist
     * @param account Address to blacklist
     * @param duration Duration in seconds (0 = permanent)
     */
    function blacklist(address account, uint256 duration) external onlyOwner {
        require(account != address(0), "Zero address");
        require(account != owner, "Cannot blacklist owner");
        
        blacklisted[account] = true;
        blacklistExpiry[account] = duration > 0 ? block.timestamp + duration : 0;
        
        emit AddressBlacklisted(account, blacklistExpiry[account]);
    }
    
    /**
     * @dev Batch blacklist multiple addresses
     */
    function batchBlacklist(address[] calldata accounts, uint256 duration) external onlyOwner {
        uint256 length = accounts.length;
        require(length <= 100, "Max 100 addresses");
        
        uint256 expiry = duration > 0 ? block.timestamp + duration : 0;
        
        for (uint256 i = 0; i < length;) {
            if (accounts[i] != address(0) && accounts[i] != owner) {
                blacklisted[accounts[i]] = true;
                blacklistExpiry[accounts[i]] = expiry;
                emit AddressBlacklisted(accounts[i], expiry);
            }
            unchecked { ++i; }
        }
    }
    
    /**
     * @dev Remove address from blacklist
     */
    function unblacklist(address account) external onlyOwner {
        blacklisted[account] = false;
        blacklistExpiry[account] = 0;
        emit AddressUnblacklisted(account);
    }
    
    /**
     * @dev Batch remove from blacklist
     */
    function batchUnblacklist(address[] calldata accounts) external onlyOwner {
        uint256 length = accounts.length;
        require(length <= 100, "Max 100 addresses");
        
        for (uint256 i = 0; i < length;) {
            blacklisted[accounts[i]] = false;
            blacklistExpiry[accounts[i]] = 0;
            emit AddressUnblacklisted(accounts[i]);
            unchecked { ++i; }
        }
    }
    
    /**
     * @dev Check if address is currently blacklisted (considers expiry)
     */
    function _isBlacklisted(address account) internal view returns (bool) {
        if (!blacklisted[account]) return false;
        
        // Check if blacklist has expired
        uint256 expiry = blacklistExpiry[account];
        if (expiry > 0 && block.timestamp > expiry) {
            return false; // Expired
        }
        
        return true;
    }
    
    /**
     * @dev Public view for blacklist status
     */
    function isBlacklisted(address account) external view returns (bool) {
        return _isBlacklisted(account);
    }

    // ═══════════════════════════════════════════════════════════════════
    //                   LIQUIDITY PROVIDER MANAGEMENT
    // ═══════════════════════════════════════════════════════════════════

    /**
     * @dev Set liquidity provider status (LPs bypass ALL restrictions)
     */
    function setLiquidityProvider(address account, bool status) external onlyOwner {
        require(account != address(0), "Zero address");
        liquidityProviders[account] = status;
        emit LiquidityProviderSet(account, status);
    }
    
    /**
     * @dev Batch set liquidity providers
     */
    function batchSetLiquidityProviders(address[] calldata accounts, bool status) external onlyOwner {
        uint256 length = accounts.length;
        require(length <= 50, "Max 50 addresses");
        
        for (uint256 i = 0; i < length;) {
            if (accounts[i] != address(0)) {
                liquidityProviders[accounts[i]] = status;
                emit LiquidityProviderSet(accounts[i], status);
            }
            unchecked { ++i; }
        }
    }
    
    /**
     * @dev Check if address is a liquidity provider
     */
    function isLiquidityProvider(address account) external view returns (bool) {
        return liquidityProviders[account];
    }

    // ═══════════════════════════════════════════════════════════════════
    //                      VIEW FUNCTIONS
    // ═══════════════════════════════════════════════════════════════════

    /**
     * @dev Get transfer stats for an address
     */
    function getTransferStats(address account) external view returns (
        uint256 lastBlock,
        uint256 sameBlockCount,
        uint256 lastTime,
        bool isBlack,
        bool isLP
    ) {
        lastBlock = lastTransferBlock[account];
        sameBlockCount = lastTransferBlock[account] == block.number ? sameBlockTransferCount[account] : 0;
        lastTime = lastTransferTime[account];
        isBlack = _isBlacklisted(account);
        isLP = liquidityProviders[account];
    }
    
    /**
     * @dev Get blacklist details
     */
    function getBlacklistInfo(address account) external view returns (
        bool isBlack,
        uint256 expiry,
        bool isPermanent,
        uint256 timeRemaining
    ) {
        isBlack = _isBlacklisted(account);
        expiry = blacklistExpiry[account];
        isPermanent = blacklisted[account] && expiry == 0;
        
        if (isBlack && expiry > 0 && expiry > block.timestamp) {
            timeRemaining = expiry - block.timestamp;
        }
    }
    
    /**
     * @dev Get pool status and cooldown info
     */
    function getPoolStatus(address pool) external view returns (
        bool isApproved,
        uint256 lastInteractionBlock,
        bool canReceiveThisBlock,
        bool globalCooldownActive
    ) {
        isApproved = approvedPools[pool];
        lastInteractionBlock = poolLastInteractionBlock[pool];
        globalCooldownActive = globalPoolCooldownEnabled;
        canReceiveThisBlock = !globalPoolCooldownEnabled || poolLastInteractionBlock[pool] != block.number;
    }

    // ═══════════════════════════════════════════════════════════════════
    //                      CONFIGURATION
    // ═══════════════════════════════════════════════════════════════════

    function setConfigRegistry(address _configRegistry) external onlyOwner {
        require(_configRegistry != address(0), "Zero address");
        configRegistry = _configRegistry;
    }

    // ═══════════════════════════════════════════════════════════════════
    //                      OWNERSHIP (2-step)
    // ═══════════════════════════════════════════════════════════════════

    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Zero address");
        pendingOwner = newOwner;
    }

    function acceptOwnership() external {
        require(msg.sender == pendingOwner, "Not pending owner");
        address oldOwner = owner;
        owner = pendingOwner;
        pendingOwner = address(0);
        emit OwnershipTransferred(oldOwner, owner);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_coreToken","type":"address"},{"internalType":"address","name":"_configRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"AddressBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AddressUnblacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ApprovedPoolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"GlobalPoolCooldownBlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"GlobalPoolCooldownToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"LiquidityProviderSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"attacker","type":"address"},{"indexed":false,"internalType":"uint256","name":"transferCount","type":"uint256"}],"name":"SandwichAttemptBlocked","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvedPools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"batchBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"batchSetApprovedPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"batchSetLiquidityProviders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"batchUnapprovePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"batchUnblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklistExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"checkTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"configRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coreToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBlacklistInfo","outputs":[{"internalType":"bool","name":"isBlack","type":"bool"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"isPermanent","type":"bool"},{"internalType":"uint256","name":"timeRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolStatus","outputs":[{"internalType":"bool","name":"isApproved","type":"bool"},{"internalType":"uint256","name":"lastInteractionBlock","type":"uint256"},{"internalType":"bool","name":"canReceiveThisBlock","type":"bool"},{"internalType":"bool","name":"globalCooldownActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTransferStats","outputs":[{"internalType":"uint256","name":"lastBlock","type":"uint256"},{"internalType":"uint256","name":"sameBlockCount","type":"uint256"},{"internalType":"uint256","name":"lastTime","type":"uint256"},{"internalType":"bool","name":"isBlack","type":"bool"},{"internalType":"bool","name":"isLP","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalPoolCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isApprovedPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isLiquidityProvider","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTransferBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTransferTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityProviders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolLastInteractionBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sameBlockTransferCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_configRegistry","type":"address"}],"name":"setConfigRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setGlobalPoolCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setLiquidityProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"unapprovePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600b805460ff191690553480156200001a575f80fd5b5060405162001fe438038062001fe48339810160408190526200003d9162000204565b6001600160a01b038216620000865760405162461bcd60e51b815260206004820152600a6024820152692d32b937903a37b5b2b760b11b60448201526064015b60405180910390fd5b6001600160a01b038116620000cc5760405162461bcd60e51b815260206004820152600b60248201526a5a65726f20636f6e66696760a81b60448201526064016200007d565b5f8054336001600160a01b03199182161782556002805482166001600160a01b03868116919091179091556003805490921690841617905573743a65950a455f97b8f42017b1891c907550753e90819052600660209081527f1f05ea26883a6ed9941ab4ab755b0d92ec3bf4058ba0510dcf9ef16356b7103a805460ff191660019081179091556040519081525f8051602062001fc4833981519152910160405180910390a273ac0b40c32711dd9c0b9d7343a8743066412ba3aa5f819052600660209081527ff61dc0e3e2bacfefa721d90f28d90d44d24f0c2a60a744e53172df0a32c92193805460ff191660019081179091556040519081525f8051602062001fc4833981519152910160405180910390a250506200023a565b80516001600160a01b0381168114620001ff575f80fd5b919050565b5f806040838503121562000216575f80fd5b6200022183620001e8565b91506200023160208401620001e8565b90509250929050565b611d7c80620002485f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638da5cb5b11610114578063dbd94267116100a9578063e90feb0611610079578063e90feb061461054f578063f0bbcec414610562578063f1361f7814610584578063f2fde38b146105a3578063fe575a87146105b6575f80fd5b8063dbd94267146104e8578063dd7c96ed1461050a578063e30c397814610529578063e8f6ae291461053c575f80fd5b8063c1efcca4116100e4578063c1efcca41461048d578063cc1dd94f146104a0578063ce0bbf24146104b3578063dbac26e9146104c6575f80fd5b80638da5cb5b1461041257806395bae2fe1461042457806399f7854a1461044f5780639ffb7bfc1461047a575f80fd5b80634898e9521161019557806379ba50971161016557806379ba50971461037a5780637d09f8db146103825780637e3b6451146103955780637ef563d6146103d45780638712523e146103f3575f80fd5b80634898e952146103065780636b8fbdc41461031957806375e3661e14610354578063789241f614610367575f80fd5b8063244bb309116101d0578063244bb309146102b057806328a19d8e146102c35780632cb8dbe3146102e057806332e822e4146102f3575f80fd5b80630c2b72e9146102015780630d2d8a31146102315780631074bce51461025e57806315d9d2f914610273575b5f80fd5b600254610214906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61025061023f366004611a42565b600a6020525f908152604090205481565b604051908152602001610228565b61027161026c366004611a62565b6105c9565b005b610286610281366004611a42565b610707565b60408051941515855260208501939093529015159183019190915215156060820152608001610228565b600354610214906001600160a01b031681565b600b546102d09060ff1681565b6040519015158152602001610228565b6102716102ee366004611ae2565b610763565b610271610301366004611b35565b6108de565b610271610314366004611b6a565b610971565b61032c610327366004611a42565b6109e1565b6040805194151585526020850193909352901515918301919091526060820152608001610228565b610271610362366004611a42565b610a56565b610271610375366004611b85565b610ad4565b610271610c4f565b610271610390366004611a42565b610cf6565b6103a86103a3366004611a42565b610d86565b60408051958652602086019490945292840191909152151560608301521515608082015260a001610228565b6102506103e2366004611a42565b600c6020525f908152604090205481565b610250610401366004611a42565b60086020525f908152604090205481565b5f54610214906001600160a01b031681565b6102d0610432366004611a42565b6001600160a01b03165f9081526007602052604090205460ff1690565b6102d061045d366004611a42565b6001600160a01b03165f9081526006602052604090205460ff1690565b610271610488366004611b85565b610e1a565b61027161049b366004611a42565b610f77565b6102716104ae366004611bc4565b610fe8565b6102716104c1366004611bfd565b611512565b6102d06104d4366004611a42565b60046020525f908152604090205460ff1681565b6102d06104f6366004611a42565b60066020525f908152604090205460ff1681565b610250610518366004611a42565b60096020525f908152604090205481565b600154610214906001600160a01b031681565b61027161054a366004611b35565b611741565b61027161055d366004611ae2565b6117e7565b6102d0610570366004611a42565b60076020525f908152604090205460ff1681565b610250610592366004611a42565b60056020525f908152604090205481565b6102716105b1366004611a42565b611944565b6102d06105c4366004611a42565b6119b5565b5f546001600160a01b031633146105fb5760405162461bcd60e51b81526004016105f290611c45565b60405180910390fd5b6001600160a01b0382166106215760405162461bcd60e51b81526004016105f290611c68565b5f546001600160a01b03908116908316036106775760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba10313630b1b5b634b9ba1037bbb732b960511b60448201526064016105f2565b6001600160a01b0382165f908152600460205260409020805460ff19166001179055806106a4575f6106ae565b6106ae8142611ca2565b6001600160a01b0383165f81815260056020526040908190208390555190917f1d2c7e6b911a4ad6c07d780ccd7e533749bff42c2b1d161c21f3fc7c830eb2cc916106fb91815260200190565b60405180910390a25050565b6001600160a01b0381165f90815260076020908152604080832054600c909252822054600b5460ff9283169391921680158061075a57506001600160a01b0385165f908152600c60205260409020544314155b91509193509193565b5f546001600160a01b0316331461078c5760405162461bcd60e51b81526004016105f290611c45565b8160328111156107d15760405162461bcd60e51b815260206004820152601060248201526f4d61782035302061646472657373657360801b60448201526064016105f2565b5f5b818110156108d7575f8585838181106107ee576107ee611cb5565b90506020020160208101906108039190611a42565b6001600160a01b0316146108cf578260065f87878581811061082757610827611cb5565b905060200201602081019061083c9190611a42565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905584848281811061087557610875611cb5565b905060200201602081019061088a9190611a42565b6001600160a01b03167fc63b2cd57d159035214234fce2c910c2e679c9647b0afc09960d6e8cb1574f07846040516108c6911515815260200190565b60405180910390a25b6001016107d3565b5050505050565b5f546001600160a01b031633146109075760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b03821661092d5760405162461bcd60e51b81526004016105f290611c68565b6001600160a01b0382165f81815260076020908152604091829020805460ff191685151590811790915591519182525f80516020611d2783398151915291016106fb565b5f546001600160a01b0316331461099a5760405162461bcd60e51b81526004016105f290611c45565b600b805460ff19168215159081179091556040519081527f6afe8bf5c567c2946df3e3c8b61006cec0e2cf7ac66d2145931e7adb86630e039060200160405180910390a150565b5f805f806109ee856119c5565b6001600160a01b0386165f90815260056020908152604080832054600490925290912054919550935060ff168015610a24575082155b9150838015610a3257505f83115b8015610a3d57504283115b15610a4f57610a4c4284611cc9565b90505b9193509193565b5f546001600160a01b03163314610a7f5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b0381165f818152600460209081526040808320805460ff191690556005909152808220829055517fb2aa8f2cce614e8fceaca560dbaf2a8ed3083e4ab371b10bf6d02e359216767a9190a250565b5f546001600160a01b03163314610afd5760405162461bcd60e51b81526004016105f290611c45565b806064811115610b435760405162461bcd60e51b81526020600482015260116024820152704d6178203130302061646472657373657360781b60448201526064016105f2565b5f5b81811015610c49575f60045f868685818110610b6357610b63611cb5565b9050602002016020810190610b789190611a42565b6001600160a01b0316815260208101919091526040015f908120805460ff191692151592909217909155600581868685818110610bb757610bb7611cb5565b9050602002016020810190610bcc9190611a42565b6001600160a01b0316815260208101919091526040015f2055838382818110610bf757610bf7611cb5565b9050602002016020810190610c0c9190611a42565b6001600160a01b03167fb2aa8f2cce614e8fceaca560dbaf2a8ed3083e4ab371b10bf6d02e359216767a60405160405180910390a2600101610b45565b50505050565b6001546001600160a01b03163314610c9d5760405162461bcd60e51b81526020600482015260116024820152702737ba103832b73234b7339037bbb732b960791b60448201526064016105f2565b5f8054600180546001600160a01b038082166001600160a01b031980861682178755909216909255604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b038116610d455760405162461bcd60e51b81526004016105f290611c68565b6001600160a01b0381165f818152600760209081526040808320805460ff19169055519182525f80516020611d27833981519152910160405180910390a250565b6001600160a01b0381165f9081526008602052604081205490808080438514610daf575f610dc8565b6001600160a01b0386165f908152600960205260409020545b6001600160a01b0387165f908152600a60205260409020549094509250610dee866119c5565b6001600160a01b039096165f90815260066020526040902054949693959294929360ff90931692915050565b5f546001600160a01b03163314610e435760405162461bcd60e51b81526004016105f290611c45565b806014811115610e845760405162461bcd60e51b815260206004820152600c60248201526b4d617820323020706f6f6c7360a01b60448201526064016105f2565b5f5b81811015610c49575f848483818110610ea157610ea1611cb5565b9050602002016020810190610eb69190611a42565b6001600160a01b031614610f6f575f60075f868685818110610eda57610eda611cb5565b9050602002016020810190610eef9190611a42565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055838382818110610f2857610f28611cb5565b9050602002016020810190610f3d9190611a42565b6001600160a01b03165f80516020611d278339815191525f604051610f66911515815260200190565b60405180910390a25b600101610e86565b5f546001600160a01b03163314610fa05760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b038116610fc65760405162461bcd60e51b81526004016105f290611c68565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633148061100a57506002546001600160a01b031633145b6110475760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016105f2565b5f546001600160a01b038481169116148061107957506001600160a01b0383165f9081526006602052604090205460ff165b61150d576003546001600160a01b0316611092846119c5565b156110d45760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dadb1a5cdd195960721b60448201526064016105f2565b6110dd836119c5565b156111225760405162461bcd60e51b8152602060048201526015602482015274149958da5c1a595b9d08189b1858dadb1a5cdd1959605a1b60448201526064016105f2565b600b5460ff16801561114b57506001600160a01b0383165f9081526007602052604090205460ff165b1561122b576001600160a01b0383165f908152600c602052604090205443900361121057836001600160a01b0316836001600160a01b03167faca151542e05ac60ea11580de72e967d4700b2049da5556741c1bdfeeea47434436040516111b491815260200190565b60405180910390a360405162461bcd60e51b815260206004820152602360248201527f506f6f6c20616c7265616479207265636569766564207478207468697320626c6044820152626f636b60e81b60648201526084016105f2565b6001600160a01b0383165f908152600c602052604090204390555b5f816001600160a01b031663d3f43cac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128c9190611cdc565b905080156113bc576001600160a01b0385165f90815260086020526040902054439003611393576001600160a01b0385165f9081526009602052604081208054916112d683611cf3565b90915550506001600160a01b0385165f9081526009602052604090205481101561138e576001600160a01b0385165f818152600960209081526040918290205491519182527f1041c3757ba900700fbd96ca123d143bc31314c38ac5c72c644b8becd0b52da7910160405180910390a260405162461bcd60e51b815260206004820181905260248201527f546f6f206d616e79207472616e736665727320696e2073616d6520626c6f636b60448201526064016105f2565b6113bc565b6001600160a01b0385165f90815260086020908152604080832043905560099091529020600190555b816001600160a01b031663a985ceef6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141c9190611d0b565b156114f0575f826001600160a01b03166304646a496040518163ffffffff1660e01b8152600401602060405180830381865afa15801561145e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114829190611cdc565b905080156114ee576001600160a01b0386165f908152600a60205260409020546114ad908290611ca2565b4210156114ee5760405162461bcd60e51b815260206004820152600f60248201526e436f6f6c646f776e2061637469766560881b60448201526064016105f2565b505b50506001600160a01b0383165f908152600a602052604090204290555b505050565b5f546001600160a01b0316331461153b5760405162461bcd60e51b81526004016105f290611c45565b8160648111156115815760405162461bcd60e51b81526020600482015260116024820152704d6178203130302061646472657373657360781b60448201526064016105f2565b5f80831161158f575f611599565b6115998342611ca2565b90505f5b82811015611739575f8686838181106115b8576115b8611cb5565b90506020020160208101906115cd9190611a42565b6001600160a01b03161415801561161d57505f546001600160a01b03168686838181106115fc576115fc611cb5565b90506020020160208101906116119190611a42565b6001600160a01b031614155b1561173157600160045f88888581811061163957611639611cb5565b905060200201602081019061164e9190611a42565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055508160055f88888581811061169957611699611cb5565b90506020020160208101906116ae9190611a42565b6001600160a01b0316815260208101919091526040015f20558585828181106116d9576116d9611cb5565b90506020020160208101906116ee9190611a42565b6001600160a01b03167f1d2c7e6b911a4ad6c07d780ccd7e533749bff42c2b1d161c21f3fc7c830eb2cc8360405161172891815260200190565b60405180910390a25b60010161159d565b505050505050565b5f546001600160a01b0316331461176a5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b0382166117905760405162461bcd60e51b81526004016105f290611c68565b6001600160a01b0382165f81815260066020908152604091829020805460ff191685151590811790915591519182527fc63b2cd57d159035214234fce2c910c2e679c9647b0afc09960d6e8cb1574f0791016106fb565b5f546001600160a01b031633146118105760405162461bcd60e51b81526004016105f290611c45565b8160148111156118515760405162461bcd60e51b815260206004820152600c60248201526b4d617820323020706f6f6c7360a01b60448201526064016105f2565b5f5b818110156108d7575f85858381811061186e5761186e611cb5565b90506020020160208101906118839190611a42565b6001600160a01b03161461193c578260075f8787858181106118a7576118a7611cb5565b90506020020160208101906118bc9190611a42565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558484828181106118f5576118f5611cb5565b905060200201602081019061190a9190611a42565b6001600160a01b03165f80516020611d2783398151915284604051611933911515815260200190565b60405180910390a25b600101611853565b5f546001600160a01b0316331461196d5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b0381166119935760405162461bcd60e51b81526004016105f290611c68565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f6119bf826119c5565b92915050565b6001600160a01b0381165f9081526004602052604081205460ff166119eb57505f919050565b6001600160a01b0382165f908152600560205260409020548015801590611a1157508042115b15611a1e57505f92915050565b50600192915050565b80356001600160a01b0381168114611a3d575f80fd5b919050565b5f60208284031215611a52575f80fd5b611a5b82611a27565b9392505050565b5f8060408385031215611a73575f80fd5b611a7c83611a27565b946020939093013593505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b6020830191508360208260051b8501011115611acb575f80fd5b9250929050565b8015158114611adf575f80fd5b50565b5f805f60408486031215611af4575f80fd5b833567ffffffffffffffff811115611b0a575f80fd5b611b1686828701611a8a565b9094509250506020840135611b2a81611ad2565b809150509250925092565b5f8060408385031215611b46575f80fd5b611b4f83611a27565b91506020830135611b5f81611ad2565b809150509250929050565b5f60208284031215611b7a575f80fd5b8135611a5b81611ad2565b5f8060208385031215611b96575f80fd5b823567ffffffffffffffff811115611bac575f80fd5b611bb885828601611a8a565b90969095509350505050565b5f805f60608486031215611bd6575f80fd5b611bdf84611a27565b9250611bed60208501611a27565b9150604084013590509250925092565b5f805f60408486031215611c0f575f80fd5b833567ffffffffffffffff811115611c25575f80fd5b611c3186828701611a8a565b909790965060209590950135949350505050565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119bf576119bf611c8e565b634e487b7160e01b5f52603260045260245ffd5b818103818111156119bf576119bf611c8e565b5f60208284031215611cec575f80fd5b5051919050565b5f60018201611d0457611d04611c8e565b5060010190565b5f60208284031215611d1b575f80fd5b8151611a5b81611ad256fe15794d6443526c982fdfd07ec4b7a930e7d0b0bcf26bd81628a56e65341d3f54a264697066735822122005026c22ead0e4908765ec6136f76823d12cd3656f8375ed555c0b266943353764736f6c63430008150033c63b2cd57d159035214234fce2c910c2e679c9647b0afc09960d6e8cb1574f07000000000000000000000000cd8eabac84ed4bf824a414a04cc6be7e3b0d140d000000000000000000000000b24adaacebb8f84025a89816ce4784177610b288

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638da5cb5b11610114578063dbd94267116100a9578063e90feb0611610079578063e90feb061461054f578063f0bbcec414610562578063f1361f7814610584578063f2fde38b146105a3578063fe575a87146105b6575f80fd5b8063dbd94267146104e8578063dd7c96ed1461050a578063e30c397814610529578063e8f6ae291461053c575f80fd5b8063c1efcca4116100e4578063c1efcca41461048d578063cc1dd94f146104a0578063ce0bbf24146104b3578063dbac26e9146104c6575f80fd5b80638da5cb5b1461041257806395bae2fe1461042457806399f7854a1461044f5780639ffb7bfc1461047a575f80fd5b80634898e9521161019557806379ba50971161016557806379ba50971461037a5780637d09f8db146103825780637e3b6451146103955780637ef563d6146103d45780638712523e146103f3575f80fd5b80634898e952146103065780636b8fbdc41461031957806375e3661e14610354578063789241f614610367575f80fd5b8063244bb309116101d0578063244bb309146102b057806328a19d8e146102c35780632cb8dbe3146102e057806332e822e4146102f3575f80fd5b80630c2b72e9146102015780630d2d8a31146102315780631074bce51461025e57806315d9d2f914610273575b5f80fd5b600254610214906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61025061023f366004611a42565b600a6020525f908152604090205481565b604051908152602001610228565b61027161026c366004611a62565b6105c9565b005b610286610281366004611a42565b610707565b60408051941515855260208501939093529015159183019190915215156060820152608001610228565b600354610214906001600160a01b031681565b600b546102d09060ff1681565b6040519015158152602001610228565b6102716102ee366004611ae2565b610763565b610271610301366004611b35565b6108de565b610271610314366004611b6a565b610971565b61032c610327366004611a42565b6109e1565b6040805194151585526020850193909352901515918301919091526060820152608001610228565b610271610362366004611a42565b610a56565b610271610375366004611b85565b610ad4565b610271610c4f565b610271610390366004611a42565b610cf6565b6103a86103a3366004611a42565b610d86565b60408051958652602086019490945292840191909152151560608301521515608082015260a001610228565b6102506103e2366004611a42565b600c6020525f908152604090205481565b610250610401366004611a42565b60086020525f908152604090205481565b5f54610214906001600160a01b031681565b6102d0610432366004611a42565b6001600160a01b03165f9081526007602052604090205460ff1690565b6102d061045d366004611a42565b6001600160a01b03165f9081526006602052604090205460ff1690565b610271610488366004611b85565b610e1a565b61027161049b366004611a42565b610f77565b6102716104ae366004611bc4565b610fe8565b6102716104c1366004611bfd565b611512565b6102d06104d4366004611a42565b60046020525f908152604090205460ff1681565b6102d06104f6366004611a42565b60066020525f908152604090205460ff1681565b610250610518366004611a42565b60096020525f908152604090205481565b600154610214906001600160a01b031681565b61027161054a366004611b35565b611741565b61027161055d366004611ae2565b6117e7565b6102d0610570366004611a42565b60076020525f908152604090205460ff1681565b610250610592366004611a42565b60056020525f908152604090205481565b6102716105b1366004611a42565b611944565b6102d06105c4366004611a42565b6119b5565b5f546001600160a01b031633146105fb5760405162461bcd60e51b81526004016105f290611c45565b60405180910390fd5b6001600160a01b0382166106215760405162461bcd60e51b81526004016105f290611c68565b5f546001600160a01b03908116908316036106775760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba10313630b1b5b634b9ba1037bbb732b960511b60448201526064016105f2565b6001600160a01b0382165f908152600460205260409020805460ff19166001179055806106a4575f6106ae565b6106ae8142611ca2565b6001600160a01b0383165f81815260056020526040908190208390555190917f1d2c7e6b911a4ad6c07d780ccd7e533749bff42c2b1d161c21f3fc7c830eb2cc916106fb91815260200190565b60405180910390a25050565b6001600160a01b0381165f90815260076020908152604080832054600c909252822054600b5460ff9283169391921680158061075a57506001600160a01b0385165f908152600c60205260409020544314155b91509193509193565b5f546001600160a01b0316331461078c5760405162461bcd60e51b81526004016105f290611c45565b8160328111156107d15760405162461bcd60e51b815260206004820152601060248201526f4d61782035302061646472657373657360801b60448201526064016105f2565b5f5b818110156108d7575f8585838181106107ee576107ee611cb5565b90506020020160208101906108039190611a42565b6001600160a01b0316146108cf578260065f87878581811061082757610827611cb5565b905060200201602081019061083c9190611a42565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905584848281811061087557610875611cb5565b905060200201602081019061088a9190611a42565b6001600160a01b03167fc63b2cd57d159035214234fce2c910c2e679c9647b0afc09960d6e8cb1574f07846040516108c6911515815260200190565b60405180910390a25b6001016107d3565b5050505050565b5f546001600160a01b031633146109075760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b03821661092d5760405162461bcd60e51b81526004016105f290611c68565b6001600160a01b0382165f81815260076020908152604091829020805460ff191685151590811790915591519182525f80516020611d2783398151915291016106fb565b5f546001600160a01b0316331461099a5760405162461bcd60e51b81526004016105f290611c45565b600b805460ff19168215159081179091556040519081527f6afe8bf5c567c2946df3e3c8b61006cec0e2cf7ac66d2145931e7adb86630e039060200160405180910390a150565b5f805f806109ee856119c5565b6001600160a01b0386165f90815260056020908152604080832054600490925290912054919550935060ff168015610a24575082155b9150838015610a3257505f83115b8015610a3d57504283115b15610a4f57610a4c4284611cc9565b90505b9193509193565b5f546001600160a01b03163314610a7f5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b0381165f818152600460209081526040808320805460ff191690556005909152808220829055517fb2aa8f2cce614e8fceaca560dbaf2a8ed3083e4ab371b10bf6d02e359216767a9190a250565b5f546001600160a01b03163314610afd5760405162461bcd60e51b81526004016105f290611c45565b806064811115610b435760405162461bcd60e51b81526020600482015260116024820152704d6178203130302061646472657373657360781b60448201526064016105f2565b5f5b81811015610c49575f60045f868685818110610b6357610b63611cb5565b9050602002016020810190610b789190611a42565b6001600160a01b0316815260208101919091526040015f908120805460ff191692151592909217909155600581868685818110610bb757610bb7611cb5565b9050602002016020810190610bcc9190611a42565b6001600160a01b0316815260208101919091526040015f2055838382818110610bf757610bf7611cb5565b9050602002016020810190610c0c9190611a42565b6001600160a01b03167fb2aa8f2cce614e8fceaca560dbaf2a8ed3083e4ab371b10bf6d02e359216767a60405160405180910390a2600101610b45565b50505050565b6001546001600160a01b03163314610c9d5760405162461bcd60e51b81526020600482015260116024820152702737ba103832b73234b7339037bbb732b960791b60448201526064016105f2565b5f8054600180546001600160a01b038082166001600160a01b031980861682178755909216909255604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b038116610d455760405162461bcd60e51b81526004016105f290611c68565b6001600160a01b0381165f818152600760209081526040808320805460ff19169055519182525f80516020611d27833981519152910160405180910390a250565b6001600160a01b0381165f9081526008602052604081205490808080438514610daf575f610dc8565b6001600160a01b0386165f908152600960205260409020545b6001600160a01b0387165f908152600a60205260409020549094509250610dee866119c5565b6001600160a01b039096165f90815260066020526040902054949693959294929360ff90931692915050565b5f546001600160a01b03163314610e435760405162461bcd60e51b81526004016105f290611c45565b806014811115610e845760405162461bcd60e51b815260206004820152600c60248201526b4d617820323020706f6f6c7360a01b60448201526064016105f2565b5f5b81811015610c49575f848483818110610ea157610ea1611cb5565b9050602002016020810190610eb69190611a42565b6001600160a01b031614610f6f575f60075f868685818110610eda57610eda611cb5565b9050602002016020810190610eef9190611a42565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055838382818110610f2857610f28611cb5565b9050602002016020810190610f3d9190611a42565b6001600160a01b03165f80516020611d278339815191525f604051610f66911515815260200190565b60405180910390a25b600101610e86565b5f546001600160a01b03163314610fa05760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b038116610fc65760405162461bcd60e51b81526004016105f290611c68565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633148061100a57506002546001600160a01b031633145b6110475760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016105f2565b5f546001600160a01b038481169116148061107957506001600160a01b0383165f9081526006602052604090205460ff165b61150d576003546001600160a01b0316611092846119c5565b156110d45760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dadb1a5cdd195960721b60448201526064016105f2565b6110dd836119c5565b156111225760405162461bcd60e51b8152602060048201526015602482015274149958da5c1a595b9d08189b1858dadb1a5cdd1959605a1b60448201526064016105f2565b600b5460ff16801561114b57506001600160a01b0383165f9081526007602052604090205460ff165b1561122b576001600160a01b0383165f908152600c602052604090205443900361121057836001600160a01b0316836001600160a01b03167faca151542e05ac60ea11580de72e967d4700b2049da5556741c1bdfeeea47434436040516111b491815260200190565b60405180910390a360405162461bcd60e51b815260206004820152602360248201527f506f6f6c20616c7265616479207265636569766564207478207468697320626c6044820152626f636b60e81b60648201526084016105f2565b6001600160a01b0383165f908152600c602052604090204390555b5f816001600160a01b031663d3f43cac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128c9190611cdc565b905080156113bc576001600160a01b0385165f90815260086020526040902054439003611393576001600160a01b0385165f9081526009602052604081208054916112d683611cf3565b90915550506001600160a01b0385165f9081526009602052604090205481101561138e576001600160a01b0385165f818152600960209081526040918290205491519182527f1041c3757ba900700fbd96ca123d143bc31314c38ac5c72c644b8becd0b52da7910160405180910390a260405162461bcd60e51b815260206004820181905260248201527f546f6f206d616e79207472616e736665727320696e2073616d6520626c6f636b60448201526064016105f2565b6113bc565b6001600160a01b0385165f90815260086020908152604080832043905560099091529020600190555b816001600160a01b031663a985ceef6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141c9190611d0b565b156114f0575f826001600160a01b03166304646a496040518163ffffffff1660e01b8152600401602060405180830381865afa15801561145e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114829190611cdc565b905080156114ee576001600160a01b0386165f908152600a60205260409020546114ad908290611ca2565b4210156114ee5760405162461bcd60e51b815260206004820152600f60248201526e436f6f6c646f776e2061637469766560881b60448201526064016105f2565b505b50506001600160a01b0383165f908152600a602052604090204290555b505050565b5f546001600160a01b0316331461153b5760405162461bcd60e51b81526004016105f290611c45565b8160648111156115815760405162461bcd60e51b81526020600482015260116024820152704d6178203130302061646472657373657360781b60448201526064016105f2565b5f80831161158f575f611599565b6115998342611ca2565b90505f5b82811015611739575f8686838181106115b8576115b8611cb5565b90506020020160208101906115cd9190611a42565b6001600160a01b03161415801561161d57505f546001600160a01b03168686838181106115fc576115fc611cb5565b90506020020160208101906116119190611a42565b6001600160a01b031614155b1561173157600160045f88888581811061163957611639611cb5565b905060200201602081019061164e9190611a42565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055508160055f88888581811061169957611699611cb5565b90506020020160208101906116ae9190611a42565b6001600160a01b0316815260208101919091526040015f20558585828181106116d9576116d9611cb5565b90506020020160208101906116ee9190611a42565b6001600160a01b03167f1d2c7e6b911a4ad6c07d780ccd7e533749bff42c2b1d161c21f3fc7c830eb2cc8360405161172891815260200190565b60405180910390a25b60010161159d565b505050505050565b5f546001600160a01b0316331461176a5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b0382166117905760405162461bcd60e51b81526004016105f290611c68565b6001600160a01b0382165f81815260066020908152604091829020805460ff191685151590811790915591519182527fc63b2cd57d159035214234fce2c910c2e679c9647b0afc09960d6e8cb1574f0791016106fb565b5f546001600160a01b031633146118105760405162461bcd60e51b81526004016105f290611c45565b8160148111156118515760405162461bcd60e51b815260206004820152600c60248201526b4d617820323020706f6f6c7360a01b60448201526064016105f2565b5f5b818110156108d7575f85858381811061186e5761186e611cb5565b90506020020160208101906118839190611a42565b6001600160a01b03161461193c578260075f8787858181106118a7576118a7611cb5565b90506020020160208101906118bc9190611a42565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558484828181106118f5576118f5611cb5565b905060200201602081019061190a9190611a42565b6001600160a01b03165f80516020611d2783398151915284604051611933911515815260200190565b60405180910390a25b600101611853565b5f546001600160a01b0316331461196d5760405162461bcd60e51b81526004016105f290611c45565b6001600160a01b0381166119935760405162461bcd60e51b81526004016105f290611c68565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f6119bf826119c5565b92915050565b6001600160a01b0381165f9081526004602052604081205460ff166119eb57505f919050565b6001600160a01b0382165f908152600560205260409020548015801590611a1157508042115b15611a1e57505f92915050565b50600192915050565b80356001600160a01b0381168114611a3d575f80fd5b919050565b5f60208284031215611a52575f80fd5b611a5b82611a27565b9392505050565b5f8060408385031215611a73575f80fd5b611a7c83611a27565b946020939093013593505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b6020830191508360208260051b8501011115611acb575f80fd5b9250929050565b8015158114611adf575f80fd5b50565b5f805f60408486031215611af4575f80fd5b833567ffffffffffffffff811115611b0a575f80fd5b611b1686828701611a8a565b9094509250506020840135611b2a81611ad2565b809150509250925092565b5f8060408385031215611b46575f80fd5b611b4f83611a27565b91506020830135611b5f81611ad2565b809150509250929050565b5f60208284031215611b7a575f80fd5b8135611a5b81611ad2565b5f8060208385031215611b96575f80fd5b823567ffffffffffffffff811115611bac575f80fd5b611bb885828601611a8a565b90969095509350505050565b5f805f60608486031215611bd6575f80fd5b611bdf84611a27565b9250611bed60208501611a27565b9150604084013590509250925092565b5f805f60408486031215611c0f575f80fd5b833567ffffffffffffffff811115611c25575f80fd5b611c3186828701611a8a565b909790965060209590950135949350505050565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119bf576119bf611c8e565b634e487b7160e01b5f52603260045260245ffd5b818103818111156119bf576119bf611c8e565b5f60208284031215611cec575f80fd5b5051919050565b5f60018201611d0457611d04611c8e565b5060010190565b5f60208284031215611d1b575f80fd5b8151611a5b81611ad256fe15794d6443526c982fdfd07ec4b7a930e7d0b0bcf26bd81628a56e65341d3f54a264697066735822122005026c22ead0e4908765ec6136f76823d12cd3656f8375ed555c0b266943353764736f6c63430008150033

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

000000000000000000000000cd8eabac84ed4bf824a414a04cc6be7e3b0d140d000000000000000000000000b24adaacebb8f84025a89816ce4784177610b288

-----Decoded View---------------
Arg [0] : _coreToken (address): 0xCd8eAbAc84eD4Bf824a414A04CC6bE7E3B0D140D
Arg [1] : _configRegistry (address): 0xB24adaAceBb8F84025a89816cE4784177610b288

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cd8eabac84ed4bf824a414a04cc6be7e3b0d140d
Arg [1] : 000000000000000000000000b24adaacebb8f84025a89816ce4784177610b288


Deployed Bytecode Sourcemap

1795:20771:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2375:24;;;;;-1:-1:-1;;;;;2375:24:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;2375:24:0;;;;;;;;3080:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;737:25:1;;;725:2;710:18;3080:51:0;591:177:1;14710:410:0;;;;;;:::i;:::-;;:::i;:::-;;20501:486;;;;;;:::i;:::-;;:::i;:::-;;;;1270:14:1;;1263:22;1245:41;;1317:2;1302:18;;1295:34;;;;1372:14;;1365:22;1345:18;;;1338:50;;;;1431:14;1424:22;1419:2;1404:18;;1397:50;1232:3;1217:19;20501:486:0;1032:421:1;2406:29:0;;;;;-1:-1:-1;;;;;2406:29:0;;;4023:45;;;;;;;;;;;;1623:14:1;;1616:22;1598:41;;1586:2;1571:18;4023:45:0;1458:187:1;18143:482:0;;;;;;:::i;:::-;;:::i;11200:217::-;;;;;;:::i;:::-;;:::i;13895:175::-;;;;;;:::i;:::-;;:::i;19946:478::-;;;;;;:::i;:::-;;:::i;:::-;;;;3526:14:1;;3519:22;3501:41;;3573:2;3558:18;;3551:34;;;;3628:14;;3621:22;3601:18;;;3594:50;;;;3675:2;3660:18;;3653:34;3488:3;3473:19;19946:478:0;3282:411:1;15900:188:0;;;;;;:::i;:::-;;:::i;16159:423::-;;;;;;:::i;:::-;;:::i;22297:266::-;;;:::i;12270:200::-;;;;;;:::i;:::-;;:::i;19376:505::-;;;;;;:::i;:::-;;:::i;:::-;;;;4387:25:1;;;4443:2;4428:18;;4421:34;;;;4471:18;;;4464:34;;;;4541:14;4534:22;4529:2;4514:18;;4507:50;4601:14;4594:22;4588:3;4573:19;;4566:51;4374:3;4359:19;19376:505:0;4140:483:1;4094:59:0;;;;;;:::i;:::-;;;;;;;;;;;;;;2913:52;;;;;;:::i;:::-;;;;;;;;;;;;;;2314:20;;;;;-1:-1:-1;;;;;2314:20:0;;;12015:112;;;;;;:::i;:::-;-1:-1:-1;;;;;12100:19:0;12076:4;12100:19;;;:13;:19;;;;;;;;;12015:112;18709:128;;;;;;:::i;:::-;-1:-1:-1;;;;;18802:27:0;18778:4;18802:27;;;:18;:27;;;;;;;;;18709:128;12627:431;;;;;;:::i;:::-;;:::i;21460:187::-;;;;;;:::i;:::-;;:::i;7876:2650::-;;;;;;:::i;:::-;;:::i;15198:629::-;;;;;;:::i;:::-;;:::i;2490:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2689:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2972:57;;;;;;:::i;:::-;;;;;;;;;;;;;;2341:27;;;;;-1:-1:-1;;;;;2341:27:0;;;17826:244;;;;;;:::i;:::-;;:::i;11496:448::-;;;;;;:::i;:::-;;:::i;2806:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2540:50;;;;;;:::i;:::-;;;;;;;;;;;;;;22125:164;;;;;;:::i;:::-;;:::i;17131:118::-;;;;;;:::i;:::-;;:::i;14710:410::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14802:21:0;::::1;14794:46;;;;-1:-1:-1::0;;;14794:46:0::1;;;;;;;:::i;:::-;14870:5;::::0;-1:-1:-1;;;;;14870:5:0;;::::1;14859:16:::0;;::::1;::::0;14851:51:::1;;;::::0;-1:-1:-1;;;14851:51:0;;6351:2:1;14851:51:0::1;::::0;::::1;6333:21:1::0;6390:2;6370:18;;;6363:30;-1:-1:-1;;;6409:18:1;;;6402:52;6471:18;;14851:51:0::1;6149:346:1::0;14851:51:0::1;-1:-1:-1::0;;;;;14923:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;14923:27:0::1;14946:4;14923:27;::::0;;14988:12;:45:::1;;15032:1;14988:45;;;15003:26;15021:8:::0;15003:15:::1;:26;:::i;:::-;-1:-1:-1::0;;;;;14961:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;;:72;;;15059:53;14961:24;;15059:53:::1;::::0;::::1;::::0;737:25:1;;725:2;710:18;;591:177;15059:53:0::1;;;;;;;;14710:410:::0;;:::o;20501:486::-;-1:-1:-1;;;;;20728:19:0;;20571:15;20728:19;;;:13;:19;;;;;;;;;20781:24;:30;;;;;;20845:25;;20728:19;;;;;20781:30;;20845:25;20903:26;;;:76;;-1:-1:-1;;;;;;20933:30:0;;;;;;:24;:30;;;;;;20967:12;20933:46;;20903:76;20881:98;;20501:486;;;;;:::o;18143:482::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;18268:8;18312:2:::1;18302:12:::0;::::1;;18294:41;;;::::0;-1:-1:-1;;;18294:41:0;;6964:2:1;18294:41:0::1;::::0;::::1;6946:21:1::0;7003:2;6983:18;;;6976:30;-1:-1:-1;;;7022:18:1;;;7015:46;7078:18;;18294:41:0::1;6762:340:1::0;18294:41:0::1;18361:9;18356:262;18380:6;18376:1;:10;18356:262;;;18431:1;18408:8:::0;;18417:1;18408:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18408:25:0::1;;18404:171;;18488:6;18454:18;:31;18473:8;;18482:1;18473:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18454:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18454:31:0;:40;;-1:-1:-1;;18454:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18539:8;;18548:1;18539:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18518:41:0::1;;18552:6;18518:41;;;;1623:14:1::0;1616:22;1598:41;;1586:2;1571:18;;1458:187;18518:41:0::1;;;;;;;;18404:171;18601:3;;18356:262;;;;18240:385;18143:482:::0;;;:::o;11200:217::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11290:18:0;::::1;11282:43;;;;-1:-1:-1::0;;;11282:43:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11336:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;11336:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11380:29;;1598:41:1;;;-1:-1:-1;;;;;;;;;;;11380:29:0;1571:18:1;11380:29:0::1;1458:187:1::0;13895:175:0;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;13977:25:::1;:35:::0;;-1:-1:-1;;13977:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14028:34:::1;::::0;1598:41:1;;;14028:34:0::1;::::0;1586:2:1;1571:18;14028:34:0::1;;;;;;;13895:175:::0;:::o;19946:478::-;20022:12;20045:14;20070:16;20097:21;20147:23;20162:7;20147:14;:23::i;:::-;-1:-1:-1;;;;;20190:24:0;;;;;;:15;:24;;;;;;;;;20239:11;:20;;;;;;;20137:33;;-1:-1:-1;20190:24:0;-1:-1:-1;20239:20:0;;:35;;;;-1:-1:-1;20263:11:0;;20239:35;20225:49;;20299:7;:21;;;;;20319:1;20310:6;:10;20299:21;:49;;;;;20333:15;20324:6;:24;20299:49;20295:122;;;20381:24;20390:15;20381:6;:24;:::i;:::-;20365:40;;20295:122;19946:478;;;;;:::o;15900:188::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15968:20:0;::::1;15991:5;15968:20:::0;;;:11:::1;:20;::::0;;;;;;;:28;;-1:-1:-1;;15968:28:0::1;::::0;;16007:15:::1;:24:::0;;;;;;:28;;;16051:29;::::1;::::0;15991:5;16051:29:::1;15900:188:::0;:::o;16159:423::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;16261:8;16305:3:::1;16295:13:::0;::::1;;16287:43;;;::::0;-1:-1:-1;;;16287:43:0;;7574:2:1;16287:43:0::1;::::0;::::1;7556:21:1::0;7613:2;7593:18;;;7586:30;-1:-1:-1;;;7632:18:1;;;7625:47;7689:18;;16287:43:0::1;7372:341:1::0;16287:43:0::1;16356:9;16351:224;16375:6;16371:1;:10;16351:224;;;16426:5;16399:11;:24;16411:8;;16420:1;16411:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16399:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16399:24:0;;;:32;;-1:-1:-1;;16399:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;16446:15:::1;-1:-1:-1::0;16462:8:0;;16471:1;16462:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16446:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16446:28:0;:32;16519:8;;16528:1;16519:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16498:33:0::1;;;;;;;;;;;16558:3;;16351:224;;;;16233:349;16159:423:::0;;:::o;22297:266::-;22366:12;;-1:-1:-1;;;;;22366:12:0;22352:10;:26;22344:56;;;;-1:-1:-1;;;22344:56:0;;7920:2:1;22344:56:0;;;7902:21:1;7959:2;7939:18;;;7932:30;-1:-1:-1;;;7978:18:1;;;7971:47;8035:18;;22344:56:0;7718:341:1;22344:56:0;22411:16;22430:5;;;22454:12;;-1:-1:-1;;;;;22454:12:0;;;-1:-1:-1;;;;;;22446:20:0;;;;;;;22477:25;;;;;;22518:37;;22430:5;;;;;;;22518:37;;22411:16;22518:37;22333:230;22297:266::o;12270:200::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12345:18:0;::::1;12337:43;;;;-1:-1:-1::0;;;12337:43:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12391:19:0;::::1;12413:5;12391:19:::0;;;:13:::1;:19;::::0;;;;;;;:27;;-1:-1:-1;;12391:27:0::1;::::0;;12434:28;1598:41:1;;;-1:-1:-1;;;;;;;;;;;12434:28:0;1571:18:1;12434:28:0::1;;;;;;;12270:200:::0;:::o;19376:505::-;-1:-1:-1;;;;;19603:26:0;;19452:17;19603:26;;;:17;:26;;;;;;;19452:17;;;19687:12;19657:42;;:80;;19736:1;19657:80;;;-1:-1:-1;;;;;19702:31:0;;;;;;:22;:31;;;;;;19657:80;-1:-1:-1;;;;;19759:25:0;;;;;;:16;:25;;;;;;19640:97;;-1:-1:-1;19759:25:0;-1:-1:-1;19805:23:0;19776:7;19805:14;:23::i;:::-;-1:-1:-1;;;;;19846:27:0;;;;;;;:18;:27;;;;;;19376:505;;;;;;19795:33;;19846:27;;;;;19376:505;-1:-1:-1;;19376:505:0:o;12627:431::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;12729:5;12770:2:::1;12760:12:::0;::::1;;12752:37;;;::::0;-1:-1:-1;;;12752:37:0;;8266:2:1;12752:37:0::1;::::0;::::1;8248:21:1::0;8305:2;8285:18;;;8278:30;-1:-1:-1;;;8324:18:1;;;8317:42;8376:18;;12752:37:0::1;8064:336:1::0;12752:37:0::1;12815:9;12810:241;12834:6;12830:1;:10;12810:241;;;12882:1;12862:5:::0;;12868:1;12862:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12862:22:0::1;;12858:150;;12931:5;12905:13;:23;12919:5;;12925:1;12919:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12905:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12905:23:0;:31;;-1:-1:-1;;12905:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12976:5;;12982:1;12976:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12960:32:0::1;-1:-1:-1::0;;;;;;;;;;;12986:5:0::1;12960:32;;;;1623:14:1::0;1616:22;1598:41;;1586:2;1571:18;;1458:187;12960:32:0::1;;;;;;;;12858:150;13034:3;;12810:241;;21460:187:::0;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21550:29:0;::::1;21542:54;;;;-1:-1:-1::0;;;21542:54:0::1;;;;;;;:::i;:::-;21607:14;:32:::0;;-1:-1:-1;;;;;;21607:32:0::1;-1:-1:-1::0;;;;;21607:32:0;;;::::1;::::0;;;::::1;::::0;;21460:187::o;7876:2650::-;5857:5;;-1:-1:-1;;;;;5857:5:0;5843:10;:19;;:46;;-1:-1:-1;5880:9:0;;-1:-1:-1;;;;;5880:9:0;5866:10;:23;5843:46;5835:73;;;;-1:-1:-1;;;5835:73:0;;8607:2:1;5835:73:0;;;8589:21:1;8646:2;8626:18;;;8619:30;-1:-1:-1;;;8665:18:1;;;8658:44;8719:18;;5835:73:0;8405:338:1;5835:73:0;8032:5:::1;::::0;-1:-1:-1;;;;;8024:13:0;;::::1;8032:5:::0;::::1;8024:13;::::0;:41:::1;;-1:-1:-1::0;;;;;;8041:24:0;::::1;;::::0;;;:18:::1;:24;::::0;;;;;::::1;;8024:41;8082:7;8020:80;8179:14;::::0;-1:-1:-1;;;;;8179:14:0::1;8266:20;8281:4:::0;8266:14:::1;:20::i;:::-;8265:21;8257:52;;;::::0;-1:-1:-1;;;8257:52:0;;8950:2:1;8257:52:0::1;::::0;::::1;8932:21:1::0;8989:2;8969:18;;;8962:30;-1:-1:-1;;;9008:18:1;;;9001:48;9066:18;;8257:52:0::1;8748:342:1::0;8257:52:0::1;8329:18;8344:2;8329:14;:18::i;:::-;8328:19;8320:53;;;::::0;-1:-1:-1;;;8320:53:0;;9297:2:1;8320:53:0::1;::::0;::::1;9279:21:1::0;9336:2;9316:18;;;9309:30;-1:-1:-1;;;9355:18:1;;;9348:51;9416:18;;8320:53:0::1;9095:345:1::0;8320:53:0::1;8976:25;::::0;::::1;;:46:::0;::::1;;;-1:-1:-1::0;;;;;;9005:17:0;::::1;;::::0;;;:13:::1;:17;::::0;;;;;::::1;;8976:46;8972:339;;;-1:-1:-1::0;;;;;9043:28:0;::::1;;::::0;;;:24:::1;:28;::::0;;;;;9075:12:::1;9043:44:::0;;9039:203:::1;;9143:4;-1:-1:-1::0;;;;;9113:49:0::1;9139:2;-1:-1:-1::0;;;;;9113:49:0::1;;9149:12;9113:49;;;;737:25:1::0;;725:2;710:18;;591:177;9113:49:0::1;;;;;;;;9181:45;::::0;-1:-1:-1;;;9181:45:0;;9647:2:1;9181:45:0::1;::::0;::::1;9629:21:1::0;9686:2;9666:18;;;9659:30;9725:34;9705:18;;;9698:62;-1:-1:-1;;;9776:18:1;;;9769:33;9819:19;;9181:45:0::1;9445:399:1::0;9039:203:0::1;-1:-1:-1::0;;;;;9256:28:0;::::1;;::::0;;;:24:::1;:28;::::0;;;;9287:12:::1;9256:43:::0;;8972:339:::1;9404:20;9427:6;-1:-1:-1::0;;;;;9427:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9404:53:::0;-1:-1:-1;9472:16:0;;9468:526:::1;;-1:-1:-1::0;;;;;9509:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;9536:12:::1;9509:39:::0;;9505:478:::1;;-1:-1:-1::0;;;;;9569:28:0;::::1;;::::0;;;:22:::1;:28;::::0;;;;:30;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;9622:28:0;::::1;;::::0;;;:22:::1;:28;::::0;;;;;:43;-1:-1:-1;9618:220:0::1;;;-1:-1:-1::0;;;;;9695:58:0;::::1;9724:28;::::0;;;:22:::1;:28;::::0;;;;;;;;;9695:58;;737:25:1;;;9695:58:0::1;::::0;710:18:1;9695:58:0::1;;;;;;;9776:42;::::0;-1:-1:-1;;;9776:42:0;;10380:2:1;9776:42:0::1;::::0;::::1;10362:21:1::0;;;10399:18;;;10392:30;10458:34;10438:18;;;10431:62;10510:18;;9776:42:0::1;10178:356:1::0;9618:220:0::1;9505:478;;;-1:-1:-1::0;;;;;9878:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;9904:12:::1;9878:38:::0;;9935:22:::1;:28:::0;;;;;9966:1:::1;9935:32:::0;;9505:478:::1;10045:6;-1:-1:-1::0;;;;;10045:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10041:307;;;10086:16;10105:6;-1:-1:-1::0;;;;;10105:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10086:42:::0;-1:-1:-1;10147:12:0;;10143:194:::1;;-1:-1:-1::0;;;;;10229:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;:33:::1;::::0;10254:8;;10229:33:::1;:::i;:::-;10210:15;:52;;10180:141;;;::::0;-1:-1:-1;;;10180:141:0;;10991:2:1;10180:141:0::1;::::0;::::1;10973:21:1::0;11030:2;11010:18;;;11003:30;-1:-1:-1;;;11049:18:1;;;11042:45;11104:18;;10180:141:0::1;10789:339:1::0;10180:141:0::1;10071:277;10041:307;-1:-1:-1::0;;;;;;;10406:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;10431:15:::1;10406:40:::0;;5919:1:::1;7876:2650:::0;;;:::o;15198:629::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;15316:8;15360:3:::1;15350:13:::0;::::1;;15342:43;;;::::0;-1:-1:-1;;;15342:43:0;;7574:2:1;15342:43:0::1;::::0;::::1;7556:21:1::0;7613:2;7593:18;;;7586:30;-1:-1:-1;;;7632:18:1;;;7625:47;7689:18;;15342:43:0::1;7372:341:1::0;15342:43:0::1;15406:14;15434:1:::0;15423:8:::1;:12;:45;;15467:1;15423:45;;;15438:26;15456:8:::0;15438:15:::1;:26;:::i;:::-;15406:62;;15494:9;15489:331;15513:6;15509:1;:10;15489:331;;;15564:1;15541:8:::0;;15550:1;15541:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15541:25:0::1;;;:49;;;;-1:-1:-1::0;15585:5:0::1;::::0;-1:-1:-1;;;;;15585:5:0::1;15570:8:::0;;15579:1;15570:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15570:20:0::1;;;15541:49;15537:240;;;15638:4;15611:11;:24;15623:8;;15632:1;15623:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15611:24:0::1;-1:-1:-1::0;;;;;15611:24:0::1;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;15692:6;15661:15;:28;15677:8;;15686:1;15677:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15661:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15661:28:0;:37;15741:8;;15750:1;15741:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15722:39:0::1;;15754:6;15722:39;;;;737:25:1::0;;725:2;710:18;;591:177;15722:39:0::1;;;;;;;;15537:240;15803:3;;15489:331;;;;15288:539;;15198:629:::0;;;:::o;17826:244::-;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17924:21:0;::::1;17916:46;;;;-1:-1:-1::0;;;17916:46:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17973:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:36;;-1:-1:-1;;17973:36:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18025:37;;1598:41:1;;;18025:37:0::1;::::0;1571:18:1;18025:37:0::1;1458:187:1::0;11496:448:0;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;11613:5;11654:2:::1;11644:12:::0;::::1;;11636:37;;;::::0;-1:-1:-1;;;11636:37:0;;8266:2:1;11636:37:0::1;::::0;::::1;8248:21:1::0;8305:2;8285:18;;;8278:30;-1:-1:-1;;;8324:18:1;;;8317:42;8376:18;;11636:37:0::1;8064:336:1::0;11636:37:0::1;11699:9;11694:243;11718:6;11714:1;:10;11694:243;;;11766:1;11746:5:::0;;11752:1;11746:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11746:22:0::1;;11742:152;;11815:6;11789:13;:23;11803:5;;11809:1;11803:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11789:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11789:23:0;:32;;-1:-1:-1;;11789:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11861:5;;11867:1;11861:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11845:33:0::1;-1:-1:-1::0;;;;;;;;;;;11871:6:0::1;11845:33;;;;1623:14:1::0;1616:22;1598:41;;1586:2;1571:18;;1458:187;11845:33:0::1;;;;;;;;11742:152;11920:3;;11694:243;;22125:164:::0;5745:5;;-1:-1:-1;;;;;5745:5:0;5731:10;:19;5723:41;;;;-1:-1:-1;;;5723:41:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22208:22:0;::::1;22200:47;;;;-1:-1:-1::0;;;22200:47:0::1;;;;;;;:::i;:::-;22258:12;:23:::0;;-1:-1:-1;;;;;;22258:23:0::1;-1:-1:-1::0;;;;;22258:23:0;;;::::1;::::0;;;::::1;::::0;;22125:164::o;17131:118::-;17194:4;17218:23;17233:7;17218:14;:23::i;:::-;17211:30;17131:118;-1:-1:-1;;17131:118:0:o;16686:369::-;-1:-1:-1;;;;;16772:20:0;;16750:4;16772:20;;;:11;:20;;;;;;;;16767:39;;-1:-1:-1;16801:5:0;;16686:369;-1:-1:-1;16686:369:0:o;16767:39::-;-1:-1:-1;;;;;16887:24:0;;16870:14;16887:24;;;:15;:24;;;;;;16926:10;;;;;:38;;;16958:6;16940:15;:24;16926:38;16922:94;;;-1:-1:-1;16988:5:0;;16686:369;-1:-1:-1;;16686:369:0:o;16922:94::-;-1:-1:-1;17043:4:0;;16686:369;-1:-1:-1;;16686:369:0:o;222:173:1:-;290:20;;-1:-1:-1;;;;;339:31:1;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:186::-;459:6;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;400:186;-1:-1:-1;;;400:186:1:o;773:254::-;841:6;849;902:2;890:9;881:7;877:23;873:32;870:52;;;918:1;915;908:12;870:52;941:29;960:9;941:29;:::i;:::-;931:39;1017:2;1002:18;;;;989:32;;-1:-1:-1;;;773:254:1:o;1650:367::-;1713:8;1723:6;1777:3;1770:4;1762:6;1758:17;1754:27;1744:55;;1795:1;1792;1785:12;1744:55;-1:-1:-1;1818:20:1;;1861:18;1850:30;;1847:50;;;1893:1;1890;1883:12;1847:50;1930:4;1922:6;1918:17;1906:29;;1990:3;1983:4;1973:6;1970:1;1966:14;1958:6;1954:27;1950:38;1947:47;1944:67;;;2007:1;2004;1997:12;1944:67;1650:367;;;;;:::o;2022:118::-;2108:5;2101:13;2094:21;2087:5;2084:32;2074:60;;2130:1;2127;2120:12;2074:60;2022:118;:::o;2145:566::-;2237:6;2245;2253;2306:2;2294:9;2285:7;2281:23;2277:32;2274:52;;;2322:1;2319;2312:12;2274:52;2362:9;2349:23;2395:18;2387:6;2384:30;2381:50;;;2427:1;2424;2417:12;2381:50;2466:70;2528:7;2519:6;2508:9;2504:22;2466:70;:::i;:::-;2555:8;;-1:-1:-1;2440:96:1;-1:-1:-1;;2640:2:1;2625:18;;2612:32;2653:28;2612:32;2653:28;:::i;:::-;2700:5;2690:15;;;2145:566;;;;;:::o;2716:315::-;2781:6;2789;2842:2;2830:9;2821:7;2817:23;2813:32;2810:52;;;2858:1;2855;2848:12;2810:52;2881:29;2900:9;2881:29;:::i;:::-;2871:39;;2960:2;2949:9;2945:18;2932:32;2973:28;2995:5;2973:28;:::i;:::-;3020:5;3010:15;;;2716:315;;;;;:::o;3036:241::-;3092:6;3145:2;3133:9;3124:7;3120:23;3116:32;3113:52;;;3161:1;3158;3151:12;3113:52;3200:9;3187:23;3219:28;3241:5;3219:28;:::i;3698:437::-;3784:6;3792;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3901:9;3888:23;3934:18;3926:6;3923:30;3920:50;;;3966:1;3963;3956:12;3920:50;4005:70;4067:7;4058:6;4047:9;4043:22;4005:70;:::i;:::-;4094:8;;3979:96;;-1:-1:-1;3698:437:1;-1:-1:-1;;;;3698:437:1:o;4628:328::-;4705:6;4713;4721;4774:2;4762:9;4753:7;4749:23;4745:32;4742:52;;;4790:1;4787;4780:12;4742:52;4813:29;4832:9;4813:29;:::i;:::-;4803:39;;4861:38;4895:2;4884:9;4880:18;4861:38;:::i;:::-;4851:48;;4946:2;4935:9;4931:18;4918:32;4908:42;;4628:328;;;;;:::o;4961:505::-;5056:6;5064;5072;5125:2;5113:9;5104:7;5100:23;5096:32;5093:52;;;5141:1;5138;5131:12;5093:52;5181:9;5168:23;5214:18;5206:6;5203:30;5200:50;;;5246:1;5243;5236:12;5200:50;5285:70;5347:7;5338:6;5327:9;5323:22;5285:70;:::i;:::-;5374:8;;5259:96;;-1:-1:-1;5456:2:1;5441:18;;;;5428:32;;4961:505;-1:-1:-1;;;;4961:505:1:o;5471:332::-;5673:2;5655:21;;;5712:1;5692:18;;;5685:29;-1:-1:-1;;;5745:2:1;5730:18;;5723:39;5794:2;5779:18;;5471:332::o;5808:336::-;6010:2;5992:21;;;6049:2;6029:18;;;6022:30;-1:-1:-1;;;6083:2:1;6068:18;;6061:42;6135:2;6120:18;;5808:336::o;6500:127::-;6561:10;6556:3;6552:20;6549:1;6542:31;6592:4;6589:1;6582:15;6616:4;6613:1;6606:15;6632:125;6697:9;;;6718:10;;;6715:36;;;6731:18;;:::i;7107:127::-;7168:10;7163:3;7159:20;7156:1;7149:31;7199:4;7196:1;7189:15;7223:4;7220:1;7213:15;7239:128;7306:9;;;7327:11;;;7324:37;;;7341:18;;:::i;9849:184::-;9919:6;9972:2;9960:9;9951:7;9947:23;9943:32;9940:52;;;9988:1;9985;9978:12;9940:52;-1:-1:-1;10011:16:1;;9849:184;-1:-1:-1;9849:184:1:o;10038:135::-;10077:3;10098:17;;;10095:43;;10118:18;;:::i;:::-;-1:-1:-1;10165:1:1;10154:13;;10038:135::o;10539:245::-;10606:6;10659:2;10647:9;10638:7;10634:23;10630:32;10627:52;;;10675:1;10672;10665:12;10627:52;10707:9;10701:16;10726:28;10748:5;10726:28;:::i

Swarm Source

ipfs://05026c22ead0e4908765ec6136f76823d12cd3656f8375ed555c0b2669433537

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

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