ETH Price: $3,387.28 (+1.19%)

Contract

0x4CBCc45C3D24610cBFA4884f4D16085b590f3354
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Unstake Turtles214649892024-12-23 11:48:3515 hrs ago1734954515IN
0x4CBCc45C...b590f3354
0 ETH0.000576355.78567446
Unstake Turtles214315952024-12-18 19:47:115 days ago1734551231IN
0x4CBCc45C...b590f3354
0 ETH0.0014499517.57137943
Unstake Turtles214315352024-12-18 19:35:115 days ago1734550511IN
0x4CBCc45C...b590f3354
0 ETH0.0012569718.22412802
Unstake Turtles214043112024-12-15 0:22:599 days ago1734222179IN
0x4CBCc45C...b590f3354
0 ETH0.000505387.32725821
Unstake Turtles214043092024-12-15 0:22:359 days ago1734222155IN
0x4CBCc45C...b590f3354
0 ETH0.000532927.72652798
Unstake Turtles213814202024-12-11 19:42:2312 days ago1733946143IN
0x4CBCc45C...b590f3354
0 ETH0.004332930.89284271
Unstake Turtles213571622024-12-08 10:25:4715 days ago1733653547IN
0x4CBCc45C...b590f3354
0 ETH0.001907448.6101506
Unstake Turtles211157302024-11-04 17:18:4749 days ago1730740727IN
0x4CBCc45C...b590f3354
0 ETH0.000946019.84775047
Claim208034692024-09-22 3:36:4793 days ago1726976207IN
0x4CBCc45C...b590f3354
0 ETH0.000314875.60757073
Claim208034692024-09-22 3:36:4793 days ago1726976207IN
0x4CBCc45C...b590f3354
0 ETH0.000361975.60757073
Unstake Turtles207598622024-09-16 1:19:4799 days ago1726449587IN
0x4CBCc45C...b590f3354
0 ETH0.000407442.90502897
Claim207572682024-09-15 16:39:4799 days ago1726418387IN
0x4CBCc45C...b590f3354
0 ETH0.000216632.1700081
Stake Turtles206765992024-09-04 10:23:59110 days ago1725445439IN
0x4CBCc45C...b590f3354
0 ETH0.00010171.86896632
Unstake Turtles206262092024-08-28 9:32:11117 days ago1724837531IN
0x4CBCc45C...b590f3354
0 ETH0.000137942
Unstake Turtles206261972024-08-28 9:29:47117 days ago1724837387IN
0x4CBCc45C...b590f3354
0 ETH0.000172142
Unstake Turtles205806042024-08-22 0:35:23124 days ago1724286923IN
0x4CBCc45C...b590f3354
0 ETH0.000094171.14163009
Unstake Turtles205712122024-08-20 17:05:23125 days ago1724173523IN
0x4CBCc45C...b590f3354
0 ETH0.000256172.33710881
Stake Turtles205547542024-08-18 9:56:11127 days ago1723974971IN
0x4CBCc45C...b590f3354
0 ETH0.000140982.13924894
Stake Turtles205189072024-08-13 9:48:23132 days ago1723542503IN
0x4CBCc45C...b590f3354
0 ETH0.000171032.59516736
Unstake Turtles205090272024-08-12 0:42:59134 days ago1723423379IN
0x4CBCc45C...b590f3354
0 ETH0.000125281.4555275
Claim204898532024-08-09 8:29:23136 days ago1723192163IN
0x4CBCc45C...b590f3354
0 ETH0.001146917.83566722
Claim204737782024-08-07 2:42:11139 days ago1722998531IN
0x4CBCc45C...b590f3354
0 ETH0.001695715.18330287
Unstake Turtles203190442024-07-16 12:22:59160 days ago1721132579IN
0x4CBCc45C...b590f3354
0 ETH0.000817599.90812185
Claim203190412024-07-16 12:22:23160 days ago1721132543IN
0x4CBCc45C...b590f3354
0 ETH0.000719729.77348273
Unstake Turtles203150382024-07-15 22:57:47161 days ago1721084267IN
0x4CBCc45C...b590f3354
0 ETH0.001222499.92637815
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:
sCyberTurtles

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Open0x Ownable (by 0xInuarashi)
abstract contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed oldOwner_, address indexed newOwner_);
    constructor() { owner = msg.sender; }
    modifier onlyOwner {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function _transferOwnership(address newOwner_) internal virtual {
        address _oldOwner = owner;
        owner = newOwner_;
        emit OwnershipTransferred(_oldOwner, newOwner_);    
    }
    function transferOwnership(address newOwner_) public virtual onlyOwner {
        require(newOwner_ != address(0x0), "Ownable: new owner is the zero address!");
        _transferOwnership(newOwner_);
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0x0));
    }
}

interface iCT {

    struct ownerAndStake {
        address owner;
        uint40 timestamp;
    }
    
    function totalSupply() external view returns (uint256);
    function _ownerOf(uint256 tokenId_) external view returns (ownerAndStake memory);
    function ownerOf(uint256 tokenId_) external view returns (address);
    function isStaked(uint256 tokenId_) external view returns (bool);
    function tokenIdStartsAt() external view returns (uint256);

    function validateOwnershipOfTokens(address owner_, uint256[] calldata tokenIds_) 
    external view returns (bool);
    function validateOwnershipOfStakedTokens(address owner_,
    uint256[] calldata tokenIds_) external view returns (bool);

    function stakeTurtles(uint256[] calldata tokenIds_) external;
    function updateTurtles(uint256[] calldata tokenIds_) external;
    function unstakeTurtles(uint256[] calldata tokenIds_) external;

    function tokenURI(uint256 tokenId_) external view returns (string memory);
}

interface iShell {
    function mint(address to_, uint256 amount_) external;
}

