ETH Price: $1,949.47 (-0.69%)
 

More Info

Private Name Tags

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Withdraw245148002026-02-22 20:27:357 days ago1771792055IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000016640.14301602
Withdraw244859332026-02-18 19:52:2311 days ago1771444343IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000181112.25243831
Withdraw243315782026-01-28 6:34:1132 days ago1769582051IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000164922.05100787
Withdraw243285052026-01-27 20:17:2333 days ago1769545043IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000220772.06863245
Withdraw242855312026-01-21 20:23:4739 days ago1769027027IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000025620.31870617
Withdraw242442032026-01-16 2:09:2344 days ago1768529363IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.0002662.04486161
Withdraw242405272026-01-15 13:52:1145 days ago1768485131IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000449012.33330381
Withdraw242292612026-01-14 0:08:1147 days ago1768349291IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000022470.16987235
Withdraw241607732026-01-04 10:42:5956 days ago1767523379IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000697132.04668962
Withdraw241343212025-12-31 18:12:3560 days ago1767204755IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000037310.28682478
Withdraw241327802025-12-31 13:02:5960 days ago1767186179IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000165662.06027303
Withdraw241318162025-12-31 9:49:2360 days ago1767174563IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000272912.09793831
Withdraw240776782025-12-23 20:23:5968 days ago1766521439IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000163232.03007719
Withdraw240053702025-12-13 18:07:5978 days ago1765649279IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000167592.08420068
Withdraw239819452025-12-10 11:14:5981 days ago1765365299IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000279242.14660403
Withdraw239482252025-12-05 17:28:1186 days ago1764955691IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000024710.18678328
Withdraw239425452025-12-04 22:13:3587 days ago1764886415IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.00016622.067
Withdraw239407352025-12-04 16:02:1187 days ago1764864131IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000008840.06795859
Withdraw239319142025-12-03 9:05:5988 days ago1764752759IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.00013612.03959651
Withdraw238967952025-11-28 11:12:1193 days ago1764328331IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.00000830.04543726
Withdraw238876922025-11-27 4:33:1194 days ago1764217991IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000164512.04598294
Withdraw238691672025-11-24 13:59:3597 days ago1763992775IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000300382.30909583
Withdraw238307542025-11-19 4:29:35102 days ago1763526575IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000168712.09822625
Withdraw238223942025-11-18 0:18:47104 days ago1763425127IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000173392.15632857
Withdraw238217142025-11-17 22:00:47104 days ago1763416847IN
Pepe Coin: Pre-Bridge v2 Staking
0 ETH0.000250272.34324105
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer205056312024-08-11 13:21:11567 days ago1723382471
Pepe Coin: Pre-Bridge v2 Staking
0.00169422 ETH
Transfer205055822024-08-11 13:11:11567 days ago1723381871
Pepe Coin: Pre-Bridge v2 Staking
0.00171522 ETH
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:
BasedAIBridge

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
/*
#########################################################
# ____    _    ____  _____ ____    _    ___    __   __  #
#| __ )  / \  / ___|| ____|  _ \  / \  |_ _|  / /___\ \ #
#|  _ \ / _ \ \___ \|  _| | | | |/ _ \  | |  / /_____\ \#
#| |_) / ___ \ ___) | |___| |_| / ___ \ | |  \ \_____/ /#
#|____/_/___\_\____/|_____|____/_/_  \_\___|  \_\   /_/ #
#| __ )|  _ \|_ _|  _ \ / ___| ____|                    #
#|  _ \| |_) || || | | | |  _|  _|                      #
#| |_) |  _ < | || |_| | |_| | |___                     #
#|____/|_| \_\___|____/ \____|_____|                    #
#########################################################   
# BRIDGE REWARDS - Bridge.sol - www.getbased.ai         #
#########################################################
*/
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/security/Pausable.sol";

