ETH Price: $2,669.89 (-4.87%)

Contract

0x9c8aBC09731ddc5311B77088178115e1232078Cc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer115526102020-12-30 2:23:351517 days ago1609295015IN
0x9c8aBC09...1232078Cc
0 ETH0.0030578138
Transfer113251162020-11-25 3:24:501552 days ago1606274690IN
0x9c8aBC09...1232078Cc
0 ETH0.0011971854
Transfer113250812020-11-25 3:15:281552 days ago1606274128IN
0x9c8aBC09...1232078Cc
0 ETH0.0011958854
Transfer113250692020-11-25 3:13:351552 days ago1606274015IN
0x9c8aBC09...1232078Cc
0 ETH0.0011958854
Transfer109169072020-09-23 5:25:211615 days ago1600838721IN
0x9c8aBC09...1232078Cc
0 ETH0.00241391109.00000145
Transfer108314252020-09-10 2:57:131628 days ago1599706633IN
0x9c8aBC09...1232078Cc
0 ETH0.00285528129
Transfer108308852020-09-10 0:54:501628 days ago1599699290IN
0x9c8aBC09...1232078Cc
0 ETH0.00230443104
Transfer105463792020-07-28 6:24:241672 days ago1595917464IN
0x9c8aBC09...1232078Cc
0 ETH0.0019687353
Transfer104501562020-07-13 8:39:061687 days ago1594629546IN
0x9c8aBC09...1232078Cc
0 ETH0.0009306342.00000123
Transfer104501472020-07-13 8:36:371687 days ago1594629397IN
0x9c8aBC09...1232078Cc
0 ETH0.0009079841.00000123
Transfer104485332020-07-13 2:32:121687 days ago1594607532IN
0x9c8aBC09...1232078Cc
0 ETH0.0010950621.00000134
Transfer104485332020-07-13 2:32:121687 days ago1594607532IN
0x9c8aBC09...1232078Cc
0 ETH0.0010948121.00000134
Transfer104221502020-07-09 0:37:541691 days ago1594255074IN
0x9c8aBC09...1232078Cc
0 ETH0.0010400828.00000134
Transfer104221342020-07-09 0:33:441691 days ago1594254824IN
0x9c8aBC09...1232078Cc
0 ETH0.0010029427.00000134
Transfer104221342020-07-09 0:33:441691 days ago1594254824IN
0x9c8aBC09...1232078Cc
0 ETH0.0010029427.00000134
Transfer104221252020-07-09 0:32:141691 days ago1594254734IN
0x9c8aBC09...1232078Cc
0 ETH0.0014600828.00000134
Transfer104220572020-07-09 0:17:381691 days ago1594253858IN
0x9c8aBC09...1232078Cc
0 ETH0.0014597528.00000134
Transfer104219722020-07-08 23:59:341691 days ago1594252774IN
0x9c8aBC09...1232078Cc
0 ETH0.0010029427.00000134
Transfer104219692020-07-08 23:58:551691 days ago1594252735IN
0x9c8aBC09...1232078Cc
0 ETH0.0010029427.00000134
Transfer104219602020-07-08 23:57:391691 days ago1594252659IN
0x9c8aBC09...1232078Cc
0 ETH0.0014079427.00000134
Transfer104219602020-07-08 23:57:391691 days ago1594252659IN
0x9c8aBC09...1232078Cc
0 ETH0.0014079427.00000134
Transfer104219592020-07-08 23:57:141691 days ago1594252634IN
0x9c8aBC09...1232078Cc
0 ETH0.0010029427.00000134
Transfer104219592020-07-08 23:57:141691 days ago1594252634IN
0x9c8aBC09...1232078Cc
0 ETH0.0010029427.00000134
Transfer103898432020-07-04 0:56:481696 days ago1593824208IN
0x9c8aBC09...1232078Cc
0 ETH0.0011576422.20000134
Transfer103897592020-07-04 0:39:051696 days ago1593823145IN
0x9c8aBC09...1232078Cc
0 ETH0.0008246422.20000134
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:
FiLinkToken

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-24
*/

pragma solidity ^0.4.18;

/**

* @title ERC20Basic

* @dev Simpler version of ERC20 interface

* @dev see https://github.com/ethereum/EIPs/issues/179

*/

contract ERC20Basic {

  function totalSupply() public view returns (uint256);  // totalSupply

  function balanceOf(address who) public view returns (uint256);  // Balance

  function transfer(address to, uint256 value) public returns (bool);  // Transfer

  event Transfer(address indexed from, address indexed to, uint256 value);  //Event for Transaction

}

/**

* @title SafeMath

* @dev Math operations with safety checks that throw on error

*/

library SafeMath {

  /**

  * @dev Multiplies two numbers, throws on overflow.

  */

  function mul(uint256 a, uint256 b) internal pure returns (uint256) {

    if (a == 0) {

      return 0;

    }

    uint256 c = a * b;

    assert(c / a == b);

    return c;

  }

  /**

  * @dev Integer division of two numbers, truncating the quotient.

  */

  function div(uint256 a, uint256 b) internal pure returns (uint256) {

    // assert(b > 0); // Solidity automatically throws when dividing by 0

    uint256 c = a / b;

    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;

  }

  /**

  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).

  */

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {

    assert(b <= a);

    return a - b;

  }

  /**

  * @dev Adds two numbers, throws on overflow.

  */

  function add(uint256 a, uint256 b) internal pure returns (uint256) {

    uint256 c = a + b;

    assert(c >= a);

    return c;

  }

}

/**

* @title ERC20 interface

* @dev see https://github.com/ethereum/EIPs/issues/20

*/

contract ERC20 is ERC20Basic {

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

  function transferFrom(address from, address to, uint256 value) public returns (bool);  // 

  function approve(address spender, uint256 value) public returns (bool);  // 

  event Approval(address indexed owner, address indexed spender, uint256 value);  // Event

}

/**

* @title Basic token

* @dev Basic version of StandardToken, with no allowances.

*/

contract BasicToken is ERC20Basic {

  using SafeMath for uint256;

  mapping(address => uint256) balances; // 

  uint256 totalSupply_;  // 
  /**

  * @dev total number of tokens in existence

  */

  function totalSupply() public view returns (uint256) {

    return totalSupply_;

  }

  /**

  * @dev transfer token for a specified address

  * @param _to The address to transfer to.

  * @param _value The amount to be transferred.

  */

  function transfer(address _to, uint256 _value) public returns (bool) {

    require(_to != address(0));  // 

    require(_value <= balances[msg.sender]);  // 

    // SafeMath.sub will throw if there is not enough balance.

    balances[msg.sender] = balances[msg.sender].sub(_value);  // 

    balances[_to] = balances[_to].add(_value); // 

    Transfer(msg.sender, _to, _value);  // 

    return true;

  }

  /**

  * @dev Gets the balance of the specified address.

  * @param _owner The address to query the the balance of.

  * @return An uint256 representing the amount owned by the passed address.

  */

  function balanceOf(address _owner) public view returns (uint256 balance) {

    return balances[_owner];  // 

  }

}

/**

* @title Standard ERC20 token

*

* @dev Implementation of the basic standard token.

* @dev https://github.com/ethereum/EIPs/issues/20

* @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol

*/

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;

  /**

  * @dev Transfer tokens from one address to another

  * @param _from address The address which you want to send tokens from

  * @param _to address The address which you want to transfer to

  * @param _value uint256 the amount of tokens to be transferred

  */

  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {

    require(_to != address(0)); // 

    require(_value <= balances[_from]);  // 

    require(_value <= allowed[_from][msg.sender]);  // 址

    balances[_from] = balances[_from].sub(_value); 

    balances[_to] = balances[_to].add(_value);

    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);  // 

    Transfer(_from, _to, _value);

    return true;

  }

  /**

    * Set the maximum amount

    *

    *

    * @param _spender 

    * @param _value 

    */

  function approve(address _spender, uint256 _value) public returns (bool) {

    allowed[msg.sender][_spender] = _value;

    Approval(msg.sender, _spender, _value);

    return true;

  }

  /**

  * @dev Function to check the amount of tokens that an owner allowed to a spender.

  * @param _owner address The address which owns the funds.

  * @param _spender address The address which will spend the funds.

  * @return A uint256 specifying the amount of tokens still available for the spender.

  */

  function allowance(address _owner, address _spender) public view returns (uint256) {

    return allowed[_owner][_spender];

  }

  /**

  * @dev Increase the amount of tokens that an owner allowed to a spender.

  *

  * approve should be called when allowed[_spender] == 0. To increment

  * allowed value is better to use this function to avoid 2 calls (and wait until

  * the first transaction is mined)

  * From MonolithDAO Token.sol

  * @param _spender The address which will spend the funds.

  * @param _addedValue The amount of tokens to increase the allowance by.

  */

  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {

    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);

    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

    return true;

  }

  /**

  * @dev Decrease the amount of tokens that an owner allowed to a spender.

  *

  * approve should be called when allowed[_spender] == 0. To decrement

  * allowed value is better to use this function to avoid 2 calls (and wait until

  * the first transaction is mined)

  * From MonolithDAO Token.sol

  * @param _spender The address which will spend the funds.

  * @param _subtractedValue The amount of tokens to decrease the allowance by.

  */

  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {

    uint oldValue = allowed[msg.sender][_spender];

    if (_subtractedValue > oldValue) {

      allowed[msg.sender][_spender] = 0;

    } else {

      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);

    }

    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

    return true;

  }

}

/**

* @title SimpleToken

* @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator.

* Note they can later distribute these tokens as they wish using `transfer` and other

* `StandardToken` functions.  

*/

contract FiLinkToken is StandardToken {

    string public constant name = "FiLink TokenEx"; // solium-disable-line uppercase

    string public constant symbol = "FILK"; // solium-disable-line uppercase

    uint8 public constant decimals = 18; // solium-disable-line uppercase

    uint256 public constant INITIAL_SUPPLY = (10 ** 8) * (10 ** uint256(decimals));

    /**

    * @dev Constructor that gives msg.sender all of existing tokens.

    */

    function FiLinkToken() public {

        totalSupply_ = INITIAL_SUPPLY;

        balances[msg.sender] = INITIAL_SUPPLY;

        Transfer(0x0, msg.sender, INITIAL_SUPPLY);

    }

}

/**

* @title Ownable

* @dev The Ownable contract has an owner address, and provides basic authorization control

* functions, this simplifies the implementation of "user permissions".  

*/

contract Ownable {

  address public owner;

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

  /**

  * @dev The Ownable constructor sets the original `owner` of the contract to the sender

  * account.

  */

  function Ownable() public {

    owner = msg.sender;

  }

  /**

  * @dev Throws if called by any account other than the owner.

  */

  modifier onlyOwner() {

    require(msg.sender == owner);

    _;

  }

  /**

  * @dev Allows the current owner to transfer control of the contract to a newOwner.

  * @param newOwner The address to transfer ownership to.  

  */

  function transferOwnership(address newOwner) public onlyOwner {

    require(newOwner != address(0));

    OwnershipTransferred(owner, newOwner);

    owner = newOwner;

  }

}

/**

  * @dev Lock/unlock contract

  */

