ETH Price: $3,364.54 (+0.50%)

Contract

0xd5E1d7D797B6441Cd0317b3Fb56A0a099eA332B0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040210863682024-10-31 14:58:3522 days ago1730386715IN
 Create: GASEVO_20241029_1
0 ETH0.0289106520.4992717

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
212499222024-11-23 10:44:1143 mins ago1732358651
0xd5E1d7D7...99eA332B0
0 ETH
212362742024-11-21 13:02:2346 hrs ago1732194143
0xd5E1d7D7...99eA332B0
0 ETH
212362742024-11-21 13:02:2346 hrs ago1732194143
0xd5E1d7D7...99eA332B0
0 ETH
212362742024-11-21 13:02:2346 hrs ago1732194143
0xd5E1d7D7...99eA332B0
0 ETH
212348672024-11-21 8:19:112 days ago1732177151
0xd5E1d7D7...99eA332B0
0 ETH
212200522024-11-19 6:41:594 days ago1731998519
0xd5E1d7D7...99eA332B0
0 ETH
212200522024-11-19 6:41:594 days ago1731998519
0xd5E1d7D7...99eA332B0
0 ETH
212200522024-11-19 6:41:594 days ago1731998519
0xd5E1d7D7...99eA332B0
0 ETH
212200522024-11-19 6:41:594 days ago1731998519
0xd5E1d7D7...99eA332B0
0 ETH
212200462024-11-19 6:40:474 days ago1731998447
0xd5E1d7D7...99eA332B0
0 ETH
212178842024-11-18 23:26:594 days ago1731972419
0xd5E1d7D7...99eA332B0
0 ETH
212178072024-11-18 23:11:354 days ago1731971495
0xd5E1d7D7...99eA332B0
0 ETH
212178072024-11-18 23:11:354 days ago1731971495
0xd5E1d7D7...99eA332B0
0 ETH
212172262024-11-18 21:15:114 days ago1731964511
0xd5E1d7D7...99eA332B0
0 ETH
212172262024-11-18 21:15:114 days ago1731964511
0xd5E1d7D7...99eA332B0
0 ETH
212155802024-11-18 15:44:474 days ago1731944687
0xd5E1d7D7...99eA332B0
0 ETH
212155802024-11-18 15:44:474 days ago1731944687
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
212125622024-11-18 5:38:355 days ago1731908315
0xd5E1d7D7...99eA332B0
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GASEVO_20241029_1

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-31
*/

// SPDX-License-Identifier: MIT
// Latest update: 2024-01-22
pragma solidity ^0.8.0;

abstract contract Ownable {
    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);
    address public owner; 
    constructor() { owner = msg.sender; }
    modifier onlyOwner { require(owner == msg.sender, "Not Owner!"); _; }
    function transferOwnership(address new_) external { 
        address _oldOwner = owner;
        require(_oldOwner == msg.sender, "Not Owner!");
        owner = new_; 
        emit OwnershipTransferred(_oldOwner, new_);
    }

    // Proxy Padding
    bytes32[50] private proxyPadding;
}
abstract contract Minterable is Ownable {
    event MinterableSet(address indexed operator, address indexed minter, bool isMinter);
    mapping(address => bool) public minters;
    modifier onlyMinter { require(minters[msg.sender], "Not Minter!"); _; }
    function setMinter(address address_, bool bool_) external onlyOwner {
        minters[address_] = bool_;
        emit MinterableSet(msg.sender, address_, bool_);
    }

    // Proxy Padding
    bytes32[50] private proxyPadding;
}

