ETH Price: $3,278.13 (+0.24%)

Contract

0xAa06e5c117dbe8bC52dBaa18AaF447eDA556B13c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Preapproved ...120664552021-03-19 2:26:151395 days ago1616120775IN
BFH: Approval Proxy V1
0 ETH0.00603502126
Set Approvable C...120661232021-03-19 1:15:201395 days ago1616116520IN
BFH: Approval Proxy V1
0 ETH0.00731702156.00000145
Set Preapproved ...120373102021-03-14 14:46:381400 days ago1615733198IN
BFH: Approval Proxy V1
0 ETH0.00574764120
Set Approvable C...120373052021-03-14 14:45:191400 days ago1615733119IN
BFH: Approval Proxy V1
0 ETH0.00557219118.8
Set Preapproved ...120368502021-03-14 13:07:561400 days ago1615727276IN
BFH: Approval Proxy V1
0 ETH0.00584343122
Set Approvable C...120368262021-03-14 13:01:401400 days ago1615726900IN
BFH: Approval Proxy V1
0 ETH0.00553467118
Set Preapproved ...120368132021-03-14 12:58:281400 days ago1615726708IN
BFH: Approval Proxy V1
0 ETH0.0020902117
Set Preapproved ...120367732021-03-14 12:51:141400 days ago1615726274IN
BFH: Approval Proxy V1
0 ETH0.00560394117
Set Approvable C...120367392021-03-14 12:42:211400 days ago1615725741IN
BFH: Approval Proxy V1
0 ETH0.00515944110
Set Preapproved ...102927592020-06-18 23:59:111668 days ago1592524751IN
BFH: Approval Proxy V1
0 ETH0.0011295123.58209739
Set Approvable C...102927542020-06-18 23:58:121668 days ago1592524692IN
BFH: Approval Proxy V1
0 ETH0.0011065523.59198026
Set Preapproved ...101767502020-06-01 0:11:411686 days ago1590970301IN
BFH: Approval Proxy V1
0 ETH0.0008741218.2500019
Set Approvable C...101767452020-06-01 0:11:191686 days ago1590970279IN
BFH: Approval Proxy V1
0 ETH0.0008559918.2500019
Set Preapproved ...93743722020-01-29 2:36:141810 days ago1580265374IN
BFH: Approval Proxy V1
0 ETH0.000047891
Set Approvable C...93743612020-01-29 2:33:261810 days ago1580265206IN
BFH: Approval Proxy V1
0 ETH0.000056751.21
Set Preapproved ...93743012020-01-29 2:16:551810 days ago1580264215IN
BFH: Approval Proxy V1
0 ETH0.000052681.1
Set Approvable C...93742962020-01-29 2:15:341810 days ago1580264134IN
BFH: Approval Proxy V1
0 ETH0.00004691
Set Preapproved ...93742842020-01-29 2:12:331810 days ago1580263953IN
BFH: Approval Proxy V1
0 ETH0.000052681.1
Set Approvable C...93742782020-01-29 2:11:571810 days ago1580263917IN
BFH: Approval Proxy V1
0 ETH0.00004691
Set Preapproved ...93247732020-01-21 12:16:001818 days ago1579608960IN
BFH: Approval Proxy V1
0 ETH0.000095792
Set Approvable C...93247702020-01-21 12:15:351818 days ago1579608935IN
BFH: Approval Proxy V1
0 ETH0.000060971.3
Set Open Sea Pro...92974292020-01-17 7:42:241822 days ago1579246944IN
BFH: Approval Proxy V1
0 ETH0.00026116
Set Preapproved ...92974282020-01-17 7:42:211822 days ago1579246941IN
BFH: Approval Proxy V1
0 ETH0.000335277
Set Approvable C...92974212020-01-17 7:40:291822 days ago1579246829IN
BFH: Approval Proxy V1
0 ETH0.000328327
Add Operator92974142020-01-17 7:38:131822 days ago1579246693IN
BFH: Approval Proxy V1
0 ETH0.000320557
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:
BFHApprovalProxyV1

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// Copyright (c) 2018-2020 double jump.tokyo inc.
pragma solidity ^0.5.0;

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "role already has the account");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "role dosen't have the account");
        role.bearer[account] = false;
    }

    function has(Role storage role, address account) internal view returns (bool) {
        return role.bearer[account];
    }
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

/// @title ERC-165 Standard Interface Detection
/// @dev See https://eips.ethereum.org/EIPS/eip-165
contract ERC165 is IERC165 {
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () internal {
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    function supportsInterface(bytes4 interfaceId) external view returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    function _registerInterface(bytes4 interfaceId) internal {
        require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    function toHex(address account) internal pure returns (string memory) {
        bytes32 value = bytes32(uint256(account));
        bytes memory alphabet = "0123456789abcdef";

        bytes memory str = new bytes(42);
        str[0] = '0';
        str[1] = 'x';
        for (uint i = 0; i < 20; i++) {
            str[2+i*2] = alphabet[uint(uint8(value[i + 12] >> 4))];
            str[3+i*2] = alphabet[uint(uint8(value[i + 12] & 0x0f))];
        }
        return string(str);
    }
}
interface IApprovalProxy {
  function setApprovalForAll(address _owner, address _spender, bool _approved) external;
  function isApprovedForAll(address _owner, address _spender, bool _original) external view returns (bool);
}
interface IERC173 /* is ERC165 */ {
    /// @dev This emits when ownership of a contract changes.
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /// @notice Get the address of the owner
    /// @return The address of the owner.
    function owner() external view returns (address);

    /// @notice Set the address of the new owner of the contract
    /// @param _newOwner The address of the new owner of the contract
    function transferOwnership(address _newOwner) external;
}

contract ERC173 is IERC173, ERC165  {
    address private _owner;

    constructor() public {
        _registerInterface(0x7f5828d0);
        _transferOwnership(msg.sender);
    }

    modifier onlyOwner() {
        require(msg.sender == owner(), "Must be owner");
        _;
    }

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

    function transferOwnership(address _newOwner) public onlyOwner() {
        _transferOwnership(_newOwner);
    }

    function _transferOwnership(address _newOwner) internal {
        address previousOwner = owner();
	_owner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }
}

contract Operatable is ERC173 {
    using Roles for Roles.Role;

    event OperatorAdded(address indexed account);
    event OperatorRemoved(address indexed account);

    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;
    Roles.Role private operators;

    constructor() public {
        operators.add(msg.sender);
        _paused = false;
    }

    modifier onlyOperator() {
        require(isOperator(msg.sender), "Must be operator");
        _;
    }

    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    function transferOwnership(address _newOwner) public onlyOperator() {
        _transferOwnership(_newOwner);
    }

    function isOperator(address account) public view returns (bool) {
        return operators.has(account);
    }

    function addOperator(address account) public onlyOperator() {
        operators.add(account);
        emit OperatorAdded(account);
    }

    function removeOperator(address account) public onlyOperator() {
        operators.remove(account);
        emit OperatorRemoved(account);
    }

    function paused() public view returns (bool) {
        return _paused;
    }

    function pause() public onlyOperator() whenNotPaused() {
        _paused = true;
        emit Paused(msg.sender);
    }

    function unpause() public onlyOperator() whenPaused() {
        _paused = false;
        emit Unpaused(msg.sender);
    }

    function withdrawEther() public onlyOperator() {
        msg.sender.transfer(address(this).balance);
    }

}

contract OwnableDelegateProxy { }
contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;
    function set(address _owner, address _spender) external {
        proxies[_owner] = OwnableDelegateProxy(_spender);
    }
}

contract BFHApprovalProxyV1 is IApprovalProxy, Operatable {
    using Address for address;

    Roles.Role private approvableContracts;
    Roles.Role private preapprovedContracts;
    mapping (address => mapping (address => bool)) private _expresslyNotApprovalSpender;
    mapping (address => mapping (address => bool)) private _contractApprovals;

    ProxyRegistry public openSeaProxyRegistry;
    mapping (address => bool) private openSeaDisabled;

    event UpdateApprovableContracts (address spender, bool approved);
    event UpdatePreapprovedContracts (address spender, bool approved);

    modifier onlyContract(address _spender) {
        require(_spender.isContract(), "_spender must be contract");
        _;
    }

    constructor() public {}

    function setApprovalForAll(address _owner, address _spender, bool _approved) public onlyContract(_spender) onlyOperator() {
        require(isApprovableContract(_spender), "_spender must belong to approvable role");
        _expresslyNotApprovalSpender[_owner][_spender] = !_approved;
    }

    function isApprovedForAll(address _owner, address _spender, bool _original) public view returns (bool) {
        if (approvalToOpenSea(_owner, _spender)) {
            return true;
        }
        if (_spender.isContract()) {
            if (!isApprovableContract(_spender)) {
                return false;
            }
            if (isPreapprovedContract(_spender)) {
                return !_expresslyNotApprovalSpender[_owner][_spender];
            }
        }
        return _original;
    }

    // OpenSea
    function setOpenSeaProxyRegistry(address _openSeaProxyRegistry) public onlyOperator() {
        openSeaProxyRegistry = ProxyRegistry(_openSeaProxyRegistry);
    }

    function enableOpenSea() public {
        openSeaDisabled[msg.sender] = false;
    }

    function disableOpenSea() public {
        openSeaDisabled[msg.sender] = true;
    }
    
    function getOpenSeaSpender(address _owner) public view returns (address) {
        return address(openSeaProxyRegistry.proxies(_owner));
    }

    function approvalToOpenSea(address _owner, address _spender) public view returns (bool) {
        if (address(openSeaProxyRegistry) == address(0x0)) {
            return false;
        }
        if (openSeaDisabled[_owner]) {
            return false;
        }
        return (getOpenSeaSpender(_owner) == _spender);
    }

    // Approvable list
    function setApprovableContracts(address _spender, bool _approvable) public onlyOperator() onlyContract(_spender) {
        emit UpdateApprovableContracts(_spender, _approvable);
        if (_approvable) {
            approvableContracts.add(_spender);
        } else {
            require(!isPreapprovedContract(_spender), "_spender must not be preapproval");
            approvableContracts.remove(_spender);
        }
    }

    function isApprovableContract(address _spender) public view returns (bool) {
        return approvableContracts.has(_spender);
    }

    function setPreapprovedContracts(address _spender, bool _approval) public onlyOperator() onlyContract(_spender) {
        require(isApprovableContract(_spender), "_spender must not be approvable");
        emit UpdatePreapprovedContracts(_spender, _approval);
        if (_approval) {
            preapprovedContracts.add(_spender);
        } else {
            preapprovedContracts.remove(_spender);
        }
    }

    function isPreapprovedContract(address _spender) public view returns (bool) {
        return preapprovedContracts.has(_spender);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"UpdateApprovableContracts","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"UpdatePreapprovedContracts","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"approvalToOpenSea","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableOpenSea","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableOpenSea","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getOpenSeaSpender","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"isApprovableContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_original","type":"bool"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"isPreapprovedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openSeaProxyRegistry","outputs":[{"internalType":"contract ProxyRegistry","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approvable","type":"bool"}],"name":"setApprovableContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_openSeaProxyRegistry","type":"address"}],"name":"setOpenSeaProxyRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approval","type":"bool"}],"name":"setPreapprovedContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50620000467f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03620000bc16565b6200007a7f7f5828d0000000000000000000000000000000000000000000000000000000006001600160e01b03620000bc16565b6200008e336001600160e01b036200018b16565b620000a9336002620001f460201b62000e9e1790919060201c565b6001805460ff60a01b19169055620002c9565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200014e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b6000620001a06001600160e01b036200029b16565b600180546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200020982826001600160e01b03620002aa16565b156200027657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001546001600160a01b031690565b6001600160a01b03166000908152602091909152604090205460ff1690565b61107580620002d96000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638456cb59116100b8578063a4d925f11161007c578063a4d925f114610344578063ac8a584a1461036a578063cf10ef2d14610390578063d3b805d8146103b6578063f2fde38b146103dc578063f8c0c9161461040257610142565b80638456cb59146102a857806389f69dba146102b05780638da5cb5b146102de5780638dccfc52146102e65780639870d7fe1461031e57610142565b80635b620bd31161010a5780635b620bd3146102165780635c975abb1461023c5780635e6241b2146102445780636025b389146102725780636d70f7ae1461027a5780637362377b146102a057610142565b806301ffc9a714610147578063171b5b6a14610182578063367605ca146101b25780633f4ba83a146101ea5780635025b548146101f2575b600080fd5b61016e6004803603602081101561015d57600080fd5b50356001600160e01b03191661040a565b604080519115158252519081900360200190f35b6101b06004803603604081101561019857600080fd5b506001600160a01b0381351690602001351515610429565b005b6101b0600480360360608110156101c857600080fd5b506001600160a01b0381358116916020810135909116906040013515156105a7565b6101b06106d2565b6101fa6107b6565b604080516001600160a01b039092168252519081900360200190f35b61016e6004803603602081101561022c57600080fd5b50356001600160a01b03166107c5565b61016e6107de565b61016e6004803603604081101561025a57600080fd5b506001600160a01b03813581169160200135166107ee565b6101b0610856565b61016e6004803603602081101561029057600080fd5b50356001600160a01b031661086f565b6101b0610882565b6101b06108ff565b6101b0600480360360408110156102c657600080fd5b506001600160a01b03813516906020013515156109e6565b6101fa610b5b565b61016e600480360360608110156102fc57600080fd5b506001600160a01b038135811691602081013590911690604001351515610b6a565b6101b06004803603602081101561033457600080fd5b50356001600160a01b0316610bf7565b6101b06004803603602081101561035a57600080fd5b50356001600160a01b0316610c8c565b6101b06004803603602081101561038057600080fd5b50356001600160a01b0316610cfb565b61016e600480360360208110156103a657600080fd5b50356001600160a01b0316610d90565b6101fa600480360360208110156103cc57600080fd5b50356001600160a01b0316610da3565b6101b0600480360360208110156103f257600080fd5b50356001600160a01b0316610e26565b6101b0610e7c565b6001600160e01b03191660009081526020819052604090205460ff1690565b6104323361086f565b610476576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610489816001600160a01b0316610e98565b6104d6576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6104df83610d90565b610530576040805162461bcd60e51b815260206004820152601f60248201527f5f7370656e646572206d757374206e6f7420626520617070726f7661626c6500604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517f41243044fceb8e758713bc0c30e27030c46b1979b7e6936d996d00f840f03d8f929181900390910190a181156105915761058c60048463ffffffff610e9e16565b6105a2565b6105a260048463ffffffff610f1f16565b505050565b816105ba816001600160a01b0316610e98565b610607576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6106103361086f565b610654576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b61065d83610d90565b6106985760405162461bcd60e51b815260040180806020018281038252602781526020018061101a6027913960400191505060405180910390fd5b506001600160a01b03928316600090815260056020908152604080832094909516825292909252919020805460ff19169115919091179055565b6106db3361086f565b61071f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff16610774576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6007546001600160a01b031681565b60006107d860048363ffffffff610f9c16565b92915050565b600154600160a01b900460ff1690565b6007546000906001600160a01b0316610809575060006107d8565b6001600160a01b03831660009081526008602052604090205460ff1615610832575060006107d8565b816001600160a01b031661084584610da3565b6001600160a01b0316149392505050565b336000908152600860205260409020805460ff19169055565b60006107d860028363ffffffff610f9c16565b61088b3361086f565b6108cf576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f193505050501580156108fc573d6000803e3d6000fd5b50565b6109083361086f565b61094c576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff161561099e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6109ef3361086f565b610a33576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610a46816001600160a01b0316610e98565b610a93576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517fb27c82517d508b5ef74d0dee84509db8503c954c999cfb72a3a0bd5e002552e7929181900390910190a18115610aef5761058c60038463ffffffff610e9e16565b610af8836107c5565b15610b4a576040805162461bcd60e51b815260206004820181905260248201527f5f7370656e646572206d757374206e6f7420626520707265617070726f76616c604482015290519081900360640190fd5b6105a260038463ffffffff610f1f16565b6001546001600160a01b031690565b6000610b7684846107ee565b15610b8357506001610bf0565b610b95836001600160a01b0316610e98565b15610bed57610ba383610d90565b610baf57506000610bf0565b610bb8836107c5565b15610bed57506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff1615610bf0565b50805b9392505050565b610c003361086f565b610c44576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610c5560028263ffffffff610e9e16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b610c953361086f565b610cd9576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b610d043361086f565b610d48576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610d5960028263ffffffff610f1f16565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b60006107d860038363ffffffff610f9c16565b6007546040805163c455279160e01b81526001600160a01b0384811660048301529151600093929092169163c455279191602480820192602092909190829003018186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d6020811015610e1e57600080fd5b505192915050565b610e2f3361086f565b610e73576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6108fc81610fbb565b336000908152600860205260409020805460ff19166001179055565b3b151590565b610ea88282610f9c565b15610efa576040805162461bcd60e51b815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f298282610f9c565b610f7a576040805162461bcd60e51b815260206004820152601d60248201527f726f6c6520646f73656e2774206861766520746865206163636f756e74000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03166000908152602091909152604090205460ff1690565b6000610fc5610b5b565b600180546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505056fe5f7370656e646572206d7573742062656c6f6e6720746f20617070726f7661626c6520726f6c65a265627a7a72315820bad9c0ff78bbf689813764515f0fe3e4a82f0101e385c139122cd5708eb356a864736f6c634300050c0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638456cb59116100b8578063a4d925f11161007c578063a4d925f114610344578063ac8a584a1461036a578063cf10ef2d14610390578063d3b805d8146103b6578063f2fde38b146103dc578063f8c0c9161461040257610142565b80638456cb59146102a857806389f69dba146102b05780638da5cb5b146102de5780638dccfc52146102e65780639870d7fe1461031e57610142565b80635b620bd31161010a5780635b620bd3146102165780635c975abb1461023c5780635e6241b2146102445780636025b389146102725780636d70f7ae1461027a5780637362377b146102a057610142565b806301ffc9a714610147578063171b5b6a14610182578063367605ca146101b25780633f4ba83a146101ea5780635025b548146101f2575b600080fd5b61016e6004803603602081101561015d57600080fd5b50356001600160e01b03191661040a565b604080519115158252519081900360200190f35b6101b06004803603604081101561019857600080fd5b506001600160a01b0381351690602001351515610429565b005b6101b0600480360360608110156101c857600080fd5b506001600160a01b0381358116916020810135909116906040013515156105a7565b6101b06106d2565b6101fa6107b6565b604080516001600160a01b039092168252519081900360200190f35b61016e6004803603602081101561022c57600080fd5b50356001600160a01b03166107c5565b61016e6107de565b61016e6004803603604081101561025a57600080fd5b506001600160a01b03813581169160200135166107ee565b6101b0610856565b61016e6004803603602081101561029057600080fd5b50356001600160a01b031661086f565b6101b0610882565b6101b06108ff565b6101b0600480360360408110156102c657600080fd5b506001600160a01b03813516906020013515156109e6565b6101fa610b5b565b61016e600480360360608110156102fc57600080fd5b506001600160a01b038135811691602081013590911690604001351515610b6a565b6101b06004803603602081101561033457600080fd5b50356001600160a01b0316610bf7565b6101b06004803603602081101561035a57600080fd5b50356001600160a01b0316610c8c565b6101b06004803603602081101561038057600080fd5b50356001600160a01b0316610cfb565b61016e600480360360208110156103a657600080fd5b50356001600160a01b0316610d90565b6101fa600480360360208110156103cc57600080fd5b50356001600160a01b0316610da3565b6101b0600480360360208110156103f257600080fd5b50356001600160a01b0316610e26565b6101b0610e7c565b6001600160e01b03191660009081526020819052604090205460ff1690565b6104323361086f565b610476576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610489816001600160a01b0316610e98565b6104d6576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6104df83610d90565b610530576040805162461bcd60e51b815260206004820152601f60248201527f5f7370656e646572206d757374206e6f7420626520617070726f7661626c6500604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517f41243044fceb8e758713bc0c30e27030c46b1979b7e6936d996d00f840f03d8f929181900390910190a181156105915761058c60048463ffffffff610e9e16565b6105a2565b6105a260048463ffffffff610f1f16565b505050565b816105ba816001600160a01b0316610e98565b610607576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6106103361086f565b610654576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b61065d83610d90565b6106985760405162461bcd60e51b815260040180806020018281038252602781526020018061101a6027913960400191505060405180910390fd5b506001600160a01b03928316600090815260056020908152604080832094909516825292909252919020805460ff19169115919091179055565b6106db3361086f565b61071f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff16610774576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6007546001600160a01b031681565b60006107d860048363ffffffff610f9c16565b92915050565b600154600160a01b900460ff1690565b6007546000906001600160a01b0316610809575060006107d8565b6001600160a01b03831660009081526008602052604090205460ff1615610832575060006107d8565b816001600160a01b031661084584610da3565b6001600160a01b0316149392505050565b336000908152600860205260409020805460ff19169055565b60006107d860028363ffffffff610f9c16565b61088b3361086f565b6108cf576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f193505050501580156108fc573d6000803e3d6000fd5b50565b6109083361086f565b61094c576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff161561099e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6109ef3361086f565b610a33576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610a46816001600160a01b0316610e98565b610a93576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517fb27c82517d508b5ef74d0dee84509db8503c954c999cfb72a3a0bd5e002552e7929181900390910190a18115610aef5761058c60038463ffffffff610e9e16565b610af8836107c5565b15610b4a576040805162461bcd60e51b815260206004820181905260248201527f5f7370656e646572206d757374206e6f7420626520707265617070726f76616c604482015290519081900360640190fd5b6105a260038463ffffffff610f1f16565b6001546001600160a01b031690565b6000610b7684846107ee565b15610b8357506001610bf0565b610b95836001600160a01b0316610e98565b15610bed57610ba383610d90565b610baf57506000610bf0565b610bb8836107c5565b15610bed57506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff1615610bf0565b50805b9392505050565b610c003361086f565b610c44576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610c5560028263ffffffff610e9e16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b610c953361086f565b610cd9576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b610d043361086f565b610d48576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610d5960028263ffffffff610f1f16565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b60006107d860038363ffffffff610f9c16565b6007546040805163c455279160e01b81526001600160a01b0384811660048301529151600093929092169163c455279191602480820192602092909190829003018186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d6020811015610e1e57600080fd5b505192915050565b610e2f3361086f565b610e73576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6108fc81610fbb565b336000908152600860205260409020805460ff19166001179055565b3b151590565b610ea88282610f9c565b15610efa576040805162461bcd60e51b815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f298282610f9c565b610f7a576040805162461bcd60e51b815260206004820152601d60248201527f726f6c6520646f73656e2774206861766520746865206163636f756e74000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03166000908152602091909152604090205460ff1690565b6000610fc5610b5b565b600180546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505056fe5f7370656e646572206d7573742062656c6f6e6720746f20617070726f7661626c6520726f6c65a265627a7a72315820bad9c0ff78bbf689813764515f0fe3e4a82f0101e385c139122cd5708eb356a864736f6c634300050c0032

Deployed Bytecode Sourcemap

5793:3656:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5793:3656:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1131:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1131:135:0;-1:-1:-1;;;;;;1131:135:0;;:::i;:::-;;;;;;;;;;;;;;;;;;8876:424;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8876:424:0;;;;;;;;;;:::i;:::-;;6575:293;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6575:293:0;;;;;;;;;;;;;;;;;;;:::i;5287:124::-;;;:::i;6155:41::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6155:41:0;;;;;;;;;;;;;;9308:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9308:136:0;-1:-1:-1;;;;;9308:136:0;;:::i;5071:78::-;;;:::i;7930:331::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7930:331:0;;;;;;;;;;:::i;7586:86::-;;;:::i;4649:112::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4649:112:0;-1:-1:-1;;;;;4649:112:0;;:::i;5419:108::-;;;:::i;5157:122::-;;;:::i;8293:433::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8293:433:0;;;;;;;;;;:::i;3387:79::-;;;:::i;6876:514::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6876:514:0;;;;;;;;;;;;;;;;;;;:::i;4769:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4769:139:0;-1:-1:-1;;;;;4769:139:0;;:::i;7414:164::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7414:164:0;-1:-1:-1;;;;;7414:164:0;;:::i;4916:147::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4916:147:0;-1:-1:-1;;;;;4916:147:0;;:::i;8734:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8734:134:0;-1:-1:-1;;;;;8734:134:0;;:::i;7778:144::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7778:144:0;-1:-1:-1;;;;;7778:144:0;;:::i;4525:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4525:116:0;-1:-1:-1;;;;;4525:116:0;;:::i;7680:86::-;;;:::i;1131:135::-;-1:-1:-1;;;;;;1225:33:0;1201:4;1225:33;;;;;;;;;;;;;;1131:135::o;8876:424::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;8978:8;6465:21;:8;-1:-1:-1;;;;;6465:19:0;;:21::i;:::-;6457:59;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;;;;9007:30;9028:8;9007:20;:30::i;:::-;8999:74;;;;;-1:-1:-1;;;8999:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9089:47;;;-1:-1:-1;;;;;9089:47:0;;;;;;;;;;;;;;;;;;;;;;;;9151:9;9147:146;;;9177:34;:20;9202:8;9177:34;:24;:34;:::i;:::-;9147:146;;;9244:37;:20;9272:8;9244:37;:27;:37;:::i;:::-;4306:1;8876:424;;:::o;6575:293::-;6672:8;6465:21;:8;-1:-1:-1;;;;;6465:19:0;;:21::i;:::-;6457:59;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;;;;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;6716:30;6737:8;6716:20;:30::i;:::-;6708:82;;;;-1:-1:-1;;;6708:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6801:36:0;;;;;;;:28;:36;;;;;;;;:46;;;;;;;;;;;;;:59;;-1:-1:-1;;6801:59:0;6850:10;;6801:59;;;;;;6575:293::o;5287:124::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4465:7;;-1:-1:-1;;;4465:7:0;;;;4457:40;;;;;-1:-1:-1;;;4457:40:0;;;;;;;;;;;;-1:-1:-1;;;4457:40:0;;;;;;;;;;;;;;;5352:7;:15;;-1:-1:-1;;;;5352:15:0;;;5383:20;;;5392:10;5383:20;;;;;;;;;;;;;5287:124::o;6155:41::-;;;-1:-1:-1;;;;;6155:41:0;;:::o;9308:136::-;9378:4;9402:34;:20;9427:8;9402:34;:24;:34;:::i;:::-;9395:41;9308:136;-1:-1:-1;;9308:136:0:o;5071:78::-;5134:7;;-1:-1:-1;;;5134:7:0;;;;;5071:78::o;7930:331::-;8041:20;;8012:4;;-1:-1:-1;;;;;8041:20:0;8029:90;;-1:-1:-1;8102:5:0;8095:12;;8029:90;-1:-1:-1;;;;;8133:23:0;;;;;;:15;:23;;;;;;;;8129:68;;;-1:-1:-1;8180:5:0;8173:12;;8129:68;8244:8;-1:-1:-1;;;;;8215:37:0;:25;8233:6;8215:17;:25::i;:::-;-1:-1:-1;;;;;8215:37:0;;;7930:331;-1:-1:-1;;;7930:331:0:o;7586:86::-;7645:10;7659:5;7629:27;;;:15;:27;;;;;:35;;-1:-1:-1;;7629:35:0;;;7586:86::o;4649:112::-;4707:4;4731:22;:9;4745:7;4731:22;:13;:22;:::i;5419:108::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;5477:42;;:10;;5505:4;5497:21;5477:42;;;;;;;;;5497:21;5477:10;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5477:42:0;5419:108::o;5157:122::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4368:7;;-1:-1:-1;;;4368:7:0;;;;4367:8;4359:37;;;;;-1:-1:-1;;;4359:37:0;;;;;;;;;;;;-1:-1:-1;;;4359:37:0;;;;;;;;;;;;;;;5233:4;5223:14;;-1:-1:-1;;;;5223:14:0;-1:-1:-1;;;5223:14:0;;;5253:18;;;5260:10;5253:18;;;;;;;;;;;;;5157:122::o;8293:433::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;8396:8;6465:21;:8;-1:-1:-1;;;;;6465:19:0;;:21::i;:::-;6457:59;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;;;;8422:48;;;-1:-1:-1;;;;;8422:48:0;;;;;;;;;;;;;;;;;;;;;;;;8485:11;8481:238;;;8513:33;:19;8537:8;8513:33;:23;:33;:::i;8481:238::-;8588:31;8610:8;8588:21;:31::i;:::-;8587:32;8579:77;;;;;-1:-1:-1;;;8579:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:36;:19;8698:8;8671:36;:26;:36;:::i;3387:79::-;3452:6;;-1:-1:-1;;;;;3452:6:0;3387:79;:::o;6876:514::-;6973:4;6994:35;7012:6;7020:8;6994:17;:35::i;:::-;6990:79;;;-1:-1:-1;7053:4:0;7046:11;;6990:79;7083:21;:8;-1:-1:-1;;;;;7083:19:0;;:21::i;:::-;7079:277;;;7126:30;7147:8;7126:20;:30::i;:::-;7121:84;;-1:-1:-1;7184:5:0;7177:12;;7121:84;7223:31;7245:8;7223:21;:31::i;:::-;7219:126;;;-1:-1:-1;;;;;;7283:36:0;;;;;;;:28;:36;;;;;;;;:46;;;;;;;;;;;;7282:47;7275:54;;7219:126;-1:-1:-1;7373:9:0;6876:514;;;;;;:::o;4769:139::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4840:22;:9;4854:7;4840:22;:13;:22;:::i;:::-;4878;;-1:-1:-1;;;;;4878:22:0;;;;;;;;4769:139;:::o;7414:164::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;7511:20;:59;;-1:-1:-1;;;;;;7511:59:0;-1:-1:-1;;;;;7511:59:0;;;;;;;;;;7414:164::o;4916:147::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4990:25;:9;5007:7;4990:25;:16;:25;:::i;:::-;5031:24;;-1:-1:-1;;;;;5031:24:0;;;;;;;;4916:147;:::o;8734:134::-;8803:4;8827:33;:19;8851:8;8827:33;:23;:33;:::i;7778:144::-;7877:20;;:36;;;-1:-1:-1;;;7877:36:0;;-1:-1:-1;;;;;7877:36:0;;;;;;;;;7842:7;;7877:20;;;;;:28;;:36;;;;;;;;;;;;;;;:20;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;7877:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7877:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7877:36:0;;7778:144;-1:-1:-1;;7778:144:0:o;4525:116::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4604:29;4623:9;4604:18;:29::i;7680:86::-;7740:10;7724:27;;;;:15;:27;;;;;:34;;-1:-1:-1;;7724:34:0;7754:4;7724:34;;;7680:86::o;1499:174::-;1618:20;1657:8;;;1499:174::o;170:175::-;248:18;252:4;258:7;248:3;:18::i;:::-;247:19;239:60;;;;;-1:-1:-1;;;239:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;310:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;310:27:0;333:4;310:27;;;170:175::o;353:179::-;433:18;437:4;443:7;433:3;:18::i;:::-;425:60;;;;;-1:-1:-1;;;425:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;496:20:0;519:5;496:20;;;;;;;;;;;:28;;-1:-1:-1;;496:28:0;;;353:179::o;540:124::-;-1:-1:-1;;;;;636:20:0;612:4;636:20;;;;;;;;;;;;;;;540:124::o;3595:190::-;3662:21;3686:7;:5;:7::i;:::-;3697:6;:18;;-1:-1:-1;;;;;;3697:18:0;-1:-1:-1;;;;;3697:18:0;;;;;;;;;3731:46;;3662:31;;-1:-1:-1;3697:18:0;3731:46;;;;;;-1:-1:-1;;3731:46:0;3595:190;;:::o

Swarm Source

bzzr://bad9c0ff78bbf689813764515f0fe3e4a82f0101e385c139122cd5708eb356a8

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.