contract HaBTCTokenVault is Ownable {

    using SafeMath for uint256;

    /**

    * @dev Create three account addresses and pre-allocate the unlocked balance to three addresses

    */

    address public teamReserveWallet = 0x373c69fDedE072A3F5ab1843a0e5fE0102Cc6793;

    address public firstReserveWallet = 0x99C83f62DBE1a488f9C9d370DA8e86EC55224eB4;

    address public secondReserveWallet = 0x90DfF11810dA6227d348C86C59257C1C0033D307;

    /** The lock-up amount corresponding to the three account addresses */

    uint256 public teamReserveAllocation = 2 * (10 ** 8) * (10 ** 18);

    uint256 public firstReserveAllocation = 15 * (10 ** 7) * (10 ** 18);

    uint256 public secondReserveAllocation = 15 * (10 ** 7) * (10 ** 18);

    // 总锁仓的金额

    uint256 public totalAllocation = 5 * (10 ** 8) * (10 ** 18);

    /** 三个账户地址对应的锁仓时间 */

    uint256 public teamTimeLock = 2 * 365 days;

    uint256 public teamVestingStages = 8;

    uint256 public firstReserveTimeLock = 2 * 365 days;

    uint256 public secondReserveTimeLock = 3 * 365 days;

    /** Reserve allocations */

    mapping(address => uint256) public allocations;  // 每个地址对应锁仓金额的映射表

    /** When timeLocks are over (UNIX Timestamp)  */ 

    mapping(address => uint256) public timeLocks;  // 每个地址对应锁仓时间的映射表

    /** How many tokens each reserve wallet has claimed */

    mapping(address => uint256) public claimed;  // 每个地址对应锁仓后已经解锁的金额的映射表

    /** When this vault was locked (UNIX Timestamp)*/

    uint256 public lockedAt = 0;

    FiLinkToken public token;

    /** Allocated reserve tokens */

    event Allocated(address wallet, uint256 value);

    /** Distributed reserved tokens */

    event Distributed(address wallet, uint256 value);

    /** Tokens have been locked */

    event Locked(uint256 lockTime);

    //Any of the three reserve wallets

    modifier onlyReserveWallets {  // 合约调用者的锁仓余额大于0才能查询锁仓余额

        require(allocations[msg.sender] > 0);

        _;

    }

    //Only Libra team reserve wallet

    modifier onlyTeamReserve {  // 合约调用者的地址为teamReserveWallet

        require(msg.sender == teamReserveWallet);

        require(allocations[msg.sender] > 0);

        _;

    }

    //Only first and second token reserve wallets

    modifier onlyTokenReserve { // 合约调用者的地址为firstReserveWallet或者secondReserveWallet

        require(msg.sender == firstReserveWallet || msg.sender == secondReserveWallet);

        require(allocations[msg.sender] > 0);

        _;

    }

    //Has not been locked yet

    modifier notLocked {  // 未锁定

        require(lockedAt == 0);

        _;

    }

    modifier locked { // 锁定

        require(lockedAt > 0);

        _;

    }

    //Token allocations have not been set

    modifier notAllocated {  // 没有为每个地址分配对应的锁仓金额时

        require(allocations[teamReserveWallet] == 0);

        require(allocations[firstReserveWallet] == 0);

        require(allocations[secondReserveWallet] == 0);

        _;

    }

    function HaBTCTokenVault(ERC20 _token) public {  // 构造LibraToken模式的合约

        owner = msg.sender;  // msg.sender 是指直接调用当前合约的调用方地址

        token = FiLinkToken(_token);



    }

    function allocate() public notLocked notAllocated onlyOwner { 

        //Makes sure Token Contract has the exact number of tokens

        require(token.balanceOf(address(this)) == totalAllocation); 



        allocations[teamReserveWallet] = teamReserveAllocation;

        allocations[firstReserveWallet] = firstReserveAllocation;

        allocations[secondReserveWallet] = secondReserveAllocation;

        Allocated(teamReserveWallet, teamReserveAllocation);

        Allocated(firstReserveWallet, firstReserveAllocation);

        Allocated(secondReserveWallet, secondReserveAllocation);

        lock();

    }



    function lock() internal notLocked onlyOwner {

        lockedAt = block.timestamp; // 区块当前时间

        timeLocks[teamReserveWallet] = lockedAt.add(teamTimeLock);

        timeLocks[firstReserveWallet] = lockedAt.add(firstReserveTimeLock);

        timeLocks[secondReserveWallet] = lockedAt.add(secondReserveTimeLock);

        Locked(lockedAt);

    }

    function recoverFailedLock() external notLocked notAllocated onlyOwner {

        // Transfer all tokens on this contract back to the owner

        require(token.transfer(owner, token.balanceOf(address(this))));

    }

    // Total number of tokens currently in the vault

    // 查询当前合约所持有的金额

    function getTotalBalance() public view returns (uint256 tokensCurrentlyInVault) {

        return token.balanceOf(address(this));

    }

    // Number of tokens that are still locked

    function getLockedBalance() public view onlyReserveWallets returns (uint256 tokensLocked) {

        return allocations[msg.sender].sub(claimed[msg.sender]); 

    }

    //Claim tokens for first/second reserve wallets



    function claimTokenReserve() onlyTokenReserve locked public {

        address reserveWallet = msg.sender;

        // Can't claim before Lock ends

        require(block.timestamp > timeLocks[reserveWallet]); 

        // Must Only claim once

        require(claimed[reserveWallet] == 0);  

        uint256 amount = allocations[reserveWallet];

        claimed[reserveWallet] = amount;  // 一次性解锁发放

        require(token.transfer(reserveWallet, amount));

        Distributed(reserveWallet, amount);

    }

    //Claim tokens for Libra team reserve wallet

    function claimTeamReserve() onlyTeamReserve locked public {

        uint256 vestingStage = teamVestingStage(); 

        //Amount of tokens the team should have at this vesting stage

        uint256 totalUnlocked = vestingStage.mul(allocations[teamReserveWallet]).div(teamVestingStages); // 总的解锁量

        require(totalUnlocked <= allocations[teamReserveWallet]);

        //Previously claimed tokens must be less than what is unlocked

        require(claimed[teamReserveWallet] < totalUnlocked); 

        uint256 payment = totalUnlocked.sub(claimed[teamReserveWallet]); 

        claimed[teamReserveWallet] = totalUnlocked;

        require(token.transfer(teamReserveWallet, payment)); 

        Distributed(teamReserveWallet, payment);

    }

    //Current Vesting stage for Libra team

    function teamVestingStage() public view onlyTeamReserve returns(uint256){

        // Every 3 months

        uint256 vestingMonths = teamTimeLock.div(teamVestingStages); 

        uint256 stage = (block.timestamp.sub(lockedAt)).div(vestingMonths); 

        //Ensures team vesting stage doesn't go past teamVestingStages

        return stage;

    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

608060405234801561001057600080fd5b50601260ff16600a0a6305f5e10002600181905550601260ff16600a0a6305f5e100026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601260ff16600a0a6305f5e100026040518082815260200191505060405180910390a3611269806100e16000396000f3006080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100bf578063095ea7b31461014f57806318160ddd146101b457806323b872dd146101df5780632ff2e9dc14610264578063313ce5671461028f57806366188463146102c057806370a082311461032557806395d89b411461037c578063a9059cbb1461040c578063d73dd62314610471578063dd62ed3e146104d6575b600080fd5b3480156100cb57600080fd5b506100d461054d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101145780820151818401526020810190506100f9565b50505050905090810190601f1680156101415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015b57600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b506101c9610678565b6040518082815260200191505060405180910390f35b3480156101eb57600080fd5b5061024a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610682565b604051808215151515815260200191505060405180910390f35b34801561027057600080fd5b50610279610a3c565b6040518082815260200191505060405180910390f35b34801561029b57600080fd5b506102a4610a4d565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102cc57600080fd5b5061030b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a52565b604051808215151515815260200191505060405180910390f35b34801561033157600080fd5b50610366600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce3565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b50610391610d2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d15780820151818401526020810190506103b6565b50505050905090810190601f1680156103fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041857600080fd5b50610457600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d64565b604051808215151515815260200191505060405180910390f35b34801561047d57600080fd5b506104bc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f83565b604051808215151515815260200191505060405180910390f35b3480156104e257600080fd5b50610537600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117f565b6040518082815260200191505060405180910390f35b6040805190810160405280600e81526020017f46694c696e6b20546f6b656e457800000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156106bf57600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561070c57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561079757600080fd5b6107e8826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120690919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061087b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061094c82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601260ff16600a0a6305f5e1000281565b601281565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115610b63576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bf7565b610b76838261120690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600481526020017f46494c4b0000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610da157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610dee57600080fd5b610e3f826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ed2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600061101482600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082821115151561121457fe5b818303905092915050565b600080828401905083811015151561123357fe5b80915050929150505600a165627a7a7230582004a5202b995cc1ccbedb9dce62954df01c7e183a83172554f0bd3dd6dc67ac900029

Deployed Bytecode

0x6080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100bf578063095ea7b31461014f57806318160ddd146101b457806323b872dd146101df5780632ff2e9dc14610264578063313ce5671461028f57806366188463146102c057806370a082311461032557806395d89b411461037c578063a9059cbb1461040c578063d73dd62314610471578063dd62ed3e146104d6575b600080fd5b3480156100cb57600080fd5b506100d461054d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101145780820151818401526020810190506100f9565b50505050905090810190601f1680156101415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015b57600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b506101c9610678565b6040518082815260200191505060405180910390f35b3480156101eb57600080fd5b5061024a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610682565b604051808215151515815260200191505060405180910390f35b34801561027057600080fd5b50610279610a3c565b6040518082815260200191505060405180910390f35b34801561029b57600080fd5b506102a4610a4d565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102cc57600080fd5b5061030b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a52565b604051808215151515815260200191505060405180910390f35b34801561033157600080fd5b50610366600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce3565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b50610391610d2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d15780820151818401526020810190506103b6565b50505050905090810190601f1680156103fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041857600080fd5b50610457600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d64565b604051808215151515815260200191505060405180910390f35b34801561047d57600080fd5b506104bc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f83565b604051808215151515815260200191505060405180910390f35b3480156104e257600080fd5b50610537600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117f565b6040518082815260200191505060405180910390f35b6040805190810160405280600e81526020017f46694c696e6b20546f6b656e457800000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156106bf57600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561070c57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561079757600080fd5b6107e8826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120690919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061087b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061094c82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601260ff16600a0a6305f5e1000281565b601281565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115610b63576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bf7565b610b76838261120690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600481526020017f46494c4b0000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610da157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610dee57600080fd5b610e3f826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ed2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600061101482600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082821115151561121457fe5b818303905092915050565b600080828401905083811015151561123357fe5b80915050929150505600a165627a7a7230582004a5202b995cc1ccbedb9dce62954df01c7e183a83172554f0bd3dd6dc67ac900029

Deployed Bytecode Sourcemap

7503:663:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7550:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7550:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4921:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4921:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2586:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:89:0;;;;;;;;;;;;;;;;;;;;;;;4308:488;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4308:488:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7795:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7795:78:0;;;;;;;;;;;;;;;;;;;;;;;7718:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7718:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6816:425;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6816:425:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3491:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3491:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7638:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7638:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7638:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2846:426;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2846:426:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6062:269;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6062:269:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5450:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5450:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:46;;;;;;;;;;;;;;;;;;;;:::o;4921:195::-;4988:4;5035:6;5003:7;:19;5011:10;5003:19;;;;;;;;;;;;;;;:29;5023:8;5003:29;;;;;;;;;;;;;;;:38;;;;5071:8;5050:38;;5059:10;5050:38;;;5081:6;5050:38;;;;;;;;;;;;;;;;;;5104:4;5097:11;;4921:195;;;;:::o;2586:89::-;2630:7;2655:12;;2648:19;;2586:89;:::o;4308:488::-;4390:4;4428:1;4413:17;;:3;:17;;;;4405:26;;;;;;;;4462:8;:15;4471:5;4462:15;;;;;;;;;;;;;;;;4452:6;:25;;4444:34;;;;;;;;4510:7;:14;4518:5;4510:14;;;;;;;;;;;;;;;:26;4525:10;4510:26;;;;;;;;;;;;;;;;4500:6;:36;;4492:45;;;;;;;;4572:27;4592:6;4572:8;:15;4581:5;4572:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;4554:8;:15;4563:5;4554:15;;;;;;;;;;;;;;;:45;;;;4625:25;4643:6;4625:8;:13;4634:3;4625:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;4609:8;:13;4618:3;4609:13;;;;;;;;;;;;;;;:41;;;;4688:38;4719:6;4688:7;:14;4696:5;4688:14;;;;;;;;;;;;;;;:26;4703:10;4688:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;4659:7;:14;4667:5;4659:14;;;;;;;;;;;;;;;:26;4674:10;4659:26;;;;;;;;;;;;;;;:67;;;;4756:3;4740:28;;4749:5;4740:28;;;4761:6;4740:28;;;;;;;;;;;;;;;;;;4784:4;4777:11;;4308:488;;;;;:::o;7795:78::-;7751:2;7855:17;;7849:2;:23;7837:7;7836:37;7795:78;:::o;7718:35::-;7751:2;7718:35;:::o;6816:425::-;6899:4;6914:13;6930:7;:19;6938:10;6930:19;;;;;;;;;;;;;;;:29;6950:8;6930:29;;;;;;;;;;;;;;;;6914:45;;6991:8;6972:16;:27;6968:176;;;7044:1;7012:7;:19;7020:10;7012:19;;;;;;;;;;;;;;;:29;7032:8;7012:29;;;;;;;;;;;;;;;:33;;;;6968:176;;;7104:30;7117:16;7104:8;:12;;:30;;;;:::i;:::-;7072:7;:19;7080:10;7072:19;;;;;;;;;;;;;;;:29;7092:8;7072:29;;;;;;;;;;;;;;;:62;;;;6968:176;7173:8;7152:61;;7161:10;7152:61;;;7183:7;:19;7191:10;7183:19;;;;;;;;;;;;;;;:29;7203:8;7183:29;;;;;;;;;;;;;;;;7152:61;;;;;;;;;;;;;;;;;;7229:4;7222:11;;6816:425;;;;;:::o;3491:118::-;3547:15;3580:8;:16;3589:6;3580:16;;;;;;;;;;;;;;;;3573:23;;3491:118;;;:::o;7638:38::-;;;;;;;;;;;;;;;;;;;;:::o;2846:426::-;2909:4;2947:1;2932:17;;:3;:17;;;;2924:26;;;;;;;;2982:8;:20;2991:10;2982:20;;;;;;;;;;;;;;;;2972:6;:30;;2964:39;;;;;;;;3106:32;3131:6;3106:8;:20;3115:10;3106:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;3083:8;:20;3092:10;3083:20;;;;;;;;;;;;;;;:55;;;;3168:25;3186:6;3168:8;:13;3177:3;3168:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;3152:8;:13;3161:3;3152:13;;;;;;;;;;;;;;;:41;;;;3227:3;3206:33;;3215:10;3206:33;;;3232:6;3206:33;;;;;;;;;;;;;;;;;;3260:4;3253:11;;2846:426;;;;:::o;6062:269::-;6140:4;6187:46;6221:11;6187:7;:19;6195:10;6187:19;;;;;;;;;;;;;;;:29;6207:8;6187:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;6155:7;:19;6163:10;6155:19;;;;;;;;;;;;;;;:29;6175:8;6155:29;;;;;;;;;;;;;;;:78;;;;6263:8;6242:61;;6251:10;6242:61;;;6273:7;:19;6281:10;6273:19;;;;;;;;;;;;;;;:29;6293:8;6273:29;;;;;;;;;;;;;;;;6242:61;;;;;;;;;;;;;;;;;;6319:4;6312:11;;6062:269;;;;:::o;5450:132::-;5524:7;5549;:15;5557:6;5549:15;;;;;;;;;;;;;;;:25;5565:8;5549:25;;;;;;;;;;;;;;;;5542:32;;5450:132;;;;:::o;1428:119::-;1486:7;1516:1;1511;:6;;1504:14;;;;;;1538:1;1534;:5;1527:12;;1428:119;;;;:::o;1620:141::-;1678:7;1696:9;1712:1;1708;:5;1696:17;;1734:1;1729;:6;;1722:14;;;;;;1752:1;1745:8;;1620:141;;;;;:::o

Swarm Source

bzzr://04a5202b995cc1ccbedb9dce62954df01c7e183a83172554f0bd3dd6dc67ac90

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.