// The GSM version of G
contract ERC721GSM {

    // ERC721-Standard Events
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, 
        uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    // ERC721-Standard Token Info
    string public name;
    string public symbol;

    // ERC721-Standard Constructor
    constructor(string memory name_, string memory symbol_) { 
        name = name_;
        symbol = symbol_;
    }

    // ERC721G Data Structures
    struct OwnerStruct { 
        address owner;
        uint32 lastTransfer;
        uint32 stakeTimestamp;
        uint32 totalTimeStaked;
    }
    struct BalanceStruct { 
        uint32 balance;
        uint32 mintedAmount;
        // Free Bytes
    }

    // ERC721G Data Mappings
    mapping(uint256 => OwnerStruct) public _tokenData;
    mapping(address => BalanceStruct) public _balanceData;

    // ERC721-Standard Approval Mappings
    mapping(uint256 => address) public getApproved;
    mapping(address => mapping(address => bool)) public isApprovedForAll;

    // Time Tools by 0xInuarashi
    function _getBlockTimestampCompressed() internal view returns (uint32) {
        return uint32(block.timestamp / 10);
    }

    // ERC721-Compliant Standard Reads
    function ownerOf(uint256 tokenId_) public virtual view returns (address) {
        return _tokenData[tokenId_].owner;
    }
    function balanceOf(address address_) public view returns (uint256) {
        return _balanceData[address_].balance;
    }

    // ERC721-Style Internal Functions
    function _mint(address to_, uint256 tokenId_) internal virtual {
        require(to_ != address(0), "_mint: target == 0x0");
        require(_tokenData[tokenId_].owner == address(0), "_mint: token exists");

        uint32 _currentTime = _getBlockTimestampCompressed();
        _tokenData[tokenId_] = OwnerStruct(to_, _currentTime, 0, 0);

        unchecked {
            _balanceData[to_].balance++;
            _balanceData[to_].mintedAmount++;

            // Increment Total Supply
            totalSupply++;
        }

        emit Transfer(address(0), to_, tokenId_);
    }
    function _transfer(address from_, address to_, uint256 tokenId_) internal virtual {
        require(from_ == ownerOf(tokenId_), "_transfer from_ != ownerOf");
        require(to_ != address(0), "_transfer to_ == 0x0");
        
        delete getApproved[tokenId_];

        _tokenData[tokenId_].owner = to_;
        _tokenData[tokenId_].lastTransfer = _getBlockTimestampCompressed();

        unchecked {
            _balanceData[from_].balance--;
            _balanceData[to_].balance++;
        }

        emit Transfer(from_, to_, tokenId_);
    }

    // ERC721-Standard Non-Modified Functions
    function _isApprovedOrOwner(address spender_, uint256 tokenId_) internal 
    view virtual returns (bool) {
        address _owner = ownerOf(tokenId_);
        return (_owner == spender_
                || getApproved[tokenId_] == spender_
                || isApprovedForAll[_owner][spender_]);
    }
    function _approve(address to_, uint256 tokenId_) internal virtual {
        getApproved[tokenId_] = to_;
        emit Approval(ownerOf(tokenId_), to_, tokenId_);
    }
    function approve(address to_, uint256 tokenId_) public virtual {
        address _owner = ownerOf(tokenId_);
        require(_owner == msg.sender 
                || isApprovedForAll[_owner][msg.sender],
                "ERC721G: approve not authorized");
        _approve(to_, tokenId_);
    }
    
    function _setApprovalForAll(address owner_, address operator_, bool approved_) 
    internal virtual {
        isApprovedForAll[owner_][operator_] = approved_;
        emit ApprovalForAll(owner_, operator_, approved_);
    }
    function setApprovalForAll(address operator_, bool approved_) public virtual {
        _setApprovalForAll(msg.sender, operator_, approved_);
    }
    
    function _exists(uint256 tokenId_) internal virtual view returns (bool) {
        return ownerOf(tokenId_) != address(0);
    }
    
    function transferFrom(address from_, address to_, uint256 tokenId_) public virtual {
        require(_isApprovedOrOwner(msg.sender, tokenId_),
            "ERC721G: transferFrom unauthorized");
        _transfer(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_,
    bytes memory data_) public virtual {
        transferFrom(from_, to_, tokenId_);
        if (to_.code.length != 0) {
            (, bytes memory _returned) = to_.call(abi.encodeWithSelector(
                0x150b7a02, msg.sender, from_, tokenId_, data_));
            bytes4 _selector = abi.decode(_returned, (bytes4));
            require(_selector == 0x150b7a02, 
                "ERC721G: safeTransferFrom to_ non-ERC721Receivable!");
        }
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_) 
    public virtual {
        safeTransferFrom(from_, to_, tokenId_, "");
    }
    
    function supportsInterface(bytes4 iid_) public virtual view returns (bool) {
        return  iid_ == 0x01ffc9a7 || 
                iid_ == 0x80ac58cd || 
                iid_ == 0x5b5e139f || 
                iid_ == 0x7f5828d0; 
    }

    function _toString(uint256 value_) internal pure returns (string memory) {
        if (value_ == 0) { return "0"; }
        uint256 _iterate = value_; uint256 _digits;
        while (_iterate != 0) { _digits++; _iterate /= 10; }
        bytes memory _buffer = new bytes(_digits);
        while (value_ != 0) { _digits--; _buffer[_digits] = bytes1(uint8(
            48 + uint256(value_ % 10 ))); value_ /= 10; }
        return string(_buffer); 
    }

    function tokenURI(uint256 tokenId_) public virtual view returns (string memory) {
        return string(abi.encodePacked(
            "https://gangsterallstar.nonfungiblecdn.com/gangsterallstar/metadata/",
            _toString(tokenId_)
        ));
    }

    // ERC721-Additional NFT Info
    uint256 public totalSupply;

    // Proxy Padding
    bytes32[49] private proxyPadding;
}

contract ERC721GSMStake is ERC721GSM {
    // First, we do constructor-compliant to ERC721GSM
    constructor(string memory name_, string memory symbol_) ERC721GSM(name_, symbol_) {} 

    // Then, we create some additional helper functions for staking
    function stakingAddress() public view returns (address) {
        return address(this);
    }
    function _compressTimestamp(uint256 timestamp_) internal pure returns (uint32) {
        return uint32(timestamp_ / 10);
    }
    function _expandTimestamp(uint32 timestamp_) internal pure returns (uint256) {
        return uint256(timestamp_ * 10);
    }
    function _getTokenDataOf(uint256 tokenId_) internal view 
    returns (OwnerStruct memory) {
        return _tokenData[tokenId_];
    }
    function _trueOwnerOf(uint256 tokenId_) internal view returns (address) {
        return _getTokenDataOf(tokenId_).owner;
    }

    // Next, we override the required functions for Staking functionality
    function ownerOf(uint256 tokenId_) public view override returns (address) {
        OwnerStruct memory _OwnerStruct = _getTokenDataOf(tokenId_);
        return _OwnerStruct.stakeTimestamp == 0 ? _OwnerStruct.owner : stakingAddress();
    }

    // Finally, we add additional functions to enable staking
    function _mintAndStake(address to_, uint256 tokenId_) internal {
        require(to_ != address(0), "_mint: target == 0x0");
        require(_tokenData[tokenId_].owner == address(0), "_mint: token exists");

        uint32 _currentTime = _getBlockTimestampCompressed();
        _tokenData[tokenId_] = OwnerStruct(to_, _currentTime, _currentTime, 0);
        
        unchecked {
            _balanceData[stakingAddress()].balance++;
            _balanceData[to_].mintedAmount++;

            // Increment Total Supply
            totalSupply++;
        }

        emit Transfer(address(0), to_, tokenId_);
        emit Transfer(to_, stakingAddress(), tokenId_);
    }
    function _setStakeTimestamp(uint256 tokenId_, uint256 timestamp_) internal 
    returns (address) {
        OwnerStruct memory _OwnerStruct = _getTokenDataOf(tokenId_);
        address _owner = _OwnerStruct.owner;
        uint32 _stakeTimestamp = _OwnerStruct.stakeTimestamp;

        require(_owner != address(0), "_setStakeTimestamp: token does not exist");

        if (timestamp_ > 0) {
            require(_stakeTimestamp == 0, "_setStakeTimestamp: already staked");
            unchecked { 
                // Rebalance the balances of owner and stakingAddress
                _balanceData[_owner].balance--;
                _balanceData[stakingAddress()].balance++;
            }
            emit Transfer(_owner, stakingAddress(), tokenId_);
        }

        else { 
            require(_stakeTimestamp != 0, "_setStakeTimestamp: already unstaked");
            uint32 _timeStaked = _getBlockTimestampCompressed() - _stakeTimestamp;
            _tokenData[tokenId_].totalTimeStaked += _timeStaked;
            unchecked { 
                _balanceData[stakingAddress()].balance--;
                _balanceData[_owner].balance++;
            }
            emit Transfer(stakingAddress(), _owner, tokenId_);
        }

        _tokenData[tokenId_].stakeTimestamp = _compressTimestamp(timestamp_);

        return _owner;
    }

    function _stake(uint256 tokenId_) internal virtual returns (address) {
        return _setStakeTimestamp(tokenId_, block.timestamp);
    }
    function _unstake(uint256 tokenId_) internal virtual returns (address) {
        return _setStakeTimestamp(tokenId_, 0);
    }

    // Proxy Padding
    bytes32[50] private proxyPadding;
}

contract GASEVO_20241029_1 is ERC721GSMStake, Minterable {
    constructor() ERC721GSMStake("Gangster All Star: Gangsters Evolution", "GAS:GANG") {
        proxyInitialize(msg.sender);
    }

    // Proxy Initializer Logic
    bool proxyIsInitialized;
    function proxyInitialize(address newOwner) public {
        require(!proxyIsInitialized);
        proxyIsInitialized = true;
        
        // Hardcode
        owner = newOwner;
        name = "Gangster All Star: Gangsters Evolution";
        symbol = "GAS:GANG";
    }

    function setTotalSupply(uint256 totalSupply_) external onlyOwner {
        totalSupply = totalSupply_;
    }

    function mintAsController(address to_, uint256 tokenId_) external onlyMinter {
        _mint(to_, tokenId_);
    }

    // Admin Functions (added at 2024-01-22)
    function adminTransferFrom(address from_, address to_, uint256[] calldata tokenIds_) external onlyOwner {
        for (uint256 i; i < tokenIds_.length;) {
            _transfer(from_, to_, tokenIds_[i]);
            unchecked { ++i; }
        }
    }

    // Here, we need to jam transfers and turn the token into SBT
    function _transfer(address, address, uint256) internal virtual override(ERC721GSM) {
        revert("Soulbound");
    }

    // Proxy Padding
    bytes32[50] private proxyPadding;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"isMinter","type":"bool"}],"name":"MinterableSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balanceData","outputs":[{"internalType":"uint32","name":"balance","type":"uint32"},{"internalType":"uint32","name":"mintedAmount","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_tokenData","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint32","name":"lastTransfer","type":"uint32"},{"internalType":"uint32","name":"stakeTimestamp","type":"uint32"},{"internalType":"uint32","name":"totalTimeStaked","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"adminTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"mintAsController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"proxyInitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"approved_","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"name":"setTotalSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"iid_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561000f575f80fd5b50604051806060016040528060268152602001611857602691396040805180820190915260088152674741533a47414e4760c01b602082015281815f61005583826101b1565b50600161006282826101b1565b5050606a80546001600160a01b03191633908117909155610086935091505061008b565b61026b565b60d05460ff161561009a575f80fd5b60d0805460ff19166001179055606a80546001600160a01b0383166001600160a01b03199091161790556040805160608101909152602680825261185760208301395f906100e890826101b1565b506040805180820190915260088152674741533a47414e4760c01b602082015260019061011590826101b1565b5050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061014157607f821691505b60208210810361015f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101ac57805f5260205f20601f840160051c8101602085101561018a5750805b601f840160051c820191505b818110156101a9575f8155600101610196565b50505b505050565b81516001600160401b038111156101ca576101ca610119565b6101de816101d8845461012d565b84610165565b6020601f821160018114610210575f83156101f95750848201515b5f19600385901b1c1916600184901b1784556101a9565b5f84815260208120601f198516915b8281101561023f578785015182556020948501946001909201910161021f565b508482101561025c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6115df806102785f395ff3fe608060405234801561000f575f80fd5b506004361061016d575f3560e01c80638da5cb5b116100d9578063ca7ea52111610093578063e985e9c51161006e578063e985e9c5146103f7578063f2fde38b14610424578063f46eccc414610437578063f7ea7a3d14610459575f80fd5b8063ca7ea521146103cb578063cf456ae7146103de578063d7b4be24146103f1575f80fd5b80638da5cb5b1461036457806395d89b4114610377578063a22cb4651461037f578063b88d4fde14610392578063bd5404a8146103a5578063c87b56dd146103b8575f80fd5b806323b872dd1161012a57806323b872dd1461022d5780632c2cdd601461024057806342842e0e146102c25780635266069d146102d55780636352211e1461032357806370a0823114610336575f80fd5b806301ffc9a71461017157806306fdde0314610199578063081812fc146101ae578063095ea7b3146101ee578063153db98a1461020357806318160ddd14610216575b5f80fd5b61018461017f366004610fb9565b61046c565b60405190151581526020015b60405180910390f35b6101a16104d8565b6040516101909190611002565b6101d66101bc366004611014565b60046020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610190565b6102016101fc366004611046565b610563565b005b610201610211366004611046565b610608565b61021f60065481565b604051908152602001610190565b61020161023b36600461106e565b610662565b61028c61024e366004611014565b60026020525f90815260409020546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041684565b604080516001600160a01b03909516855263ffffffff938416602086015291831691840191909152166060820152608001610190565b6102016102d036600461106e565b6106ce565b6103066102e33660046110a8565b60036020525f908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff938416815292909116602083015201610190565b6101d6610331366004611014565b6106e8565b61021f6103443660046110a8565b6001600160a01b03165f9081526003602052604090205463ffffffff1690565b606a546101d6906001600160a01b031681565b6101a1610775565b61020161038d3660046110c1565b610782565b6102016103a036600461110e565b61078d565b6102016103b33660046110a8565b6108e6565b6101a16103c6366004611014565b610970565b6102016103d93660046111eb565b6109a1565b6102016103ec3660046110c1565b610a07565b306101d6565b610184610405366004611278565b600560209081525f928352604080842090915290825290205460ff1681565b6102016104323660046110a8565b610a91565b6101846104453660046110a8565b609d6020525f908152604090205460ff1681565b610201610467366004611014565b610b0c565b5f6301ffc9a760e01b6001600160e01b03198316148061049c57506380ac58cd60e01b6001600160e01b03198316145b806104b75750635b5e139f60e01b6001600160e01b03198316145b806104d257506307f5828d60e41b6001600160e01b03198316145b92915050565b5f80546104e4906112a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610510906112a9565b801561055b5780601f106105325761010080835404028352916020019161055b565b820191905f5260205f20905b81548152906001019060200180831161053e57829003601f168201915b505050505081565b5f61056d826106e8565b90506001600160a01b0381163314806105a857506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff165b6105f95760405162461bcd60e51b815260206004820152601f60248201527f455243373231473a20617070726f7665206e6f7420617574686f72697a65640060448201526064015b60405180910390fd5b6106038383610b3b565b505050565b335f908152609d602052604090205460ff166106545760405162461bcd60e51b815260206004820152600b60248201526a4e6f74204d696e7465722160a81b60448201526064016105f0565b61065e8282610ba8565b5050565b61066c3382610d76565b6106c35760405162461bcd60e51b815260206004820152602260248201527f455243373231473a207472616e7366657246726f6d20756e617574686f72697a604482015261195960f21b60648201526084016105f0565b610603838383610df2565b61060383838360405180602001604052805f81525061078d565b60408051608080820183525f808352602080840182905283850182905260609384018290528582526002815284822085519384018652546001600160a01b038116845263ffffffff600160a01b8204811692850192909252600160c01b81048216958401869052600160e01b9004169282019290925290911561076b573061076e565b80515b9392505050565b600180546104e4906112a9565b61065e338383610e26565b610798848484610662565b6001600160a01b0383163b156108e0575f836001600160a01b031663150b7a02338786866040516024016107cf94939291906112e1565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516108089190611334565b5f604051808303815f865af19150503d805f8114610841576040519150601f19603f3d011682016040523d82523d5f602084013e610846565b606091505b509150505f8180602001905181019061085f919061133f565b9050630a85bd0160e11b6001600160e01b03198216146108dd5760405162461bcd60e51b815260206004820152603360248201527f455243373231473a20736166655472616e7366657246726f6d20746f5f206e6f6044820152726e2d45524337323152656365697661626c652160681b60648201526084016105f0565b50505b50505050565b60d05460ff16156108f5575f80fd5b60d0805460ff19166001179055606a80546001600160a01b0383166001600160a01b03199091161790556040805160608101909152602680825261158460208301395f90610943908261139e565b506040805180820190915260088152674741533a47414e4760c01b602082015260019061065e908261139e565b606061097b82610e92565b60405160200161098b9190611459565b6040516020818303038152906040529050919050565b606a546001600160a01b031633146109cb5760405162461bcd60e51b81526004016105f0906114bd565b5f5b81811015610a00576109f885858585858181106109ec576109ec6114e1565b90506020020135610df2565b6001016109cd565b5050505050565b606a546001600160a01b03163314610a315760405162461bcd60e51b81526004016105f0906114bd565b6001600160a01b0382165f818152609d6020908152604091829020805460ff1916851515908117909155915191825233917fe0ae214c70c4ca946800c76d1eed7b46d1fb9770b2e5c1aa1218cb46b4d7f8f2910160405180910390a35050565b606a546001600160a01b0316338114610abc5760405162461bcd60e51b81526004016105f0906114bd565b606a80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b606a546001600160a01b03163314610b365760405162461bcd60e51b81526004016105f0906114bd565b600655565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610b6f826106e8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038216610bf55760405162461bcd60e51b815260206004820152601460248201527305f6d696e743a20746172676574203d3d203078360641b60448201526064016105f0565b5f818152600260205260409020546001600160a01b031615610c4f5760405162461bcd60e51b81526020600482015260136024820152725f6d696e743a20746f6b656e2065786973747360681b60448201526064016105f0565b5f610c58610f90565b604080516080810182526001600160a01b0380871680835263ffffffff80861660208086019182525f868801818152606088018281528c835260028452898320985189549551925191518716600160e01b026001600160e01b03928816600160c01b02929092166001600160c01b03938816600160a01b026001600160c01b0319909716919099161794909417169590951791909117909455818352600390935283822080546401000000008186166001908101871663ffffffff19841681178390048816820190971690910267ffffffffffffffff1990921690951717905560068054909301909255915192935084929091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b5f80610d81836106e8565b9050836001600160a01b0316816001600160a01b03161480610dbb57505f838152600460205260409020546001600160a01b038581169116145b80610dea57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b949350505050565b60405162461bcd60e51b815260206004820152600960248201526814dbdd5b189bdd5b9960ba1b60448201526064016105f0565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060815f03610eb85750506040805180820190915260018152600360fc1b602082015290565b815f5b8115610ee15780610ecb81611509565b9150610eda9050600a83611535565b9150610ebb565b5f8167ffffffffffffffff811115610efb57610efb6110fa565b6040519080825280601f01601f191660200182016040528015610f25576020820181803683370190505b5090505b8415610dea5781610f3981611548565b9250610f489050600a8661155d565b610f53906030611570565b60f81b818381518110610f6857610f686114e1565b60200101906001600160f81b03191690815f1a905350610f89600a86611535565b9450610f29565b5f610f9c600a42611535565b905090565b6001600160e01b031981168114610fb6575f80fd5b50565b5f60208284031215610fc9575f80fd5b813561076e81610fa1565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61076e6020830184610fd4565b5f60208284031215611024575f80fd5b5035919050565b80356001600160a01b0381168114611041575f80fd5b919050565b5f8060408385031215611057575f80fd5b6110608361102b565b946020939093013593505050565b5f805f60608486031215611080575f80fd5b6110898461102b565b92506110976020850161102b565b929592945050506040919091013590565b5f602082840312156110b8575f80fd5b61076e8261102b565b5f80604083850312156110d2575f80fd5b6110db8361102b565b9150602083013580151581146110ef575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215611121575f80fd5b61112a8561102b565b93506111386020860161102b565b925060408501359150606085013567ffffffffffffffff81111561115a575f80fd5b8501601f8101871361116a575f80fd5b803567ffffffffffffffff811115611184576111846110fa565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156111b3576111b36110fa565b6040528181528282016020018910156111ca575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f805f80606085870312156111fe575f80fd5b6112078561102b565b93506112156020860161102b565b9250604085013567ffffffffffffffff811115611230575f80fd5b8501601f81018713611240575f80fd5b803567ffffffffffffffff811115611256575f80fd5b8760208260051b840101111561126a575f80fd5b949793965060200194505050565b5f8060408385031215611289575f80fd5b6112928361102b565b91506112a06020840161102b565b90509250929050565b600181811c908216806112bd57607f821691505b6020821081036112db57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061131390830184610fd4565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f61076e828461131d565b5f6020828403121561134f575f80fd5b815161076e81610fa1565b601f82111561060357805f5260205f20601f840160051c8101602085101561137f5750805b601f840160051c820191505b81811015610a00575f815560010161138b565b815167ffffffffffffffff8111156113b8576113b86110fa565b6113cc816113c684546112a9565b8461135a565b6020601f8211600181146113fe575f83156113e75750848201515b5f19600385901b1c1916600184901b178455610a00565b5f84815260208120601f198516915b8281101561142d578785015182556020948501946001909201910161140d565b508482101561144a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f68747470733a2f2f67616e6773746572616c6c737461722e6e6f6e66756e676981527f626c6563646e2e636f6d2f67616e6773746572616c6c737461722f6d657461646020820152636174612f60e01b60408201525f61076e604483018461131d565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161151a5761151a6114f5565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f8261154357611543611521565b500490565b5f81611556576115566114f5565b505f190190565b5f8261156b5761156b611521565b500690565b808201808211156104d2576104d26114f556fe47616e677374657220416c6c20537461723a2047616e6773746572732045766f6c7574696f6ea26469706673582212207c6ee49d403ef9917a50bb7421eef2d33eeb4aa9008eb150c498145d496b247264736f6c634300081a003347616e677374657220416c6c20537461723a2047616e6773746572732045766f6c7574696f6e

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061016d575f3560e01c80638da5cb5b116100d9578063ca7ea52111610093578063e985e9c51161006e578063e985e9c5146103f7578063f2fde38b14610424578063f46eccc414610437578063f7ea7a3d14610459575f80fd5b8063ca7ea521146103cb578063cf456ae7146103de578063d7b4be24146103f1575f80fd5b80638da5cb5b1461036457806395d89b4114610377578063a22cb4651461037f578063b88d4fde14610392578063bd5404a8146103a5578063c87b56dd146103b8575f80fd5b806323b872dd1161012a57806323b872dd1461022d5780632c2cdd601461024057806342842e0e146102c25780635266069d146102d55780636352211e1461032357806370a0823114610336575f80fd5b806301ffc9a71461017157806306fdde0314610199578063081812fc146101ae578063095ea7b3146101ee578063153db98a1461020357806318160ddd14610216575b5f80fd5b61018461017f366004610fb9565b61046c565b60405190151581526020015b60405180910390f35b6101a16104d8565b6040516101909190611002565b6101d66101bc366004611014565b60046020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610190565b6102016101fc366004611046565b610563565b005b610201610211366004611046565b610608565b61021f60065481565b604051908152602001610190565b61020161023b36600461106e565b610662565b61028c61024e366004611014565b60026020525f90815260409020546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041684565b604080516001600160a01b03909516855263ffffffff938416602086015291831691840191909152166060820152608001610190565b6102016102d036600461106e565b6106ce565b6103066102e33660046110a8565b60036020525f908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff938416815292909116602083015201610190565b6101d6610331366004611014565b6106e8565b61021f6103443660046110a8565b6001600160a01b03165f9081526003602052604090205463ffffffff1690565b606a546101d6906001600160a01b031681565b6101a1610775565b61020161038d3660046110c1565b610782565b6102016103a036600461110e565b61078d565b6102016103b33660046110a8565b6108e6565b6101a16103c6366004611014565b610970565b6102016103d93660046111eb565b6109a1565b6102016103ec3660046110c1565b610a07565b306101d6565b610184610405366004611278565b600560209081525f928352604080842090915290825290205460ff1681565b6102016104323660046110a8565b610a91565b6101846104453660046110a8565b609d6020525f908152604090205460ff1681565b610201610467366004611014565b610b0c565b5f6301ffc9a760e01b6001600160e01b03198316148061049c57506380ac58cd60e01b6001600160e01b03198316145b806104b75750635b5e139f60e01b6001600160e01b03198316145b806104d257506307f5828d60e41b6001600160e01b03198316145b92915050565b5f80546104e4906112a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610510906112a9565b801561055b5780601f106105325761010080835404028352916020019161055b565b820191905f5260205f20905b81548152906001019060200180831161053e57829003601f168201915b505050505081565b5f61056d826106e8565b90506001600160a01b0381163314806105a857506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff165b6105f95760405162461bcd60e51b815260206004820152601f60248201527f455243373231473a20617070726f7665206e6f7420617574686f72697a65640060448201526064015b60405180910390fd5b6106038383610b3b565b505050565b335f908152609d602052604090205460ff166106545760405162461bcd60e51b815260206004820152600b60248201526a4e6f74204d696e7465722160a81b60448201526064016105f0565b61065e8282610ba8565b5050565b61066c3382610d76565b6106c35760405162461bcd60e51b815260206004820152602260248201527f455243373231473a207472616e7366657246726f6d20756e617574686f72697a604482015261195960f21b60648201526084016105f0565b610603838383610df2565b61060383838360405180602001604052805f81525061078d565b60408051608080820183525f808352602080840182905283850182905260609384018290528582526002815284822085519384018652546001600160a01b038116845263ffffffff600160a01b8204811692850192909252600160c01b81048216958401869052600160e01b9004169282019290925290911561076b573061076e565b80515b9392505050565b600180546104e4906112a9565b61065e338383610e26565b610798848484610662565b6001600160a01b0383163b156108e0575f836001600160a01b031663150b7a02338786866040516024016107cf94939291906112e1565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516108089190611334565b5f604051808303815f865af19150503d805f8114610841576040519150601f19603f3d011682016040523d82523d5f602084013e610846565b606091505b509150505f8180602001905181019061085f919061133f565b9050630a85bd0160e11b6001600160e01b03198216146108dd5760405162461bcd60e51b815260206004820152603360248201527f455243373231473a20736166655472616e7366657246726f6d20746f5f206e6f6044820152726e2d45524337323152656365697661626c652160681b60648201526084016105f0565b50505b50505050565b60d05460ff16156108f5575f80fd5b60d0805460ff19166001179055606a80546001600160a01b0383166001600160a01b03199091161790556040805160608101909152602680825261158460208301395f90610943908261139e565b506040805180820190915260088152674741533a47414e4760c01b602082015260019061065e908261139e565b606061097b82610e92565b60405160200161098b9190611459565b6040516020818303038152906040529050919050565b606a546001600160a01b031633146109cb5760405162461bcd60e51b81526004016105f0906114bd565b5f5b81811015610a00576109f885858585858181106109ec576109ec6114e1565b90506020020135610df2565b6001016109cd565b5050505050565b606a546001600160a01b03163314610a315760405162461bcd60e51b81526004016105f0906114bd565b6001600160a01b0382165f818152609d6020908152604091829020805460ff1916851515908117909155915191825233917fe0ae214c70c4ca946800c76d1eed7b46d1fb9770b2e5c1aa1218cb46b4d7f8f2910160405180910390a35050565b606a546001600160a01b0316338114610abc5760405162461bcd60e51b81526004016105f0906114bd565b606a80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b606a546001600160a01b03163314610b365760405162461bcd60e51b81526004016105f0906114bd565b600655565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610b6f826106e8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038216610bf55760405162461bcd60e51b815260206004820152601460248201527305f6d696e743a20746172676574203d3d203078360641b60448201526064016105f0565b5f818152600260205260409020546001600160a01b031615610c4f5760405162461bcd60e51b81526020600482015260136024820152725f6d696e743a20746f6b656e2065786973747360681b60448201526064016105f0565b5f610c58610f90565b604080516080810182526001600160a01b0380871680835263ffffffff80861660208086019182525f868801818152606088018281528c835260028452898320985189549551925191518716600160e01b026001600160e01b03928816600160c01b02929092166001600160c01b03938816600160a01b026001600160c01b0319909716919099161794909417169590951791909117909455818352600390935283822080546401000000008186166001908101871663ffffffff19841681178390048816820190971690910267ffffffffffffffff1990921690951717905560068054909301909255915192935084929091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b5f80610d81836106e8565b9050836001600160a01b0316816001600160a01b03161480610dbb57505f838152600460205260409020546001600160a01b038581169116145b80610dea57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b949350505050565b60405162461bcd60e51b815260206004820152600960248201526814dbdd5b189bdd5b9960ba1b60448201526064016105f0565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060815f03610eb85750506040805180820190915260018152600360fc1b602082015290565b815f5b8115610ee15780610ecb81611509565b9150610eda9050600a83611535565b9150610ebb565b5f8167ffffffffffffffff811115610efb57610efb6110fa565b6040519080825280601f01601f191660200182016040528015610f25576020820181803683370190505b5090505b8415610dea5781610f3981611548565b9250610f489050600a8661155d565b610f53906030611570565b60f81b818381518110610f6857610f686114e1565b60200101906001600160f81b03191690815f1a905350610f89600a86611535565b9450610f29565b5f610f9c600a42611535565b905090565b6001600160e01b031981168114610fb6575f80fd5b50565b5f60208284031215610fc9575f80fd5b813561076e81610fa1565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61076e6020830184610fd4565b5f60208284031215611024575f80fd5b5035919050565b80356001600160a01b0381168114611041575f80fd5b919050565b5f8060408385031215611057575f80fd5b6110608361102b565b946020939093013593505050565b5f805f60608486031215611080575f80fd5b6110898461102b565b92506110976020850161102b565b929592945050506040919091013590565b5f602082840312156110b8575f80fd5b61076e8261102b565b5f80604083850312156110d2575f80fd5b6110db8361102b565b9150602083013580151581146110ef575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215611121575f80fd5b61112a8561102b565b93506111386020860161102b565b925060408501359150606085013567ffffffffffffffff81111561115a575f80fd5b8501601f8101871361116a575f80fd5b803567ffffffffffffffff811115611184576111846110fa565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156111b3576111b36110fa565b6040528181528282016020018910156111ca575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f805f80606085870312156111fe575f80fd5b6112078561102b565b93506112156020860161102b565b9250604085013567ffffffffffffffff811115611230575f80fd5b8501601f81018713611240575f80fd5b803567ffffffffffffffff811115611256575f80fd5b8760208260051b840101111561126a575f80fd5b949793965060200194505050565b5f8060408385031215611289575f80fd5b6112928361102b565b91506112a06020840161102b565b90509250929050565b600181811c908216806112bd57607f821691505b6020821081036112db57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061131390830184610fd4565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f61076e828461131d565b5f6020828403121561134f575f80fd5b815161076e81610fa1565b601f82111561060357805f5260205f20601f840160051c8101602085101561137f5750805b601f840160051c820191505b81811015610a00575f815560010161138b565b815167ffffffffffffffff8111156113b8576113b86110fa565b6113cc816113c684546112a9565b8461135a565b6020601f8211600181146113fe575f83156113e75750848201515b5f19600385901b1c1916600184901b178455610a00565b5f84815260208120601f198516915b8281101561142d578785015182556020948501946001909201910161140d565b508482101561144a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f68747470733a2f2f67616e6773746572616c6c737461722e6e6f6e66756e676981527f626c6563646e2e636f6d2f67616e6773746572616c6c737461722f6d657461646020820152636174612f60e01b60408201525f61076e604483018461131d565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161151a5761151a6114f5565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f8261154357611543611521565b500490565b5f81611556576115566114f5565b505f190190565b5f8261156b5761156b611521565b500690565b808201808211156104d2576104d26114f556fe47616e677374657220416c6c20537461723a2047616e6773746572732045766f6c7574696f6ea26469706673582212207c6ee49d403ef9917a50bb7421eef2d33eeb4aa9008eb150c498145d496b247264736f6c634300081a0033

Deployed Bytecode Sourcemap

11242:1355:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6420:241;;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;6420:241:0;;;;;;;;1557:18;;;:::i;:::-;;;;;;;:::i;2261:46::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2261:46:0;;;;;;-1:-1:-1;;;;;1506:32:1;;;1488:51;;1476:2;1461:18;2261:46:0;1342:203:1;4611:300:0;;;;;;:::i;:::-;;:::i;:::-;;11910:116;;;;;;:::i;:::-;;:::i;7438:26::-;;;;;;;;;2179:25:1;;;2167:2;2152:18;7438:26:0;2033:177:1;5458:244:0;;;;;;:::i;:::-;;:::i;2101:49::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2101:49:0;;;;-1:-1:-1;;;2101:49:0;;;;;-1:-1:-1;;;2101:49:0;;;;;-1:-1:-1;;;2101:49:0;;;;;;;;;;-1:-1:-1;;;;;2837:32:1;;;2819:51;;2918:10;2906:23;;;2901:2;2886:18;;2879:51;2966:23;;;2946:18;;;2939:51;;;;3026:23;3021:2;3006:18;;2999:51;2806:3;2791:19;2101:49:0;2594:462:1;6254:154:0;;;;;;:::i;:::-;;:::i;2157:53::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3452:10:1;3440:23;;;3422:42;;3500:23;;;;3495:2;3480:18;;3473:51;3395:18;2157:53:0;3252:278:1;8521:242:0;;;;;;:::i;:::-;;:::i;2729:123::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2814:22:0;2787:7;2814:22;;;:12;:22;;;;;:30;;;;2729:123;208:20;;;;;-1:-1:-1;;;;;208:20:0;;;1582;;;:::i;5157:148::-;;;;;;:::i;:::-;;:::i;5708:540::-;;;;;;:::i;:::-;;:::i;11505:279::-;;;;;;:::i;:::-;;:::i;7135:260::-;;;;;;:::i;:::-;;:::i;12080:255::-;;;;;;:::i;:::-;;:::i;912:170::-;;;;;;:::i;:::-;;:::i;7797:95::-;7879:4;7797:95;;2314:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;354:229;;;;;;:::i;:::-;;:::i;789:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11792:110;;;;;;:::i;:::-;;:::i;6420:241::-;6489:4;-1:-1:-1;;;;;;;;;6514:18:0;;;;:58;;-1:-1:-1;;;;;;;;;;6554:18:0;;;6514:58;:98;;;-1:-1:-1;;;;;;;;;;6594:18:0;;;6514:98;:138;;;-1:-1:-1;;;;;;;;;;6634:18:0;;;6514:138;6506:146;6420:241;-1:-1:-1;;6420:241:0:o;1557:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4611:300::-;4685:14;4702:17;4710:8;4702:7;:17::i;:::-;4685:34;-1:-1:-1;;;;;;4738:20:0;;4748:10;4738:20;;:78;;-1:-1:-1;;;;;;4780:24:0;;;;;;:16;:24;;;;;;;;4805:10;4780:36;;;;;;;;;;4738:78;4730:139;;;;-1:-1:-1;;;4730:139:0;;6846:2:1;4730:139:0;;;6828:21:1;6885:2;6865:18;;;6858:30;6924:33;6904:18;;;6897:61;6975:18;;4730:139:0;;;;;;;;;4880:23;4889:3;4894:8;4880;:23::i;:::-;4674:237;4611:300;;:::o;11910:116::-;873:10;865:19;;;;:7;:19;;;;;;;;857:43;;;;-1:-1:-1;;;857:43:0;;7206:2:1;857:43:0;;;7188:21:1;7245:2;7225:18;;;7218:30;-1:-1:-1;;;7264:18:1;;;7257:41;7315:18;;857:43:0;7004:335:1;857:43:0;11998:20:::1;12004:3;12009:8;11998:5;:20::i;:::-;11910:116:::0;;:::o;5458:244::-;5560:40;5579:10;5591:8;5560:18;:40::i;:::-;5552:100;;;;-1:-1:-1;;;5552:100:0;;7546:2:1;5552:100:0;;;7528:21:1;7585:2;7565:18;;;7558:30;7624:34;7604:18;;;7597:62;-1:-1:-1;;;7675:18:1;;;7668:32;7717:19;;5552:100:0;7344:398:1;5552:100:0;5663:31;5673:5;5680:3;5685:8;5663:9;:31::i;6254:154::-;6358:42;6375:5;6382:3;6387:8;6358:42;;;;;;;;;;;;:16;:42::i;8521:242::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8275:20:0;;;:10;:20;;;;;8268:27;;;;;;;;-1:-1:-1;;;;;8268:27:0;;;;;-1:-1:-1;;;8268:27:0;;;;;;;;;;;-1:-1:-1;;;8268:27:0;;;;;;;;;;-1:-1:-1;;;8268:27:0;;;;;;;;;;-1:-1:-1;;8683:32:0;:72;;7879:4;8683:72;;;8718:18;;8683:72;8676:79;8521:242;-1:-1:-1;;;8521:242:0:o;1582:20::-;;;;;;;:::i;5157:148::-;5245:52;5264:10;5276:9;5287;5245:18;:52::i;5708:540::-;5831:34;5844:5;5851:3;5856:8;5831:12;:34::i;:::-;-1:-1:-1;;;;;5880:15:0;;;:20;5876:365;;5920:22;5946:3;-1:-1:-1;;;;;5946:8:0;5996:10;6008;6020:5;6027:8;6037:5;5955:88;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5955:88:0;;;;;;;;;;;5946:98;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5917:127;;;6059:16;6089:9;6078:31;;;;;;;;;;;;:::i;:::-;6059:50;-1:-1:-1;;;;;;;;;;6132:23:0;;;6124:105;;;;-1:-1:-1;;;6124:105:0;;9103:2:1;6124:105:0;;;9085:21:1;9142:2;9122:18;;;9115:30;9181:34;9161:18;;;9154:62;-1:-1:-1;;;9232:18:1;;;9225:49;9291:19;;6124:105:0;8901:415:1;6124:105:0;5902:339;;5876:365;5708:540;;;;:::o;11505:279::-;11575:18;;;;11574:19;11566:28;;;;;;11605:18;:25;;-1:-1:-1;;11605:25:0;11626:4;11605:25;;;11672:5;:16;;-1:-1:-1;;;;;11672:16:0;;-1:-1:-1;;;;;;11672:16:0;;;;;;11699:47;;;;;;;;;;;;;;;;;;:4;;:47;;:4;:47;:::i;:::-;-1:-1:-1;11757:19:0;;;;;;;;;;;;-1:-1:-1;;;11757:19:0;;;;:6;;:19;;:6;:19;:::i;7135:260::-;7200:13;7356:19;7366:8;7356:9;:19::i;:::-;7240:146;;;;;;;;:::i;:::-;;;;;;;;;;;;;7226:161;;7135:260;;;:::o;12080:255::-;308:5;;-1:-1:-1;;;;;308:5:0;317:10;308:19;300:42;;;;-1:-1:-1;;;300:42:0;;;;;;;:::i;:::-;12200:9:::1;12195:133;12211:20:::0;;::::1;12195:133;;;12249:35;12259:5;12266:3;12271:9;;12281:1;12271:12;;;;;;;:::i;:::-;;;;;;;12249:9;:35::i;:::-;12311:3;;12195:133;;;;12080:255:::0;;;;:::o;912:170::-;308:5;;-1:-1:-1;;;;;308:5:0;317:10;308:19;300:42;;;;-1:-1:-1;;;300:42:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;991:17:0;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;;:25;;-1:-1:-1;;991:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;1032:42;;540:41:1;;;1046:10:0::1;::::0;1032:42:::1;::::0;513:18:1;1032:42:0::1;;;;;;;912:170:::0;;:::o;354:229::-;436:5;;-1:-1:-1;;;;;436:5:0;473:10;460:23;;452:46;;;;-1:-1:-1;;;452:46:0;;;;;;;:::i;:::-;509:5;:12;;-1:-1:-1;;;;;;509:12:0;-1:-1:-1;;;;;509:12:0;;;;;;;;;538:37;;509:12;;538:37;;;;;-1:-1:-1;;538:37:0;404:179;354:229;:::o;11792:110::-;308:5;;-1:-1:-1;;;;;308:5:0;317:10;308:19;300:42;;;;-1:-1:-1;;;300:42:0;;;;;;;:::i;:::-;11868:11:::1;:26:::0;11792:110::o;4435:170::-;4512:21;;;;:11;:21;;;;;:27;;-1:-1:-1;;;;;;4512:27:0;-1:-1:-1;;;;;4512:27:0;;;;;;;;:21;;4564:17;4512:21;4564:7;:17::i;:::-;-1:-1:-1;;;;;4555:42:0;;;;;;;;;;;4435:170;;:::o;2900:595::-;-1:-1:-1;;;;;2982:17:0;;2974:50;;;;-1:-1:-1;;;2974:50:0;;12582:2:1;2974:50:0;;;12564:21:1;12621:2;12601:18;;;12594:30;-1:-1:-1;;;12640:18:1;;;12633:50;12700:18;;2974:50:0;12380:344:1;2974:50:0;3081:1;3043:20;;;:10;:20;;;;;:26;-1:-1:-1;;;;;3043:26:0;:40;3035:72;;;;-1:-1:-1;;;3035:72:0;;12931:2:1;3035:72:0;;;12913:21:1;12970:2;12950:18;;;12943:30;-1:-1:-1;;;12989:18:1;;;12982:49;13048:18;;3035:72:0;12729:343:1;3035:72:0;3120:19;3142:30;:28;:30::i;:::-;3206:36;;;;;;;;-1:-1:-1;;;;;3206:36:0;;;;;;;;;;;;;;;;;-1:-1:-1;3206:36:0;;;;;;;;;;;;3183:20;;;:10;:20;;;;;:59;;;;;;;;;;;;-1:-1:-1;;;3183:59:0;-1:-1:-1;;;;;3183:59:0;;;-1:-1:-1;;;3183:59:0;;;;;-1:-1:-1;;;;;3183:59:0;;;-1:-1:-1;;;3183:59:0;-1:-1:-1;;;;;;3183:59:0;;;;;;;;;;;;;;;;;;;;;;;;3280:17;;;:12;:17;;;;;;:27;;3322:32;3280:27;;;3183:59;3280:27;;;;;-1:-1:-1;;3280:27:0;;;;3322:32;;;;;;;;;;;;;-1:-1:-1;;3322:32:0;;;;;;;;;3410:11;:13;;;;;;;;3452:35;;3120:52;;-1:-1:-1;3194:8:0;;3206:36;;-1:-1:-1;3452:35:0;;-1:-1:-1;;3452:35:0;2963:532;2900:595;;:::o;4122:307::-;4223:4;4240:14;4257:17;4265:8;4257:7;:17::i;:::-;4240:34;;4303:8;-1:-1:-1;;;;;4293:18:0;:6;-1:-1:-1;;;;;4293:18:0;;:72;;;-1:-1:-1;4332:21:0;;;;:11;:21;;;;;;-1:-1:-1;;;;;4332:33:0;;;:21;;:33;4293:72;:127;;;-1:-1:-1;;;;;;4386:24:0;;;;;;;:16;:24;;;;;;;;:34;;;;;;;;;;;;4293:127;4285:136;4122:307;-1:-1:-1;;;;4122:307:0:o;12410:121::-;12504:19;;-1:-1:-1;;;12504:19:0;;13279:2:1;12504:19:0;;;13261:21:1;13318:1;13298:18;;;13291:29;-1:-1:-1;;;13336:18:1;;;13329:39;13385:18;;12504:19:0;13077:332:1;4923:228:0;-1:-1:-1;;;;;5036:24:0;;;;;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;:47;;-1:-1:-1;;5036:47:0;;;;;;;;;;5099:44;;540:41:1;;;5099:44:0;;513:18:1;5099:44:0;;;;;;;4923:228;;;:::o;6669:458::-;6727:13;6757:6;6767:1;6757:11;6753:32;;-1:-1:-1;;6772:10:0;;;;;;;;;;;;-1:-1:-1;;;6772:10:0;;;;;6669:458::o;6753:32::-;6814:6;6795:16;6848:52;6855:13;;6848:52;;6872:9;;;;:::i;:::-;;-1:-1:-1;6883:14:0;;-1:-1:-1;6895:2:0;6883:14;;:::i;:::-;;;6848:52;;;6910:20;6943:7;6933:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6933:18:0;;6910:41;;6962:124;6969:11;;6962:124;;6984:9;;;;:::i;:::-;;-1:-1:-1;7054:11:0;;-1:-1:-1;7063:2:0;7054:6;:11;:::i;:::-;7041:26;;:2;:26;:::i;:::-;7014:55;;6995:7;7003;6995:16;;;;;;;;:::i;:::-;;;;:74;-1:-1:-1;;;;;6995:74:0;;;;;;;;-1:-1:-1;7071:12:0;7081:2;7071:12;;:::i;:::-;;;6962:124;;2425:125;2488:6;2521:20;2539:2;2521:15;:20;:::i;:::-;2507:35;;2425:125;:::o;14:131:1:-;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;68:71;14:131;:::o;150:245::-;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:289::-;634:3;672:5;666:12;699:6;694:3;687:19;755:6;748:4;741:5;737:16;730:4;725:3;721:14;715:47;807:1;800:4;791:6;786:3;782:16;778:27;771:38;870:4;863:2;859:7;854:2;846:6;842:15;838:29;833:3;829:39;825:50;818:57;;;592:289;;;;:::o;886:220::-;1035:2;1024:9;1017:21;998:4;1055:45;1096:2;1085:9;1081:18;1073:6;1055:45;:::i;1111:226::-;1170:6;1223:2;1211:9;1202:7;1198:23;1194:32;1191:52;;;1239:1;1236;1229:12;1191:52;-1:-1:-1;1284:23:1;;1111:226;-1:-1:-1;1111:226:1:o;1550:173::-;1618:20;;-1:-1:-1;;;;;1667:31:1;;1657:42;;1647:70;;1713:1;1710;1703:12;1647:70;1550:173;;;:::o;1728:300::-;1796:6;1804;1857:2;1845:9;1836:7;1832:23;1828:32;1825:52;;;1873:1;1870;1863:12;1825:52;1896:29;1915:9;1896:29;:::i;:::-;1886:39;1994:2;1979:18;;;;1966:32;;-1:-1:-1;;;1728:300:1:o;2215:374::-;2292:6;2300;2308;2361:2;2349:9;2340:7;2336:23;2332:32;2329:52;;;2377:1;2374;2367:12;2329:52;2400:29;2419:9;2400:29;:::i;:::-;2390:39;;2448:38;2482:2;2471:9;2467:18;2448:38;:::i;:::-;2215:374;;2438:48;;-1:-1:-1;;;2555:2:1;2540:18;;;;2527:32;;2215:374::o;3061:186::-;3120:6;3173:2;3161:9;3152:7;3148:23;3144:32;3141:52;;;3189:1;3186;3179:12;3141:52;3212:29;3231:9;3212:29;:::i;3535:347::-;3600:6;3608;3661:2;3649:9;3640:7;3636:23;3632:32;3629:52;;;3677:1;3674;3667:12;3629:52;3700:29;3719:9;3700:29;:::i;:::-;3690:39;;3779:2;3768:9;3764:18;3751:32;3826:5;3819:13;3812:21;3805:5;3802:32;3792:60;;3848:1;3845;3838:12;3792:60;3871:5;3861:15;;;3535:347;;;;;:::o;3887:127::-;3948:10;3943:3;3939:20;3936:1;3929:31;3979:4;3976:1;3969:15;4003:4;4000:1;3993:15;4019:1207;4114:6;4122;4130;4138;4191:3;4179:9;4170:7;4166:23;4162:33;4159:53;;;4208:1;4205;4198:12;4159:53;4231:29;4250:9;4231:29;:::i;:::-;4221:39;;4279:38;4313:2;4302:9;4298:18;4279:38;:::i;:::-;4269:48;-1:-1:-1;4386:2:1;4371:18;;4358:32;;-1:-1:-1;4465:2:1;4450:18;;4437:32;4492:18;4481:30;;4478:50;;;4524:1;4521;4514:12;4478:50;4547:22;;4600:4;4592:13;;4588:27;-1:-1:-1;4578:55:1;;4629:1;4626;4619:12;4578:55;4669:2;4656:16;4695:18;4687:6;4684:30;4681:56;;;4717:18;;:::i;:::-;4766:2;4760:9;4858:2;4820:17;;-1:-1:-1;;4816:31:1;;;4849:2;4812:40;4808:54;4796:67;;4893:18;4878:34;;4914:22;;;4875:62;4872:88;;;4940:18;;:::i;:::-;4976:2;4969:22;5000;;;5041:15;;;5058:2;5037:24;5034:37;-1:-1:-1;5031:57:1;;;5084:1;5081;5074:12;5031:57;5140:6;5135:2;5131;5127:11;5122:2;5114:6;5110:15;5097:50;5193:1;5188:2;5179:6;5171;5167:19;5163:28;5156:39;5214:6;5204:16;;;;;4019:1207;;;;;;;:::o;5231:758::-;5335:6;5343;5351;5359;5412:2;5400:9;5391:7;5387:23;5383:32;5380:52;;;5428:1;5425;5418:12;5380:52;5451:29;5470:9;5451:29;:::i;:::-;5441:39;;5499:38;5533:2;5522:9;5518:18;5499:38;:::i;:::-;5489:48;;5588:2;5577:9;5573:18;5560:32;5615:18;5607:6;5604:30;5601:50;;;5647:1;5644;5637:12;5601:50;5670:22;;5723:4;5715:13;;5711:27;-1:-1:-1;5701:55:1;;5752:1;5749;5742:12;5701:55;5792:2;5779:16;5818:18;5810:6;5807:30;5804:50;;;5850:1;5847;5840:12;5804:50;5903:7;5898:2;5888:6;5885:1;5881:14;5877:2;5873:23;5869:32;5866:45;5863:65;;;5924:1;5921;5914:12;5863:65;5231:758;;;;-1:-1:-1;5955:2:1;5947:11;;-1:-1:-1;;;5231:758:1:o;5994:260::-;6062:6;6070;6123:2;6111:9;6102:7;6098:23;6094:32;6091:52;;;6139:1;6136;6129:12;6091:52;6162:29;6181:9;6162:29;:::i;:::-;6152:39;;6210:38;6244:2;6233:9;6229:18;6210:38;:::i;:::-;6200:48;;5994:260;;;;;:::o;6259:380::-;6338:1;6334:12;;;;6381;;;6402:61;;6456:4;6448:6;6444:17;6434:27;;6402:61;6509:2;6501:6;6498:14;6478:18;6475:38;6472:161;;6555:10;6550:3;6546:20;6543:1;6536:31;6590:4;6587:1;6580:15;6618:4;6615:1;6608:15;6472:161;;6259:380;;;:::o;7747:485::-;-1:-1:-1;;;;;7978:32:1;;;7960:51;;8047:32;;8042:2;8027:18;;8020:60;8111:2;8096:18;;8089:34;;;8159:3;8154:2;8139:18;;8132:31;;;-1:-1:-1;;8180:46:1;;8206:19;;8198:6;8180:46;:::i;:::-;8172:54;7747:485;-1:-1:-1;;;;;;7747:485:1:o;8237:211::-;8278:3;8316:5;8310:12;8360:6;8353:4;8346:5;8342:16;8337:3;8331:36;8422:1;8386:16;;8411:13;;;-1:-1:-1;8386:16:1;;8237:211;-1:-1:-1;8237:211:1:o;8453:189::-;8582:3;8607:29;8632:3;8624:6;8607:29;:::i;8647:249::-;8716:6;8769:2;8757:9;8748:7;8744:23;8740:32;8737:52;;;8785:1;8782;8775:12;8737:52;8817:9;8811:16;8836:30;8860:5;8836:30;:::i;9447:518::-;9549:2;9544:3;9541:11;9538:421;;;9585:5;9582:1;9575:16;9629:4;9626:1;9616:18;9699:2;9687:10;9683:19;9680:1;9676:27;9670:4;9666:38;9735:4;9723:10;9720:20;9717:47;;;-1:-1:-1;9758:4:1;9717:47;9813:2;9808:3;9804:12;9801:1;9797:20;9791:4;9787:31;9777:41;;9868:81;9886:2;9879:5;9876:13;9868:81;;;9945:1;9931:16;;9912:1;9901:13;9868:81;;10141:1299;10267:3;10261:10;10294:18;10286:6;10283:30;10280:56;;;10316:18;;:::i;:::-;10345:97;10435:6;10395:38;10427:4;10421:11;10395:38;:::i;:::-;10389:4;10345:97;:::i;:::-;10491:4;10522:2;10511:14;;10539:1;10534:649;;;;11227:1;11244:6;11241:89;;;-1:-1:-1;11296:19:1;;;11290:26;11241:89;-1:-1:-1;;10098:1:1;10094:11;;;10090:24;10086:29;10076:40;10122:1;10118:11;;;10073:57;11343:81;;10504:930;;10534:649;9394:1;9387:14;;;9431:4;9418:18;;-1:-1:-1;;10570:20:1;;;10688:222;10702:7;10699:1;10696:14;10688:222;;;10784:19;;;10778:26;10763:42;;10891:4;10876:20;;;;10844:1;10832:14;;;;10718:12;10688:222;;;10692:3;10938:6;10929:7;10926:19;10923:201;;;10999:19;;;10993:26;-1:-1:-1;;11082:1:1;11078:14;;;11094:3;11074:24;11070:37;11066:42;11051:58;11036:74;;10923:201;-1:-1:-1;;;;11170:1:1;11154:14;;;11150:22;11137:36;;-1:-1:-1;10141:1299:1:o;11445:459::-;11707:34;11702:3;11695:47;11772:34;11767:2;11762:3;11758:12;11751:56;-1:-1:-1;;;11832:2:1;11827:3;11823:12;11816:28;11677:3;11860:38;11894:2;11889:3;11885:12;11877:6;11860:38;:::i;11909:334::-;12111:2;12093:21;;;12150:2;12130:18;;;12123:30;-1:-1:-1;;;12184:2:1;12169:18;;12162:40;12234:2;12219:18;;11909:334::o;12248:127::-;12309:10;12304:3;12300:20;12297:1;12290:31;12340:4;12337:1;12330:15;12364:4;12361:1;12354:15;13414:127;13475:10;13470:3;13466:20;13463:1;13456:31;13506:4;13503:1;13496:15;13530:4;13527:1;13520:15;13546:135;13585:3;13606:17;;;13603:43;;13626:18;;:::i;:::-;-1:-1:-1;13673:1:1;13662:13;;13546:135::o;13686:127::-;13747:10;13742:3;13738:20;13735:1;13728:31;13778:4;13775:1;13768:15;13802:4;13799:1;13792:15;13818:120;13858:1;13884;13874:35;;13889:18;;:::i;:::-;-1:-1:-1;13923:9:1;;13818:120::o;13943:136::-;13982:3;14010:5;14000:39;;14019:18;;:::i;:::-;-1:-1:-1;;;14055:18:1;;13943:136::o;14084:112::-;14116:1;14142;14132:35;;14147:18;;:::i;:::-;-1:-1:-1;14181:9:1;;14084:112::o;14201:125::-;14266:9;;;14287:10;;;14284:36;;;14300:18;;:::i

Swarm Source

ipfs://7c6ee49d403ef9917a50bb7421eef2d33eeb4aa9008eb150c498145d496b2472

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.