ETH Price: $3,352.87 (-2.41%)

Contract

0xEc02f813404656E2A2AEd5BaeEd41D785324E8D0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Unstake Early155684412022-09-19 15:26:11799 days ago1663601171IN
0xEc02f813...85324E8D0
0 ETH0.0011647114.02505931
Stake155684322022-09-19 15:24:23799 days ago1663601063IN
0xEc02f813...85324E8D0
0 ETH0.002895279.36370587
Unstake Early155684282022-09-19 15:23:35799 days ago1663601015IN
0xEc02f813...85324E8D0
0 ETH0.0009031710.87573271
Stake155684242022-09-19 15:22:47799 days ago1663600967IN
0xEc02f813...85324E8D0
0 ETH0.0033302210.76997795
Unstake Early155684182022-09-19 15:21:35799 days ago1663600895IN
0xEc02f813...85324E8D0
0 ETH0.000807899.72836518
Stake155684102022-09-19 15:19:59799 days ago1663600799IN
0xEc02f813...85324E8D0
0 ETH0.002938889.51088857
Unstake Early155683372022-09-19 15:05:11799 days ago1663599911IN
0xEc02f813...85324E8D0
0 ETH0.000975511.74673094
Stake155683332022-09-19 15:04:23799 days ago1663599863IN
0xEc02f813...85324E8D0
0 ETH0.0038842911.91083732
Unstake Early155681842022-09-19 14:34:35799 days ago1663598075IN
0xEc02f813...85324E8D0
0 ETH0.00109213.14956476
Stake155681772022-09-19 14:33:11799 days ago1663597991IN
0xEc02f813...85324E8D0
0 ETH0.0047912115.49480915
Unstake Early155681672022-09-19 14:31:11799 days ago1663597871IN
0xEc02f813...85324E8D0
0 ETH0.0014021416.88414681
Stake155681642022-09-19 14:30:23799 days ago1663597823IN
0xEc02f813...85324E8D0
0 ETH0.0045061614.57297524
Unstake Early155681452022-09-19 14:26:35799 days ago1663597595IN
0xEc02f813...85324E8D0
0 ETH0.0011147716.07112585
Unstake Early155681392022-09-19 14:25:23799 days ago1663597523IN
0xEc02f813...85324E8D0
0 ETH0.0012201314.69248083
Stake155681232022-09-19 14:21:59799 days ago1663597319IN
0xEc02f813...85324E8D0
0 ETH0.0047071716.11549059
Stake155653532022-09-19 5:02:35799 days ago1663563755IN
0xEc02f813...85324E8D0
0 ETH0.001164723.56933418
Unstake154887462022-09-07 6:18:50811 days ago1662531530IN
0xEc02f813...85324E8D0
0 ETH0.0008041813.27846631
Unstake151400932022-07-14 9:59:28866 days ago1657792768IN
0xEc02f813...85324E8D0
0 ETH0.000732739.86934801
Stake130683002021-08-21 11:20:121193 days ago1629544812IN
0xEc02f813...85324E8D0
0 ETH0.0090675226.79458861
Unstake Early130681742021-08-21 10:50:441193 days ago1629543044IN
0xEc02f813...85324E8D0
0 ETH0.0014284120.59266813
Stake129769212021-08-07 8:44:131207 days ago1628325853IN
0xEc02f813...85324E8D0
0 ETH0.0112486838
Unstake Early129769162021-08-07 8:43:171207 days ago1628325797IN
0xEc02f813...85324E8D0
0 ETH0.0026358738
Stake129652092021-08-05 13:22:001209 days ago1628169720IN
0xEc02f813...85324E8D0
0 ETH0.0146529249.50011805
Unstake Early129651712021-08-05 13:13:021209 days ago1628169182IN
0xEc02f813...85324E8D0
0 ETH0.0031907946
Unstake Early129651712021-08-05 13:13:021209 days ago1628169182IN
0xEc02f813...85324E8D0
0 ETH0.0031907946
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FlashProtocol

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-01
*/

// SPDX-License-Identifier: MIT
// File: ../../../../media/shakeib98/xio-flash-protocol/contracts/interfaces/IFlashToken.sol

pragma solidity 0.6.12;

interface IFlashToken {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    function mint(address to, uint256 value) external returns (bool);

    function burn(uint256 value) external returns (bool);
}

// File: ../../../../media/shakeib98/xio-flash-protocol/contracts/interfaces/IFlashReceiver.sol

pragma solidity 0.6.12;

interface IFlashReceiver {
    function receiveFlash(
        bytes32 id,
        uint256 amountIn,
        uint256 expireAfter,
        uint256 mintedAmount,
        address staker,
        bytes calldata data
    ) external returns (uint256);
}

// File: ../../../../media/shakeib98/xio-flash-protocol/contracts/interfaces/IFlashProtocol.sol

pragma solidity 0.6.12;

interface IFlashProtocol {
    enum LockedFunctions { SET_MATCH_RATIO, SET_MATCH_RECEIVER }

    function TIMELOCK() external view returns (uint256);

    function FLASH_TOKEN() external view returns (address);

    function matchRatio() external view returns (uint256);

    function matchReceiver() external view returns (address);

    function stakes(bytes32 _id)
        external
        view
        returns (
            uint256 amountIn,
            uint256 expiry,
            uint256 expireAfter,
            uint256 mintedAmount,
            address staker,
            address receiver
        );

    function stake(
        uint256 _amountIn,
        uint256 _days,
        address _receiver,
        bytes calldata _data
    )
        external
        returns (
            uint256 mintedAmount,
            uint256 matchedAmount,
            bytes32 id
        );

    function lockFunction(LockedFunctions _lockedFunction) external;

    function unlockFunction(LockedFunctions _lockedFunction) external;

    function timelock(LockedFunctions _lockedFunction) external view returns (uint256);

    function balances(address _staker) external view returns (uint256);

    function unstake(bytes32 _id) external returns (uint256 withdrawAmount);

    function unstakeEarly(bytes32 _id) external returns (uint256 withdrawAmount);

    function getFPY(uint256 _amountIn) external view returns (uint256);

    function setMatchReceiver(address _newMatchReceiver) external;

    function setMatchRatio(uint256 _newMatchRatio) external;

    function getMatchedAmount(uint256 mintedAmount) external view returns (uint256);

    function getMintAmount(uint256 _amountIn, uint256 _expiry) external view returns (uint256);

    function getPercentageStaked(uint256 _amountIn) external view returns (uint256 percentage);

    function getInvFPY(uint256 _amount) external view returns (uint256);

    function getPercentageUnStaked(uint256 _amount) external view returns (uint256 percentage);
}

// File: ../../../../media/shakeib98/xio-flash-protocol/contracts/libraries/SafeMath.sol