interface IERC20 {
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

interface IERC721 {
    function transferFrom(address from, address to, uint256 tokenId) external;
    function ownerOf(uint256 tokenId) external view returns (address);
}

contract BasedAIBridge is ReentrancyGuard, Pausable {
    IERC20 public pepeCoin;
    IERC721 public brainNFT;
    address public owner;
    address public pepeCoinAddress;
    bool public mainnetLive;
    uint256 public startTime;

    struct Stake {
        address tokenAddress;
        uint256 amount;
        uint256 timestamp;
        uint256 rate;
        uint256[] brainIds;
    }

    struct TokenConfig {
        uint256 initialRate;
        uint256 rateIncreaseAmount;
        uint256 rateIncreaseInterval;
        bool isSupported;
    }

    mapping(address => Stake[]) public stakes;
    mapping(address => uint256) public credits;
    mapping(address => bool) public hasStaked;
    mapping(address => uint256) public lastKnownCredits;
    address[] public stakers;
    mapping(address => TokenConfig) public tokenConfigs;
    mapping(address => uint256) public finalScores; 

    event Staked(address indexed user, address tokenAddress, uint256 amount, uint256 timestamp, uint256 rate);
    event BrainStaked(address indexed user, uint256 tokenId, uint256 timestamp, uint256 rate);
    event MainnetActivated();
    event Withdrawn(address indexed user, uint256 amount);
    event BrainWithdrawn(address indexed user, uint256 tokenId);
    event CreditsUpdated(address indexed user, uint256 credits);
    event FinalScoreRecorded(address indexed user, uint256 finalScore);

    modifier onlyOwner() {
        require(msg.sender == owner, "Only owner can call this function.");
        _;
    }

    constructor() {
        pepeCoinAddress = 0xA9E8aCf069C58aEc8825542845Fd754e41a9489A;
        pepeCoin = IERC20(0xA9E8aCf069C58aEc8825542845Fd754e41a9489A);
        brainNFT = IERC721(0xA9E8aCf069C58aEc8825542845Fd754e41a9489A);
        owner = msg.sender;
        mainnetLive = false;
        startTime = block.timestamp;

        tokenConfigs[0xA9E8aCf069C58aEc8825542845Fd754e41a9489A] = TokenConfig({
            initialRate: 500,
            rateIncreaseAmount: 0,
            rateIncreaseInterval: 30 days,
            isSupported: true
        });
    }

    // For user with TFT Enforcer
    function getCurrentRate(address tokenAddress) public view returns (uint256) {
        TokenConfig storage config = tokenConfigs[tokenAddress];
        uint256 timeElapsed = block.timestamp - startTime;
        uint256 periods = timeElapsed / config.rateIncreaseInterval;
        return config.initialRate + (config.rateIncreaseAmount * periods);
    }

    function setBasedBrainNFT(address tokenAddress) external onlyOwner {
        brainNFT = IERC721(tokenAddress);
    }

    function addOrUpdateToken(address tokenAddress, uint256 _initialRate, uint256 _rateIncreaseAmount, uint256 _rateIncreaseInterval) external onlyOwner {
        tokenConfigs[tokenAddress] = TokenConfig({
            initialRate: _initialRate, // 500 for Pepecoin, 5000 for Brain Specific Token, 5 for Brain Credits, 5800 for $BASED, 1000 for FHE-ORDERBOOK Brain Token
            rateIncreaseAmount: _rateIncreaseAmount,
            rateIncreaseInterval: _rateIncreaseInterval,
            isSupported: true
        });
    }

    function removeToken(address tokenAddress) external onlyOwner {
        tokenConfigs[tokenAddress].isSupported = false;
    }

    function stake(address tokenAddress, uint256 _amount) external whenNotPaused nonReentrant {
        require(_amount > 0, "Amount must be greater than zero");
        require(tokenConfigs[tokenAddress].isSupported, "Token is not supported for staking");
        require(!mainnetLive, "Mainnet is live!");

        IERC20(tokenAddress).transferFrom(msg.sender, address(this), _amount);
        uint256 currentRate = tokenConfigs[tokenAddress].initialRate;

        // Empty brain array
        uint256[] memory brainIds = new uint256[](0);
        
        // Recover all credits if in the first 30 days
        if (block.timestamp - startTime <= 30 days) {
            credits[msg.sender] += lastKnownCredits[msg.sender];
            lastKnownCredits[msg.sender] = 0;
        }
        
        _addStake(msg.sender, tokenAddress, _amount, brainIds, currentRate);
    }

    function _addStake(address _staker, address _tokenAddress, uint256 _amount, uint256[] memory _brainIds, uint256 _rate) private {
        if (!hasStaked[_staker]) {
            hasStaked[_staker] = true;
            stakers.push(_staker);
        }

        stakes[_staker].push(Stake({
            tokenAddress: _tokenAddress,
            amount: _amount,
            timestamp: block.timestamp,
            rate: _rate,
            brainIds: _brainIds
        }));
        emit Staked(_staker, _tokenAddress, _amount, block.timestamp, _rate);
    }

    function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner {
        require(tokenAddress != pepeCoinAddress, "Unable to remove prebriged PepeCoin");
        IERC20(tokenAddress).transfer(owner, tokenAmount);
    }

    function recoverERC721(address tokenAddress, uint256 tokenId) external onlyOwner {
        IERC721(tokenAddress).transferFrom(address(this), owner, tokenId);
    }

    function stakeBrain(uint256 _tokenId) external whenNotPaused nonReentrant {
        require(brainNFT.ownerOf(_tokenId) == msg.sender, "Not the owner of the Brain");
        require(!mainnetLive, "Mainnet is live!");
        brainNFT.transferFrom(msg.sender, address(this), _tokenId);
        uint256 currentRate = tokenConfigs[address(pepeCoin)].initialRate;

        uint256[] memory brainIds = new uint256[](1);
        brainIds[0] = _tokenId;

        _addStake(msg.sender, address(pepeCoin), 100000 * (10 ** 18), brainIds, currentRate);
        emit BrainStaked(msg.sender, _tokenId, block.timestamp, currentRate);
    }

    function withdraw() external whenNotPaused nonReentrant {
        uint256 totalStaked = 0;
        uint256 stakeCount = stakes[msg.sender].length;
        
        // make sure the users credits are calculated.
        if (block.timestamp - startTime <= 30 days) {
            // Store any previous credit balances
            lastKnownCredits[msg.sender] = credits[msg.sender];
            // Update the credit table to the latest
            updateCredits(msg.sender);
            // Combine the old and new updated credits
            lastKnownCredits[msg.sender] += credits[msg.sender];
        }

        for (uint i = stakeCount; i > 0; i--) {
            uint index = i - 1;
            Stake storage stake = stakes[msg.sender][index];
            totalStaked += stake.amount;

            // If it is a Brain they can only withdraw the Brain
            if (stake.brainIds.length == 0) {
                IERC20(stake.tokenAddress).transfer(msg.sender, stake.amount);
                emit Withdrawn(msg.sender, stake.amount);
            }
            
            // Transfer any Brain NFTs back to the user
            for (uint j = 0; j < stake.brainIds.length; j++) {
                brainNFT.transferFrom(address(this), msg.sender, stake.brainIds[j]);
                emit BrainWithdrawn(msg.sender, stake.brainIds[j]);
            }
            
            stakes[msg.sender][index] = stakes[msg.sender][stakes[msg.sender].length - 1];
            stakes[msg.sender].pop();
        }

        require(totalStaked > 0, "Nothing to remove from BasedAI bridge");
        credits[msg.sender] = 0;

    }

    function triggerMainnetLive() external onlyOwner {
        mainnetLive = true;
        for (uint i = 0; i < stakers.length; i++) {
            finalScores[stakers[i]] = getCredits(stakers[i]) + credits[stakers[i]];
            finalScores[stakers[i]] += lastKnownCredits[stakers[i]];
            emit FinalScoreRecorded(stakers[i], finalScores[stakers[i]]);
        }
        emit MainnetActivated();
    }

    function getFinalScore(address staker) public view returns (uint256) {
        require(mainnetLive, "BasedAI Mainnet is not live yet");
        return finalScores[staker];
    }

    function getCredits(address staker) private view returns (uint256) {
        uint256 totalCredits = 0;
        for (uint i = 0; i < stakes[staker].length; i++) {
            totalCredits += calculateCredits(stakes[staker][i]);
        }
        return totalCredits;
    }

    function updateCredits(address staker) private {
        uint256 totalCredits = 0;
        for (uint i = 0; i < stakes[staker].length; i++) {
            totalCredits += calculateCredits(stakes[staker][i]);
        }
        credits[staker] = totalCredits;
    }

    function calculateCredits(Stake memory stake) private view returns (uint256) {
        uint256 durationInSeconds = block.timestamp - stake.timestamp;
        uint256 accruedCredits = (stake.amount / stake.rate) * durationInSeconds / 86400; 
        return accruedCredits;
    }

    function calculateTotalCredits(address staker) public view returns (uint256) {
        if (mainnetLive) return finalScores[staker];
        uint256 totalCredits = 0;
        for (uint i = 0; i < stakes[staker].length; i++) {
            totalCredits += calculateCredits(stakes[staker][i]);
        }
        // add any leftover credits collected if they participated in Brain burn or Brain credits
        totalCredits += lastKnownCredits[staker];
        totalCredits += credits[staker];
        return totalCredits;
    }

    // Credits the user recovers if they restake. 
    function calculateReturnCredits(address staker) public view returns (uint256) {
        if (mainnetLive) return finalScores[staker];
        return lastKnownCredits[staker];
    }

    // calculates from a current stake how much a user has earned 
    function calculateCreditsPerToken(address staker, address _tokenAddress) public view returns (uint256) {
        require(!mainnetLive, "Mainnet is live, claim all rewards.");
        uint256 totalCredits = 0;
        for (uint i = 0; i < stakes[staker].length; i++) {
            if (stakes[staker][i].tokenAddress == _tokenAddress) {
                totalCredits += calculateCredits(stakes[staker][i]);
            }
        }
        return totalCredits;
    }

    function setCreditsForAddress(address _user, uint256 _credits) external onlyOwner {
        credits[_user] = _credits;
        emit CreditsUpdated(_user, _credits);
    }

    function getStakedAmount(address user, address tokenAddress) public view returns (uint256) {
        uint256 totalStaked = 0;
        for (uint i = 0; i < stakes[user].length; i++) {
            if (stakes[user][i].tokenAddress == tokenAddress) {
                totalStaked += stakes[user][i].amount;
            }
        }
        return totalStaked;
    }

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }

}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol)