// This is a proof-of-stake (token represents stake) contract
// Custom made with love by 0xInuarashi.eth
contract sCyberTurtles is Ownable {
    string public name = "Staked Cyber Turtles";
    string public symbol = "sCyber";

    // We largely interface with CyberTurtles
    iCT public CT = iCT(0x81BC389D02c3054649643E590ce57fAAAB3BF38B); // note: change
    function setCT(address address_) external onlyOwner {
        CT = iCT(address_);
    }

    iShell public SHELL = iShell(0x81BC389D02c3054649643E590ce57fAAAB3BF38B); // note: c
    function setShell(address address_) external onlyOwner {
        SHELL = iShell(address_);
    }

    // Yield Info
    uint256 public yieldStartTime = 1643670000; // 2021-01-31_18-00_EST
    uint256 public yieldEndTime = 1959202800; // 10 years
    uint256 public yieldRate = 100 ether;

    // Magic Events
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    // Magic Logic
    function totalSupply() public view returns (uint256) {
        uint256 _totalSupply;
        uint256 _startId = CT.tokenIdStartsAt();
        for (uint256 i = _startId; i <= CT.totalSupply() + _startId; i++) {
            if (CT.isStaked(i)) { _totalSupply++; }
        }
        return _totalSupply;
    }

    function ownerOf(uint256 tokenId_) public view returns (address) {
        iCT.ownerAndStake memory _ownerAndStake = CT._ownerOf(tokenId_);
        address _owner = _ownerAndStake.timestamp > 0 ?
             _ownerAndStake.owner : address(0);
        return _owner;
    }

    function balanceOf(address address_) public view returns (uint256) {
        uint256 _startId = CT.tokenIdStartsAt();
        uint256 _balance;
        for (uint256 i = _startId; i <= CT.totalSupply() + _startId; i++) {
            if (ownerOf(i) == address_) { _balance++; }
        }
        return _balance;
    }

    // Internal Claim Function
    function _getPendingTokens(uint256 tokenId_) internal view returns (uint256) {
        uint256 _timestamp = uint256(CT._ownerOf(tokenId_).timestamp);
        if (_timestamp == 0 || _timestamp > yieldEndTime) return 0;

        uint256 _timeCurrentOrEnded = yieldEndTime > block.timestamp ? 
            block.timestamp : yieldEndTime;
        uint256 _timeElapsed = _timeCurrentOrEnded - _timestamp;

        return (_timeElapsed * yieldRate) / 1 days;
    }
    function _getPendingTokensMany(uint256[] memory tokenIds_) internal view
    returns (uint256) {
        uint256 _pendingTokens;
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            _pendingTokens += _getPendingTokens(tokenIds_[i]);
        }
        return _pendingTokens;
    }

    function getPendingTokens(uint256 tokenId_) public view returns (uint256) {
        return _getPendingTokens(tokenId_);
    }
    function getPendingTokensMany(uint256[] calldata tokenIds_) public view 
    returns (uint256) {
        return _getPendingTokensMany(tokenIds_);
    }
    function getPendingTokensOfAddress(address address_) public view 
    returns (uint256) {
        uint256[] memory _tokensOfAddress = walletOfOwner(address_);
        return _getPendingTokensMany(_tokensOfAddress);
    }

    function _claim(address to_, uint256[] memory tokenIds_) internal {
        uint256 _pendingTokens;
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            _pendingTokens += _getPendingTokens(tokenIds_[i]);
        }
        SHELL.mint(to_, _pendingTokens);
    }

    function claim(uint256[] calldata tokenIds_) external {
        require(CT.validateOwnershipOfStakedTokens(msg.sender, tokenIds_),
            "You are not the owner or token is unstaked!");

        _claim(msg.sender, tokenIds_);
        CT.updateTurtles(tokenIds_); // This updates the timestamp
    }
    function stakeTurtles(uint256[] calldata tokenIds_) external {
        require(CT.validateOwnershipOfTokens(msg.sender, tokenIds_),
            "You are not the owner or token is already staked!");

        CT.stakeTurtles(tokenIds_); // Set timestamp to block.timestamp

        for (uint256 i = 0; i < tokenIds_.length; i++) {
            emit Transfer(address(0), msg.sender, tokenIds_[i]); // Mint sToken
        }
    }   
    function unstakeTurtles(uint256[] calldata tokenIds_) external {
        require(CT.validateOwnershipOfStakedTokens(msg.sender, tokenIds_),
            "You are not the owner or token is unstaked!");

        _claim(msg.sender, tokenIds_);
        CT.unstakeTurtles(tokenIds_); // Set timestamp to 0

        for (uint256 i = 0; i < tokenIds_.length; i++) {
            emit Transfer(msg.sender, address(0), tokenIds_[i]); // Burn sToken
        }
    }

    function mintStakedTokenAsCyberTurtles(address to_, uint256 tokenId_) external {
        require(msg.sender == address(CT), "You are not CT!");
        emit Transfer(address(0), to_, tokenId_);
    }

    function walletOfOwner(address address_) public virtual view 
    returns (uint256[] memory) {
        uint256 _balance = balanceOf(address_);
        if (_balance == 0) return new uint256[](0);

        uint256[] memory _tokens = new uint256[] (_balance);
        uint256 _index;
        uint256 _loopThrough = CT.totalSupply() + 1;
        for (uint256 i = 0; i < _loopThrough; i++) {
            if (ownerOf(i) == address(0x0) && _tokens[_balance - 1] == 0) {
                _loopThrough++; 
            }
            if (ownerOf(i) == address_) { 
                _tokens[_index] = i; _index++; 
            }
        }
        return _tokens;
    }

    // TokenURI Stuff
    string internal baseTokenURI; string internal baseTokenURI_EXT;
    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; } // get digits in value_
        bytes memory _buffer = new bytes(_digits);
        while (value_ != 0) { _digits--; _buffer[_digits] = bytes1(uint8(
            48 + uint256(value_ % 10 ))); value_ /= 10; } // create bytes of value_
        return string(_buffer); // return string converted bytes of value_
    }
    function setBaseTokenURI(string memory uri_) external onlyOwner {
        baseTokenURI = uri_;
    }
    function setBaseTokenURI_EXT(string memory ext_) external onlyOwner {
        baseTokenURI_EXT = ext_;
    }
    function tokenURI(uint256 tokenId_) public view virtual returns (string memory) {
        require(ownerOf(tokenId_) != address(0), 
            "ERC721I: tokenURI() Token does not exist!");

        return string(abi.encodePacked(baseTokenURI, 
            _toString(tokenId_), baseTokenURI_EXT));
    }

    // OZ ERC721 Stuff
    function supportsInterface(bytes4 interfaceId_) public pure returns (bool) {
        return (interfaceId_ == 0x80ac58cd || interfaceId_ == 0x5b5e139f);
    }
}

Contract Security Audit

Contract ABI

[{"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":[],"name":"CT","outputs":[{"internalType":"contract iCT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHELL","outputs":[{"internalType":"contract iShell","name":"","type":"address"}],"stateMutability":"view","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":"tokenIds_","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"getPendingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"getPendingTokensMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getPendingTokensOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"mintStakedTokenAsCyberTurtles","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"ext_","type":"string"}],"name":"setBaseTokenURI_EXT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setCT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setShell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"stakeTurtles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","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":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"unstakeTurtles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c0604052601460808190527f5374616b656420437962657220547572746c657300000000000000000000000060a0908152620000409160019190620000ea565b506040805180820190915260068082526539a1bcb132b960d11b60209092019182526200007091600291620000ea565b50600380547381bc389d02c3054649643e590ce57faaab3bf38b6001600160a01b031991821681179092556004805490911690911790556361f869f06005556374c70ff060065568056bc75e2d63100000600755348015620000d157600080fd5b50600080546001600160a01b03191633179055620001cd565b828054620000f89062000190565b90600052602060002090601f0160209004810192826200011c576000855562000167565b82601f106200013757805160ff191683800117855562000167565b8280016001018555821562000167579182015b82811115620001675782518255916020019190600101906200014a565b506200017592915062000179565b5090565b5b808211156200017557600081556001016200017a565b600181811c90821680620001a557607f821691505b60208210811415620001c757634e487b7160e01b600052602260045260246000fd5b50919050565b611c9f80620001dd6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063c87b56dd11610097578063e0308ce811610071578063e0308ce814610370578063f0dbdee014610383578063f2fde38b14610396578063fc1d9a7f146103a957600080fd5b8063c87b56dd14610337578063cff7833d1461034a578063d9c020bf1461035d57600080fd5b80638da5cb5b116100d35780638da5cb5b146102f657806395d89b4114610309578063968e72f814610311578063bfc3d84b1461032457600080fd5b806370a08231146102d2578063715018a6146102e55780637c073ede146102ed57600080fd5b8063314ca0391161016657806358d78c8c1161014057806358d78c8c146102785780636352211e1461028b5780636999ac93146102b65780636ba4c138146102bf57600080fd5b8063314ca0391461023c578063438b6300146102455780634fcd49e81461026557600080fd5b806301ffc9a7146101ae57806302ffaed1146101d657806306fdde03146101eb57806308cf8f061461020057806318160ddd1461022157806330176e1314610229575b600080fd5b6101c16101bc366004611740565b6103bc565b60405190151581526020015b60405180910390f35b6101e96101e436600461176a565b6103f3565b005b6101f361043d565b6040516101cd9190611a36565b61021361020e366004611884565b6104cb565b6040519081526020016101cd565b6102136104d6565b6101e961023736600461176a565b61069a565b61021360065481565b610258610253366004611660565b6106d7565b6040516101cd91906119f2565b6101e96102733660046116a9565b6108af565b6102136102863660046116a9565b610a6c565b61029e610299366004611884565b610ab1565b6040516001600160a01b0390911681526020016101cd565b61021360075481565b6101e96102cd3660046116a9565b610b59565b6102136102e0366004611660565b610c9e565b6101e9610dfb565b61021360055481565b60005461029e906001600160a01b031681565b6101f3610e31565b61021361031f366004611660565b610e3e565b60035461029e906001600160a01b031681565b6101f3610345366004611884565b610e55565b6101e9610358366004611660565b610f00565b6101e961036b36600461167d565b610f4c565b6101e961037e3660046116a9565b610fd4565b6101e9610391366004611660565b611199565b6101e96103a4366004611660565b6111e5565b60045461029e906001600160a01b031681565b60006380ac58cd60e01b6001600160e01b0319831614806103ed5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146104265760405162461bcd60e51b815260040161041d90611ab4565b60405180910390fd5b80516104399060099060208401906115c7565b5050565b6001805461044a90611b92565b80601f016020809104026020016040519081016040528092919081815260200182805461047690611b92565b80156104c35780601f10610498576101008083540402835291602001916104c3565b820191906000526020600020905b8154815290600101906020018083116104a657829003601f168201915b505050505081565b60006103ed82611281565b6000806000600360009054906101000a90046001600160a01b03166001600160a01b0316635b5d958b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561052957600080fd5b505afa15801561053d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610561919061189d565b9050805b600354604080516318160ddd60e01b8152905184926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156105a957600080fd5b505afa1580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e1919061189d565b6105eb9190611ae9565b811161069257600354604051635d528fc360e11b8152600481018390526001600160a01b039091169063baa51f869060240160206040518083038186803b15801561063557600080fd5b505afa158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066d919061171e565b15610680578261067c81611bcd565b9350505b8061068a81611bcd565b915050610565565b509092915050565b6000546001600160a01b031633146106c45760405162461bcd60e51b815260040161041d90611ab4565b80516104399060089060208401906115c7565b606060006106e483610c9e565b9050806107055760408051600080825260208201909252905b509392505050565b60008167ffffffffffffffff81111561072057610720611c3e565b604051908082528060200260200182016040528015610749578160200160208202803683370190505b509050600080600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561079d57600080fd5b505afa1580156107b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d5919061189d565b6107e0906001611ae9565b905060005b818110156108a45760006107f882610ab1565b6001600160a01b0316148015610831575083610815600187611b34565b8151811061082557610825611c28565b60200260200101516000145b15610844578161084081611bcd565b9250505b866001600160a01b031661085782610ab1565b6001600160a01b03161415610892578084848151811061087957610879611c28565b60209081029190910101528261088e81611bcd565b9350505b8061089c81611bcd565b9150506107e5565b509195945050505050565b6003546040516339d0ab6760e21b81526001600160a01b039091169063e742ad9c906108e3903390869086906004016119b9565b60206040518083038186803b1580156108fb57600080fd5b505afa15801561090f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610933919061171e565b61094f5760405162461bcd60e51b815260040161041d90611a69565b61098c3383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061137492505050565b6003546040516309f9a93d60e31b81526001600160a01b0390911690634fcd49e8906109be90859085906004016119de565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b5050505060005b81811015610a6757828282818110610a0d57610a0d611c28565b9050602002013560006001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480610a5f81611bcd565b9150506109f3565b505050565b6000610aaa83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061142f92505050565b9392505050565b600354604051633835054160e01b81526004810183905260009182916001600160a01b0390911690633835054190602401604080518083038186803b158015610af957600080fd5b505afa158015610b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b31919061181b565b9050600080826020015164ffffffffff1611610b4e576000610b51565b81515b949350505050565b6003546040516339d0ab6760e21b81526001600160a01b039091169063e742ad9c90610b8d903390869086906004016119b9565b60206040518083038186803b158015610ba557600080fd5b505afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061171e565b610bf95760405162461bcd60e51b815260040161041d90611a69565b610c363383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061137492505050565b6003546040516358361e3160e01b81526001600160a01b03909116906358361e3190610c6890859085906004016119de565b600060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b0316635b5d958b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cef57600080fd5b505afa158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d27919061189d565b90506000815b600354604080516318160ddd60e01b8152905185926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610d7157600080fd5b505afa158015610d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da9919061189d565b610db39190611ae9565b81116106fd57846001600160a01b0316610dcc82610ab1565b6001600160a01b03161415610de95781610de581611bcd565b9250505b80610df381611bcd565b915050610d2d565b6000546001600160a01b03163314610e255760405162461bcd60e51b815260040161041d90611ab4565b610e2f6000611478565b565b6002805461044a90611b92565b600080610e4a836106d7565b9050610aaa8161142f565b60606000610e6283610ab1565b6001600160a01b03161415610ecb5760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b606482015260840161041d565b6008610ed6836114c8565b6009604051602001610eea93929190611986565b6040516020818303038152906040529050919050565b6000546001600160a01b03163314610f2a5760405162461bcd60e51b815260040161041d90611ab4565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610f985760405162461bcd60e51b815260206004820152600f60248201526e596f7520617265206e6f742043542160881b604482015260640161041d565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600354604051637713a0a360e11b81526001600160a01b039091169063ee27414690611008903390869086906004016119b9565b60206040518083038186803b15801561102057600080fd5b505afa158015611034573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611058919061171e565b6110be5760405162461bcd60e51b815260206004820152603160248201527f596f7520617265206e6f7420746865206f776e6572206f7220746f6b656e20696044820152707320616c7265616479207374616b65642160781b606482015260840161041d565b600354604051631c06119d60e31b81526001600160a01b039091169063e0308ce8906110f090859085906004016119de565b600060405180830381600087803b15801561110a57600080fd5b505af115801561111e573d6000803e3d6000fd5b5050505060005b81811015610a675782828281811061113f5761113f611c28565b90506020020135336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48061119181611bcd565b915050611125565b6000546001600160a01b031633146111c35760405162461bcd60e51b815260040161041d90611ab4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461120f5760405162461bcd60e51b815260040161041d90611ab4565b6001600160a01b0381166112755760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b606482015260840161041d565b61127e81611478565b50565b600354604051633835054160e01b81526004810183905260009182916001600160a01b0390911690633835054190602401604080518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061181b565b6020015164ffffffffff16905080158061131c575060065481115b1561132a5750600092915050565b6000426006541161133d5760065461133f565b425b9050600061134d8383611b34565b905062015180600754826113619190611b15565b61136b9190611b01565b95945050505050565b6000805b82518110156113c1576113a383828151811061139657611396611c28565b6020026020010151611281565b6113ad9083611ae9565b9150806113b981611bcd565b915050611378565b50600480546040516340c10f1960e01b81526001600160a01b0386811693820193909352602481018490529116906340c10f1990604401600060405180830381600087803b15801561141257600080fd5b505af1158015611426573d6000803e3d6000fd5b50505050505050565b60008060005b83518110156114715761145384828151811061139657611396611c28565b61145d9083611ae9565b91508061146981611bcd565b915050611435565b5092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060816114ec5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611516578061150081611bcd565b915061150f9050600a83611b01565b91506114f0565b60008167ffffffffffffffff81111561153157611531611c3e565b6040519080825280601f01601f19166020018201604052801561155b576020820181803683370190505b5090505b8415610b51578161156f81611b7b565b925061157e9050600a86611be8565b611589906030611ae9565b60f81b81838151811061159e5761159e611c28565b60200101906001600160f81b031916908160001a9053506115c0600a86611b01565b945061155f565b8280546115d390611b92565b90600052602060002090601f0160209004810192826115f5576000855561163b565b82601f1061160e57805160ff191683800117855561163b565b8280016001018555821561163b579182015b8281111561163b578251825591602001919060010190611620565b5061164792915061164b565b5090565b5b80821115611647576000815560010161164c565b60006020828403121561167257600080fd5b8135610aaa81611c54565b6000806040838503121561169057600080fd5b823561169b81611c54565b946020939093013593505050565b600080602083850312156116bc57600080fd5b823567ffffffffffffffff808211156116d457600080fd5b818501915085601f8301126116e857600080fd5b8135818111156116f757600080fd5b8660208260051b850101111561170c57600080fd5b60209290920196919550909350505050565b60006020828403121561173057600080fd5b81518015158114610aaa57600080fd5b60006020828403121561175257600080fd5b81356001600160e01b031981168114610aaa57600080fd5b60006020828403121561177c57600080fd5b813567ffffffffffffffff8082111561179457600080fd5b818401915084601f8301126117a857600080fd5b8135818111156117ba576117ba611c3e565b604051601f8201601f19908116603f011681019083821181831017156117e2576117e2611c3e565b816040528281528760208487010111156117fb57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006040828403121561182d57600080fd5b6040516040810181811067ffffffffffffffff8211171561185057611850611c3e565b604052825161185e81611c54565b8152602083015164ffffffffff8116811461187857600080fd5b60208201529392505050565b60006020828403121561189657600080fd5b5035919050565b6000602082840312156118af57600080fd5b5051919050565b81835260006001600160fb1b038311156118cf57600080fd5b8260051b8083602087013760009401602001938452509192915050565b8054600090600181811c908083168061190657607f831692505b602080841082141561192857634e487b7160e01b600052602260045260246000fd5b81801561193c576001811461194d5761197a565b60ff1986168952848901965061197a565b60008881526020902060005b868110156119725781548b820152908501908301611959565b505084890196505b50505050505092915050565b600061199282866118ec565b84516119a2818360208901611b4b565b6119ae818301866118ec565b979650505050505050565b6001600160a01b038416815260406020820181905260009061136b90830184866118b6565b602081526000610b516020830184866118b6565b6020808252825182820181905260009190848201906040850190845b81811015611a2a57835183529284019291840191600101611a0e565b50909695505050505050565b6020815260008251806020840152611a55816040850160208701611b4b565b601f01601f19169190910160400192915050565b6020808252602b908201527f596f7520617265206e6f7420746865206f776e6572206f7220746f6b656e206960408201526a7320756e7374616b65642160a81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611afc57611afc611bfc565b500190565b600082611b1057611b10611c12565b500490565b6000816000190483118215151615611b2f57611b2f611bfc565b500290565b600082821015611b4657611b46611bfc565b500390565b60005b83811015611b66578181015183820152602001611b4e565b83811115611b75576000848401525b50505050565b600081611b8a57611b8a611bfc565b506000190190565b600181811c90821680611ba657607f821691505b60208210811415611bc757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611be157611be1611bfc565b5060010190565b600082611bf757611bf7611c12565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461127e57600080fdfea26469706673582212204a7023342e0546e9fc2094e188bf3451dd14ffc6e954fdfbf752304dcda634ca64736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063c87b56dd11610097578063e0308ce811610071578063e0308ce814610370578063f0dbdee014610383578063f2fde38b14610396578063fc1d9a7f146103a957600080fd5b8063c87b56dd14610337578063cff7833d1461034a578063d9c020bf1461035d57600080fd5b80638da5cb5b116100d35780638da5cb5b146102f657806395d89b4114610309578063968e72f814610311578063bfc3d84b1461032457600080fd5b806370a08231146102d2578063715018a6146102e55780637c073ede146102ed57600080fd5b8063314ca0391161016657806358d78c8c1161014057806358d78c8c146102785780636352211e1461028b5780636999ac93146102b65780636ba4c138146102bf57600080fd5b8063314ca0391461023c578063438b6300146102455780634fcd49e81461026557600080fd5b806301ffc9a7146101ae57806302ffaed1146101d657806306fdde03146101eb57806308cf8f061461020057806318160ddd1461022157806330176e1314610229575b600080fd5b6101c16101bc366004611740565b6103bc565b60405190151581526020015b60405180910390f35b6101e96101e436600461176a565b6103f3565b005b6101f361043d565b6040516101cd9190611a36565b61021361020e366004611884565b6104cb565b6040519081526020016101cd565b6102136104d6565b6101e961023736600461176a565b61069a565b61021360065481565b610258610253366004611660565b6106d7565b6040516101cd91906119f2565b6101e96102733660046116a9565b6108af565b6102136102863660046116a9565b610a6c565b61029e610299366004611884565b610ab1565b6040516001600160a01b0390911681526020016101cd565b61021360075481565b6101e96102cd3660046116a9565b610b59565b6102136102e0366004611660565b610c9e565b6101e9610dfb565b61021360055481565b60005461029e906001600160a01b031681565b6101f3610e31565b61021361031f366004611660565b610e3e565b60035461029e906001600160a01b031681565b6101f3610345366004611884565b610e55565b6101e9610358366004611660565b610f00565b6101e961036b36600461167d565b610f4c565b6101e961037e3660046116a9565b610fd4565b6101e9610391366004611660565b611199565b6101e96103a4366004611660565b6111e5565b60045461029e906001600160a01b031681565b60006380ac58cd60e01b6001600160e01b0319831614806103ed5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146104265760405162461bcd60e51b815260040161041d90611ab4565b60405180910390fd5b80516104399060099060208401906115c7565b5050565b6001805461044a90611b92565b80601f016020809104026020016040519081016040528092919081815260200182805461047690611b92565b80156104c35780601f10610498576101008083540402835291602001916104c3565b820191906000526020600020905b8154815290600101906020018083116104a657829003601f168201915b505050505081565b60006103ed82611281565b6000806000600360009054906101000a90046001600160a01b03166001600160a01b0316635b5d958b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561052957600080fd5b505afa15801561053d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610561919061189d565b9050805b600354604080516318160ddd60e01b8152905184926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156105a957600080fd5b505afa1580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e1919061189d565b6105eb9190611ae9565b811161069257600354604051635d528fc360e11b8152600481018390526001600160a01b039091169063baa51f869060240160206040518083038186803b15801561063557600080fd5b505afa158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066d919061171e565b15610680578261067c81611bcd565b9350505b8061068a81611bcd565b915050610565565b509092915050565b6000546001600160a01b031633146106c45760405162461bcd60e51b815260040161041d90611ab4565b80516104399060089060208401906115c7565b606060006106e483610c9e565b9050806107055760408051600080825260208201909252905b509392505050565b60008167ffffffffffffffff81111561072057610720611c3e565b604051908082528060200260200182016040528015610749578160200160208202803683370190505b509050600080600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561079d57600080fd5b505afa1580156107b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d5919061189d565b6107e0906001611ae9565b905060005b818110156108a45760006107f882610ab1565b6001600160a01b0316148015610831575083610815600187611b34565b8151811061082557610825611c28565b60200260200101516000145b15610844578161084081611bcd565b9250505b866001600160a01b031661085782610ab1565b6001600160a01b03161415610892578084848151811061087957610879611c28565b60209081029190910101528261088e81611bcd565b9350505b8061089c81611bcd565b9150506107e5565b509195945050505050565b6003546040516339d0ab6760e21b81526001600160a01b039091169063e742ad9c906108e3903390869086906004016119b9565b60206040518083038186803b1580156108fb57600080fd5b505afa15801561090f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610933919061171e565b61094f5760405162461bcd60e51b815260040161041d90611a69565b61098c3383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061137492505050565b6003546040516309f9a93d60e31b81526001600160a01b0390911690634fcd49e8906109be90859085906004016119de565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b5050505060005b81811015610a6757828282818110610a0d57610a0d611c28565b9050602002013560006001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480610a5f81611bcd565b9150506109f3565b505050565b6000610aaa83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061142f92505050565b9392505050565b600354604051633835054160e01b81526004810183905260009182916001600160a01b0390911690633835054190602401604080518083038186803b158015610af957600080fd5b505afa158015610b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b31919061181b565b9050600080826020015164ffffffffff1611610b4e576000610b51565b81515b949350505050565b6003546040516339d0ab6760e21b81526001600160a01b039091169063e742ad9c90610b8d903390869086906004016119b9565b60206040518083038186803b158015610ba557600080fd5b505afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061171e565b610bf95760405162461bcd60e51b815260040161041d90611a69565b610c363383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061137492505050565b6003546040516358361e3160e01b81526001600160a01b03909116906358361e3190610c6890859085906004016119de565b600060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b0316635b5d958b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cef57600080fd5b505afa158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d27919061189d565b90506000815b600354604080516318160ddd60e01b8152905185926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610d7157600080fd5b505afa158015610d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da9919061189d565b610db39190611ae9565b81116106fd57846001600160a01b0316610dcc82610ab1565b6001600160a01b03161415610de95781610de581611bcd565b9250505b80610df381611bcd565b915050610d2d565b6000546001600160a01b03163314610e255760405162461bcd60e51b815260040161041d90611ab4565b610e2f6000611478565b565b6002805461044a90611b92565b600080610e4a836106d7565b9050610aaa8161142f565b60606000610e6283610ab1565b6001600160a01b03161415610ecb5760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b606482015260840161041d565b6008610ed6836114c8565b6009604051602001610eea93929190611986565b6040516020818303038152906040529050919050565b6000546001600160a01b03163314610f2a5760405162461bcd60e51b815260040161041d90611ab4565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610f985760405162461bcd60e51b815260206004820152600f60248201526e596f7520617265206e6f742043542160881b604482015260640161041d565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600354604051637713a0a360e11b81526001600160a01b039091169063ee27414690611008903390869086906004016119b9565b60206040518083038186803b15801561102057600080fd5b505afa158015611034573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611058919061171e565b6110be5760405162461bcd60e51b815260206004820152603160248201527f596f7520617265206e6f7420746865206f776e6572206f7220746f6b656e20696044820152707320616c7265616479207374616b65642160781b606482015260840161041d565b600354604051631c06119d60e31b81526001600160a01b039091169063e0308ce8906110f090859085906004016119de565b600060405180830381600087803b15801561110a57600080fd5b505af115801561111e573d6000803e3d6000fd5b5050505060005b81811015610a675782828281811061113f5761113f611c28565b90506020020135336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48061119181611bcd565b915050611125565b6000546001600160a01b031633146111c35760405162461bcd60e51b815260040161041d90611ab4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461120f5760405162461bcd60e51b815260040161041d90611ab4565b6001600160a01b0381166112755760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b606482015260840161041d565b61127e81611478565b50565b600354604051633835054160e01b81526004810183905260009182916001600160a01b0390911690633835054190602401604080518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061181b565b6020015164ffffffffff16905080158061131c575060065481115b1561132a5750600092915050565b6000426006541161133d5760065461133f565b425b9050600061134d8383611b34565b905062015180600754826113619190611b15565b61136b9190611b01565b95945050505050565b6000805b82518110156113c1576113a383828151811061139657611396611c28565b6020026020010151611281565b6113ad9083611ae9565b9150806113b981611bcd565b915050611378565b50600480546040516340c10f1960e01b81526001600160a01b0386811693820193909352602481018490529116906340c10f1990604401600060405180830381600087803b15801561141257600080fd5b505af1158015611426573d6000803e3d6000fd5b50505050505050565b60008060005b83518110156114715761145384828151811061139657611396611c28565b61145d9083611ae9565b91508061146981611bcd565b915050611435565b5092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060816114ec5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611516578061150081611bcd565b915061150f9050600a83611b01565b91506114f0565b60008167ffffffffffffffff81111561153157611531611c3e565b6040519080825280601f01601f19166020018201604052801561155b576020820181803683370190505b5090505b8415610b51578161156f81611b7b565b925061157e9050600a86611be8565b611589906030611ae9565b60f81b81838151811061159e5761159e611c28565b60200101906001600160f81b031916908160001a9053506115c0600a86611b01565b945061155f565b8280546115d390611b92565b90600052602060002090601f0160209004810192826115f5576000855561163b565b82601f1061160e57805160ff191683800117855561163b565b8280016001018555821561163b579182015b8281111561163b578251825591602001919060010190611620565b5061164792915061164b565b5090565b5b80821115611647576000815560010161164c565b60006020828403121561167257600080fd5b8135610aaa81611c54565b6000806040838503121561169057600080fd5b823561169b81611c54565b946020939093013593505050565b600080602083850312156116bc57600080fd5b823567ffffffffffffffff808211156116d457600080fd5b818501915085601f8301126116e857600080fd5b8135818111156116f757600080fd5b8660208260051b850101111561170c57600080fd5b60209290920196919550909350505050565b60006020828403121561173057600080fd5b81518015158114610aaa57600080fd5b60006020828403121561175257600080fd5b81356001600160e01b031981168114610aaa57600080fd5b60006020828403121561177c57600080fd5b813567ffffffffffffffff8082111561179457600080fd5b818401915084601f8301126117a857600080fd5b8135818111156117ba576117ba611c3e565b604051601f8201601f19908116603f011681019083821181831017156117e2576117e2611c3e565b816040528281528760208487010111156117fb57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006040828403121561182d57600080fd5b6040516040810181811067ffffffffffffffff8211171561185057611850611c3e565b604052825161185e81611c54565b8152602083015164ffffffffff8116811461187857600080fd5b60208201529392505050565b60006020828403121561189657600080fd5b5035919050565b6000602082840312156118af57600080fd5b5051919050565b81835260006001600160fb1b038311156118cf57600080fd5b8260051b8083602087013760009401602001938452509192915050565b8054600090600181811c908083168061190657607f831692505b602080841082141561192857634e487b7160e01b600052602260045260246000fd5b81801561193c576001811461194d5761197a565b60ff1986168952848901965061197a565b60008881526020902060005b868110156119725781548b820152908501908301611959565b505084890196505b50505050505092915050565b600061199282866118ec565b84516119a2818360208901611b4b565b6119ae818301866118ec565b979650505050505050565b6001600160a01b038416815260406020820181905260009061136b90830184866118b6565b602081526000610b516020830184866118b6565b6020808252825182820181905260009190848201906040850190845b81811015611a2a57835183529284019291840191600101611a0e565b50909695505050505050565b6020815260008251806020840152611a55816040850160208701611b4b565b601f01601f19169190910160400192915050565b6020808252602b908201527f596f7520617265206e6f7420746865206f776e6572206f7220746f6b656e206960408201526a7320756e7374616b65642160a81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611afc57611afc611bfc565b500190565b600082611b1057611b10611c12565b500490565b6000816000190483118215151615611b2f57611b2f611bfc565b500290565b600082821015611b4657611b46611bfc565b500390565b60005b83811015611b66578181015183820152602001611b4e565b83811115611b75576000848401525b50505050565b600081611b8a57611b8a611bfc565b506000190190565b600181811c90821680611ba657607f821691505b60208210811415611bc757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611be157611be1611bfc565b5060010190565b600082611bf757611bf7611c12565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461127e57600080fdfea26469706673582212204a7023342e0546e9fc2094e188bf3451dd14ffc6e954fdfbf752304dcda634ca64736f6c63430008070033

Deployed Bytecode Sourcemap

2139:6943:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8920:159;;;;;;:::i;:::-;;:::i;:::-;;;7534:14:1;;7527:22;7509:41;;7497:2;7482:18;8920:159:0;;;;;;;;8463:110;;;;;;:::i;:::-;;:::i;:::-;;2180:43;;;:::i;:::-;;;;;;;:::i;4775:127::-;;;;;;:::i;:::-;;:::i;:::-;;;10889:25:1;;;10877:2;10862:18;4775:127:0;10743:177:1;3023:313:0;;;:::i;8355:102::-;;;;;;:::i;:::-;;:::i;2788:40::-;;;;;;7028:671;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6347:463::-;;;;;;:::i;:::-;;:::i;4908:154::-;;;;;;:::i;:::-;;:::i;3344:277::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5726:32:1;;;5708:51;;5696:2;5681:18;3344:277:0;5562:203:1;2847:36:0;;;;;;5590:309;;;;;;:::i;:::-;;:::i;3629:323::-;;;;;;:::i;:::-;;:::i;823:105::-;;;:::i;2715:42::-;;;;;;129:20;;;;;-1:-1:-1;;;;;129:20:0;;;2230:31;;;:::i;5068:224::-;;;;;;:::i;:::-;;:::i;2317:63::-;;;;;-1:-1:-1;;;;;2317:63:0;;;8579:309;;;;;;:::i;:::-;;:::i;2403:89::-;;;;;;:::i;:::-;;:::i;6818:202::-;;;;;;:::i;:::-;;:::i;5905:433::-;;;;;;:::i;:::-;;:::i;2590:98::-;;;;;;:::i;:::-;;:::i;610:207::-;;;;;;:::i;:::-;;:::i;2500:72::-;;;;;-1:-1:-1;;;;;2500:72:0;;;8920:159;8989:4;-1:-1:-1;;;;;;;;;9014:26:0;;;;:56;;-1:-1:-1;;;;;;;;;;9044:26:0;;;9014:56;9006:65;8920:159;-1:-1:-1;;8920:159:0:o;8463:110::-;324:5;;-1:-1:-1;;;;;324:5:0;333:10;324:19;316:64;;;;-1:-1:-1;;;316:64:0;;;;;;;:::i;:::-;;;;;;;;;8542:23;;::::1;::::0;:16:::1;::::0;:23:::1;::::0;::::1;::::0;::::1;:::i;:::-;;8463:110:::0;:::o;2180:43::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4775:127::-;4840:7;4867:27;4885:8;4867:17;:27::i;3023:313::-;3067:7;3087:20;3118:16;3137:2;;;;;;;;;-1:-1:-1;;;;;3137:2:0;-1:-1:-1;;;;;3137:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3118:39;-1:-1:-1;3118:39:0;3168:131;3200:2;;:16;;;-1:-1:-1;;;3200:16:0;;;;3219:8;;-1:-1:-1;;;;;3200:2:0;;:14;;:16;;;;;;;;;;;;;;:2;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;;;;:::i;:::-;3195:1;:32;3168:131;;3253:2;;:14;;-1:-1:-1;;;3253:14:0;;;;;10889:25:1;;;-1:-1:-1;;;;;3253:2:0;;;;:11;;10862:18:1;;3253:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3249:39;;;3271:14;;;;:::i;:::-;;;;3249:39;3229:3;;;;:::i;:::-;;;;3168:131;;;-1:-1:-1;3316:12:0;;3023:313;-1:-1:-1;;3023:313:0:o;8355:102::-;324:5;;-1:-1:-1;;;;;324:5:0;333:10;324:19;316:64;;;;-1:-1:-1;;;316:64:0;;;;;;;:::i;:::-;8430:19;;::::1;::::0;:12:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;7028:671::-:0;7104:16;7133;7152:19;7162:8;7152:9;:19::i;:::-;7133:38;-1:-1:-1;7186:13:0;7182:42;;7208:16;;;7222:1;7208:16;;;;;;;;;;;-1:-1:-1;7201:23:0;7028:671;-1:-1:-1;;;7028:671:0:o;7182:42::-;7237:24;7279:8;7264:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7264:24:0;;7237:51;;7299:14;7324:20;7347:2;;;;;;;;;-1:-1:-1;;;;;7347:2:0;-1:-1:-1;;;;;7347:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:20;;7366:1;7347:20;:::i;:::-;7324:43;;7383:9;7378:289;7402:12;7398:1;:16;7378:289;;;7462:3;7440:10;7448:1;7440:7;:10::i;:::-;-1:-1:-1;;;;;7440:26:0;;:56;;;;-1:-1:-1;7470:7:0;7478:12;7489:1;7478:8;:12;:::i;:::-;7470:21;;;;;;;;:::i;:::-;;;;;;;7495:1;7470:26;7440:56;7436:112;;;7517:14;;;;:::i;:::-;;;;7436:112;7580:8;-1:-1:-1;;;;;7566:22:0;:10;7574:1;7566:7;:10::i;:::-;-1:-1:-1;;;;;7566:22:0;;7562:94;;;7628:1;7610:7;7618:6;7610:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;7631:8;;;;:::i;:::-;;;;7562:94;7416:3;;;;:::i;:::-;;;;7378:289;;;-1:-1:-1;7684:7:0;;7028:671;-1:-1:-1;;;;;7028:671:0:o;6347:463::-;6429:2;;:57;;-1:-1:-1;;;6429:57:0;;-1:-1:-1;;;;;6429:2:0;;;;:34;;:57;;6464:10;;6476:9;;;;6429:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6421:126;;;;-1:-1:-1;;;6421:126:0;;;;;;;:::i;:::-;6560:29;6567:10;6579:9;;6560:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6560:6:0;;-1:-1:-1;;;6560:29:0:i;:::-;6600:2;;:28;;-1:-1:-1;;;6600:28:0;;-1:-1:-1;;;;;6600:2:0;;;;:17;;:28;;6618:9;;;;6600:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6668:9;6663:140;6683:20;;;6663:140;;;6763:9;;6773:1;6763:12;;;;;;;:::i;:::-;;;;;;;6759:1;-1:-1:-1;;;;;6730:46:0;6739:10;-1:-1:-1;;;;;6730:46:0;;;;;;;;;;;6705:3;;;;:::i;:::-;;;;6663:140;;;;6347:463;;:::o;4908:154::-;4995:7;5022:32;5044:9;;5022:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5022:21:0;;-1:-1:-1;;;5022:32:0:i;:::-;5015:39;4908:154;-1:-1:-1;;;4908:154:0:o;3344:277::-;3462:2;;:21;;-1:-1:-1;;;3462:21:0;;;;;10889:25:1;;;3400:7:0;;;;-1:-1:-1;;;;;3462:2:0;;;;:11;;10862:18:1;;3462:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3420:63;;3494:14;3538:1;3511:14;:24;;;:28;;;:78;;3587:1;3511:78;;;3556:20;;3511:78;3494:95;3344:277;-1:-1:-1;;;;3344:277:0:o;5590:309::-;5663:2;;:57;;-1:-1:-1;;;5663:57:0;;-1:-1:-1;;;;;5663:2:0;;;;:34;;:57;;5698:10;;5710:9;;;;5663:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5655:126;;;;-1:-1:-1;;;5655:126:0;;;;;;;:::i;:::-;5794:29;5801:10;5813:9;;5794:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5794:6:0;;-1:-1:-1;;;5794:29:0:i;:::-;5834:2;;:27;;-1:-1:-1;;;5834:27:0;;-1:-1:-1;;;;;5834:2:0;;;;:16;;:27;;5851:9;;;;5834:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5590:309;;:::o;3629:323::-;3687:7;3707:16;3726:2;;;;;;;;;-1:-1:-1;;;;;3726:2:0;-1:-1:-1;;;;;3726:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3707:39;-1:-1:-1;3757:16:0;3707:39;3784:135;3816:2;;:16;;;-1:-1:-1;;;3816:16:0;;;;3835:8;;-1:-1:-1;;;;;3816:2:0;;:14;;:16;;;;;;;;;;;;;;:2;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;;;;:::i;:::-;3811:1;:32;3784:135;;3883:8;-1:-1:-1;;;;;3869:22:0;:10;3877:1;3869:7;:10::i;:::-;-1:-1:-1;;;;;3869:22:0;;3865:43;;;3895:10;;;;:::i;:::-;;;;3865:43;3845:3;;;;:::i;:::-;;;;3784:135;;823:105;324:5;;-1:-1:-1;;;;;324:5:0;333:10;324:19;316:64;;;;-1:-1:-1;;;316:64:0;;;;;;;:::i;:::-;888:32:::1;915:3;888:18;:32::i;:::-;823:105::o:0;2230:31::-;;;;;;;:::i;5068:224::-;5148:7;5168:33;5204:23;5218:8;5204:13;:23::i;:::-;5168:59;;5245:39;5267:16;5245:21;:39::i;8579:309::-;8644:13;8707:1;8678:17;8686:8;8678:7;:17::i;:::-;-1:-1:-1;;;;;8678:31:0;;;8670:99;;;;-1:-1:-1;;;8670:99:0;;10535:2:1;8670:99:0;;;10517:21:1;10574:2;10554:18;;;10547:30;10613:34;10593:18;;;10586:62;-1:-1:-1;;;10664:18:1;;;10657:39;10713:19;;8670:99:0;10333:405:1;8670:99:0;8813:12;8841:19;8851:8;8841:9;:19::i;:::-;8862:16;8796:83;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8782:98;;8579:309;;;:::o;2403:89::-;324:5;;-1:-1:-1;;;;;324:5:0;333:10;324:19;316:64;;;;-1:-1:-1;;;316:64:0;;;;;;;:::i;:::-;2466:2:::1;:18:::0;;-1:-1:-1;;;;;;2466:18:0::1;-1:-1:-1::0;;;;;2466:18:0;;;::::1;::::0;;;::::1;::::0;;2403:89::o;6818:202::-;6938:2;;-1:-1:-1;;;;;6938:2:0;6916:10;:25;6908:53;;;;-1:-1:-1;;;6908:53:0;;9412:2:1;6908:53:0;;;9394:21:1;9451:2;9431:18;;;9424:30;-1:-1:-1;;;9470:18:1;;;9463:45;9525:18;;6908:53:0;9210:339:1;6908:53:0;6977:35;;7003:8;;-1:-1:-1;;;;;6977:35:0;;;6994:1;;6977:35;;6994:1;;6977:35;6818:202;;:::o;5905:433::-;5985:2;;:51;;-1:-1:-1;;;5985:51:0;;-1:-1:-1;;;;;5985:2:0;;;;:28;;:51;;6014:10;;6026:9;;;;5985:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5977:126;;;;-1:-1:-1;;;5977:126:0;;10117:2:1;5977:126:0;;;10099:21:1;10156:2;10136:18;;;10129:30;10195:34;10175:18;;;10168:62;-1:-1:-1;;;10246:18:1;;;10239:47;10303:19;;5977:126:0;9915:413:1;5977:126:0;6116:2;;:26;;-1:-1:-1;;;6116:26:0;;-1:-1:-1;;;;;6116:2:0;;;;:15;;:26;;6132:9;;;;6116:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6196:9;6191:140;6211:20;;;6191:140;;;6291:9;;6301:1;6291:12;;;;;;;:::i;:::-;;;;;;;6279:10;-1:-1:-1;;;;;6258:46:0;6275:1;-1:-1:-1;;;;;6258:46:0;;;;;;;;;;;6233:3;;;;:::i;:::-;;;;6191:140;;2590:98;324:5;;-1:-1:-1;;;;;324:5:0;333:10;324:19;316:64;;;;-1:-1:-1;;;316:64:0;;;;;;;:::i;:::-;2656:5:::1;:24:::0;;-1:-1:-1;;;;;;2656:24:0::1;-1:-1:-1::0;;;;;2656:24:0;;;::::1;::::0;;;::::1;::::0;;2590:98::o;610:207::-;324:5;;-1:-1:-1;;;;;324:5:0;333:10;324:19;316:64;;;;-1:-1:-1;;;316:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;700:25:0;::::1;692:77;;;::::0;-1:-1:-1;;;692:77:0;;8592:2:1;692:77:0::1;::::0;::::1;8574:21:1::0;8631:2;8611:18;;;8604:30;8670:34;8650:18;;;8643:62;-1:-1:-1;;;8721:18:1;;;8714:37;8768:19;;692:77:0::1;8390:403:1::0;692:77:0::1;780:29;799:9;780:18;:29::i;:::-;610:207:::0;:::o;3992:467::-;4109:2;;:21;;-1:-1:-1;;;4109:21:0;;;;;10889:25:1;;;4060:7:0;;;;-1:-1:-1;;;;;4109:2:0;;;;:11;;10862:18:1;;4109:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;;4101:40;;;-1:-1:-1;4156:15:0;;;:44;;;4188:12;;4175:10;:25;4156:44;4152:58;;;-1:-1:-1;4209:1:0;;3992:467;-1:-1:-1;;3992:467:0:o;4152:58::-;4223:27;4268:15;4253:12;;:30;:77;;4318:12;;4253:77;;;4300:15;4253:77;4223:107;-1:-1:-1;4341:20:0;4364:32;4386:10;4223:107;4364:32;:::i;:::-;4341:55;;4445:6;4432:9;;4417:12;:24;;;;:::i;:::-;4416:35;;;;:::i;:::-;4409:42;3992:467;-1:-1:-1;;;;;3992:467:0:o;5300:282::-;5377:22;;5410:123;5434:9;:16;5430:1;:20;5410:123;;;5490:31;5508:9;5518:1;5508:12;;;;;;;;:::i;:::-;;;;;;;5490:17;:31::i;:::-;5472:49;;;;:::i;:::-;;-1:-1:-1;5452:3:0;;;;:::i;:::-;;;;5410:123;;;-1:-1:-1;5543:5:0;;;:31;;-1:-1:-1;;;5543:31:0;;-1:-1:-1;;;;;6352:32:1;;;5543:31:0;;;6334:51:1;;;;6401:18;;;6394:34;;;5543:5:0;;;:10;;6307:18:1;;5543:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5366:216;5300:282;;:::o;4465:302::-;4552:7;4572:22;4610:9;4605:123;4629:9;:16;4625:1;:20;4605:123;;;4685:31;4703:9;4713:1;4703:12;;;;;;;;:::i;4685:31::-;4667:49;;;;:::i;:::-;;-1:-1:-1;4647:3:0;;;;:::i;:::-;;;;4605:123;;;-1:-1:-1;4745:14:0;4465:302;-1:-1:-1;;4465:302:0:o;406:198::-;481:17;501:5;;-1:-1:-1;;;;;517:17:0;;;-1:-1:-1;;;;;;517:17:0;;;;;;550:42;;501:5;;;;;;;550:42;;481:17;550:42;470:134;406:198;:::o;7799:550::-;7857:13;7887:11;7883:32;;-1:-1:-1;;7902:10:0;;;;;;;;;;;;-1:-1:-1;;;7902:10:0;;;;;7799:550::o;7883:32::-;7944:6;7925:16;7978:52;7985:13;;7978:52;;8002:9;;;;:::i;:::-;;-1:-1:-1;8013:14:0;;-1:-1:-1;8025:2:0;8013:14;;:::i;:::-;;;7978:52;;;8064:20;8097:7;8087:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8087:18:0;;8064:41;;8116:124;8123:11;;8116:124;;8138:9;;;;:::i;:::-;;-1:-1:-1;8208:11:0;;-1:-1:-1;8217:2:0;8208:6;:11;:::i;:::-;8195:26;;:2;:26;:::i;:::-;8168:55;;8149:7;8157;8149:16;;;;;;;;:::i;:::-;;;;:74;-1:-1:-1;;;;;8149:74:0;;;;;;;;-1:-1:-1;8225:12:0;8235:2;8225:12;;:::i;:::-;;;8116:124;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:247:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:315::-;334:6;342;395:2;383:9;374:7;370:23;366:32;363:52;;;411:1;408;401:12;363:52;450:9;437:23;469:31;494:5;469:31;:::i;:::-;519:5;571:2;556:18;;;;543:32;;-1:-1:-1;;;266:315:1:o;586:615::-;672:6;680;733:2;721:9;712:7;708:23;704:32;701:52;;;749:1;746;739:12;701:52;789:9;776:23;818:18;859:2;851:6;848:14;845:34;;;875:1;872;865:12;845:34;913:6;902:9;898:22;888:32;;958:7;951:4;947:2;943:13;939:27;929:55;;980:1;977;970:12;929:55;1020:2;1007:16;1046:2;1038:6;1035:14;1032:34;;;1062:1;1059;1052:12;1032:34;1115:7;1110:2;1100:6;1097:1;1093:14;1089:2;1085:23;1081:32;1078:45;1075:65;;;1136:1;1133;1126:12;1075:65;1167:2;1159:11;;;;;1189:6;;-1:-1:-1;586:615:1;;-1:-1:-1;;;;586:615:1:o;1206:277::-;1273:6;1326:2;1314:9;1305:7;1301:23;1297:32;1294:52;;;1342:1;1339;1332:12;1294:52;1374:9;1368:16;1427:5;1420:13;1413:21;1406:5;1403:32;1393:60;;1449:1;1446;1439:12;1488:286;1546:6;1599:2;1587:9;1578:7;1574:23;1570:32;1567:52;;;1615:1;1612;1605:12;1567:52;1641:23;;-1:-1:-1;;;;;;1693:32:1;;1683:43;;1673:71;;1740:1;1737;1730:12;1779:922;1848:6;1901:2;1889:9;1880:7;1876:23;1872:32;1869:52;;;1917:1;1914;1907:12;1869:52;1957:9;1944:23;1986:18;2027:2;2019:6;2016:14;2013:34;;;2043:1;2040;2033:12;2013:34;2081:6;2070:9;2066:22;2056:32;;2126:7;2119:4;2115:2;2111:13;2107:27;2097:55;;2148:1;2145;2138:12;2097:55;2184:2;2171:16;2206:2;2202;2199:10;2196:36;;;2212:18;;:::i;:::-;2287:2;2281:9;2255:2;2341:13;;-1:-1:-1;;2337:22:1;;;2361:2;2333:31;2329:40;2317:53;;;2385:18;;;2405:22;;;2382:46;2379:72;;;2431:18;;:::i;:::-;2471:10;2467:2;2460:22;2506:2;2498:6;2491:18;2546:7;2541:2;2536;2532;2528:11;2524:20;2521:33;2518:53;;;2567:1;2564;2557:12;2518:53;2623:2;2618;2614;2610:11;2605:2;2597:6;2593:15;2580:46;2668:1;2646:15;;;2663:2;2642:24;2635:35;;;;-1:-1:-1;2650:6:1;1779:922;-1:-1:-1;;;;;1779:922:1:o;2706:679::-;2805:6;2858:2;2846:9;2837:7;2833:23;2829:32;2826:52;;;2874:1;2871;2864:12;2826:52;2907:2;2901:9;2949:2;2941:6;2937:15;3018:6;3006:10;3003:22;2982:18;2970:10;2967:34;2964:62;2961:88;;;3029:18;;:::i;:::-;3065:2;3058:22;3102:16;;3127:31;3102:16;3127:31;:::i;:::-;3167:21;;3233:2;3218:18;;3212:25;3281:12;3268:26;;3256:39;;3246:67;;3309:1;3306;3299:12;3246:67;3341:2;3329:15;;3322:32;3333:6;2706:679;-1:-1:-1;;;2706:679:1:o;3390:180::-;3449:6;3502:2;3490:9;3481:7;3477:23;3473:32;3470:52;;;3518:1;3515;3508:12;3470:52;-1:-1:-1;3541:23:1;;3390:180;-1:-1:-1;3390:180:1:o;3575:184::-;3645:6;3698:2;3686:9;3677:7;3673:23;3669:32;3666:52;;;3714:1;3711;3704:12;3666:52;-1:-1:-1;3737:16:1;;3575:184;-1:-1:-1;3575:184:1:o;3764:354::-;3852:19;;;3834:3;-1:-1:-1;;;;;3883:31:1;;3880:51;;;3927:1;3924;3917:12;3880:51;3963:6;3960:1;3956:14;4015:8;4008:5;4001:4;3996:3;3992:14;3979:45;4092:1;4047:18;;4067:4;4043:29;4081:13;;;-1:-1:-1;4043:29:1;;3764:354;-1:-1:-1;;3764:354:1:o;4123:973::-;4208:12;;4173:3;;4263:1;4283:18;;;;4336;;;;4363:61;;4417:4;4409:6;4405:17;4395:27;;4363:61;4443:2;4491;4483:6;4480:14;4460:18;4457:38;4454:161;;;4537:10;4532:3;4528:20;4525:1;4518:31;4572:4;4569:1;4562:15;4600:4;4597:1;4590:15;4454:161;4631:18;4658:104;;;;4776:1;4771:319;;;;4624:466;;4658:104;-1:-1:-1;;4691:24:1;;4679:37;;4736:16;;;;-1:-1:-1;4658:104:1;;4771:319;10998:1;10991:14;;;11035:4;11022:18;;4865:1;4879:165;4893:6;4890:1;4887:13;4879:165;;;4971:14;;4958:11;;;4951:35;5014:16;;;;4908:10;;4879:165;;;4883:3;;5073:6;5068:3;5064:16;5057:23;;4624:466;;;;;;;4123:973;;;;:::o;5101:456::-;5322:3;5350:38;5384:3;5376:6;5350:38;:::i;:::-;5417:6;5411:13;5433:52;5478:6;5474:2;5467:4;5459:6;5455:17;5433:52;:::i;:::-;5501:50;5543:6;5539:2;5535:15;5527:6;5501:50;:::i;:::-;5494:57;5101:456;-1:-1:-1;;;;;;;5101:456:1:o;5770:385::-;-1:-1:-1;;;;;5987:32:1;;5969:51;;6056:2;6051;6036:18;;6029:30;;;-1:-1:-1;;6076:73:1;;6130:18;;6122:6;6114;6076:73;:::i;6439:288::-;6628:2;6617:9;6610:21;6591:4;6648:73;6717:2;6706:9;6702:18;6694:6;6686;6648:73;:::i;6732:632::-;6903:2;6955:21;;;7025:13;;6928:18;;;7047:22;;;6874:4;;6903:2;7126:15;;;;7100:2;7085:18;;;6874:4;7169:169;7183:6;7180:1;7177:13;7169:169;;;7244:13;;7232:26;;7313:15;;;;7278:12;;;;7205:1;7198:9;7169:169;;;-1:-1:-1;7355:3:1;;6732:632;-1:-1:-1;;;;;;6732:632:1:o;8002:383::-;8151:2;8140:9;8133:21;8114:4;8183:6;8177:13;8226:6;8221:2;8210:9;8206:18;8199:34;8242:66;8301:6;8296:2;8285:9;8281:18;8276:2;8268:6;8264:15;8242:66;:::i;:::-;8369:2;8348:15;-1:-1:-1;;8344:29:1;8329:45;;;;8376:2;8325:54;;8002:383;-1:-1:-1;;8002:383:1:o;8798:407::-;9000:2;8982:21;;;9039:2;9019:18;;;9012:30;9078:34;9073:2;9058:18;;9051:62;-1:-1:-1;;;9144:2:1;9129:18;;9122:41;9195:3;9180:19;;8798:407::o;9554:356::-;9756:2;9738:21;;;9775:18;;;9768:30;9834:34;9829:2;9814:18;;9807:62;9901:2;9886:18;;9554:356::o;11051:128::-;11091:3;11122:1;11118:6;11115:1;11112:13;11109:39;;;11128:18;;:::i;:::-;-1:-1:-1;11164:9:1;;11051:128::o;11184:120::-;11224:1;11250;11240:35;;11255:18;;:::i;:::-;-1:-1:-1;11289:9:1;;11184:120::o;11309:168::-;11349:7;11415:1;11411;11407:6;11403:14;11400:1;11397:21;11392:1;11385:9;11378:17;11374:45;11371:71;;;11422:18;;:::i;:::-;-1:-1:-1;11462:9:1;;11309:168::o;11482:125::-;11522:4;11550:1;11547;11544:8;11541:34;;;11555:18;;:::i;:::-;-1:-1:-1;11592:9:1;;11482:125::o;11612:258::-;11684:1;11694:113;11708:6;11705:1;11702:13;11694:113;;;11784:11;;;11778:18;11765:11;;;11758:39;11730:2;11723:10;11694:113;;;11825:6;11822:1;11819:13;11816:48;;;11860:1;11851:6;11846:3;11842:16;11835:27;11816:48;;11612:258;;;:::o;11875:136::-;11914:3;11942:5;11932:39;;11951:18;;:::i;:::-;-1:-1:-1;;;11987:18:1;;11875:136::o;12016:380::-;12095:1;12091:12;;;;12138;;;12159:61;;12213:4;12205:6;12201:17;12191:27;;12159:61;12266:2;12258:6;12255:14;12235:18;12232:38;12229:161;;;12312:10;12307:3;12303:20;12300:1;12293:31;12347:4;12344:1;12337:15;12375:4;12372:1;12365:15;12229:161;;12016:380;;;:::o;12401:135::-;12440:3;-1:-1:-1;;12461:17:1;;12458:43;;;12481:18;;:::i;:::-;-1:-1:-1;12528:1:1;12517:13;;12401:135::o;12541:112::-;12573:1;12599;12589:35;;12604:18;;:::i;:::-;-1:-1:-1;12638:9:1;;12541:112::o;12658:127::-;12719:10;12714:3;12710:20;12707:1;12700:31;12750:4;12747:1;12740:15;12774:4;12771:1;12764:15;12790:127;12851:10;12846:3;12842:20;12839:1;12832:31;12882:4;12879:1;12872:15;12906:4;12903:1;12896:15;12922:127;12983:10;12978:3;12974:20;12971:1;12964:31;13014:4;13011:1;13004:15;13038:4;13035:1;13028:15;13054:127;13115:10;13110:3;13106:20;13103:1;13096:31;13146:4;13143:1;13136:15;13170:4;13167:1;13160:15;13186:131;-1:-1:-1;;;;;13261:31:1;;13251:42;;13241:70;;13307:1;13304;13297:12

Swarm Source

ipfs://4a7023342e0546e9fc2094e188bf3451dd14ffc6e954fdfbf752304dcda634ca

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.