pragma solidity 0.6.12;

// A library for performing overflow-safe math, courtesy of DappHub: https://github.com/dapphub/ds-math/blob/d0ef6d6a5f/src/math.sol
// Modified to include only the essentials
library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "MATH:: ADD_OVERFLOW");
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "MATH:: SUB_UNDERFLOW");
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MATH:: MUL_OVERFLOW");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "MATH:: DIVISION_BY_ZERO");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

// File: ../../../../media/shakeib98/xio-flash-protocol/contracts/libraries/Address.sol

pragma solidity 0.6.12;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
}

// File: ../../../../media/shakeib98/xio-flash-protocol/contracts/FlashProtocol.sol

pragma solidity 0.6.12;






contract FlashProtocol is IFlashProtocol {
    using SafeMath for uint256;
    using Address for address;

    struct Stake {
        uint256 amountIn;
        uint256 expiry;
        uint256 expireAfter;
        uint256 mintedAmount;
        address staker;
        address receiver;
    }

    uint256 public constant override TIMELOCK = 3 days;
    address public constant override FLASH_TOKEN = 0xB4467E8D621105312a914F1D42f10770C0Ffe3c8;

    uint256 internal constant PRECISION = 1e18;
    uint256 internal constant MAX_FPY_FOR_1_YEAR = 5e17;
    uint256 internal constant SECONDS_IN_1_YEAR = 365 * 86400;

    uint256 public override matchRatio;
    address public override matchReceiver;

    mapping(bytes32 => Stake) public override stakes;
    mapping(LockedFunctions => uint256) public override timelock;
    mapping(address => uint256) public override balances;

    event Staked(
        bytes32 _id,
        uint256 _amountIn,
        uint256 _expiry,
        uint256 _expireAfter,
        uint256 _mintedAmount,
        address indexed _staker,
        address indexed _receiver
    );

    event Unstaked(bytes32 _id, uint256 _amountIn, address indexed _staker);

    modifier onlyMatchReceiver {
        require(msg.sender == matchReceiver, "FlashProtocol:: NOT_MATCH_RECEIVER");
        _;
    }

    modifier notLocked(LockedFunctions _lockedFunction) {
        require(
            timelock[_lockedFunction] != 0 && timelock[_lockedFunction] <= block.timestamp,
            "FlashProtocol:: FUNCTION_TIMELOCKED"
        );
        _;
    }

    constructor(address _initialMatchReceiver) public {
        _setMatchReceiver(_initialMatchReceiver);
    }

    function lockFunction(LockedFunctions _lockedFunction) external override onlyMatchReceiver {
        timelock[_lockedFunction] = type(uint256).max;
    }

    function unlockFunction(LockedFunctions _lockedFunction) external override onlyMatchReceiver {
        timelock[_lockedFunction] = block.timestamp + TIMELOCK;
    }

    function setMatchReceiver(address _newMatchReceiver)
        external
        override
        onlyMatchReceiver
        notLocked(LockedFunctions.SET_MATCH_RECEIVER)
    {
        _setMatchReceiver(_newMatchReceiver);
        timelock[LockedFunctions.SET_MATCH_RECEIVER] = 0;
    }

    function _setMatchReceiver(address _newMatchReceiver) internal {
        matchReceiver = _newMatchReceiver;
    }

    function setMatchRatio(uint256 _newMatchRatio)
        external
        override
        onlyMatchReceiver
        notLocked(LockedFunctions.SET_MATCH_RATIO)
    {
        require(_newMatchRatio >= 0 && _newMatchRatio <= 2000, "FlashProtocol:: INVALID_MATCH_RATIO");
        matchRatio = _newMatchRatio;
        timelock[LockedFunctions.SET_MATCH_RATIO] = 0;
    }

    function stake(
        uint256 _amountIn,
        uint256 _expiry,
        address _receiver,
        bytes calldata _data
    )
        external
        override
        returns (
            uint256 mintedAmount,
            uint256 matchedAmount,
            bytes32 id
        )
    {
        require(_amountIn > 0, "FlashProtocol:: INVALID_AMOUNT");

        require(_receiver != address(this), "FlashProtocol:: INVALID_ADDRESS");

        address staker = msg.sender;

        require(_expiry <= calculateMaxStakePeriod(_amountIn), "FlashProtocol:: MAX_STAKE_PERIOD_EXCEEDS");

        uint256 expiration = block.timestamp.add(_expiry);

        IFlashToken(FLASH_TOKEN).transferFrom(staker, address(this), _amountIn);

        balances[staker] = balances[staker].add(_amountIn);

        id = keccak256(abi.encodePacked(_amountIn, _expiry, _receiver, staker, block.timestamp));

        require(stakes[id].staker == address(0), "FlashProtocol:: STAKE_EXISTS");

        mintedAmount = getMintAmount(_amountIn, _expiry);
        matchedAmount = getMatchedAmount(mintedAmount);

        IFlashToken(FLASH_TOKEN).mint(_receiver, mintedAmount);
        IFlashToken(FLASH_TOKEN).mint(matchReceiver, matchedAmount);

        stakes[id] = Stake(_amountIn, _expiry, expiration, mintedAmount, staker, _receiver);

        if (_receiver.isContract()) {
            IFlashReceiver(_receiver).receiveFlash(id, _amountIn, expiration, mintedAmount, staker, _data);
        }

        emit Staked(id, _amountIn, _expiry, expiration, mintedAmount, staker, _receiver);
    }

    function unstake(bytes32 _id) external override returns (uint256 withdrawAmount) {
        Stake memory s = stakes[_id];
        require(block.timestamp >= s.expireAfter, "FlashProtol:: STAKE_NOT_EXPIRED");
        balances[s.staker] = balances[s.staker].sub(s.amountIn);
        withdrawAmount = s.amountIn;
        delete stakes[_id];
        IFlashToken(FLASH_TOKEN).transfer(s.staker, withdrawAmount);
        emit Unstaked(_id, s.amountIn, s.staker);
    }

    function unstakeEarly(bytes32 _id) external override returns (uint256 withdrawAmount) {
        Stake memory s = stakes[_id];
        address staker = msg.sender;
        require(s.staker == staker, "FlashProtocol:: INVALID_STAKER");
        uint256 remainingTime = (s.expireAfter.sub(block.timestamp));
        uint256 burnAmount = _calculateBurn(s.amountIn, remainingTime, s.expiry);
        assert(burnAmount <= s.amountIn);
        balances[staker] = balances[staker].sub(s.amountIn);
        withdrawAmount = s.amountIn.sub(burnAmount);
        delete stakes[_id];
        IFlashToken(FLASH_TOKEN).burn(burnAmount);
        IFlashToken(FLASH_TOKEN).transfer(staker, withdrawAmount);
        emit Unstaked(_id, s.amountIn, staker);
    }

    function getMatchedAmount(uint256 _mintedAmount) public override view returns (uint256) {
        return _mintedAmount.mul(matchRatio).div(10000);
    }

    function getMintAmount(uint256 _amountIn, uint256 _expiry) public override view returns (uint256) {
        return _amountIn.mul(_expiry).mul(getFPY(_amountIn)).div(PRECISION * SECONDS_IN_1_YEAR);
    }

    function getFPY(uint256 _amountIn) public override view returns (uint256) {
        return (PRECISION.sub(getPercentageStaked(_amountIn))).div(2);
    }

    function getPercentageStaked(uint256 _amountIn) public override view returns (uint256 percentage) {
        uint256 locked = IFlashToken(FLASH_TOKEN).balanceOf(address(this)).add(_amountIn);
        percentage = locked.mul(PRECISION).div(IFlashToken(FLASH_TOKEN).totalSupply());
    }

    function _calculateBurn(
        uint256 _amount,
        uint256 _remainingTime,
        uint256 _totalTime
    ) private view returns (uint256 burnAmount) {
        burnAmount = _amount.mul(_remainingTime).mul(getInvFPY(_amount)).div(_totalTime.mul(PRECISION));
    }

    function getInvFPY(uint256 _amount) public override view returns (uint256) {
        return PRECISION.sub(getPercentageUnStaked(_amount));
    }

    function getPercentageUnStaked(uint256 _amount) public override view returns (uint256 percentage) {
        uint256 locked = IFlashToken(FLASH_TOKEN).balanceOf(address(this)).sub(_amount);
        percentage = locked.mul(PRECISION).div(IFlashToken(FLASH_TOKEN).totalSupply());
    }

    function calculateMaxStakePeriod(uint256 _amountIn) private view returns (uint256) {
        return MAX_FPY_FOR_1_YEAR.mul(SECONDS_IN_1_YEAR).div(getFPY(_amountIn));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_initialMatchReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_id","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_expiry","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_expireAfter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_mintedAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"_staker","type":"address"},{"indexed":true,"internalType":"address","name":"_receiver","type":"address"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_id","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amountIn","type":"uint256"},{"indexed":true,"internalType":"address","name":"_staker","type":"address"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"FLASH_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountIn","type":"uint256"}],"name":"getFPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getInvFPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintedAmount","type":"uint256"}],"name":"getMatchedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"getMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountIn","type":"uint256"}],"name":"getPercentageStaked","outputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getPercentageUnStaked","outputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IFlashProtocol.LockedFunctions","name":"_lockedFunction","type":"uint8"}],"name":"lockFunction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"matchRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"matchReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMatchRatio","type":"uint256"}],"name":"setMatchRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMatchReceiver","type":"address"}],"name":"setMatchReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"uint256","name":"_expiry","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"stake","outputs":[{"internalType":"uint256","name":"mintedAmount","type":"uint256"},{"internalType":"uint256","name":"matchedAmount","type":"uint256"},{"internalType":"bytes32","name":"id","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint256","name":"expireAfter","type":"uint256"},{"internalType":"uint256","name":"mintedAmount","type":"uint256"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IFlashProtocol.LockedFunctions","name":"","type":"uint8"}],"name":"timelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IFlashProtocol.LockedFunctions","name":"_lockedFunction","type":"uint8"}],"name":"unlockFunction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_id","type":"bytes32"}],"name":"unstake","outputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_id","type":"bytes32"}],"name":"unstakeEarly","outputs":[{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516118dd3803806118dd8339818101604052602081101561003357600080fd5b505161003e81610044565b50610066565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b611868806100756000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638fee6407116100ad578063b4fa3b9811610071578063b4fa3b98146103bc578063c17bae2a146103dc578063cc704d54146103fc578063d08c970214610419578063e345a380146104215761012c565b80638fee640714610256578063a066983d146102b2578063aa53099d1461035c578063aad4717d1461037c578063b3e1f050146103995761012c565b80635b49129e116100f45780635b49129e146101ef57806368220664146101f757806371ed5d1a1461021457806376f5cf28146102315780637aadef8b1461024e5761012c565b80631051f6961461013157806321edc93d1461016057806323c6e14c1461017d57806327212b5b146101a157806327e235e3146101c9575b600080fd5b61014e6004803603602081101561014757600080fd5b503561043e565b60408051918252519081900360200190f35b61014e6004803603602081101561017657600080fd5b5035610467565b610185610484565b604080516001600160a01b039092168252519081900360200190f35b6101c7600480360360208110156101b757600080fd5b50356001600160a01b031661049c565b005b61014e600480360360208110156101df57600080fd5b50356001600160a01b03166105b6565b61014e6105c8565b61014e6004803603602081101561020d57600080fd5b50356105ce565b61014e6004803603602081101561022a57600080fd5b50356106ff565b6101c76004803603602081101561024757600080fd5b5035610931565b61014e610a67565b6102736004803603602081101561026c57600080fd5b5035610a6e565b6040805196875260208701959095528585019390935260608501919091526001600160a01b0390811660808501521660a0830152519081900360c00190f35b61033e600480360360808110156102c857600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156102ff57600080fd5b82018360208201111561031157600080fd5b8035906020019184600183028401116401000000008311171561033357600080fd5b509092509050610ab1565b60408051938452602084019290925282820152519081900360600190f35b6101c76004803603602081101561037257600080fd5b503560ff166110b2565b61014e6004803603602081101561039257600080fd5b5035611130565b61014e600480360360408110156103af57600080fd5b50803590602001356111ca565b6101c7600480360360208110156103d257600080fd5b503560ff166111f7565b61014e600480360360208110156103f257600080fd5b503560ff16611253565b61014e6004803603602081101561041257600080fd5b5035611265565b610185611278565b61014e6004803603602081101561043757600080fd5b5035611287565b600061046161271061045b6000548561156d90919063ffffffff16565b906115d2565b92915050565b600061046161047583611130565b670de0b6b3a76400009061163c565b73b4467e8d621105312a914f1d42f10770c0ffe3c881565b6001546001600160a01b031633146104e55760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b6001600081905260036020527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c541580159061054a5750426003600083600181111561052d57fe5b600181111561053857fe5b81526020019081526020016000205411155b6105855760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b61058e8261168b565b600060038160015b60018111156105a157fe5b81526020810191909152604001600020555050565b60046020526000908152604090205481565b60005481565b6000806106688373b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561063657600080fd5b505afa15801561064a573d6000803e3d6000fd5b505050506040513d602081101561066057600080fd5b5051906116ad565b90506106f873b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ba57600080fd5b505afa1580156106ce573d6000803e3d6000fd5b505050506040513d60208110156106e457600080fd5b505161045b83670de0b6b3a764000061156d565b9392505050565b600061070961175a565b50600082815260026020818152604092839020835160c08101855281548152600182015492810192909252918201549281018390526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152904210156107c0576040805162461bcd60e51b815260206004820152601f60248201527f466c61736850726f746f6c3a3a205354414b455f4e4f545f4558504952454400604482015290519081900360640190fd5b805160808201516001600160a01b03166000908152600460205260409020546107e89161163c565b6080820180516001600160a01b0390811660009081526004602081815260408084209690965586518984526002808352878520858155600181018690559081018590556003810185905580840180546001600160a01b03199081169091556005909101805490911690559451865163a9059cbb60e01b815294169184019190915260248301849052935192955073b4467e8d621105312a914f1d42f10770c0ffe3c89363a9059cbb93604480850194929391928390030190829087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b505050506040513d60208110156108db57600080fd5b50506080810151815160408051868152602081019290925280516001600160a01b03909316927f2ce17f91452598d1f926f6cfe29a9d42a67ff82b45d1eb94e0634c27555c14da9281900390910190a250919050565b6001546001600160a01b0316331461097a5760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff54158015906109dd575042600360008360018111156109c057fe5b60018111156109cb57fe5b81526020019081526020016000205411155b610a185760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b6107d0821115610a595760405162461bcd60e51b81526004018080602001828103825260238152602001806117a36023913960400191505060405180910390fd5b600082815560038180610596565b6203f48081565b6002602081905260009182526040909120805460018201549282015460038301546004840154600590940154929493919290916001600160a01b03908116911686565b6000806000808811610b0a576040805162461bcd60e51b815260206004820152601e60248201527f466c61736850726f746f636f6c3a3a20494e56414c49445f414d4f554e540000604482015290519081900360640190fd5b6001600160a01b038616301415610b68576040805162461bcd60e51b815260206004820152601f60248201527f466c61736850726f746f636f6c3a3a20494e56414c49445f4144445245535300604482015290519081900360640190fd5b33610b72896116fb565b881115610bb05760405162461bcd60e51b81526004018080602001828103825260288152602001806117e96028913960400191505060405180910390fd5b6000610bbc428a6116ad565b604080516323b872dd60e01b81526001600160a01b0385166004820152306024820152604481018d9052905191925073b4467e8d621105312a914f1d42f10770c0ffe3c8916323b872dd916064808201926020929091908290030181600087803b158015610c2957600080fd5b505af1158015610c3d573d6000803e3d6000fd5b505050506040513d6020811015610c5357600080fd5b50506001600160a01b038216600090815260046020526040902054610c78908b6116ad565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550898989844260405160200180868152602001858152602001846001600160a01b031660601b8152601401836001600160a01b031660601b81526014018281526020019550505050505060405160208183030381529060405280519060200120925060006001600160a01b03166002600085815260200190815260200160002060040160009054906101000a90046001600160a01b03166001600160a01b031614610d92576040805162461bcd60e51b815260206004820152601c60248201527f466c61736850726f746f636f6c3a3a205354414b455f45584953545300000000604482015290519081900360640190fd5b610d9c8a8a6111ca565b9450610da78561043e565b935073b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166340c10f1989876040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b505050506040513d6020811015610e3e57600080fd5b5050600154604080516340c10f1960e01b81526001600160a01b039092166004830152602482018690525173b4467e8d621105312a914f1d42f10770c0ffe3c8916340c10f199160448083019260209291908290030181600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b505050506040513d6020811015610ed057600080fd5b50506040805160c0810182528b815260208181018c8152828401858152606084018a81526001600160a01b03808916608087019081528f821660a0880181815260008d8152600298899052999099209751885594516001880155925194860194909455516003850155516004840180549184166001600160a01b03199283161790559351600590930180549390921692909316919091179055610f729061171f565b1561104757876001600160a01b0316632cbff446848c8489878d8d6040518863ffffffff1660e01b815260040180888152602001878152602001868152602001858152602001846001600160a01b03168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050602060405180830381600087803b15801561101a57600080fd5b505af115801561102e573d6000803e3d6000fd5b505050506040513d602081101561104457600080fd5b50505b60408051848152602081018c90528082018b9052606081018390526080810187905290516001600160a01b03808b1692908516917f8872a0bfe035dd55f2341f67aa0f9a8196bb3f97e132b6d3cb2f53f91aaa93f99181900360a00190a35050955095509592505050565b6001546001600160a01b031633146110fb5760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b6203f48042016003600083600181111561111157fe5b600181111561111c57fe5b815260208101919091526040016000205550565b6000806106688373b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561119857600080fd5b505afa1580156111ac573d6000803e3d6000fd5b505050506040513d60208110156111c257600080fd5b50519061163c565b60006106f86a1a1601fc4ea7109e00000061045b6111e786611265565b6111f1878761156d565b9061156d565b6001546001600160a01b031633146112405760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b6000196003600083600181111561111157fe5b60036020526000908152604090205481565b6000610461600261045b610475856105ce565b6001546001600160a01b031681565b600061129161175a565b50600082815260026020818152604092839020835160c0810185528154815260018201549281019290925291820154928101929092526003810154606083015260048101546001600160a01b03908116608084018190526005909201541660a083015233908114611349576040805162461bcd60e51b815260206004820152601e60248201527f466c61736850726f746f636f6c3a3a20494e56414c49445f5354414b45520000604482015290519081900360640190fd5b604082015160009061135b904261163c565b905060006113728460000151838660200151611725565b845190915081111561138057fe5b83516001600160a01b0384166000908152600460205260409020546113a49161163c565b6001600160a01b03841660009081526004602052604090205583516113c9908261163c565b60008781526002602081815260408084208481556001810185905592830184905560038301849055600480840180546001600160a01b0319908116909155600590940180549094169093558051630852cd8d60e31b81529283018690525193985073b4467e8d621105312a914f1d42f10770c0ffe3c8936342966c68936024808501948390030190829087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d602081101561148c57600080fd5b50506040805163a9059cbb60e01b81526001600160a01b038516600482015260248101879052905173b4467e8d621105312a914f1d42f10770c0ffe3c89163a9059cbb9160448083019260209291908290030181600087803b1580156114f157600080fd5b505af1158015611505573d6000803e3d6000fd5b505050506040513d602081101561151b57600080fd5b5050835160408051888152602081019290925280516001600160a01b038616927f2ce17f91452598d1f926f6cfe29a9d42a67ff82b45d1eb94e0634c27555c14da92908290030190a250505050919050565b60008261157c57506000610461565b8282028284828161158957fe5b04146106f8576040805162461bcd60e51b81526020600482015260136024820152724d4154483a3a204d554c5f4f564552464c4f5760681b604482015290519081900360640190fd5b6000808211611628576040805162461bcd60e51b815260206004820152601760248201527f4d4154483a3a204449564953494f4e5f42595f5a45524f000000000000000000604482015290519081900360640190fd5b600082848161163357fe5b04949350505050565b80820382811115610461576040805162461bcd60e51b81526020600482015260146024820152734d4154483a3a205355425f554e444552464c4f5760601b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b80820182811015610461576040805162461bcd60e51b81526020600482015260136024820152724d4154483a3a204144445f4f564552464c4f5760681b604482015290519081900360640190fd5b600061046161170983611265565b61045b6706f05b59d3b200006301e1338061156d565b3b151590565b600061175261173c83670de0b6b3a764000061156d565b61045b61174887610467565b6111f1888861156d565b949350505050565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152509056fe466c61736850726f746f636f6c3a3a20494e56414c49445f4d415443485f524154494f466c61736850726f746f636f6c3a3a2046554e4354494f4e5f54494d454c4f434b4544466c61736850726f746f636f6c3a3a204d41585f5354414b455f504552494f445f45584345454453466c61736850726f746f636f6c3a3a204e4f545f4d415443485f5245434549564552a26469706673582212203d61015aeb9398234d4cc34778e624e01a76f38d86a1dced5b5fa6853477078e64736f6c634300060c0033000000000000000000000000842f8f6fb524996d0b660621da895166e1cea691

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638fee6407116100ad578063b4fa3b9811610071578063b4fa3b98146103bc578063c17bae2a146103dc578063cc704d54146103fc578063d08c970214610419578063e345a380146104215761012c565b80638fee640714610256578063a066983d146102b2578063aa53099d1461035c578063aad4717d1461037c578063b3e1f050146103995761012c565b80635b49129e116100f45780635b49129e146101ef57806368220664146101f757806371ed5d1a1461021457806376f5cf28146102315780637aadef8b1461024e5761012c565b80631051f6961461013157806321edc93d1461016057806323c6e14c1461017d57806327212b5b146101a157806327e235e3146101c9575b600080fd5b61014e6004803603602081101561014757600080fd5b503561043e565b60408051918252519081900360200190f35b61014e6004803603602081101561017657600080fd5b5035610467565b610185610484565b604080516001600160a01b039092168252519081900360200190f35b6101c7600480360360208110156101b757600080fd5b50356001600160a01b031661049c565b005b61014e600480360360208110156101df57600080fd5b50356001600160a01b03166105b6565b61014e6105c8565b61014e6004803603602081101561020d57600080fd5b50356105ce565b61014e6004803603602081101561022a57600080fd5b50356106ff565b6101c76004803603602081101561024757600080fd5b5035610931565b61014e610a67565b6102736004803603602081101561026c57600080fd5b5035610a6e565b6040805196875260208701959095528585019390935260608501919091526001600160a01b0390811660808501521660a0830152519081900360c00190f35b61033e600480360360808110156102c857600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156102ff57600080fd5b82018360208201111561031157600080fd5b8035906020019184600183028401116401000000008311171561033357600080fd5b509092509050610ab1565b60408051938452602084019290925282820152519081900360600190f35b6101c76004803603602081101561037257600080fd5b503560ff166110b2565b61014e6004803603602081101561039257600080fd5b5035611130565b61014e600480360360408110156103af57600080fd5b50803590602001356111ca565b6101c7600480360360208110156103d257600080fd5b503560ff166111f7565b61014e600480360360208110156103f257600080fd5b503560ff16611253565b61014e6004803603602081101561041257600080fd5b5035611265565b610185611278565b61014e6004803603602081101561043757600080fd5b5035611287565b600061046161271061045b6000548561156d90919063ffffffff16565b906115d2565b92915050565b600061046161047583611130565b670de0b6b3a76400009061163c565b73b4467e8d621105312a914f1d42f10770c0ffe3c881565b6001546001600160a01b031633146104e55760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b6001600081905260036020527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c541580159061054a5750426003600083600181111561052d57fe5b600181111561053857fe5b81526020019081526020016000205411155b6105855760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b61058e8261168b565b600060038160015b60018111156105a157fe5b81526020810191909152604001600020555050565b60046020526000908152604090205481565b60005481565b6000806106688373b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561063657600080fd5b505afa15801561064a573d6000803e3d6000fd5b505050506040513d602081101561066057600080fd5b5051906116ad565b90506106f873b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ba57600080fd5b505afa1580156106ce573d6000803e3d6000fd5b505050506040513d60208110156106e457600080fd5b505161045b83670de0b6b3a764000061156d565b9392505050565b600061070961175a565b50600082815260026020818152604092839020835160c08101855281548152600182015492810192909252918201549281018390526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152904210156107c0576040805162461bcd60e51b815260206004820152601f60248201527f466c61736850726f746f6c3a3a205354414b455f4e4f545f4558504952454400604482015290519081900360640190fd5b805160808201516001600160a01b03166000908152600460205260409020546107e89161163c565b6080820180516001600160a01b0390811660009081526004602081815260408084209690965586518984526002808352878520858155600181018690559081018590556003810185905580840180546001600160a01b03199081169091556005909101805490911690559451865163a9059cbb60e01b815294169184019190915260248301849052935192955073b4467e8d621105312a914f1d42f10770c0ffe3c89363a9059cbb93604480850194929391928390030190829087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b505050506040513d60208110156108db57600080fd5b50506080810151815160408051868152602081019290925280516001600160a01b03909316927f2ce17f91452598d1f926f6cfe29a9d42a67ff82b45d1eb94e0634c27555c14da9281900390910190a250919050565b6001546001600160a01b0316331461097a5760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff54158015906109dd575042600360008360018111156109c057fe5b60018111156109cb57fe5b81526020019081526020016000205411155b610a185760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b6107d0821115610a595760405162461bcd60e51b81526004018080602001828103825260238152602001806117a36023913960400191505060405180910390fd5b600082815560038180610596565b6203f48081565b6002602081905260009182526040909120805460018201549282015460038301546004840154600590940154929493919290916001600160a01b03908116911686565b6000806000808811610b0a576040805162461bcd60e51b815260206004820152601e60248201527f466c61736850726f746f636f6c3a3a20494e56414c49445f414d4f554e540000604482015290519081900360640190fd5b6001600160a01b038616301415610b68576040805162461bcd60e51b815260206004820152601f60248201527f466c61736850726f746f636f6c3a3a20494e56414c49445f4144445245535300604482015290519081900360640190fd5b33610b72896116fb565b881115610bb05760405162461bcd60e51b81526004018080602001828103825260288152602001806117e96028913960400191505060405180910390fd5b6000610bbc428a6116ad565b604080516323b872dd60e01b81526001600160a01b0385166004820152306024820152604481018d9052905191925073b4467e8d621105312a914f1d42f10770c0ffe3c8916323b872dd916064808201926020929091908290030181600087803b158015610c2957600080fd5b505af1158015610c3d573d6000803e3d6000fd5b505050506040513d6020811015610c5357600080fd5b50506001600160a01b038216600090815260046020526040902054610c78908b6116ad565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550898989844260405160200180868152602001858152602001846001600160a01b031660601b8152601401836001600160a01b031660601b81526014018281526020019550505050505060405160208183030381529060405280519060200120925060006001600160a01b03166002600085815260200190815260200160002060040160009054906101000a90046001600160a01b03166001600160a01b031614610d92576040805162461bcd60e51b815260206004820152601c60248201527f466c61736850726f746f636f6c3a3a205354414b455f45584953545300000000604482015290519081900360640190fd5b610d9c8a8a6111ca565b9450610da78561043e565b935073b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166340c10f1989876040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b505050506040513d6020811015610e3e57600080fd5b5050600154604080516340c10f1960e01b81526001600160a01b039092166004830152602482018690525173b4467e8d621105312a914f1d42f10770c0ffe3c8916340c10f199160448083019260209291908290030181600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b505050506040513d6020811015610ed057600080fd5b50506040805160c0810182528b815260208181018c8152828401858152606084018a81526001600160a01b03808916608087019081528f821660a0880181815260008d8152600298899052999099209751885594516001880155925194860194909455516003850155516004840180549184166001600160a01b03199283161790559351600590930180549390921692909316919091179055610f729061171f565b1561104757876001600160a01b0316632cbff446848c8489878d8d6040518863ffffffff1660e01b815260040180888152602001878152602001868152602001858152602001846001600160a01b03168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050602060405180830381600087803b15801561101a57600080fd5b505af115801561102e573d6000803e3d6000fd5b505050506040513d602081101561104457600080fd5b50505b60408051848152602081018c90528082018b9052606081018390526080810187905290516001600160a01b03808b1692908516917f8872a0bfe035dd55f2341f67aa0f9a8196bb3f97e132b6d3cb2f53f91aaa93f99181900360a00190a35050955095509592505050565b6001546001600160a01b031633146110fb5760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b6203f48042016003600083600181111561111157fe5b600181111561111c57fe5b815260208101919091526040016000205550565b6000806106688373b4467e8d621105312a914f1d42f10770c0ffe3c86001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561119857600080fd5b505afa1580156111ac573d6000803e3d6000fd5b505050506040513d60208110156111c257600080fd5b50519061163c565b60006106f86a1a1601fc4ea7109e00000061045b6111e786611265565b6111f1878761156d565b9061156d565b6001546001600160a01b031633146112405760405162461bcd60e51b81526004018080602001828103825260228152602001806118116022913960400191505060405180910390fd5b6000196003600083600181111561111157fe5b60036020526000908152604090205481565b6000610461600261045b610475856105ce565b6001546001600160a01b031681565b600061129161175a565b50600082815260026020818152604092839020835160c0810185528154815260018201549281019290925291820154928101929092526003810154606083015260048101546001600160a01b03908116608084018190526005909201541660a083015233908114611349576040805162461bcd60e51b815260206004820152601e60248201527f466c61736850726f746f636f6c3a3a20494e56414c49445f5354414b45520000604482015290519081900360640190fd5b604082015160009061135b904261163c565b905060006113728460000151838660200151611725565b845190915081111561138057fe5b83516001600160a01b0384166000908152600460205260409020546113a49161163c565b6001600160a01b03841660009081526004602052604090205583516113c9908261163c565b60008781526002602081815260408084208481556001810185905592830184905560038301849055600480840180546001600160a01b0319908116909155600590940180549094169093558051630852cd8d60e31b81529283018690525193985073b4467e8d621105312a914f1d42f10770c0ffe3c8936342966c68936024808501948390030190829087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d602081101561148c57600080fd5b50506040805163a9059cbb60e01b81526001600160a01b038516600482015260248101879052905173b4467e8d621105312a914f1d42f10770c0ffe3c89163a9059cbb9160448083019260209291908290030181600087803b1580156114f157600080fd5b505af1158015611505573d6000803e3d6000fd5b505050506040513d602081101561151b57600080fd5b5050835160408051888152602081019290925280516001600160a01b038616927f2ce17f91452598d1f926f6cfe29a9d42a67ff82b45d1eb94e0634c27555c14da92908290030190a250505050919050565b60008261157c57506000610461565b8282028284828161158957fe5b04146106f8576040805162461bcd60e51b81526020600482015260136024820152724d4154483a3a204d554c5f4f564552464c4f5760681b604482015290519081900360640190fd5b6000808211611628576040805162461bcd60e51b815260206004820152601760248201527f4d4154483a3a204449564953494f4e5f42595f5a45524f000000000000000000604482015290519081900360640190fd5b600082848161163357fe5b04949350505050565b80820382811115610461576040805162461bcd60e51b81526020600482015260146024820152734d4154483a3a205355425f554e444552464c4f5760601b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b80820182811015610461576040805162461bcd60e51b81526020600482015260136024820152724d4154483a3a204144445f4f564552464c4f5760681b604482015290519081900360640190fd5b600061046161170983611265565b61045b6706f05b59d3b200006301e1338061156d565b3b151590565b600061175261173c83670de0b6b3a764000061156d565b61045b61174887610467565b6111f1888861156d565b949350505050565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152509056fe466c61736850726f746f636f6c3a3a20494e56414c49445f4d415443485f524154494f466c61736850726f746f636f6c3a3a2046554e4354494f4e5f54494d454c4f434b4544466c61736850726f746f636f6c3a3a204d41585f5354414b455f504552494f445f45584345454453466c61736850726f746f636f6c3a3a204e4f545f4d415443485f5245434549564552a26469706673582212203d61015aeb9398234d4cc34778e624e01a76f38d86a1dced5b5fa6853477078e64736f6c634300060c0033

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

000000000000000000000000842f8f6fb524996d0b660621da895166e1cea691

-----Decoded View---------------
Arg [0] : _initialMatchReceiver (address): 0x842f8f6fB524996d0b660621DA895166E1ceA691

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000842f8f6fb524996d0b660621da895166e1cea691


Deployed Bytecode Sourcemap

6151:7468:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11882:154;;;;;;;;;;;;;;;;-1:-1:-1;11882:154:0;;:::i;:::-;;;;;;;;;;;;;;;;12996:146;;;;;;;;;;;;;;;;-1:-1:-1;12996:146:0;;:::i;6517:89::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6517:89:0;;;;;;;;;;;;;;8223:290;;;;;;;;;;;;;;;;-1:-1:-1;8223:290:0;-1:-1:-1;;;;;8223:290:0;;:::i;:::-;;6997:52;;;;;;;;;;;;;;;;-1:-1:-1;6997:52:0;-1:-1:-1;;;;;6997:52:0;;:::i;6788:34::-;;;:::i;12418:287::-;;;;;;;;;;;;;;;;-1:-1:-1;12418:287:0;;:::i;10643:469::-;;;;;;;;;;;;;;;;-1:-1:-1;10643:469:0;;:::i;8644:373::-;;;;;;;;;;;;;;;;-1:-1:-1;8644:373:0;;:::i;6460:50::-;;;:::i;6875:48::-;;;;;;;;;;;;;;;;-1:-1:-1;6875:48:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6875:48:0;;;;;;;;;;;;;;;;;;;;;9025:1610;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9025:1610:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9025:1610:0;;-1:-1:-1;9025:1610:0;-1:-1:-1;9025:1610:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;8049:166;;;;;;;;;;;;;;;;-1:-1:-1;8049:166:0;;;;:::i;13150:285::-;;;;;;;;;;;;;;;;-1:-1:-1;13150:285:0;;:::i;12044:204::-;;;;;;;;;;;;;;;;-1:-1:-1;12044:204:0;;;;;;;:::i;7886:155::-;;;;;;;;;;;;;;;;-1:-1:-1;7886:155:0;;;;:::i;6930:60::-;;;;;;;;;;;;;;;;-1:-1:-1;6930:60:0;;;;:::i;12256:154::-;;;;;;;;;;;;;;;;-1:-1:-1;12256:154:0;;:::i;6829:37::-;;;:::i;11120:754::-;;;;;;;;;;;;;;;;-1:-1:-1;11120:754:0;;:::i;11882:154::-;11961:7;11988:40;12022:5;11988:29;12006:10;;11988:13;:17;;:29;;;;:::i;:::-;:33;;:40::i;:::-;11981:47;11882:154;-1:-1:-1;;11882:154:0:o;12996:146::-;13062:7;13089:45;13103:30;13125:7;13103:21;:30::i;:::-;6653:4;;13089:13;:45::i;6517:89::-;6564:42;6517:89;:::o;8223:290::-;7435:13;;-1:-1:-1;;;;;7435:13:0;7421:10;:27;7413:74;;;;-1:-1:-1;;;7413:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8358:34:::1;7600:25;::::0;;;:8:::1;:25;::::0;;;:30;;::::1;::::0;:78:::1;;;7663:15;7634:8;:25;7643:15;7634:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;;7600:78;7578:163;;;;-1:-1:-1::0;;;7578:163:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8410:36:::2;8428:17;8410;:36::i;:::-;8504:1;8457:8;8504:1:::0;8466:34:::2;8457:44;;;;;;;;;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;8457:44:0;:48;-1:-1:-1;;8223:290:0:o;6997:52::-;;;;;;;;;;;;;:::o;6788:34::-;;;;:::o;12418:287::-;12496:18;12527:14;12544:64;12598:9;6564:42;-1:-1:-1;;;;;12544:34:0;;12587:4;12544:49;;;;;;;;;;;;;-1:-1:-1;;;;;12544:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12544:49:0;;:53;:64::i;:::-;12527:81;;12632:65;6564:42;-1:-1:-1;;;;;12658:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12658:38:0;12632:21;:6;6653:4;12632:10;:21::i;:65::-;12619:78;12418:287;-1:-1:-1;;;12418:287:0:o;10643:469::-;10700:22;10735:14;;:::i;:::-;-1:-1:-1;10752:11:0;;;;:6;:11;;;;;;;;;10735:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10735:28:0;;;;;;;;;;;;;;;;;;;;10782:15;:32;;10774:76;;;;;-1:-1:-1;;;10774:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10905:10;;10891:8;;;;-1:-1:-1;;;;;10882:18:0;10905:10;10882:18;;;:8;:18;;;;;;:34;;:22;:34::i;:::-;10870:8;;;;;-1:-1:-1;;;;;10861:18:0;;;;;;;:8;:18;;;;;;;;:55;;;;10944:10;;10972:11;;;:6;:11;;;;;;10965:18;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10965:18:0;;;;;;;;;;;;;;;;;11028:8;;10994:59;;-1:-1:-1;;;10994:59:0;;;;;;;;;;;;;;;;;;;10944:10;;-1:-1:-1;6564:42:0;;10994:33;;:59;;;;;10861:18;;10994:59;;;;;;;;;6564:42;10994:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11095:8:0;;;;11083:10;;11069:35;;;;;;10994:59;11069:35;;;;;;;;-1:-1:-1;;;;;11069:35:0;;;;;;;;;;;;;;10643:469;;;;:::o;8644:373::-;7435:13;;-1:-1:-1;;;;;7435:13:0;7421:10;:27;7413:74;;;;-1:-1:-1;;;7413:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8773:31:::1;7600:25:::0;;;:8:::1;:25;::::0;;;:30;;::::1;::::0;:78:::1;;;7663:15;7634:8;:25;7643:15;7634:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;;7600:78;7578:163;;;;-1:-1:-1::0;;;7578:163:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8871:4:::2;8853:14;:22;;8822:93;;;;-1:-1:-1::0;;;8822:93:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8926:10;:27:::0;;;8964:8:::2;8926:10:::0;;8964:41:::2;::::0;6460:50;6504:6;6460:50;:::o;6875:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6875:48:0;;;;;;:::o;9025:1610::-;9228:20;9263:21;9299:10;9357:1;9345:9;:13;9337:56;;;;;-1:-1:-1;;;9337:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9414:26:0;;9435:4;9414:26;;9406:70;;;;;-1:-1:-1;;;9406:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9506:10;9548:34;9572:9;9548:23;:34::i;:::-;9537:7;:45;;9529:98;;;;-1:-1:-1;;;9529:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9640:18;9661:28;:15;9681:7;9661:19;:28::i;:::-;9702:71;;;-1:-1:-1;;;9702:71:0;;-1:-1:-1;;;;;9702:71:0;;;;;;9756:4;9702:71;;;;;;;;;;;;9640:49;;-1:-1:-1;6564:42:0;;9702:37;;:71;;;;;;;;;;;;;;;-1:-1:-1;6564:42:0;9702:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;9805:16:0;;;;;;:8;9702:71;9805:16;;;;;:31;;9826:9;9805:20;:31::i;:::-;9786:8;:16;9795:6;-1:-1:-1;;;;;9786:16:0;-1:-1:-1;;;;;9786:16:0;;;;;;;;;;;;:50;;;;9881:9;9892:7;9901:9;9912:6;9920:15;9864:72;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9864:72:0;;;;;;;;-1:-1:-1;;;;;9864:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9854:83;;;;;;9849:88;;9987:1;-1:-1:-1;;;;;9958:31:0;:6;:10;9965:2;9958:10;;;;;;;;;;;:17;;;;;;;;;;-1:-1:-1;;;;;9958:17:0;-1:-1:-1;;;;;9958:31:0;;9950:72;;;;;-1:-1:-1;;;9950:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10050:33;10064:9;10075:7;10050:13;:33::i;:::-;10035:48;;10110:30;10127:12;10110:16;:30::i;:::-;10094:46;;6564:42;-1:-1:-1;;;;;10153:29:0;;10183:9;10194:12;10153:54;;;;;;;;;;;;;-1:-1:-1;;;;;10153:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10248:13:0;;10218:59;;;-1:-1:-1;;;10218:59:0;;-1:-1:-1;;;;;10248:13:0;;;10218:59;;;;;;;;;;;6564:42;;10218:29;;:59;;;;;10153:54;;10218:59;;;;;;;-1:-1:-1;6564:42:0;10218:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10303:70:0;;;;;;;;;;;10218:59;10303:70;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10303:70:0;;;;;;;;;;;;;;;;;;-1:-1:-1;10290:10:0;;;:6;:10;;;;;;;;:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10290:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10390:22;;:20;:22::i;:::-;10386:149;;;10444:9;-1:-1:-1;;;;;10429:38:0;;10468:2;10472:9;10483:10;10495:12;10509:6;10517:5;;10429:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10429:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10386:149:0;10552:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10552:75:0;;;;;;;;;;;;;;;;;9025:1610;;;;;;;;;;;:::o;8049:166::-;7435:13;;-1:-1:-1;;;;;7435:13:0;7421:10;:27;7413:74;;;;-1:-1:-1;;;7413:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6504:6:::1;8181:15;:26;8153:8;:25;8162:15;8153:25;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8153:25:0;:54;-1:-1:-1;8049:166:0:o;13150:285::-;13228:18;13259:14;13276:62;13330:7;6564:42;-1:-1:-1;;;;;13276:34:0;;13319:4;13276:49;;;;;;;;;;;;;-1:-1:-1;;;;;13276:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13276:49:0;;:53;:62::i;12044:204::-;12133:7;12160:80;12210:29;12160:45;12187:17;12194:9;12187:6;:17::i;:::-;12160:22;:9;12174:7;12160:13;:22::i;:::-;:26;;:45::i;7886:155::-;7435:13;;-1:-1:-1;;;;;7435:13:0;7421:10;:27;7413:74;;;;-1:-1:-1;;;7413:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7988:8:0::1;:25;7997:15;7988:25;;;;;;;6930:60:::0;;;;;;;;;;;;;:::o;12256:154::-;12321:7;12348:54;12400:1;12349:45;12363:30;12383:9;12363:19;:30::i;6829:37::-;;;-1:-1:-1;;;;;6829:37:0;;:::o;11120:754::-;11182:22;11217:14;;:::i;:::-;-1:-1:-1;11234:11:0;;;;:6;:11;;;;;;;;;11217:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11217:28:0;;;;;;;;;;;;;;;;;;;11273:10;;11302:18;;11294:61;;;;;-1:-1:-1;;;11294:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11391:13;;;;11366:21;;11391:34;;11409:15;11391:17;:34::i;:::-;11366:60;;11437:18;11458:51;11473:1;:10;;;11485:13;11500:1;:8;;;11458:14;:51::i;:::-;11541:10;;11437:72;;-1:-1:-1;11527:24:0;;;11520:32;;;;11603:10;;-1:-1:-1;;;;;11582:16:0;;11603:10;11582:16;;;:8;:16;;;;;;:32;;:20;:32::i;:::-;-1:-1:-1;;;;;11563:16:0;;;;;;:8;:16;;;;;:51;11642:10;;:26;;11657:10;11642:14;:26::i;:::-;11686:11;;;;:6;:11;;;;;;;;11679:18;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11679:18:0;;;;;;;;;;;;;;;;;;11708:41;;-1:-1:-1;;;11708:41:0;;;;;;;;;11625:43;;-1:-1:-1;6564:42:0;;11708:29;;:41;;;;;;;;;;;;6564:42;11708:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11760:57:0;;;-1:-1:-1;;;11760:57:0;;-1:-1:-1;;;;;11760:57:0;;;;;;;;;;;;;;6564:42;;11760:33;;:57;;;;;11708:41;;11760:57;;;;;;;-1:-1:-1;6564:42:0;11760:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11847:10:0;;11833:33;;;;;;11760:57;11833:33;;;;;;;;-1:-1:-1;;;;;11833:33:0;;;;;;;;;;;;11120:754;;;;;;;:::o;4042:457::-;4100:7;4345:6;4341:47;;-1:-1:-1;4375:1:0;4368:8;;4341:47;4412:5;;;4416:1;4412;:5;:1;4436:5;;;;;:10;4428:42;;;;;-1:-1:-1;;;4428:42:0;;;;;;;;;;;;-1:-1:-1;;;4428:42:0;;;;;;;;;;;;;;4507:263;4565:7;4597:1;4593;:5;4585:41;;;;;-1:-1:-1;;;4585:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4637:9;4653:1;4649;:5;;;;;;;4507:263;-1:-1:-1;;;;4507:263:0:o;3897:137::-;3990:5;;;3985:16;;;;3977:49;;;;;-1:-1:-1;;;3977:49:0;;;;;;;;;;;;-1:-1:-1;;;3977:49:0;;;;;;;;;;;;;;8521:115;8595:13;:33;;-1:-1:-1;;;;;;8595:33:0;-1:-1:-1;;;;;8595:33:0;;;;;;;;;;8521:115::o;3753:136::-;3846:5;;;3841:16;;;;3833:48;;;;;-1:-1:-1;;;3833:48:0;;;;;;;;;;;;-1:-1:-1;;;3833:48:0;;;;;;;;;;;;;;13443:173;13517:7;13544:64;13590:17;13597:9;13590:6;:17::i;:::-;13544:41;6711:4;6768:11;13544:22;:41::i;5576:444::-;5956:20;6004:8;;;5576:444::o;12713:275::-;12854:18;12898:82;12954:25;:10;6653:4;12954:14;:25::i;:::-;12898:51;12930:18;12940:7;12930:9;:18::i;:::-;12898:27;:7;12910:14;12898:11;:27::i;:82::-;12885:95;12713:275;-1:-1:-1;;;;12713:275:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://3d61015aeb9398234d4cc34778e624e01a76f38d86a1dced5b5fa6853477078e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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