pragma solidity ^0.8.20;

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

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

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"}],"name":"BrainStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"BrainWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"credits","type":"uint256"}],"name":"CreditsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"finalScore","type":"uint256"}],"name":"FinalScoreRecorded","type":"event"},{"anonymous":false,"inputs":[],"name":"MainnetActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"_initialRate","type":"uint256"},{"internalType":"uint256","name":"_rateIncreaseAmount","type":"uint256"},{"internalType":"uint256","name":"_rateIncreaseInterval","type":"uint256"}],"name":"addOrUpdateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"brainNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"calculateCreditsPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"calculateReturnCredits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"calculateTotalCredits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"credits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"finalScores","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getCurrentRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getFinalScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getStakedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastKnownCredits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainnetLive","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pepeCoin","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pepeCoinAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"recoverERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"removeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"setBasedBrainNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_credits","type":"uint256"}],"name":"setCreditsForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"stakeBrain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenConfigs","outputs":[{"internalType":"uint256","name":"initialRate","type":"uint256"},{"internalType":"uint256","name":"rateIncreaseAmount","type":"uint256"},{"internalType":"uint256","name":"rateIncreaseInterval","type":"uint256"},{"internalType":"bool","name":"isSupported","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"triggerMainnetLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561000f575f80fd5b5060015f819055505f60015f6101000a81548160ff02191690831515021790555073a9e8acf069c58aec8825542845fd754e41a9489a60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a9e8acf069c58aec8825542845fd754e41a9489a6001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a9e8acf069c58aec8825542845fd754e41a9489a60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600460146101000a81548160ff0219169083151502179055504260058190555060405180608001604052806101f481526020015f815260200162278d00815260200160011515815250600b5f73a9e8acf069c58aec8825542845fd754e41a9489a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff02191690831515021790555090505061402d806102525f395ff3fe608060405234801561000f575f80fd5b50600436106101ee575f3560e01c80639a29e18a1161010d578063cf0d99df116100a0578063fd5e6dd11161006f578063fd5e6dd114610594578063fe5ff468146105c4578063fed161a0146105f4578063ffd7ff9f14610612576101ee565b8063cf0d99df146104e6578063d8d07ca814610516578063dce77d8414610546578063e6e126df14610576576101ee565b8063abede4ae116100dc578063abede4ae14610472578063adc9772e1461047c578063bd45916c14610498578063c93c8f34146104b6576101ee565b80639a29e18a146103da578063a38f6682146103f6578063a826672814610412578063aaaa924914610442576101ee565b806378d32280116101855780638456cb59116101545780638456cb59146103785780638980f11f146103825780638bdfc0c01461039e5780638da5cb5b146103bc576101ee565b806378d322801461030657806378e9792514610322578063811257fe14610340578063819d4cc61461035c576101ee565b80633f4ba83a116101c15780633f4ba83a1461028f578063584b62a1146102995780635c975abb146102cc5780635fa7b584146102ea576101ee565b80630751c0cf146101f25780630db14e95146102225780631b69dc5f146102525780633ccfd60b14610285575b5f80fd5b61020c60048036038101906102079190613426565b610642565b6040516102199190613469565b60405180910390f35b61023c60048036038101906102379190613482565b610657565b6040516102499190613469565b60405180910390f35b61026c60048036038101906102679190613426565b6107da565b60405161027c94939291906134da565b60405180910390f35b61028d610812565b005b610297610f4b565b005b6102b360048036038101906102ae9190613547565b610fe4565b6040516102c39493929190613594565b60405180910390f35b6102d4611049565b6040516102e191906135d7565b60405180910390f35b61030460048036038101906102ff9190613426565b61105e565b005b610320600480360381019061031b9190613547565b611147565b005b61032a61126a565b6040516103379190613469565b60405180910390f35b61035a60048036038101906103559190613426565b611270565b005b61037660048036038101906103719190613547565b611342565b005b610380611460565b005b61039c60048036038101906103979190613547565b6114f9565b005b6103a66116b8565b6040516103b3919061364b565b60405180910390f35b6103c46116dc565b6040516103d19190613664565b60405180910390f35b6103f460048036038101906103ef919061367d565b611701565b005b610410600480360381019061040b91906136a8565b611a58565b005b61042c60048036038101906104279190613426565b611b8c565b6040516104399190613469565b60405180910390f35b61045c60048036038101906104579190613482565b611e23565b6040516104699190613469565b60405180910390f35b61047a6120ca565b005b61049660048036038101906104919190613547565b612509565b005b6104a0612849565b6040516104ad9190613664565b60405180910390f35b6104d060048036038101906104cb9190613426565b61286e565b6040516104dd91906135d7565b60405180910390f35b61050060048036038101906104fb9190613426565b61288b565b60405161050d9190613469565b60405180910390f35b610530600480360381019061052b9190613426565b6128a0565b60405161053d9190613469565b60405180910390f35b610560600480360381019061055b9190613426565b612935565b60405161056d9190613469565b60405180910390f35b61057e6129c2565b60405161058b91906135d7565b60405180910390f35b6105ae60048036038101906105a9919061367d565b6129d5565b6040516105bb9190613664565b60405180910390f35b6105de60048036038101906105d99190613426565b612a10565b6040516105eb9190613469565b60405180910390f35b6105fc612a25565b604051610609919061372c565b60405180910390f35b61062c60048036038101906106279190613426565b612a4a565b6040516106399190613469565b60405180910390f35b600c602052805f5260405f205f915090505481565b5f805f90505f5b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490508110156107cf578373ffffffffffffffffffffffffffffffffffffffff1660065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061070c5761070b613745565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036107c25760065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081815481106107a4576107a3613745565b5b905f5260205f20906005020160010154826107bf919061379f565b91505b808060010191505061065e565b508091505092915050565b600b602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b61081a612aeb565b610822612b35565b5f8060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050905062278d006005544261087991906137d2565b116109975760075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061090633612b82565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461098f919061379f565b925050819055505b5f8190505b5f811115610eba575f6001826109b291906137d2565b90505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110610a0457610a03613745565b5b905f5260205f2090600502019050806001015485610a22919061379f565b94505f816004018054905003610b2757805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b8152600401610a93929190613805565b6020604051808303815f875af1158015610aaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad39190613856565b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260010154604051610b1e9190613469565b60405180910390a25b5f5b8160040180549050811015610c5a5760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856004018581548110610b8d57610b8c613745565b5b905f5260205f2001546040518463ffffffff1660e01b8152600401610bb493929190613881565b5f604051808303815f87803b158015610bcb575f80fd5b505af1158015610bdd573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f1b9c7eb4925b0ec2beaa2f0271639119da4fed00dc83622b7d455aab4191a21f836004018381548110610c2f57610c2e613745565b5b905f5260205f200154604051610c459190613469565b60405180910390a28080600101915050610b29565b5060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610ce591906137d2565b81548110610cf657610cf5613745565b5b905f5260205f20906005020160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208381548110610d5157610d50613745565b5b905f5260205f2090600502015f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820154816001015560028201548160020155600382015481600301556004820181600401908054610df49291906132f6565b5090505060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e4557610e446138b6565b5b600190038181905f5260205f2090600502015f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f9055600382015f9055600482015f610ea19190613344565b5050905550508080610eb2906138e3565b91505061099c565b505f8211610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef49061398a565b60405180910390fd5b5f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050610f49612d64565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190613a18565b60405180910390fd5b610fe2612d6d565b565b6006602052815f5260405f208181548110610ffd575f80fd5b905f5260205f2090600502015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b5f60015f9054906101000a900460ff16905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490613a18565b60405180910390fd5b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f6101000a81548160ff02191690831515021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90613a18565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff167f7522b932a284a577fb9f080c9bbcac32efa24a0f15d015e0a247af66f7ba90ca8260405161125e9190613469565b60405180910390a25050565b60055481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690613a18565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613a18565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161142f93929190613881565b5f604051808303815f87803b158015611446575f80fd5b505af1158015611458573d5f803e3d5ffd5b505050505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690613a18565b60405180910390fd5b6114f7612dce565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f90613a18565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613aa6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611673929190613805565b6020604051808303815f875af115801561168f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b39190613856565b505050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611709612aeb565b611711612b35565b3373ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016117829190613469565b602060405180830381865afa15801561179d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c19190613ad8565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613b4d565b60405180910390fd5b600460149054906101000a900460ff1615611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90613bb5565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016118c593929190613881565b5f604051808303815f87803b1580156118dc575f80fd5b505af11580156118ee573d5f803e3d5ffd5b505050505f600b5f60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015490505f600167ffffffffffffffff81111561197157611970613bd3565b5b60405190808252806020026020018201604052801561199f5781602001602082028036833780820191505090505b50905082815f815181106119b6576119b5613745565b5b6020026020010181815250506119f93360018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000008486612e2f565b3373ffffffffffffffffffffffffffffffffffffffff167f021cd75ad29c3e1b0dd64f15d17e2efee3cd0c005cde6df27e3d9455c71ea7f3844285604051611a4393929190613c00565b60405180910390a25050611a55612d64565b50565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613a18565b60405180910390fd5b604051806080016040528084815260200183815260200182815260200160011515815250600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff02191690831515021790555090505050505050565b5f600460149054906101000a900460ff1615611be757600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050611e1e565b5f805b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050811015611d8257611d6860065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110611c8457611c83613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015611d5a57602002820191905f5260205f20905b815481526020019060010190808311611d46575b5050505050815250506130af565b82611d73919061379f565b91508080600101915050611bea565b5060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481611dcc919061379f565b905060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481611e17919061379f565b9050809150505b919050565b5f600460149054906101000a900460ff1615611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b90613ca5565b60405180910390fd5b5f805b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490508110156120bf578373ffffffffffffffffffffffffffffffffffffffff1660065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110611f2557611f24613745565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036120b2576120a460065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110611fc057611fbf613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820180548060200260200160405190810160405280929190818152602001828054801561209657602002820191905f5260205f20905b815481526020019060010190808311612082575b5050505050815250506130af565b826120af919061379f565b91505b8080600101915050611e77565b508091505092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090613a18565b60405180910390fd5b6001600460146101000a81548160ff0219169083151502179055505f5b600a805490508110156124da5760075f600a838154811061219a57612199613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612240600a838154811061221357612212613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130fd565b61224a919061379f565b600c5f600a848154811061226157612260613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f600a83815481106122dd576122dc613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c5f600a848154811061235657612355613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123c5919061379f565b92505081905550600a81815481106123e0576123df613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f26ce502c7a403ed9fbcae74253612b199f88ed7467c20b1f34d12f4d9978e156600c5f600a858154811061245657612455613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516124c59190613469565b60405180910390a28080600101915050612176565b507f93a0e1ffb3f54ad8b92c151a39ed5816730e5d538b85969d550a37635802101560405160405180910390a1565b612511612aeb565b612519612b35565b5f811161255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290613d0d565b60405180910390fd5b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f9054906101000a900460ff166125e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125de90613d9b565b60405180910390fd5b600460149054906101000a900460ff1615612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90613bb5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161267493929190613881565b6020604051808303815f875af1158015612690573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b49190613856565b505f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015490505f8067ffffffffffffffff81111561271357612712613bd3565b5b6040519080825280602002602001820160405280156127415781602001602082028036833780820191505090505b50905062278d006005544261275691906137d2565b1161282e5760095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127e4919061379f565b925050819055505f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61283b3385858486612e2f565b5050612845612d64565b5050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b6009602052805f5260405f205f915090505481565b5f600460149054906101000a900460ff166128f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e790613e03565b60405180910390fd5b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6005544261298591906137d2565b90505f8260020154826129989190613e4e565b90508083600101546129aa9190613e7e565b835f01546129b8919061379f565b9350505050919050565b600460149054906101000a900460ff1681565b600a81815481106129e4575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600460149054906101000a900460ff1615612aa557600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050612ae6565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b612af3611049565b15612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a90613f09565b60405180910390fd5b565b60025f5403612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090613f71565b60405180910390fd5b60025f81905550565b5f805b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050811015612d1d57612d0360065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110612c1f57612c1e613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015612cf557602002820191905f5260205f20905b815481526020019060010190808311612ce1575b5050505050815250506130af565b82612d0e919061379f565b91508080600101915050612b85565b508060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b60015f81905550565b612d756132a6565b5f60015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612db76132ef565b604051612dc49190613664565b60405180910390a1565b612dd6612aeb565b6001805f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e186132ef565b604051612e259190613664565b60405180910390a1565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f3357600160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a85908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200142815260200183815260200184815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004019080519060200190613051929190613362565b5050508473ffffffffffffffffffffffffffffffffffffffff167fad3fa07f4195b47e64892eb944ecbfc253384053c119852bb2bcae484c2fcb69858542856040516130a09493929190613594565b60405180910390a25050505050565b5f808260400151426130c191906137d2565b90505f6201518082856060015186602001516130dd9190613e4e565b6130e79190613e7e565b6130f19190613e4e565b90508092505050919050565b5f805f90505f5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905081101561329c5761328260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061319e5761319d613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820180548060200260200160405190810160405280929190818152602001828054801561327457602002820191905f5260205f20905b815481526020019060010190808311613260575b5050505050815250506130af565b8261328d919061379f565b91508080600101915050613104565b5080915050919050565b6132ae611049565b6132ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e490613fd9565b60405180910390fd5b565b5f33905090565b828054828255905f5260205f20908101928215613333575f5260205f209182015b82811115613332578254825591600101919060010190613317565b5b50905061334091906133ad565b5090565b5080545f8255905f5260205f209081019061335f91906133ad565b50565b828054828255905f5260205f2090810192821561339c579160200282015b8281111561339b578251825591602001919060010190613380565b5b5090506133a991906133ad565b5090565b5b808211156133c4575f815f9055506001016133ae565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133f5826133cc565b9050919050565b613405816133eb565b811461340f575f80fd5b50565b5f81359050613420816133fc565b92915050565b5f6020828403121561343b5761343a6133c8565b5b5f61344884828501613412565b91505092915050565b5f819050919050565b61346381613451565b82525050565b5f60208201905061347c5f83018461345a565b92915050565b5f8060408385031215613498576134976133c8565b5b5f6134a585828601613412565b92505060206134b685828601613412565b9150509250929050565b5f8115159050919050565b6134d4816134c0565b82525050565b5f6080820190506134ed5f83018761345a565b6134fa602083018661345a565b613507604083018561345a565b61351460608301846134cb565b95945050505050565b61352681613451565b8114613530575f80fd5b50565b5f813590506135418161351d565b92915050565b5f806040838503121561355d5761355c6133c8565b5b5f61356a85828601613412565b925050602061357b85828601613533565b9150509250929050565b61358e816133eb565b82525050565b5f6080820190506135a75f830187613585565b6135b4602083018661345a565b6135c1604083018561345a565b6135ce606083018461345a565b95945050505050565b5f6020820190506135ea5f8301846134cb565b92915050565b5f819050919050565b5f61361361360e613609846133cc565b6135f0565b6133cc565b9050919050565b5f613624826135f9565b9050919050565b5f6136358261361a565b9050919050565b6136458161362b565b82525050565b5f60208201905061365e5f83018461363c565b92915050565b5f6020820190506136775f830184613585565b92915050565b5f60208284031215613692576136916133c8565b5b5f61369f84828501613533565b91505092915050565b5f805f80608085870312156136c0576136bf6133c8565b5b5f6136cd87828801613412565b94505060206136de87828801613533565b93505060406136ef87828801613533565b925050606061370087828801613533565b91505092959194509250565b5f6137168261361a565b9050919050565b6137268161370c565b82525050565b5f60208201905061373f5f83018461371d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137a982613451565b91506137b483613451565b92508282019050808211156137cc576137cb613772565b5b92915050565b5f6137dc82613451565b91506137e783613451565b92508282039050818111156137ff576137fe613772565b5b92915050565b5f6040820190506138185f830185613585565b613825602083018461345a565b9392505050565b613835816134c0565b811461383f575f80fd5b50565b5f815190506138508161382c565b92915050565b5f6020828403121561386b5761386a6133c8565b5b5f61387884828501613842565b91505092915050565b5f6060820190506138945f830186613585565b6138a16020830185613585565b6138ae604083018461345a565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6138ed82613451565b91505f82036138ff576138fe613772565b5b600182039050919050565b5f82825260208201905092915050565b7f4e6f7468696e6720746f2072656d6f76652066726f6d204261736564414920625f8201527f7269646765000000000000000000000000000000000000000000000000000000602082015250565b5f61397460258361390a565b915061397f8261391a565b604082019050919050565b5f6020820190508181035f8301526139a181613968565b9050919050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e2e000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a0260228361390a565b9150613a0d826139a8565b604082019050919050565b5f6020820190508181035f830152613a2f816139f6565b9050919050565b7f556e61626c6520746f2072656d6f7665207072656272696765642050657065435f8201527f6f696e0000000000000000000000000000000000000000000000000000000000602082015250565b5f613a9060238361390a565b9150613a9b82613a36565b604082019050919050565b5f6020820190508181035f830152613abd81613a84565b9050919050565b5f81519050613ad2816133fc565b92915050565b5f60208284031215613aed57613aec6133c8565b5b5f613afa84828501613ac4565b91505092915050565b7f4e6f7420746865206f776e6572206f662074686520427261696e0000000000005f82015250565b5f613b37601a8361390a565b9150613b4282613b03565b602082019050919050565b5f6020820190508181035f830152613b6481613b2b565b9050919050565b7f4d61696e6e6574206973206c69766521000000000000000000000000000000005f82015250565b5f613b9f60108361390a565b9150613baa82613b6b565b602082019050919050565b5f6020820190508181035f830152613bcc81613b93565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f606082019050613c135f83018661345a565b613c20602083018561345a565b613c2d604083018461345a565b949350505050565b7f4d61696e6e6574206973206c6976652c20636c61696d20616c6c2072657761725f8201527f64732e0000000000000000000000000000000000000000000000000000000000602082015250565b5f613c8f60238361390a565b9150613c9a82613c35565b604082019050919050565b5f6020820190508181035f830152613cbc81613c83565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f613cf760208361390a565b9150613d0282613cc3565b602082019050919050565b5f6020820190508181035f830152613d2481613ceb565b9050919050565b7f546f6b656e206973206e6f7420737570706f7274656420666f72207374616b695f8201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d8560228361390a565b9150613d9082613d2b565b604082019050919050565b5f6020820190508181035f830152613db281613d79565b9050919050565b7f42617365644149204d61696e6e6574206973206e6f74206c69766520796574005f82015250565b5f613ded601f8361390a565b9150613df882613db9565b602082019050919050565b5f6020820190508181035f830152613e1a81613de1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e5882613451565b9150613e6383613451565b925082613e7357613e72613e21565b5b828204905092915050565b5f613e8882613451565b9150613e9383613451565b9250828202613ea181613451565b91508282048414831517613eb857613eb7613772565b5b5092915050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f613ef360108361390a565b9150613efe82613ebf565b602082019050919050565b5f6020820190508181035f830152613f2081613ee7565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f613f5b601f8361390a565b9150613f6682613f27565b602082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f613fc360148361390a565b9150613fce82613f8f565b602082019050919050565b5f6020820190508181035f830152613ff081613fb7565b905091905056fea264697066735822122070c7e6227f1ac9def2a8ed28ef5dc15ccf833fd38318a4326375982d6e92602a64736f6c63430008190033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101ee575f3560e01c80639a29e18a1161010d578063cf0d99df116100a0578063fd5e6dd11161006f578063fd5e6dd114610594578063fe5ff468146105c4578063fed161a0146105f4578063ffd7ff9f14610612576101ee565b8063cf0d99df146104e6578063d8d07ca814610516578063dce77d8414610546578063e6e126df14610576576101ee565b8063abede4ae116100dc578063abede4ae14610472578063adc9772e1461047c578063bd45916c14610498578063c93c8f34146104b6576101ee565b80639a29e18a146103da578063a38f6682146103f6578063a826672814610412578063aaaa924914610442576101ee565b806378d32280116101855780638456cb59116101545780638456cb59146103785780638980f11f146103825780638bdfc0c01461039e5780638da5cb5b146103bc576101ee565b806378d322801461030657806378e9792514610322578063811257fe14610340578063819d4cc61461035c576101ee565b80633f4ba83a116101c15780633f4ba83a1461028f578063584b62a1146102995780635c975abb146102cc5780635fa7b584146102ea576101ee565b80630751c0cf146101f25780630db14e95146102225780631b69dc5f146102525780633ccfd60b14610285575b5f80fd5b61020c60048036038101906102079190613426565b610642565b6040516102199190613469565b60405180910390f35b61023c60048036038101906102379190613482565b610657565b6040516102499190613469565b60405180910390f35b61026c60048036038101906102679190613426565b6107da565b60405161027c94939291906134da565b60405180910390f35b61028d610812565b005b610297610f4b565b005b6102b360048036038101906102ae9190613547565b610fe4565b6040516102c39493929190613594565b60405180910390f35b6102d4611049565b6040516102e191906135d7565b60405180910390f35b61030460048036038101906102ff9190613426565b61105e565b005b610320600480360381019061031b9190613547565b611147565b005b61032a61126a565b6040516103379190613469565b60405180910390f35b61035a60048036038101906103559190613426565b611270565b005b61037660048036038101906103719190613547565b611342565b005b610380611460565b005b61039c60048036038101906103979190613547565b6114f9565b005b6103a66116b8565b6040516103b3919061364b565b60405180910390f35b6103c46116dc565b6040516103d19190613664565b60405180910390f35b6103f460048036038101906103ef919061367d565b611701565b005b610410600480360381019061040b91906136a8565b611a58565b005b61042c60048036038101906104279190613426565b611b8c565b6040516104399190613469565b60405180910390f35b61045c60048036038101906104579190613482565b611e23565b6040516104699190613469565b60405180910390f35b61047a6120ca565b005b61049660048036038101906104919190613547565b612509565b005b6104a0612849565b6040516104ad9190613664565b60405180910390f35b6104d060048036038101906104cb9190613426565b61286e565b6040516104dd91906135d7565b60405180910390f35b61050060048036038101906104fb9190613426565b61288b565b60405161050d9190613469565b60405180910390f35b610530600480360381019061052b9190613426565b6128a0565b60405161053d9190613469565b60405180910390f35b610560600480360381019061055b9190613426565b612935565b60405161056d9190613469565b60405180910390f35b61057e6129c2565b60405161058b91906135d7565b60405180910390f35b6105ae60048036038101906105a9919061367d565b6129d5565b6040516105bb9190613664565b60405180910390f35b6105de60048036038101906105d99190613426565b612a10565b6040516105eb9190613469565b60405180910390f35b6105fc612a25565b604051610609919061372c565b60405180910390f35b61062c60048036038101906106279190613426565b612a4a565b6040516106399190613469565b60405180910390f35b600c602052805f5260405f205f915090505481565b5f805f90505f5b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490508110156107cf578373ffffffffffffffffffffffffffffffffffffffff1660065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061070c5761070b613745565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036107c25760065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081815481106107a4576107a3613745565b5b905f5260205f20906005020160010154826107bf919061379f565b91505b808060010191505061065e565b508091505092915050565b600b602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b61081a612aeb565b610822612b35565b5f8060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050905062278d006005544261087991906137d2565b116109975760075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061090633612b82565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461098f919061379f565b925050819055505b5f8190505b5f811115610eba575f6001826109b291906137d2565b90505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110610a0457610a03613745565b5b905f5260205f2090600502019050806001015485610a22919061379f565b94505f816004018054905003610b2757805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b8152600401610a93929190613805565b6020604051808303815f875af1158015610aaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad39190613856565b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260010154604051610b1e9190613469565b60405180910390a25b5f5b8160040180549050811015610c5a5760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856004018581548110610b8d57610b8c613745565b5b905f5260205f2001546040518463ffffffff1660e01b8152600401610bb493929190613881565b5f604051808303815f87803b158015610bcb575f80fd5b505af1158015610bdd573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f1b9c7eb4925b0ec2beaa2f0271639119da4fed00dc83622b7d455aab4191a21f836004018381548110610c2f57610c2e613745565b5b905f5260205f200154604051610c459190613469565b60405180910390a28080600101915050610b29565b5060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610ce591906137d2565b81548110610cf657610cf5613745565b5b905f5260205f20906005020160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208381548110610d5157610d50613745565b5b905f5260205f2090600502015f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820154816001015560028201548160020155600382015481600301556004820181600401908054610df49291906132f6565b5090505060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e4557610e446138b6565b5b600190038181905f5260205f2090600502015f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f9055600382015f9055600482015f610ea19190613344565b5050905550508080610eb2906138e3565b91505061099c565b505f8211610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef49061398a565b60405180910390fd5b5f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050610f49612d64565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190613a18565b60405180910390fd5b610fe2612d6d565b565b6006602052815f5260405f208181548110610ffd575f80fd5b905f5260205f2090600502015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b5f60015f9054906101000a900460ff16905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490613a18565b60405180910390fd5b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f6101000a81548160ff02191690831515021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90613a18565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff167f7522b932a284a577fb9f080c9bbcac32efa24a0f15d015e0a247af66f7ba90ca8260405161125e9190613469565b60405180910390a25050565b60055481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690613a18565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613a18565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161142f93929190613881565b5f604051808303815f87803b158015611446575f80fd5b505af1158015611458573d5f803e3d5ffd5b505050505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690613a18565b60405180910390fd5b6114f7612dce565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f90613a18565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613aa6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611673929190613805565b6020604051808303815f875af115801561168f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b39190613856565b505050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611709612aeb565b611711612b35565b3373ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016117829190613469565b602060405180830381865afa15801561179d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c19190613ad8565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613b4d565b60405180910390fd5b600460149054906101000a900460ff1615611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90613bb5565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016118c593929190613881565b5f604051808303815f87803b1580156118dc575f80fd5b505af11580156118ee573d5f803e3d5ffd5b505050505f600b5f60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015490505f600167ffffffffffffffff81111561197157611970613bd3565b5b60405190808252806020026020018201604052801561199f5781602001602082028036833780820191505090505b50905082815f815181106119b6576119b5613745565b5b6020026020010181815250506119f93360018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000008486612e2f565b3373ffffffffffffffffffffffffffffffffffffffff167f021cd75ad29c3e1b0dd64f15d17e2efee3cd0c005cde6df27e3d9455c71ea7f3844285604051611a4393929190613c00565b60405180910390a25050611a55612d64565b50565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613a18565b60405180910390fd5b604051806080016040528084815260200183815260200182815260200160011515815250600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff02191690831515021790555090505050505050565b5f600460149054906101000a900460ff1615611be757600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050611e1e565b5f805b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050811015611d8257611d6860065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110611c8457611c83613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015611d5a57602002820191905f5260205f20905b815481526020019060010190808311611d46575b5050505050815250506130af565b82611d73919061379f565b91508080600101915050611bea565b5060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481611dcc919061379f565b905060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481611e17919061379f565b9050809150505b919050565b5f600460149054906101000a900460ff1615611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b90613ca5565b60405180910390fd5b5f805b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490508110156120bf578373ffffffffffffffffffffffffffffffffffffffff1660065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110611f2557611f24613745565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036120b2576120a460065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110611fc057611fbf613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820180548060200260200160405190810160405280929190818152602001828054801561209657602002820191905f5260205f20905b815481526020019060010190808311612082575b5050505050815250506130af565b826120af919061379f565b91505b8080600101915050611e77565b508091505092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090613a18565b60405180910390fd5b6001600460146101000a81548160ff0219169083151502179055505f5b600a805490508110156124da5760075f600a838154811061219a57612199613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612240600a838154811061221357612212613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130fd565b61224a919061379f565b600c5f600a848154811061226157612260613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f600a83815481106122dd576122dc613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c5f600a848154811061235657612355613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123c5919061379f565b92505081905550600a81815481106123e0576123df613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f26ce502c7a403ed9fbcae74253612b199f88ed7467c20b1f34d12f4d9978e156600c5f600a858154811061245657612455613745565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516124c59190613469565b60405180910390a28080600101915050612176565b507f93a0e1ffb3f54ad8b92c151a39ed5816730e5d538b85969d550a37635802101560405160405180910390a1565b612511612aeb565b612519612b35565b5f811161255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290613d0d565b60405180910390fd5b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f9054906101000a900460ff166125e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125de90613d9b565b60405180910390fd5b600460149054906101000a900460ff1615612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90613bb5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161267493929190613881565b6020604051808303815f875af1158015612690573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b49190613856565b505f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015490505f8067ffffffffffffffff81111561271357612712613bd3565b5b6040519080825280602002602001820160405280156127415781602001602082028036833780820191505090505b50905062278d006005544261275691906137d2565b1161282e5760095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127e4919061379f565b925050819055505f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61283b3385858486612e2f565b5050612845612d64565b5050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b6009602052805f5260405f205f915090505481565b5f600460149054906101000a900460ff166128f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e790613e03565b60405180910390fd5b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6005544261298591906137d2565b90505f8260020154826129989190613e4e565b90508083600101546129aa9190613e7e565b835f01546129b8919061379f565b9350505050919050565b600460149054906101000a900460ff1681565b600a81815481106129e4575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600460149054906101000a900460ff1615612aa557600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050612ae6565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b612af3611049565b15612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a90613f09565b60405180910390fd5b565b60025f5403612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090613f71565b60405180910390fd5b60025f81905550565b5f805b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050811015612d1d57612d0360065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208281548110612c1f57612c1e613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015612cf557602002820191905f5260205f20905b815481526020019060010190808311612ce1575b5050505050815250506130af565b82612d0e919061379f565b91508080600101915050612b85565b508060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b60015f81905550565b612d756132a6565b5f60015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612db76132ef565b604051612dc49190613664565b60405180910390a1565b612dd6612aeb565b6001805f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e186132ef565b604051612e259190613664565b60405180910390a1565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f3357600160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a85908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200142815260200183815260200184815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004019080519060200190613051929190613362565b5050508473ffffffffffffffffffffffffffffffffffffffff167fad3fa07f4195b47e64892eb944ecbfc253384053c119852bb2bcae484c2fcb69858542856040516130a09493929190613594565b60405180910390a25050505050565b5f808260400151426130c191906137d2565b90505f6201518082856060015186602001516130dd9190613e4e565b6130e79190613e7e565b6130f19190613e4e565b90508092505050919050565b5f805f90505f5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905081101561329c5761328260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061319e5761319d613745565b5b905f5260205f2090600502016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820180548060200260200160405190810160405280929190818152602001828054801561327457602002820191905f5260205f20905b815481526020019060010190808311613260575b5050505050815250506130af565b8261328d919061379f565b91508080600101915050613104565b5080915050919050565b6132ae611049565b6132ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e490613fd9565b60405180910390fd5b565b5f33905090565b828054828255905f5260205f20908101928215613333575f5260205f209182015b82811115613332578254825591600101919060010190613317565b5b50905061334091906133ad565b5090565b5080545f8255905f5260205f209081019061335f91906133ad565b50565b828054828255905f5260205f2090810192821561339c579160200282015b8281111561339b578251825591602001919060010190613380565b5b5090506133a991906133ad565b5090565b5b808211156133c4575f815f9055506001016133ae565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133f5826133cc565b9050919050565b613405816133eb565b811461340f575f80fd5b50565b5f81359050613420816133fc565b92915050565b5f6020828403121561343b5761343a6133c8565b5b5f61344884828501613412565b91505092915050565b5f819050919050565b61346381613451565b82525050565b5f60208201905061347c5f83018461345a565b92915050565b5f8060408385031215613498576134976133c8565b5b5f6134a585828601613412565b92505060206134b685828601613412565b9150509250929050565b5f8115159050919050565b6134d4816134c0565b82525050565b5f6080820190506134ed5f83018761345a565b6134fa602083018661345a565b613507604083018561345a565b61351460608301846134cb565b95945050505050565b61352681613451565b8114613530575f80fd5b50565b5f813590506135418161351d565b92915050565b5f806040838503121561355d5761355c6133c8565b5b5f61356a85828601613412565b925050602061357b85828601613533565b9150509250929050565b61358e816133eb565b82525050565b5f6080820190506135a75f830187613585565b6135b4602083018661345a565b6135c1604083018561345a565b6135ce606083018461345a565b95945050505050565b5f6020820190506135ea5f8301846134cb565b92915050565b5f819050919050565b5f61361361360e613609846133cc565b6135f0565b6133cc565b9050919050565b5f613624826135f9565b9050919050565b5f6136358261361a565b9050919050565b6136458161362b565b82525050565b5f60208201905061365e5f83018461363c565b92915050565b5f6020820190506136775f830184613585565b92915050565b5f60208284031215613692576136916133c8565b5b5f61369f84828501613533565b91505092915050565b5f805f80608085870312156136c0576136bf6133c8565b5b5f6136cd87828801613412565b94505060206136de87828801613533565b93505060406136ef87828801613533565b925050606061370087828801613533565b91505092959194509250565b5f6137168261361a565b9050919050565b6137268161370c565b82525050565b5f60208201905061373f5f83018461371d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137a982613451565b91506137b483613451565b92508282019050808211156137cc576137cb613772565b5b92915050565b5f6137dc82613451565b91506137e783613451565b92508282039050818111156137ff576137fe613772565b5b92915050565b5f6040820190506138185f830185613585565b613825602083018461345a565b9392505050565b613835816134c0565b811461383f575f80fd5b50565b5f815190506138508161382c565b92915050565b5f6020828403121561386b5761386a6133c8565b5b5f61387884828501613842565b91505092915050565b5f6060820190506138945f830186613585565b6138a16020830185613585565b6138ae604083018461345a565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6138ed82613451565b91505f82036138ff576138fe613772565b5b600182039050919050565b5f82825260208201905092915050565b7f4e6f7468696e6720746f2072656d6f76652066726f6d204261736564414920625f8201527f7269646765000000000000000000000000000000000000000000000000000000602082015250565b5f61397460258361390a565b915061397f8261391a565b604082019050919050565b5f6020820190508181035f8301526139a181613968565b9050919050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e2e000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a0260228361390a565b9150613a0d826139a8565b604082019050919050565b5f6020820190508181035f830152613a2f816139f6565b9050919050565b7f556e61626c6520746f2072656d6f7665207072656272696765642050657065435f8201527f6f696e0000000000000000000000000000000000000000000000000000000000602082015250565b5f613a9060238361390a565b9150613a9b82613a36565b604082019050919050565b5f6020820190508181035f830152613abd81613a84565b9050919050565b5f81519050613ad2816133fc565b92915050565b5f60208284031215613aed57613aec6133c8565b5b5f613afa84828501613ac4565b91505092915050565b7f4e6f7420746865206f776e6572206f662074686520427261696e0000000000005f82015250565b5f613b37601a8361390a565b9150613b4282613b03565b602082019050919050565b5f6020820190508181035f830152613b6481613b2b565b9050919050565b7f4d61696e6e6574206973206c69766521000000000000000000000000000000005f82015250565b5f613b9f60108361390a565b9150613baa82613b6b565b602082019050919050565b5f6020820190508181035f830152613bcc81613b93565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f606082019050613c135f83018661345a565b613c20602083018561345a565b613c2d604083018461345a565b949350505050565b7f4d61696e6e6574206973206c6976652c20636c61696d20616c6c2072657761725f8201527f64732e0000000000000000000000000000000000000000000000000000000000602082015250565b5f613c8f60238361390a565b9150613c9a82613c35565b604082019050919050565b5f6020820190508181035f830152613cbc81613c83565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f613cf760208361390a565b9150613d0282613cc3565b602082019050919050565b5f6020820190508181035f830152613d2481613ceb565b9050919050565b7f546f6b656e206973206e6f7420737570706f7274656420666f72207374616b695f8201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d8560228361390a565b9150613d9082613d2b565b604082019050919050565b5f6020820190508181035f830152613db281613d79565b9050919050565b7f42617365644149204d61696e6e6574206973206e6f74206c69766520796574005f82015250565b5f613ded601f8361390a565b9150613df882613db9565b602082019050919050565b5f6020820190508181035f830152613e1a81613de1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e5882613451565b9150613e6383613451565b925082613e7357613e72613e21565b5b828204905092915050565b5f613e8882613451565b9150613e9383613451565b9250828202613ea181613451565b91508282048414831517613eb857613eb7613772565b5b5092915050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f613ef360108361390a565b9150613efe82613ebf565b602082019050919050565b5f6020820190508181035f830152613f2081613ee7565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f613f5b601f8361390a565b9150613f6682613f27565b602082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f613fc360148361390a565b9150613fce82613f8f565b602082019050919050565b5f6020820190508181035f830152613ff081613fb7565b905091905056fea264697066735822122070c7e6227f1ac9def2a8ed28ef5dc15ccf833fd38318a4326375982d6e92602a64736f6c63430008190033

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

OVERVIEW

Pre-bridge and continue to stake PepeCoin and BasedAI (ERC20) tokens to earn BASED L1 coins! (rewards accrued can only be claimed for the BASED L1 main net, after it has been launched. TBD).

0x40359B38db010A1d0ff5E7d00CC477D5b393bd72
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.