Contract 0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7 4

Contract Overview

Balance:
0 MATIC
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa9328df4ab9cd4a96a692a05214fee6eed81e6975b47e5dacd047f732142e1f20x60806040221127622021-11-30 22:37:2357 days 3 hrs ago0xb93b2016f98a91912d7211318b95f3cb809dbd11 IN  Create: TellorPlayground0 MATIC0.00496830953.5
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TellorPlayground

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 300 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at polygonscan.com on 2021-11-30
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.3;

contract TellorPlayground {
    // Events
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event NewReport(
        bytes32 _queryId,
        uint256 _time,
        bytes _value,
        uint256 _reward,
        uint256 _nonce,
        bytes _queryData,
        address _reporter
    );
    event TipAdded(
        address indexed _user,
        bytes32 indexed _queryId,
        uint256 _tip,
        uint256 _totalTip,
        bytes _queryData
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    // Storage
    mapping(bytes32 => address) public addresses;
    mapping(bytes32 => mapping(uint256 => bool)) public isDisputed; //queryId -> timestamp -> value
    mapping(bytes32 => uint256[]) public timestamps;
    mapping(bytes32 => uint256) public tips; // mapping of data IDs to the amount of TRB they are tipped
    mapping(bytes32 => mapping(uint256 => bytes)) public values; //queryId -> timestamp -> value
    mapping(bytes32 => uint256[]) public voteRounds; // mapping of vote identifier hashes to an array of dispute IDs
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _balances;

    uint256 public constant timeBasedReward = 5e17; // time based reward for a reporter for successfully submitting a value
    uint256 public timeOfLastNewValue = block.timestamp; // time of the last new value, originally set to the block timestamp
    uint256 public tipsInContract; // number of tips within the contract
    uint256 public voteCount;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    // Functions
    /**
     * @dev Initializes playground parameters
     */
    constructor() {
        _name = "TellorPlayground";
        _symbol = "TRBP";
        _decimals = 18;
        addresses[keccak256(
            abi.encodePacked("_GOVERNANCE_CONTRACT")
        )] = address(this);
    }

    /**
     * @dev Approves amount that an address is alowed to spend of behalf of another
     * @param _spender The address which is allowed to spend the tokens
     * @param _amount The amount that msg.sender is allowing spender to use
     * @return bool Whether the transaction succeeded
     *
     */
    function approve(address _spender, uint256 _amount)
        public
        virtual
        returns (bool)
    {
        _approve(msg.sender, _spender, _amount);
        return true;
    }

    /**
     * @dev A mock function to create a dispute
     * @param _queryId The tellorId to be disputed
     * @param _timestamp the timestamp of the value to be disputed
     */
    function beginDispute(bytes32 _queryId, uint256 _timestamp) external {
        values[_queryId][_timestamp] = bytes("");
        isDisputed[_queryId][_timestamp] = true;
        voteCount++;
        voteRounds[keccak256(abi.encodePacked(_queryId, _timestamp))].push(
            voteCount
        );
    }

    /**
     * @dev Public function to mint tokens to the given address
     * @param _user The address which will receive the tokens
     */
    function faucet(address _user) external {
        _mint(_user, 1000 ether);
    }

    /**
     * @dev A mock function to submit a value to be read without reporter staking needed
     * @param _queryId the ID to associate the value to
     * @param _value the value for the queryId
     * @param _nonce the current value count for the query id
     * @param _queryData the data used by reporters to fulfill the data query
     */
    // slither-disable-next-line timestamp
    function submitValue(
        bytes32 _queryId,
        bytes calldata _value,
        uint256 _nonce,
        bytes memory _queryData
    ) external {
        require(
            _nonce == timestamps[_queryId].length,
            "nonce should be correct"
        );
        require(
            _queryId == keccak256(_queryData) || uint256(_queryId) <= 100,
            "id must be hash of bytes data"
        );
        values[_queryId][block.timestamp] = _value;
        timestamps[_queryId].push(block.timestamp);
        // Send tips + timeBasedReward to reporter and reset tips for ID
        (uint256 _tip, uint256 _reward) = getCurrentReward(_queryId);
        if (_reward + _tip > 0) {
            transfer(msg.sender, _reward + _tip);
        }
        timeOfLastNewValue = block.timestamp;
        tipsInContract -= _tip;
        tips[_queryId] = 0;
        emit NewReport(
            _queryId,
            block.timestamp,
            _value,
            _tip + _reward,
            _nonce,
            _queryData,
            msg.sender
        );
    }

    /**
     * @dev Adds a tip to a given query ID.
     * @param _queryId is the queryId to look up
     * @param _amount is the amount of tips
     * @param _queryData is the extra bytes data needed to fulfill the request
     */
    function tipQuery(
        bytes32 _queryId,
        uint256 _amount,
        bytes memory _queryData
    ) external {
        require(
            _queryId == keccak256(_queryData) || uint256(_queryId) <= 100,
            "id must be hash of bytes data"
        );
        _transfer(msg.sender, address(this), _amount);
        _amount = _amount / 2;
        _burn(address(this), _amount);
        tipsInContract += _amount;
        tips[_queryId] += _amount;
        emit TipAdded(
            msg.sender,
            _queryId,
            _amount,
            tips[_queryId],
            _queryData
        );
    }

    /**
     * @dev Transfer tokens from one user to another
     * @param _recipient The destination address
     * @param _amount The amount of tokens, including decimals, to transfer
     * @return bool If the transfer succeeded
     */
    function transfer(address _recipient, uint256 _amount)
        public
        virtual
        returns (bool)
    {
        _transfer(msg.sender, _recipient, _amount);
        return true;
    }

    /**
     * @dev Transfer tokens from user to another
     * @param _sender The address which owns the tokens
     * @param _recipient The destination address
     * @param _amount The quantity of tokens to transfer
     * @return bool Whether the transfer succeeded
     */
    function transferFrom(address _sender, address _recipient, uint256 _amount)
        public
        virtual
        returns (bool)
    {
        _transfer(_sender, _recipient, _amount);
        _approve(
            _sender,
            msg.sender,
            _allowances[_sender][msg.sender] - _amount
        );
        return true;
    }

    // Getters
    /**
     * @dev Returns the amount that an address is alowed to spend of behalf of another
     * @param _owner The address which owns the tokens
     * @param _spender The address that will use the tokens
     * @return uint256 The amount of allowed tokens
     */
    function allowance(address _owner, address _spender)
        public
        view
        virtual
        returns (uint256)
    {
        return _allowances[_owner][_spender];
    }

    /**
     * @dev Returns the balance of a given user.
     * @param _account user address
     * @return uint256 user's token balance
     */
    function balanceOf(address _account) public view returns (uint256) {
        return _balances[_account];
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * @return uint8 the number of decimals; used only for display purposes
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Calculates the current reward for a reporter given tips and time based reward
     * @param _queryId is ID of the specific data feed
     * @return uint256 tip amount for given query ID
     * @return uint256 time based reward
     */
    // slither-disable-next-line timestamp
    function getCurrentReward(bytes32 _queryId)
        public
        view
        returns (uint256, uint256)
    {
        uint256 _timeDiff = block.timestamp - timeOfLastNewValue;
        uint256 _reward = (_timeDiff * timeBasedReward) / 300; //.5 TRB per 5 minutes (should we make this upgradeable)
        if (balanceOf(address(this)) < _reward + tipsInContract) {
            _reward = balanceOf(address(this)) - tipsInContract;
        }
        return (tips[_queryId], _reward);
    }

    /**
     * @dev Counts the number of values that have been submitted for a given ID
     * @param _queryId the ID to look up
     * @return uint256 count of the number of values received for the queryId
     */
    function getNewValueCountbyQueryId(bytes32 _queryId)
        public
        view
        returns (uint256)
    {
        return timestamps[_queryId].length;
    }

    /**
     * @dev Gets the timestamp for the value based on their index
     * @param _queryId is the queryId to look up
     * @param _index is the value index to look up
     * @return uint256 timestamp
     */
    function getTimestampbyQueryIdandIndex(bytes32 _queryId, uint256 _index)
        public
        view
        returns (uint256)
    {
        uint256 len = timestamps[_queryId].length;
        if (len == 0 || len <= _index) return 0;
        return timestamps[_queryId][_index];
    }

    /**
     * @dev Returns an array of voting rounds for a given vote
     * @param _hash is the identifier hash for a vote
     * @return uint256[] memory dispute IDs of the vote rounds
     */
    function getVoteRounds(bytes32 _hash)
        public
        view
        returns (uint256[] memory)
    {
        return voteRounds[_hash];
    }

    /**
     * @dev Returns the name of the token.
     * @return string name of the token
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Retrieves value from oracle based on queryId/timestamp
     * @param _queryId being requested
     * @param _timestamp to retrieve data/value from
     * @return bytes value for queryId/timestamp submitted
     */
    function retrieveData(bytes32 _queryId, uint256 _timestamp)
        public
        view
        returns (bytes memory)
    {
        return values[_queryId][_timestamp];
    }

    /**
     * @dev Returns the symbol of the token.
     * @return string symbol of the token
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the total supply of the token.
     * @return uint256 total supply of token
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    // Internal functions
    /**
     * @dev Internal function to approve tokens for the user
     * @param _owner The owner of the tokens
     * @param _spender The address which is allowed to spend the tokens
     * @param _amount The amount that msg.sender is allowing spender to use
     */
    function _approve(address _owner, address _spender, uint256 _amount)
        internal
        virtual
    {
        require(_owner != address(0), "ERC20: approve from the zero address");
        require(_spender != address(0), "ERC20: approve to the zero address");
        _allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }

    /**
     * @dev Internal function to burn tokens for the user
     * @param _account The address whose tokens to burn
     * @param _amount The quantity of tokens to burn
     */
    function _burn(address _account, uint256 _amount) internal virtual {
        require(_account != address(0), "ERC20: burn from the zero address");
        _balances[_account] -= _amount;
        _totalSupply -= _amount;
        emit Transfer(_account, address(0), _amount);
    }

    /**
     * @dev Internal function to create new tokens for the user
     * @param _account The address which receives minted tokens
     * @param _amount The quantity of tokens to min
     */
    function _mint(address _account, uint256 _amount) internal virtual {
        require(_account != address(0), "ERC20: mint to the zero address");
        _totalSupply += _amount;
        _balances[_account] += _amount;
        emit Transfer(address(0), _account, _amount);
    }

    /**
     * @dev Internal function to perform token transfer
     * @param _sender The address which owns the tokens
     * @param _recipient The destination address
     * @param _amount The quantity of tokens to transfer
     */
    function _transfer(address _sender, address _recipient, uint256 _amount)
        internal
        virtual
    {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(
            _recipient != address(0),
            "ERC20: transfer to the zero address"
        );
        _balances[_sender] -= _amount;
        _balances[_recipient] += _amount;
        emit Transfer(_sender, _recipient, _amount);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_value","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"_reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_nonce","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_queryData","type":"bytes"},{"indexed":false,"internalType":"address","name":"_reporter","type":"address"}],"name":"NewReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_tip","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalTip","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"TipAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"beginDispute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getCurrentReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getNewValueCountbyQueryId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getTimestampbyQueryIdandIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"getVoteRounds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"isDisputed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"retrieveData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"bytes","name":"_value","type":"bytes"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"submitValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeBasedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeOfLastNewValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"timestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"tipQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"tips","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tipsInContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"values","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voteCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"voteRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052426008553480156200001557600080fd5b506040805180820190915260108082526f15195b1b1bdc941b185e59dc9bdd5b9960821b60209092019182526200004f91600c9162000114565b50604080518082019091526004808252630545242560e41b60209092019182526200007d91600d9162000114565b50600e805460ff1916601217905560405130906000908190620000c6906020017f5f474f5645524e414e43455f434f4e5452414354000000000000000000000000815260140190565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550620001f7565b8280546200012290620001ba565b90600052602060002090601f01602090048101928262000146576000855562000191565b82601f106200016157805160ff191683800117855562000191565b8280016001018555821562000191579182015b828111156200019157825182559160200191906001019062000174565b506200019f929150620001a3565b5090565b5b808211156200019f5760008155600101620001a4565b600181811c90821680620001cf57607f821691505b60208210811415620001f157634e487b7160e01b600052602260045260246000fd5b50919050565b61169080620002076000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063c5958af911610097578063ce5e11bf11610071578063ce5e11bf1461041d578063dd62ed3e14610430578063ef0234ad14610469578063f25133f31461047c576101c4565b8063c5958af9146103ee578063c638407114610401578063c979fe9f1461040a576101c4565b806396426d97116100d357806396426d9714610391578063a1e588a5146103a0578063a9059cbb146103c8578063b86d1d63146103db576101c4565b806370a082311461034057806377b03e0d1461036957806395d89b4114610389576101c4565b8063313ce5671161016657806364473df21161014057806364473df2146102bf578063699f200f146102ed57806369d43bd31461032e5780636fd4f22914610337576101c4565b8063313ce567146102775780635eaa9ced1461028c578063602bf2271461029f576101c4565b806318160ddd116101a257806318160ddd1461021d5780631f379acc1461022f57806323b872dd14610244578063248638e514610257576101c4565b806306fdde03146101c9578063091b50ff146101e7578063095ea7b3146101fa575b600080fd5b6101d161048f565b6040516101de919061152f565b60405180910390f35b6101d16101f53660046113bd565b610521565b61020d6102083660046112d7565b6105c6565b60405190151581526020016101de565b600b545b6040519081526020016101de565b61024261023d3660046113bd565b6105dd565b005b61020d61025236600461129c565b6106a5565b61026a610265366004611300565b6106f7565b6040516101de9190611477565b600e5460405160ff90911681526020016101de565b61024261029a366004611318565b61075a565b6102216102ad366004611300565b60036020526000908152604090205481565b61020d6102cd3660046113bd565b600160209081526000928352604080842090915290825290205460ff1681565b6103166102fb366004611300565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b61022160095481565b61022160085481565b61022161034e366004611249565b6001600160a01b031660009081526007602052604090205490565b610221610377366004611300565b60009081526002602052604090205490565b6101d1610919565b6102216706f05b59d3b2000081565b6103b36103ae366004611300565b610928565b604080519283526020830191909152016101de565b61020d6103d63660046112d7565b6109bb565b6102426103e9366004611249565b6109c8565b6101d16103fc3660046113bd565b6109de565b610221600a5481565b6102216104183660046113bd565b610a8c565b61022161042b3660046113bd565b610abd565b61022161043e36600461126a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6102426104773660046113de565b610b2a565b61022161048a3660046113bd565b610c3b565b6060600c805461049e906115d8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca906115d8565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600460209081526000928352604080842090915290825290208054610545906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610571906115d8565b80156105be5780601f10610593576101008083540402835291602001916105be565b820191906000526020600020905b8154815290600101906020018083116105a157829003601f168201915b505050505081565b60006105d3338484610c57565b5060015b92915050565b604080516020808201808452600080845286815260048352848120868252909252929020905161060d929061109e565b5060008281526001602081815260408084208585529091528220805460ff19169091179055600a80549161064083611613565b9190505550600560008383604051602001610665929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935291016000908120600a5481546001810183559183529290912001555050565b60006106b2848484610d73565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546106ed9186916106e89086906115c1565b610c57565b5060019392505050565b60008181526005602090815260409182902080548351818402810184019094528084526060939283018282801561074d57602002820191906000526020600020905b815481526020019060010190808311610739575b505050505090505b919050565b60008581526002602052604090205482146107bc5760405162461bcd60e51b815260206004820152601760248201527f6e6f6e63652073686f756c6420626520636f727265637400000000000000000060448201526064015b60405180910390fd5b805160208201208514806107d1575060648511155b61081d5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b60008581526004602090815260408083204284529091529020610841908585611122565b50600085815260026020908152604082208054600181018255908352908220429101558061086e87610928565b9092509050600061087f838361156a565b111561089557610893336103d6848461156a565b505b4260088190555081600960008282546108ae91906115c1565b90915550506000878152600360205260408120557fab1d593f8e2ecb165106e30a39db6769078d35c3fdbb110f24932f0d7af68c29874288886108f1868861156a565b8989336040516109089897969594939291906114bb565b60405180910390a150505050505050565b6060600d805461049e906115d8565b60008060006008544261093b91906115c1565b9050600061012c6109546706f05b59d3b20000846115a2565b61095e9190611582565b90506009548161096e919061156a565b3060009081526007602052604090205410156109a457600954306000908152600760205260409020546109a191906115c1565b90505b600094855260036020526040909420549492505050565b60006105d3338484610d73565b6109db81683635c9adc5dea00000610eda565b50565b60008281526004602090815260408083208484529091529020805460609190610a06906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a32906115d8565b8015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050905092915050565b60056020528160005260406000208181548110610aa857600080fd5b90600052602060002001600091509150505481565b600082815260026020526040812054801580610ad95750828111155b15610ae85760009150506105d7565b6000848152600260205260409020805484908110610b1657634e487b7160e01b600052603260045260246000fd5b906000526020600020015491505092915050565b80516020820120831480610b3f575060648311155b610b8b5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b610b96333084610d73565b610ba1600283611582565b9150610bad3083610fba565b8160096000828254610bbf919061156a565b909155505060008381526003602052604081208054849290610be290849061156a565b909155505060008381526003602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff591610c2e918791908790611542565b60405180910390a3505050565b60026020528160005260406000208181548110610aa857600080fd5b6001600160a01b038316610cb95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b3565b6001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610c2e565b6001600160a01b038316610dd75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b3565b6001600160a01b038216610e395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b3565b6001600160a01b03831660009081526007602052604081208054839290610e619084906115c1565b90915550506001600160a01b03821660009081526007602052604081208054839290610e8e90849061156a565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2e91815260200190565b6001600160a01b038216610f305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107b3565b80600b6000828254610f42919061156a565b90915550506001600160a01b03821660009081526007602052604081208054839290610f6f90849061156a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b03821661101a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107b3565b6001600160a01b038216600090815260076020526040812080548392906110429084906115c1565b9250508190555080600b600082825461105b91906115c1565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610fae565b8280546110aa906115d8565b90600052602060002090601f0160209004810192826110cc5760008555611112565b82601f106110e557805160ff1916838001178555611112565b82800160010185558215611112579182015b828111156111125782518255916020019190600101906110f7565b5061111e929150611196565b5090565b82805461112e906115d8565b90600052602060002090601f0160209004810192826111505760008555611112565b82601f106111695782800160ff19823516178555611112565b82800160010185558215611112579182015b8281111561111257823582559160200191906001019061117b565b5b8082111561111e5760008155600101611197565b80356001600160a01b038116811461075557600080fd5b600082601f8301126111d2578081fd5b813567ffffffffffffffff808211156111ed576111ed611644565b604051601f8301601f19908116603f0116810190828211818310171561121557611215611644565b8160405283815286602085880101111561122d578485fd5b8360208701602083013792830160200193909352509392505050565b60006020828403121561125a578081fd5b611263826111ab565b9392505050565b6000806040838503121561127c578081fd5b611285836111ab565b9150611293602084016111ab565b90509250929050565b6000806000606084860312156112b0578081fd5b6112b9846111ab565b92506112c7602085016111ab565b9150604084013590509250925092565b600080604083850312156112e9578182fd5b6112f2836111ab565b946020939093013593505050565b600060208284031215611311578081fd5b5035919050565b60008060008060006080868803121561132f578081fd5b85359450602086013567ffffffffffffffff8082111561134d578283fd5b818801915088601f830112611360578283fd5b81358181111561136e578384fd5b89602082850101111561137f578384fd5b602083019650809550506040880135935060608801359150808211156113a3578283fd5b506113b0888289016111c2565b9150509295509295909350565b600080604083850312156113cf578182fd5b50508035926020909101359150565b6000806000606084860312156113f2578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611416578182fd5b611422868287016111c2565b9150509250925092565b60008151808452815b8181101561145157602081850181015186830182015201611435565b818111156114625782602083870101525b50601f01601f19169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156114af57835183529284019291840191600101611493565b50909695505050505050565b600089825288602083015260e060408301528660e083015261010087898285013781818985010152601f19601f8901168301876060850152866080850152818482030160a085015261150f8282018761142c565b925050506001600160a01b03831660c08301529998505050505050505050565b600060208252611263602083018461142c565b600084825283602083015260606040830152611561606083018461142c565b95945050505050565b6000821982111561157d5761157d61162e565b500190565b60008261159d57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115bc576115bc61162e565b500290565b6000828210156115d3576115d361162e565b500390565b600181811c908216806115ec57607f821691505b6020821081141561160d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116275761162761162e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122059f9c26280ca7e1f82cf1b3df4b797fa2d04eb6560431a17ade2afb650b13e5464736f6c63430008030033

Deployed ByteCode Sourcemap

59:13366:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10125:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1015:59;;;;;;:::i;:::-;;:::i;2470:194::-;;;;;;:::i;:::-;;:::i;:::-;;;5744:14:1;;5737:22;5719:41;;5707:2;5692:18;2470:194:0;5674:92:1;10963:91:0;11034:12;;10963:91;;;10437:25:1;;;10425:2;10410:18;10963:91:0;10392:76:1;2859:312:0;;;;;;:::i;:::-;;:::i;:::-;;6549:352;;;;;;:::i;:::-;;:::i;9862:152::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7842:83::-;7908:9;;7842:83;;7908:9;;;;11232:36:1;;11220:2;11205:18;7842:83:0;11187:87:1;3815:1102:0;;;;;;:::i;:::-;;:::i;909:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;754:62;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;703:44;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;703:44:0;;;;;;-1:-1:-1;;;;;4872:55:1;;;4854:74;;4842:2;4827:18;703:44:0;4809:125:1;1611:29:0;;;;;;1484:51;;;;;;7546:112;;;;;;:::i;:::-;-1:-1:-1;;;;;7631:19:0;7604:7;7631:19;;;:9;:19;;;;;;;7546:112;8965:168;;;;;;:::i;:::-;9066:7;9098:20;;;:10;:20;;;;;:27;;8965:168;10752:87;;;:::i;1359:46::-;;1401:4;1359:46;;8238:499;;;;;;:::i;:::-;;:::i;:::-;;;;10647:25:1;;;10703:2;10688:18;;10681:34;;;;10620:18;8238:499:0;10602:119:1;6056:200:0;;;;;;:::i;:::-;;:::i;3325:83::-;;;;;;:::i;:::-;;:::i;10456:181::-;;;;;;:::i;:::-;;:::i;1685:24::-;;;;;;1113:47;;;;;;:::i;:::-;;:::i;9362:291::-;;;;;;:::i;:::-;;:::i;7201:187::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7351:19:0;;;7319:7;7351:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;7201:187;5163:639;;;;;;:::i;:::-;;:::i;855:47::-;;;;;;:::i;:::-;;:::i;10125:83::-;10162:13;10195:5;10188:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10125:83;:::o;1015:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2470:194::-;2573:4;2595:39;2604:10;2616:8;2626:7;2595:8;:39::i;:::-;-1:-1:-1;2652:4:0;2470:194;;;;;:::o;2859:312::-;2970:9;;;;;;;;;;-1:-1:-1;2970:9:0;;;2939:16;;;:6;:16;;;;;:28;;;;;;;;;:40;;;;2970:9;2939:40;:::i;:::-;-1:-1:-1;2990:20:0;;;;3025:4;2990:20;;;;;;;;:32;;;;;;;;:39;;-1:-1:-1;;2990:39:0;;;;;;3040:9;:11;;;;;;:::i;:::-;;;;;;3062:10;:61;3100:8;3110:10;3083:38;;;;;;;;4613:19:1;;;4657:2;4648:12;;4641:28;4694:2;4685:12;;4603:100;3083:38:0;;;;-1:-1:-1;;3083:38:0;;;;;;;;;3073:49;;3083:38;3073:49;;;;3062:61;;;;;;;;;;;-1:-1:-1;3062:61:0;;;3143:9;;3062:101;;;;;;;;;;;;;;;;-1:-1:-1;;2859:312:0:o;6549:352::-;6676:4;6698:39;6708:7;6717:10;6729:7;6698:9;:39::i;:::-;-1:-1:-1;;;;;6818:20:0;;;;;;:11;:20;;;;;;;;6793:10;6818:32;;;;;;;;;6748:123;;6771:7;;6818:42;;6853:7;;6818:42;:::i;:::-;6748:8;:123::i;:::-;-1:-1:-1;6889:4:0;6549:352;;;;;:::o;9862:152::-;9989:17;;;;:10;:17;;;;;;;;;9982:24;;;;;;;;;;;;;;;;;9948:16;;9982:24;;;9989:17;9982:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9862:152;;;;:::o;3815:1102::-;4013:20;;;;:10;:20;;;;;:27;4003:37;;3981:110;;;;-1:-1:-1;;;3981:110:0;;8568:2:1;3981:110:0;;;8550:21:1;8607:2;8587:18;;;8580:30;8646:25;8626:18;;;8619:53;8689:18;;3981:110:0;;;;;;;;;4136:21;;;;;;4124:33;;;:61;;-1:-1:-1;4182:3:0;4161:24;;;4124:61;4102:140;;;;-1:-1:-1;;;4102:140:0;;8210:2:1;4102:140:0;;;8192:21:1;8249:2;8229:18;;;8222:30;8288:31;8268:18;;;8261:59;8337:18;;4102:140:0;8182:179:1;4102:140:0;4253:16;;;;:6;:16;;;;;;;;4270:15;4253:33;;;;;;;:42;;4289:6;;4253:42;:::i;:::-;-1:-1:-1;4306:20:0;;;;:10;:20;;;;;;;:42;;;;;;;;;;;;;4332:15;4306:42;;;:20;4467:26;4317:8;4467:16;:26::i;:::-;4433:60;;-1:-1:-1;4433:60:0;-1:-1:-1;4525:1:0;4508:14;4433:60;;4508:14;:::i;:::-;:18;4504:87;;;4543:36;4552:10;4564:14;4574:4;4564:7;:14;:::i;4543:36::-;;4504:87;4622:15;4601:18;:36;;;;4666:4;4648:14;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;4698:1:0;4681:14;;;:4;:14;;;;;:18;4715:194;4686:8;4762:15;4792:6;;4813:14;4820:7;4813:4;:14;:::i;:::-;4842:6;4863:10;4888;4715:194;;;;;;;;;;;;;:::i;:::-;;;;;;;;3815:1102;;;;;;;:::o;10752:87::-;10791:13;10824:7;10817:14;;;;;:::i;8238:499::-;8330:7;8339;8364:17;8402:18;;8384:15;:36;;;;:::i;:::-;8364:56;-1:-1:-1;8431:15:0;8481:3;8450:27;1401:4;8364:56;8450:27;:::i;:::-;8449:35;;;;:::i;:::-;8431:53;;8593:14;;8583:7;:24;;;;:::i;:::-;8574:4;7604:7;7631:19;;;:9;:19;;;;;;8556:51;8552:135;;;8661:14;;8652:4;7604:7;7631:19;;;:9;:19;;;;;;8634:41;;;;:::i;:::-;8624:51;;8552:135;8705:14;;;;:4;:14;;;;;;;;8238:499;-1:-1:-1;;;8238:499:0:o;6056:200::-;6162:4;6184:42;6194:10;6206;6218:7;6184:9;:42::i;3325:83::-;3376:24;3382:5;3389:10;3376:5;:24::i;:::-;3325:83;:::o;10456:181::-;10601:16;;;;:6;:16;;;;;;;;:28;;;;;;;;10594:35;;10564:12;;10601:28;10594:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10456:181;;;;:::o;1113:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9362:291::-;9483:7;9522:20;;;:10;:20;;;;;:27;9564:8;;;:25;;;9583:6;9576:3;:13;;9564:25;9560:39;;;9598:1;9591:8;;;;;9560:39;9617:20;;;;:10;:20;;;;;:28;;9638:6;;9617:28;;;;-1:-1:-1;;;9617:28:0;;;;;;;;;;;;;;;;;9610:35;;;9362:291;;;;:::o;5163:639::-;5329:21;;;;;;5317:33;;;:61;;-1:-1:-1;5375:3:0;5354:24;;;5317:61;5295:140;;;;-1:-1:-1;;;5295:140:0;;8210:2:1;5295:140:0;;;8192:21:1;8249:2;8229:18;;;8222:30;8288:31;8268:18;;;8261:59;8337:18;;5295:140:0;8182:179:1;5295:140:0;5446:45;5456:10;5476:4;5483:7;5446:9;:45::i;:::-;5512:11;5522:1;5512:7;:11;:::i;:::-;5502:21;;5534:29;5548:4;5555:7;5534:5;:29::i;:::-;5592:7;5574:14;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;5610:14:0;;;;:4;:14;;;;;:25;;5628:7;;5610:14;:25;;5628:7;;5610:25;:::i;:::-;;;;-1:-1:-1;;5744:14:0;;;;:4;:14;;;;;;;;5651:143;;5699:8;;5674:10;;5651:143;;;;5722:7;;5744:14;5773:10;;5651:143;:::i;:::-;;;;;;;;5163:639;;;:::o;855:47::-;;;;;;;;;;;;;;;;;;;;11365:378;-1:-1:-1;;;;;11493:20:0;;11485:69;;;;-1:-1:-1;;;11485:69:0;;9728:2:1;11485:69:0;;;9710:21:1;9767:2;9747:18;;;9740:30;9806:34;9786:18;;;9779:62;-1:-1:-1;;;9857:18:1;;;9850:34;9901:19;;11485:69:0;9700:226:1;11485:69:0;-1:-1:-1;;;;;11573:22:0;;11565:69;;;;-1:-1:-1;;;11565:69:0;;7807:2:1;11565:69:0;;;7789:21:1;7846:2;7826:18;;;7819:30;7885:34;7865:18;;;7858:62;-1:-1:-1;;;7936:18:1;;;7929:32;7978:19;;11565:69:0;7779:224:1;11565:69:0;-1:-1:-1;;;;;11645:19:0;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;11700:35;;10437:25:1;;;11700:35:0;;10410:18:1;11700:35:0;10392:76:1;12962:460:0;-1:-1:-1;;;;;13094:21:0;;13086:71;;;;-1:-1:-1;;;13086:71:0;;9322:2:1;13086:71:0;;;9304:21:1;9361:2;9341:18;;;9334:30;9400:34;9380:18;;;9373:62;-1:-1:-1;;;9451:18:1;;;9444:35;9496:19;;13086:71:0;9294:227:1;13086:71:0;-1:-1:-1;;;;;13190:24:0;;13168:109;;;;-1:-1:-1;;;13168:109:0;;7403:2:1;13168:109:0;;;7385:21:1;7442:2;7422:18;;;7415:30;7481:34;7461:18;;;7454:62;-1:-1:-1;;;7532:18:1;;;7525:33;7575:19;;13168:109:0;7375:225:1;13168:109:0;-1:-1:-1;;;;;13288:18:0;;;;;;:9;:18;;;;;:29;;13310:7;;13288:18;:29;;13310:7;;13288:29;:::i;:::-;;;;-1:-1:-1;;;;;;;13328:21:0;;;;;;:9;:21;;;;;:32;;13353:7;;13328:21;:32;;13353:7;;13328:32;:::i;:::-;;;;;;;;13394:10;-1:-1:-1;;;;;13376:38:0;13385:7;-1:-1:-1;;;;;13376:38:0;;13406:7;13376:38;;;;10437:25:1;;10425:2;10410:18;;10392:76;12432:282:0;-1:-1:-1;;;;;12518:22:0;;12510:66;;;;-1:-1:-1;;;12510:66:0;;10133:2:1;12510:66:0;;;10115:21:1;10172:2;10152:18;;;10145:30;10211:33;10191:18;;;10184:61;10262:18;;12510:66:0;10105:181:1;12510:66:0;12603:7;12587:12;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;12621:19:0;;;;;;:9;:19;;;;;:30;;12644:7;;12621:19;:30;;12644:7;;12621:30;:::i;:::-;;;;-1:-1:-1;;12667:39:0;;10437:25:1;;;-1:-1:-1;;;;;12667:39:0;;;12684:1;;12667:39;;10425:2:1;10410:18;12667:39:0;;;;;;;;12432:282;;:::o;11939:284::-;-1:-1:-1;;;;;12025:22:0;;12017:68;;;;-1:-1:-1;;;12017:68:0;;8920:2:1;12017:68:0;;;8902:21:1;8959:2;8939:18;;;8932:30;8998:34;8978:18;;;8971:62;-1:-1:-1;;;9049:18:1;;;9042:31;9090:19;;12017:68:0;8892:223:1;12017:68:0;-1:-1:-1;;;;;12096:19:0;;;;;;:9;:19;;;;;:30;;12119:7;;12096:19;:30;;12119:7;;12096:30;:::i;:::-;;;;;;;;12153:7;12137:12;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;12176:39:0;;10437:25:1;;;12203:1:0;;-1:-1:-1;;;;;12176:39:0;;;;;10425:2:1;10410:18;12176:39:0;10392:76:1;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:196:1;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:2;;200:1;197;190:12;215:738;;310:3;303:4;295:6;291:17;287:27;277:2;;332:5;325;318:20;277:2;372:6;359:20;398:18;435:2;431;428:10;425:2;;;441:18;;:::i;:::-;516:2;510:9;484:2;570:13;;-1:-1:-1;;566:22:1;;;590:2;562:31;558:40;546:53;;;614:18;;;634:22;;;611:46;608:2;;;660:18;;:::i;:::-;700:10;696:2;689:22;735:2;727:6;720:18;781:3;774:4;769:2;761:6;757:15;753:26;750:35;747:2;;;802:5;795;788:20;747:2;870;863:4;855:6;851:17;844:4;836:6;832:17;819:54;893:15;;;910:4;889:26;882:41;;;;-1:-1:-1;897:6:1;267:686;-1:-1:-1;;;267:686:1:o;958:196::-;;1070:2;1058:9;1049:7;1045:23;1041:32;1038:2;;;1091:6;1083;1076:22;1038:2;1119:29;1138:9;1119:29;:::i;:::-;1109:39;1028:126;-1:-1:-1;;;1028:126:1:o;1159:270::-;;;1288:2;1276:9;1267:7;1263:23;1259:32;1256:2;;;1309:6;1301;1294:22;1256:2;1337:29;1356:9;1337:29;:::i;:::-;1327:39;;1385:38;1419:2;1408:9;1404:18;1385:38;:::i;:::-;1375:48;;1246:183;;;;;:::o;1434:338::-;;;;1580:2;1568:9;1559:7;1555:23;1551:32;1548:2;;;1601:6;1593;1586:22;1548:2;1629:29;1648:9;1629:29;:::i;:::-;1619:39;;1677:38;1711:2;1700:9;1696:18;1677:38;:::i;:::-;1667:48;;1762:2;1751:9;1747:18;1734:32;1724:42;;1538:234;;;;;:::o;1777:264::-;;;1906:2;1894:9;1885:7;1881:23;1877:32;1874:2;;;1927:6;1919;1912:22;1874:2;1955:29;1974:9;1955:29;:::i;:::-;1945:39;2031:2;2016:18;;;;2003:32;;-1:-1:-1;;;1864:177:1:o;2046:190::-;;2158:2;2146:9;2137:7;2133:23;2129:32;2126:2;;;2179:6;2171;2164:22;2126:2;-1:-1:-1;2207:23:1;;2116:120;-1:-1:-1;2116:120:1:o;2241:986::-;;;;;;2432:3;2420:9;2411:7;2407:23;2403:33;2400:2;;;2454:6;2446;2439:22;2400:2;2495:9;2482:23;2472:33;;2556:2;2545:9;2541:18;2528:32;2579:18;2620:2;2612:6;2609:14;2606:2;;;2641:6;2633;2626:22;2606:2;2684:6;2673:9;2669:22;2659:32;;2729:7;2722:4;2718:2;2714:13;2710:27;2700:2;;2756:6;2748;2741:22;2700:2;2801;2788:16;2827:2;2819:6;2816:14;2813:2;;;2848:6;2840;2833:22;2813:2;2898:7;2893:2;2884:6;2880:2;2876:15;2872:24;2869:37;2866:2;;;2924:6;2916;2909:22;2866:2;2960;2956;2952:11;2942:21;;2982:6;2972:16;;;3035:2;3024:9;3020:18;3007:32;2997:42;;3092:2;3081:9;3077:18;3064:32;3048:48;;3121:2;3111:8;3108:16;3105:2;;;3142:6;3134;3127:22;3105:2;;3170:51;3213:7;3202:8;3191:9;3187:24;3170:51;:::i;:::-;3160:61;;;2390:837;;;;;;;;:::o;3232:258::-;;;3361:2;3349:9;3340:7;3336:23;3332:32;3329:2;;;3382:6;3374;3367:22;3329:2;-1:-1:-1;;3410:23:1;;;3480:2;3465:18;;;3452:32;;-1:-1:-1;3319:171:1:o;3495:476::-;;;;3650:2;3638:9;3629:7;3625:23;3621:32;3618:2;;;3671:6;3663;3656:22;3618:2;3712:9;3699:23;3689:33;;3769:2;3758:9;3754:18;3741:32;3731:42;;3824:2;3813:9;3809:18;3796:32;3851:18;3843:6;3840:30;3837:2;;;3888:6;3880;3873:22;3837:2;3916:49;3957:7;3948:6;3937:9;3933:22;3916:49;:::i;:::-;3906:59;;;3608:363;;;;;:::o;3976:475::-;;4055:5;4049:12;4082:6;4077:3;4070:19;4107:3;4119:162;4133:6;4130:1;4127:13;4119:162;;;4195:4;4251:13;;;4247:22;;4241:29;4223:11;;;4219:20;;4212:59;4148:12;4119:162;;;4299:6;4296:1;4293:13;4290:2;;;4365:3;4358:4;4349:6;4344:3;4340:16;4336:27;4329:40;4290:2;-1:-1:-1;4433:2:1;4412:15;-1:-1:-1;;4408:29:1;4399:39;;;;4440:4;4395:50;;4025:426;-1:-1:-1;;4025:426:1:o;4939:635::-;5110:2;5162:21;;;5232:13;;5135:18;;;5254:22;;;4939:635;;5110:2;5333:15;;;;5307:2;5292:18;;;4939:635;5379:169;5393:6;5390:1;5387:13;5379:169;;;5454:13;;5442:26;;5523:15;;;;5488:12;;;;5415:1;5408:9;5379:169;;;-1:-1:-1;5565:3:1;;5090:484;-1:-1:-1;;;;;;5090:484:1:o;5771:979::-;;6114:6;6103:9;6096:25;6157:6;6152:2;6141:9;6137:18;6130:34;6200:3;6195:2;6184:9;6180:18;6173:31;6241:6;6235:3;6224:9;6220:19;6213:35;6267:3;6320:6;6312;6307:2;6296:9;6292:18;6279:48;6376:4;6371:2;6362:6;6351:9;6347:22;6343:31;6336:45;6440:2;6436:7;6431:2;6423:6;6419:15;6415:29;6404:9;6400:45;6481:6;6476:2;6465:9;6461:18;6454:34;6525:6;6519:3;6508:9;6504:19;6497:35;6593:2;6581:9;6577:2;6573:18;6569:27;6563:3;6552:9;6548:19;6541:56;6614:37;6647:2;6643;6639:11;6631:6;6614:37;:::i;:::-;6606:45;;;;-1:-1:-1;;;;;6692:6:1;6688:55;6682:3;6671:9;6667:19;6660:84;6086:664;;;;;;;;;;;:::o;6755:217::-;;6902:2;6891:9;6884:21;6922:44;6962:2;6951:9;6947:18;6939:6;6922:44;:::i;10726:359::-;;10929:6;10918:9;10911:25;10972:6;10967:2;10956:9;10952:18;10945:34;11015:2;11010;10999:9;10995:18;10988:30;11035:44;11075:2;11064:9;11060:18;11052:6;11035:44;:::i;:::-;11027:52;10901:184;-1:-1:-1;;;;;10901:184:1:o;11279:128::-;;11350:1;11346:6;11343:1;11340:13;11337:2;;;11356:18;;:::i;:::-;-1:-1:-1;11392:9:1;;11327:80::o;11412:217::-;;11478:1;11468:2;;-1:-1:-1;;;11503:31:1;;11557:4;11554:1;11547:15;11585:4;11510:1;11575:15;11468:2;-1:-1:-1;11614:9:1;;11458:171::o;11634:168::-;;11740:1;11736;11732:6;11728:14;11725:1;11722:21;11717:1;11710:9;11703:17;11699:45;11696:2;;;11747:18;;:::i;:::-;-1:-1:-1;11787:9:1;;11686:116::o;11807:125::-;;11875:1;11872;11869:8;11866:2;;;11880:18;;:::i;:::-;-1:-1:-1;11917:9:1;;11856:76::o;11937:380::-;12016:1;12012:12;;;;12059;;;12080:2;;12134:4;12126:6;12122:17;12112:27;;12080:2;12187;12179:6;12176:14;12156:18;12153:38;12150:2;;;12233:10;12228:3;12224:20;12221:1;12214:31;12268:4;12265:1;12258:15;12296:4;12293:1;12286:15;12150:2;;11992:325;;;:::o;12322:135::-;;-1:-1:-1;;12382:17:1;;12379:2;;;12402:18;;:::i;:::-;-1:-1:-1;12449:1:1;12438:13;;12369:88::o;12462:127::-;12523:10;12518:3;12514:20;12511:1;12504:31;12554:4;12551:1;12544:15;12578:4;12575:1;12568:15;12594:127;12655:10;12650:3;12646:20;12643:1;12636:31;12686:4;12683:1;12676:15;12710:4;12707:1;12700:15

Swarm Source

ipfs://59f9c26280ca7e1f82cf1b3df4b797fa2d04eb6560431a17ade2afb650b13e54
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading