Contract 0x9f0B8e0DaB7c4a3C549580c0836fe274AAF0a43d

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5b46d032b4ac34dec0695f19e4c0004acea99346ff0aee2d26b236e669498dabSet Gate103319142021-11-26 1:22:545 days 23 hrs ago0xd29205598630823f3f8d71664da7dad0c1305f45 IN 0x9f0b8e0dab7c4a3c549580c0836fe274aaf0a43d0 HT0.000059229 2.25
0x152f0261b9aa1b03018611956dc6a9ca68816d49d68883657299fd3baae23ebbSet Daily Cap103144632021-11-25 10:50:216 days 14 hrs ago0xd29205598630823f3f8d71664da7dad0c1305f45 IN 0x9f0b8e0dab7c4a3c549580c0836fe274aaf0a43d0 HT0.00005368725 2.25
0xf2419c171ee9db64dff64ea09f79ffc31694b06218844a955d5d1199348abe85Set Daily Cap103144532021-11-25 10:49:516 days 14 hrs ago0xd29205598630823f3f8d71664da7dad0c1305f45 IN 0x9f0b8e0dab7c4a3c549580c0836fe274aaf0a43d0 HT0.00009846225 2.25
0x3faae4b1bf779abc4eace7e249062ebc5143f679d43151a2731dc6eeb2985220Set Gate103107822021-11-25 7:46:186 days 17 hrs ago0xd29205598630823f3f8d71664da7dad0c1305f45 IN 0x9f0b8e0dab7c4a3c549580c0836fe274aaf0a43d0 HT0.00011556 2.5
0xbd097d25bb95c8f6c3a2e20a7e1b1754d69c950a28dee486b2424e4478995ba50x60806040103106362021-11-25 7:39:006 days 17 hrs ago0xd29205598630823f3f8d71664da7dad0c1305f45 IN  Contract Creation0 HT0.0033981525 2.5
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pool

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-11-25
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.8.0 <0.9.0;

address constant TT = 0x86040C76AAE5CBB322364CAF8820b0E8902e97E5;

address constant POOL = 0x14C40AeaF9907998bA9f1E13486E7e4479832De5;

address constant BURNER = 0xcE7F6423144c898AB2612b07dEE67bAF03dF7bA1;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a >= b) return a;
        return b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a <= b) return a;
        return b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract ERC20 {

    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     */
    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }
}


library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

/**
 * @title Storage
 * @dev Store & retrieve value in a variable
 */
contract Pool {

    string private _poolName;

    uint256 private _totalProduction;

    uint256 private _totalBurn;

    uint private _updateTime;

    uint256 private _dailyCap;          // 单日产出封顶

    uint256 private _todayProduction;      // 今日产出

    address private _owner;

    address private _gate;

    struct Books {
        uint256 amount;
        uint time;
    }

    Books[] burnList;

    Books[] productionList;

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (string memory __poolName) {
        _owner = msg.sender;
        _poolName = __poolName;
    }

    /**
     * @dev Throws if called by any account other than the owner.x
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function setGate(address __gate) external onlyOwner
    {
        _gate = __gate;
    }

    function gate() public view virtual returns (address) {
        return _gate;
    }

    modifier onlyGate() {
        require(gate() == msg.sender || _owner == msg.sender, "Ownable: caller is not the gate");
        _;
    }

    function poolName() external view returns (string memory)
    {
        return _poolName;
    }
    
    function tokenContract() external pure returns (address)
    {
        return TT;
    }

    function balance() external view returns (uint256)
    {
        return IERC20(TT).balanceOf(POOL);
    }

    function totalProduction() external view returns (uint256)
    {
        return _totalProduction;
    }

    function totalBurn() external view returns (uint256)
    {
        return _totalBurn;
    }

    function dailyCap() external view returns (uint256)
    {
        return _dailyCap;
    }
    
    function todayProduction() external view returns (uint256)
    {
        return _todayProduction;
    }

    function setDailyCap(uint256 __dailyCap) external
    {
        _dailyCap = __dailyCap;
    }

    function dailyBurning() internal
    {
        if (_updateTime == 0)
            return;
        
        uint off = uint((block.timestamp + 14400) / 14400) - uint((_updateTime + 14400) / 14400);
        if (off > 0)
        {
            for (uint i=0; i<off; i++)
            {
                uint256 _burn = SafeMath.sub(_dailyCap, _todayProduction);
                productionList.push(Books(_todayProduction, block.timestamp));
                burnList.push(Books(_burn, block.timestamp));
                SafeERC20.safeTransferFrom(IERC20(TT), POOL, BURNER, _burn);
                _totalBurn = SafeMath.add(_totalBurn, _burn);
                _todayProduction = 0;
            }
        }
    }

    function production(address _to, uint256 _production) external onlyGate returns (uint256 alreadyProduction)
    {
        require(_owner != msg.sender, "not allow owner call");

        dailyBurning();

        if (_production == 0)
            return 0;
            
        _production = SafeMath.min(_production, 5000000);
        
        if (_todayProduction >= _dailyCap)
            return 0;
        
        if (SafeMath.add(_todayProduction, _production) > _dailyCap)
            _production = SafeMath.sub(_dailyCap, _todayProduction);
            
        _updateTime = block.timestamp;
        SafeERC20.safeTransferFrom(IERC20(TT), POOL, _to, _production);
        _totalProduction = SafeMath.add(_totalProduction, _production);
        _todayProduction = SafeMath.add(_todayProduction, _production);
        
        return _production;
    }

    function burn(uint256 _burn) external onlyOwner
    {
        burnList.push(Books(_burn, block.timestamp));
        SafeERC20.safeTransferFrom(IERC20(TT), POOL, BURNER, _burn);
        _totalBurn = SafeMath.add(_totalBurn, _burn);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"__poolName","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dailyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_production","type":"uint256"}],"name":"production","outputs":[{"internalType":"uint256","name":"alreadyProduction","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__dailyCap","type":"uint256"}],"name":"setDailyCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__gate","type":"address"}],"name":"setGate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"todayProduction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalProduction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162001a5338038062001a538339818101604052810190620000379190620002e5565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600090805190602001906200009092919062000098565b50506200039b565b828054620000a69062000365565b90600052602060002090601f016020900481019282620000ca576000855562000116565b82601f10620000e557805160ff191683800117855562000116565b8280016001018555821562000116579182015b8281111562000115578251825591602001919060010190620000f8565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001b18262000166565b810181811067ffffffffffffffff82111715620001d357620001d262000177565b5b80604052505050565b6000620001e862000148565b9050620001f68282620001a6565b919050565b600067ffffffffffffffff82111562000219576200021862000177565b5b620002248262000166565b9050602081019050919050565b60005b838110156200025157808201518184015260208101905062000234565b8381111562000261576000848401525b50505050565b60006200027e6200027884620001fb565b620001dc565b9050828152602081018484840111156200029d576200029c62000161565b5b620002aa84828562000231565b509392505050565b600082601f830112620002ca57620002c96200015c565b5b8151620002dc84826020860162000267565b91505092915050565b600060208284031215620002fe57620002fd62000152565b5b600082015167ffffffffffffffff8111156200031f576200031e62000157565b5b6200032d84828501620002b2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200037e57607f821691505b6020821081141562000395576200039462000336565b5b50919050565b6116a880620003ab6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806388315a401161007157806388315a40146101695780639e4a322114610185578063b69ef8a8146101b5578063e7ad5d79146101d3578063eb339391146101f1578063f3466dfa1461020f576100b4565b80630840a44a146100b95780633c9f861d146100d557806342966c68146100f357806355a373d61461010f5780637a0ebc881461012d57806380812c0b1461014b575b600080fd5b6100d360048036038101906100ce9190610e2c565b61022d565b005b6100dd610237565b6040516100ea9190610e68565b60405180910390f35b61010d60048036038101906101089190610e2c565b610241565b005b610117610384565b6040516101249190610ec4565b60405180910390f35b6101356103a0565b6040516101429190610ec4565b60405180910390f35b6101536103ca565b6040516101609190610e68565b60405180910390f35b610183600480360381019061017e9190610f0b565b6103d4565b005b61019f600480360381019061019a9190610f38565b6104a8565b6040516101ac9190610e68565b60405180910390f35b6101bd6106d4565b6040516101ca9190610e68565b60405180910390f35b6101db61078c565b6040516101e89190610e68565b60405180910390f35b6101f9610796565b6040516102069190610e68565b60405180910390f35b6102176107a0565b6040516102249190611011565b60405180910390f35b8060048190555050565b6000600254905090565b3373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89061107f565b60405180910390fd5b600860405180604001604052808381526020014281525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505061036f7386040c76aae5cbb322364caf8820b0e8902e97e57314c40aeaf9907998ba9f1e13486e7e4479832de573ce7f6423144c898ab2612b07dee67baf03df7ba184610832565b61037b600254826108bb565b60028190555050565b60007386040c76aae5cbb322364caf8820b0e8902e97e5905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600554905090565b3373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045b9061107f565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003373ffffffffffffffffffffffffffffffffffffffff166104c96103a0565b73ffffffffffffffffffffffffffffffffffffffff16148061053857503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056e906110eb565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90611157565b60405180910390fd5b610610610919565b600082141561062257600090506106ce565b61062f82624c4b40610abb565b91506004546005541061064557600090506106ce565b600454610654600554846108bb565b111561066b57610668600454600554610ad6565b91505b426003819055506106a67386040c76aae5cbb322364caf8820b0e8902e97e57314c40aeaf9907998ba9f1e13486e7e4479832de58585610832565b6106b2600154836108bb565b6001819055506106c4600554836108bb565b6005819055508190505b92915050565b60007386040c76aae5cbb322364caf8820b0e8902e97e573ffffffffffffffffffffffffffffffffffffffff166370a082317314c40aeaf9907998ba9f1e13486e7e4479832de56040518263ffffffff1660e01b81526004016107379190610ec4565b60206040518083038186803b15801561074f57600080fd5b505afa158015610763573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610787919061118c565b905090565b6000600154905090565b6000600454905090565b6060600080546107af906111e8565b80601f01602080910402602001604051908101604052809291908181526020018280546107db906111e8565b80156108285780601f106107fd57610100808354040283529160200191610828565b820191906000526020600020905b81548152906001019060200180831161080b57829003601f168201915b5050505050905090565b6108b5846323b872dd60e01b8585856040516024016108539392919061121a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610b20565b50505050565b60008082846108ca9190611280565b90508381101561090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690611322565b60405180910390fd5b8091505092915050565b6000600354141561092957610ab9565b60006138408060035461093c9190611280565b6109469190611371565b61384080426109559190611280565b61095f9190611371565b61096991906113a2565b90506000811115610ab75760005b81811015610ab557600061098f600454600554610ad6565b9050600960405180604001604052806005548152602001428152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506008604051806040016040528083815260200142815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050610a877386040c76aae5cbb322364caf8820b0e8902e97e57314c40aeaf9907998ba9f1e13486e7e4479832de573ce7f6423144c898ab2612b07dee67baf03df7ba184610832565b610a93600254826108bb565b6002819055506000600581905550508080610aad906113d6565b915050610977565b505b505b565b6000818311610acc57829050610ad0565b8190505b92915050565b6000610b1883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be7565b905092915050565b6000610b82826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610c4b9092919063ffffffff16565b9050600081511115610be25780806020019051810190610ba29190611457565b610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd8906114f6565b60405180910390fd5b5b505050565b6000838311158290610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c269190611011565b60405180910390fd5b5060008385610c3e91906113a2565b9050809150509392505050565b6060610c5a8484600085610c63565b90509392505050565b606082471015610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90611588565b60405180910390fd5b610cb185610d77565b610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906115f4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610d19919061165b565b60006040518083038185875af1925050503d8060008114610d56576040519150601f19603f3d011682016040523d82523d6000602084013e610d5b565b606091505b5091509150610d6b828286610d8a565b92505050949350505050565b600080823b905060008111915050919050565b60608315610d9a57829050610dea565b600083511115610dad5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de19190611011565b60405180910390fd5b9392505050565b600080fd5b6000819050919050565b610e0981610df6565b8114610e1457600080fd5b50565b600081359050610e2681610e00565b92915050565b600060208284031215610e4257610e41610df1565b5b6000610e5084828501610e17565b91505092915050565b610e6281610df6565b82525050565b6000602082019050610e7d6000830184610e59565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610eae82610e83565b9050919050565b610ebe81610ea3565b82525050565b6000602082019050610ed96000830184610eb5565b92915050565b610ee881610ea3565b8114610ef357600080fd5b50565b600081359050610f0581610edf565b92915050565b600060208284031215610f2157610f20610df1565b5b6000610f2f84828501610ef6565b91505092915050565b60008060408385031215610f4f57610f4e610df1565b5b6000610f5d85828601610ef6565b9250506020610f6e85828601610e17565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fb2578082015181840152602081019050610f97565b83811115610fc1576000848401525b50505050565b6000601f19601f8301169050919050565b6000610fe382610f78565b610fed8185610f83565b9350610ffd818560208601610f94565b61100681610fc7565b840191505092915050565b6000602082019050818103600083015261102b8184610fd8565b905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611069602083610f83565b915061107482611033565b602082019050919050565b600060208201905081810360008301526110988161105c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206761746500600082015250565b60006110d5601f83610f83565b91506110e08261109f565b602082019050919050565b60006020820190508181036000830152611104816110c8565b9050919050565b7f6e6f7420616c6c6f77206f776e65722063616c6c000000000000000000000000600082015250565b6000611141601483610f83565b915061114c8261110b565b602082019050919050565b6000602082019050818103600083015261117081611134565b9050919050565b60008151905061118681610e00565b92915050565b6000602082840312156111a2576111a1610df1565b5b60006111b084828501611177565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061120057607f821691505b60208210811415611214576112136111b9565b5b50919050565b600060608201905061122f6000830186610eb5565b61123c6020830185610eb5565b6112496040830184610e59565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061128b82610df6565b915061129683610df6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156112cb576112ca611251565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061130c601b83610f83565b9150611317826112d6565b602082019050919050565b6000602082019050818103600083015261133b816112ff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061137c82610df6565b915061138783610df6565b92508261139757611396611342565b5b828204905092915050565b60006113ad82610df6565b91506113b883610df6565b9250828210156113cb576113ca611251565b5b828203905092915050565b60006113e182610df6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561141457611413611251565b5b600182019050919050565b60008115159050919050565b6114348161141f565b811461143f57600080fd5b50565b6000815190506114518161142b565b92915050565b60006020828403121561146d5761146c610df1565b5b600061147b84828501611442565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006114e0602a83610f83565b91506114eb82611484565b604082019050919050565b6000602082019050818103600083015261150f816114d3565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611572602683610f83565b915061157d82611516565b604082019050919050565b600060208201905081810360008301526115a181611565565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006115de601d83610f83565b91506115e9826115a8565b602082019050919050565b6000602082019050818103600083015261160d816115d1565b9050919050565b600081519050919050565b600081905092915050565b600061163582611614565b61163f818561161f565b935061164f818560208601610f94565b80840191505092915050565b6000611667828461162a565b91508190509291505056fea2646970667358221220ec74d1800321e58bd17aaa159f3395f12bb423321d83688b9de62d341ebfb06564736f6c6343000809003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000019544445582074726164696e67206d696e6572616c20706f6f6c00000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000019544445582074726164696e67206d696e6572616c20706f6f6c00000000000000

-----Decoded View---------------
Arg [0] : __poolName (string): TDEX trading mineral pool

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [2] : 544445582074726164696e67206d696e6572616c20706f6f6c00000000000000


Deployed ByteCode Sourcemap

17049:3971:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19056:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18736:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20776:241;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18408:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18058:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18942:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17960:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19888:880;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18506:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18622:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18838:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18298:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19056:96;19134:10;19122:9;:22;;;;19056:96;:::o;18736:94::-;18780:7;18812:10;;18805:17;;18736:94;:::o;20776:241::-;17885:10;17875:20;;:6;;;;;;;;;;;:20;;;17867:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20840:8:::1;20854:29;;;;;;;;20860:5;20854:29;;;;20867:15;20854:29;;::::0;20840:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20895:59;96:42;167;240;20948:5;20895:26;:59::i;:::-;20978:31;20991:10;;21003:5;20978:12;:31::i;:::-;20965:10;:44;;;;20776:241:::0;:::o;18408:90::-;18456:7;96:42;18481:9;;18408:90;:::o;18058:85::-;18103:7;18130:5;;;;;;;;;;;18123:12;;18058:85;:::o;18942:106::-;18992:7;19024:16;;19017:23;;18942:106;:::o;17960:90::-;17885:10;17875:20;;:6;;;;;;;;;;;:20;;;17867:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;18036:6:::1;18028:5;;:14;;;;;;;;;;;;;;;;;;17960:90:::0;:::o;19888:880::-;19969:25;18200:10;18190:20;;:6;:4;:6::i;:::-;:20;;;:44;;;;18224:10;18214:20;;:6;;;;;;;;;;;:20;;;18190:44;18182:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;20030:10:::1;20020:20;;:6;;;;;;;;;;;:20;;;;20012:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20078:14;:12;:14::i;:::-;20124:1;20109:11;:16;20105:43;;;20147:1;20140:8;;;;20105:43;20187:34;20200:11;20213:7;20187:12;:34::i;:::-;20173:48;;20266:9;;20246:16;;:29;20242:56;;20297:1;20290:8;;;;20242:56;20369:9;;20323:43;20336:16;;20354:11;20323:12;:43::i;:::-;:55;20319:129;;;20407:41;20420:9;;20431:16;;20407:12;:41::i;:::-;20393:55;;20319:129;20487:15;20473:11;:29;;;;20513:62;96:42;167;20558:3;20563:11;20513:26;:62::i;:::-;20605:43;20618:16;;20636:11;20605:12;:43::i;:::-;20586:16;:62;;;;20678:43;20691:16;;20709:11;20678:12;:43::i;:::-;20659:16;:62;;;;20749:11;20742:18;;18281:1;19888:880:::0;;;;:::o;18506:108::-;18548:7;96:42;18580:20;;;167:42;18580:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18573:33;;18506:108;:::o;18622:106::-;18672:7;18704:16;;18697:23;;18622:106;:::o;18838:92::-;18881:7;18913:9;;18906:16;;18838:92;:::o;18298:98::-;18341:13;18379:9;18372:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18298:98;:::o;14086:205::-;14187:96;14207:5;14237:27;;;14266:4;14272:2;14276:5;14214:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14187:19;:96::i;:::-;14086:205;;;;:::o;3028:181::-;3086:7;3106:9;3122:1;3118;:5;;;;:::i;:::-;3106:17;;3147:1;3142;:6;;3134:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3200:1;3193:8;;;3028:181;;;;:::o;19160:720::-;19228:1;19213:11;;:16;19209:42;;;19244:7;;19209:42;19271:8;19353:5;19344;19330:11;;:19;;;;:::i;:::-;19329:29;;;;:::i;:::-;19315:5;19306;19288:15;:23;;;;:::i;:::-;19287:33;;;;:::i;:::-;19282:77;;;;:::i;:::-;19271:88;;19380:1;19374:3;:7;19370:503;;;19412:6;19407:455;19424:3;19422:1;:5;19407:455;;;19466:13;19482:41;19495:9;;19506:16;;19482:12;:41::i;:::-;19466:57;;19542:14;19562:40;;;;;;;;19568:16;;19562:40;;;;19586:15;19562:40;;;19542:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19622:8;19636:29;;;;;;;;19642:5;19636:29;;;;19649:15;19636:29;;;19622:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19685:59;96:42;167;240;19738:5;19685:26;:59::i;:::-;19776:31;19789:10;;19801:5;19776:12;:31::i;:::-;19763:10;:44;;;;19845:1;19826:16;:20;;;;19447:415;19429:3;;;;;:::i;:::-;;;;19407:455;;;;19370:503;19198:682;19160:720;:::o;4911:125::-;4969:7;4998:1;4993;:6;4989:20;;5008:1;5001:8;;;;4989:20;5027:1;5020:8;;4911:125;;;;;:::o;3217:136::-;3275:7;3302:43;3306:1;3309;3302:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3295:50;;3217:136;;;;:::o;16206:761::-;16630:23;16656:69;16684:4;16656:69;;;;;;;;;;;;;;;;;16664:5;16656:27;;;;:69;;;;;:::i;:::-;16630:95;;16760:1;16740:10;:17;:21;16736:224;;;16882:10;16871:30;;;;;;;;;;;;:::i;:::-;16863:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16736:224;16276:691;16206:761;;:::o;3361:192::-;3447:7;3480:1;3475;:6;;3483:12;3467:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3507:9;3523:1;3519;:5;;;;:::i;:::-;3507:17;;3544:1;3537:8;;;3361:192;;;;;:::o;8642:195::-;8745:12;8777:52;8799:6;8807:4;8813:1;8816:12;8777:21;:52::i;:::-;8770:59;;8642:195;;;;;:::o;9694:530::-;9821:12;9879:5;9854:21;:30;;9846:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9946:18;9957:6;9946:10;:18::i;:::-;9938:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10072:12;10086:23;10113:6;:11;;10133:5;10141:4;10113:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:75;;;;10164:52;10182:7;10191:10;10203:12;10164:17;:52::i;:::-;10157:59;;;;9694:530;;;;;;:::o;5724:422::-;5784:4;5992:12;6103:7;6091:20;6083:28;;6137:1;6130:4;:8;6123:15;;;5724:422;;;:::o;12234:742::-;12349:12;12378:7;12374:595;;;12409:10;12402:17;;;;12374:595;12543:1;12523:10;:17;:21;12519:439;;;12786:10;12780:17;12847:15;12834:10;12830:2;12826:19;12819:44;12519:439;12929:12;12922:20;;;;;;;;;;;:::i;:::-;;;;;;;;12234:742;;;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:122::-;2036:24;2054:5;2036:24;:::i;:::-;2029:5;2026:35;2016:63;;2075:1;2072;2065:12;2016:63;1963:122;:::o;2091:139::-;2137:5;2175:6;2162:20;2153:29;;2191:33;2218:5;2191:33;:::i;:::-;2091:139;;;;:::o;2236:329::-;2295:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:119;;;2350:79;;:::i;:::-;2312:119;2470:1;2495:53;2540:7;2531:6;2520:9;2516:22;2495:53;:::i;:::-;2485:63;;2441:117;2236:329;;;;:::o;2571:474::-;2639:6;2647;2696:2;2684:9;2675:7;2671:23;2667:32;2664:119;;;2702:79;;:::i;:::-;2664:119;2822:1;2847:53;2892:7;2883:6;2872:9;2868:22;2847:53;:::i;:::-;2837:63;;2793:117;2949:2;2975:53;3020:7;3011:6;3000:9;2996:22;2975:53;:::i;:::-;2965:63;;2920:118;2571:474;;;;;:::o;3051:99::-;3103:6;3137:5;3131:12;3121:22;;3051:99;;;:::o;3156:169::-;3240:11;3274:6;3269:3;3262:19;3314:4;3309:3;3305:14;3290:29;;3156:169;;;;:::o;3331:307::-;3399:1;3409:113;3423:6;3420:1;3417:13;3409:113;;;3508:1;3503:3;3499:11;3493:18;3489:1;3484:3;3480:11;3473:39;3445:2;3442:1;3438:10;3433:15;;3409:113;;;3540:6;3537:1;3534:13;3531:101;;;3620:1;3611:6;3606:3;3602:16;3595:27;3531:101;3380:258;3331:307;;;:::o;3644:102::-;3685:6;3736:2;3732:7;3727:2;3720:5;3716:14;3712:28;3702:38;;3644:102;;;:::o;3752:364::-;3840:3;3868:39;3901:5;3868:39;:::i;:::-;3923:71;3987:6;3982:3;3923:71;:::i;:::-;3916:78;;4003:52;4048:6;4043:3;4036:4;4029:5;4025:16;4003:52;:::i;:::-;4080:29;4102:6;4080:29;:::i;:::-;4075:3;4071:39;4064:46;;3844:272;3752:364;;;;:::o;4122:313::-;4235:4;4273:2;4262:9;4258:18;4250:26;;4322:9;4316:4;4312:20;4308:1;4297:9;4293:17;4286:47;4350:78;4423:4;4414:6;4350:78;:::i;:::-;4342:86;;4122:313;;;;:::o;4441:182::-;4581:34;4577:1;4569:6;4565:14;4558:58;4441:182;:::o;4629:366::-;4771:3;4792:67;4856:2;4851:3;4792:67;:::i;:::-;4785:74;;4868:93;4957:3;4868:93;:::i;:::-;4986:2;4981:3;4977:12;4970:19;;4629:366;;;:::o;5001:419::-;5167:4;5205:2;5194:9;5190:18;5182:26;;5254:9;5248:4;5244:20;5240:1;5229:9;5225:17;5218:47;5282:131;5408:4;5282:131;:::i;:::-;5274:139;;5001:419;;;:::o;5426:181::-;5566:33;5562:1;5554:6;5550:14;5543:57;5426:181;:::o;5613:366::-;5755:3;5776:67;5840:2;5835:3;5776:67;:::i;:::-;5769:74;;5852:93;5941:3;5852:93;:::i;:::-;5970:2;5965:3;5961:12;5954:19;;5613:366;;;:::o;5985:419::-;6151:4;6189:2;6178:9;6174:18;6166:26;;6238:9;6232:4;6228:20;6224:1;6213:9;6209:17;6202:47;6266:131;6392:4;6266:131;:::i;:::-;6258:139;;5985:419;;;:::o;6410:170::-;6550:22;6546:1;6538:6;6534:14;6527:46;6410:170;:::o;6586:366::-;6728:3;6749:67;6813:2;6808:3;6749:67;:::i;:::-;6742:74;;6825:93;6914:3;6825:93;:::i;:::-;6943:2;6938:3;6934:12;6927:19;;6586:366;;;:::o;6958:419::-;7124:4;7162:2;7151:9;7147:18;7139:26;;7211:9;7205:4;7201:20;7197:1;7186:9;7182:17;7175:47;7239:131;7365:4;7239:131;:::i;:::-;7231:139;;6958:419;;;:::o;7383:143::-;7440:5;7471:6;7465:13;7456:22;;7487:33;7514:5;7487:33;:::i;:::-;7383:143;;;;:::o;7532:351::-;7602:6;7651:2;7639:9;7630:7;7626:23;7622:32;7619:119;;;7657:79;;:::i;:::-;7619:119;7777:1;7802:64;7858:7;7849:6;7838:9;7834:22;7802:64;:::i;:::-;7792:74;;7748:128;7532:351;;;;:::o;7889:180::-;7937:77;7934:1;7927:88;8034:4;8031:1;8024:15;8058:4;8055:1;8048:15;8075:320;8119:6;8156:1;8150:4;8146:12;8136:22;;8203:1;8197:4;8193:12;8224:18;8214:81;;8280:4;8272:6;8268:17;8258:27;;8214:81;8342:2;8334:6;8331:14;8311:18;8308:38;8305:84;;;8361:18;;:::i;:::-;8305:84;8126:269;8075:320;;;:::o;8401:442::-;8550:4;8588:2;8577:9;8573:18;8565:26;;8601:71;8669:1;8658:9;8654:17;8645:6;8601:71;:::i;:::-;8682:72;8750:2;8739:9;8735:18;8726:6;8682:72;:::i;:::-;8764;8832:2;8821:9;8817:18;8808:6;8764:72;:::i;:::-;8401:442;;;;;;:::o;8849:180::-;8897:77;8894:1;8887:88;8994:4;8991:1;8984:15;9018:4;9015:1;9008:15;9035:305;9075:3;9094:20;9112:1;9094:20;:::i;:::-;9089:25;;9128:20;9146:1;9128:20;:::i;:::-;9123:25;;9282:1;9214:66;9210:74;9207:1;9204:81;9201:107;;;9288:18;;:::i;:::-;9201:107;9332:1;9329;9325:9;9318:16;;9035:305;;;;:::o;9346:177::-;9486:29;9482:1;9474:6;9470:14;9463:53;9346:177;:::o;9529:366::-;9671:3;9692:67;9756:2;9751:3;9692:67;:::i;:::-;9685:74;;9768:93;9857:3;9768:93;:::i;:::-;9886:2;9881:3;9877:12;9870:19;;9529:366;;;:::o;9901:419::-;10067:4;10105:2;10094:9;10090:18;10082:26;;10154:9;10148:4;10144:20;10140:1;10129:9;10125:17;10118:47;10182:131;10308:4;10182:131;:::i;:::-;10174:139;;9901:419;;;:::o;10326:180::-;10374:77;10371:1;10364:88;10471:4;10468:1;10461:15;10495:4;10492:1;10485:15;10512:185;10552:1;10569:20;10587:1;10569:20;:::i;:::-;10564:25;;10603:20;10621:1;10603:20;:::i;:::-;10598:25;;10642:1;10632:35;;10647:18;;:::i;:::-;10632:35;10689:1;10686;10682:9;10677:14;;10512:185;;;;:::o;10703:191::-;10743:4;10763:20;10781:1;10763:20;:::i;:::-;10758:25;;10797:20;10815:1;10797:20;:::i;:::-;10792:25;;10836:1;10833;10830:8;10827:34;;;10841:18;;:::i;:::-;10827:34;10886:1;10883;10879:9;10871:17;;10703:191;;;;:::o;10900:233::-;10939:3;10962:24;10980:5;10962:24;:::i;:::-;10953:33;;11008:66;11001:5;10998:77;10995:103;;;11078:18;;:::i;:::-;10995:103;11125:1;11118:5;11114:13;11107:20;;10900:233;;;:::o;11139:90::-;11173:7;11216:5;11209:13;11202:21;11191:32;;11139:90;;;:::o;11235:116::-;11305:21;11320:5;11305:21;:::i;:::-;11298:5;11295:32;11285:60;;11341:1;11338;11331:12;11285:60;11235:116;:::o;11357:137::-;11411:5;11442:6;11436:13;11427:22;;11458:30;11482:5;11458:30;:::i;:::-;11357:137;;;;:::o;11500:345::-;11567:6;11616:2;11604:9;11595:7;11591:23;11587:32;11584:119;;;11622:79;;:::i;:::-;11584:119;11742:1;11767:61;11820:7;11811:6;11800:9;11796:22;11767:61;:::i;:::-;11757:71;;11713:125;11500:345;;;;:::o;11851:229::-;11991:34;11987:1;11979:6;11975:14;11968:58;12060:12;12055:2;12047:6;12043:15;12036:37;11851:229;:::o;12086:366::-;12228:3;12249:67;12313:2;12308:3;12249:67;:::i;:::-;12242:74;;12325:93;12414:3;12325:93;:::i;:::-;12443:2;12438:3;12434:12;12427:19;;12086:366;;;:::o;12458:419::-;12624:4;12662:2;12651:9;12647:18;12639:26;;12711:9;12705:4;12701:20;12697:1;12686:9;12682:17;12675:47;12739:131;12865:4;12739:131;:::i;:::-;12731:139;;12458:419;;;:::o;12883:225::-;13023:34;13019:1;13011:6;13007:14;13000:58;13092:8;13087:2;13079:6;13075:15;13068:33;12883:225;:::o;13114:366::-;13256:3;13277:67;13341:2;13336:3;13277:67;:::i;:::-;13270:74;;13353:93;13442:3;13353:93;:::i;:::-;13471:2;13466:3;13462:12;13455:19;;13114:366;;;:::o;13486:419::-;13652:4;13690:2;13679:9;13675:18;13667:26;;13739:9;13733:4;13729:20;13725:1;13714:9;13710:17;13703:47;13767:131;13893:4;13767:131;:::i;:::-;13759:139;;13486:419;;;:::o;13911:179::-;14051:31;14047:1;14039:6;14035:14;14028:55;13911:179;:::o;14096:366::-;14238:3;14259:67;14323:2;14318:3;14259:67;:::i;:::-;14252:74;;14335:93;14424:3;14335:93;:::i;:::-;14453:2;14448:3;14444:12;14437:19;;14096:366;;;:::o;14468:419::-;14634:4;14672:2;14661:9;14657:18;14649:26;;14721:9;14715:4;14711:20;14707:1;14696:9;14692:17;14685:47;14749:131;14875:4;14749:131;:::i;:::-;14741:139;;14468:419;;;:::o;14893:98::-;14944:6;14978:5;14972:12;14962:22;;14893:98;;;:::o;14997:147::-;15098:11;15135:3;15120:18;;14997:147;;;;:::o;15150:373::-;15254:3;15282:38;15314:5;15282:38;:::i;:::-;15336:88;15417:6;15412:3;15336:88;:::i;:::-;15329:95;;15433:52;15478:6;15473:3;15466:4;15459:5;15455:16;15433:52;:::i;:::-;15510:6;15505:3;15501:16;15494:23;;15258:265;15150:373;;;;:::o;15529:271::-;15659:3;15681:93;15770:3;15761:6;15681:93;:::i;:::-;15674:100;;15791:3;15784:10;;15529:271;;;;:::o

Swarm Source

ipfs://ec74d1800321e58bd17aaa159f3395f12bb423321d83688b9de62d341ebfb065
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading