Contract 0xfdCcf6D49A29f435E509DFFAAFDecB0ADD93f8C0

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0ec60f5694355feba28611b34e6e5816fcee38b064bac02e5142cf6791e26a34Execute141861772022-05-02 17:42:1019 days 13 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.007159462947 93.696757628
0x4b1e210fc28da24c984f99b9e1f360d5d29ec0523d8c434d4d0d4e85ee50d0fcExecute141861452022-05-02 17:41:0419 days 13 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.006925221053 93.696757628
0x3278bb3feff75a5a8f4e102ef5342b2ddf15627d616b3ef9d86f9177370a78f9Vote141021332022-04-30 17:48:1621 days 13 hrs ago0xd96715347688cd58d9075df7199c0e04e7dff234 IN  Snowball: Governance0 AVAX0.006250956116 64.306940139
0x872414f68fb53ace53fd6c1e3dc64b193c3c25fae06fc1022522286adae58af0Vote140671562022-04-29 21:48:1822 days 9 hrs ago0x6e9c24e6c635dcb588236c0e1ff62064fbdd6887 IN  Snowball: Governance0 AVAX0.002806418537 28.871133563
0x8788fb0ce16d7956f8b719d3f1a8db24dfcc5540e71be8c72fd8cc8f1d065a95Vote140606832022-04-29 18:06:3622 days 12 hrs ago0x98625957c6b96eeecd040e5bd26bd42100d124b2 IN  Snowball: Governance0 AVAX0.004377637164 45.035102766
0x0ff78d79f1954ce433b2a0d6d7466952cdba902bdcbb140491e165e79eda6f8bVote140314232022-04-29 1:14:4823 days 5 hrs ago0x85af40cf273ee61eafc35722100fdbb738ebe2be IN  Snowball: Governance0 AVAX0.002758780586 28.381056395
0xaf649e71e9eecd12f0bf3fb5127d3ef72ebe2436edc417035eab63a1ef3a0482Vote140313372022-04-29 1:11:3523 days 5 hrs ago0x0860a74847ec4f3e1dc0cfbab41013eb90f69654 IN  Snowball: Governance0 AVAX0.002652253974 27.285159965
0x9df36ad2533fa9adbeb8009808cad1b2c1edfe76d26f638d6d2c927471aef4ecVote140265932022-04-28 22:28:4523 days 8 hrs ago0x3976785a595b49c57606c3677543921bf42ebba0 IN  Snowball: Governance0 AVAX0.004438770894 45.664018252
0xf66b8652f6e6edad571b678286da34e837dae2376e09a04e4aafbdace4a5c3aeVote140257732022-04-28 22:00:3423 days 8 hrs ago0x1b53417ce962f4d09cc68e6b308089aa3948b148 IN  Snowball: Governance0 AVAX0.005229138538 45.75604892
0x0bcc9c427d62c9fa8c8f835bb723efc740ba48b42889366bde8e06fb8cb1aec8Vote140254892022-04-28 21:50:3523 days 9 hrs ago0x5c33bc059eafa04a0ebb97088feec3a52623f65d IN  Snowball: Governance0 AVAX0.005651616077 58.14120753
0x452a965ad4bee86f01e90d99ed5203db2c4ef68c06ff3896a8db4e0e140d7e61Vote140252572022-04-28 21:42:3723 days 9 hrs ago0xd1421ae08b24f5b24fa97980341dabcadeed3873 IN  Snowball: Governance0 AVAX0.005378596888 55.33251261
0xee5eb61a6d7b5c2714885817905c6a9ba881d525e00f15c256ab16c3cd2f722dVote140250942022-04-28 21:36:5523 days 9 hrs ago0x9dc1eb2f96a03f4054e5fe2e80cf23c75d0fe93f IN  Snowball: Governance0 AVAX0.005730118948 58.948808685
0x2a24d0e55ad4bedc2c17e373d3307f3f2b5708fcbac95a7b16cdeb3c19a35ae9Vote140201382022-04-28 18:45:4723 days 12 hrs ago0x44a4b9e2a69d86ba382a511f845cbf2e31286770 IN  Snowball: Governance0 AVAX0.004015258146 41.307115335
0x54ca6639d32b7d396a9c3f1d97dc0268d9f03d4790519ff50e41170a800687d6Vote140169722022-04-28 16:56:0923 days 14 hrs ago0xdbc195a0ed72c0b059f8906e97a90636d2b6409f IN  Snowball: Governance0 AVAX0.0062211264
0x84e2408a5e18e7434b4bb9fa60297501f62c1ff2677239036e46c3b3f8b71262Vote140166122022-04-28 16:43:3323 days 14 hrs ago0x37bc8c66ca659eb34fb0ddb8d21edf551b324073 IN  Snowball: Governance0 AVAX0.005727654389 58.92345445
0xf37e666b7fab2ec2dd1cf321777a5311572e9f1d3961a03addeed3cb4f82655dVote140149732022-04-28 15:47:5523 days 15 hrs ago0xbe4feae32210f682a41e1c41e3eaf4f8204cd29e IN  Snowball: Governance0 AVAX0.007505848164 77.216688072
0x32f8582053849b8027d6532c59885124d17766d33c0d90c2c673417e40b2568aVote140124212022-04-28 14:20:4923 days 16 hrs ago0x483251e8ff51c72078ae97885a203a8e23fd9522 IN  Snowball: Governance0 AVAX0.00824389701 84.809392631
0x22f3bc96f4eef900839df0205985ec52b4e639315ff2a52c7f8bb7eecf833131Vote140106162022-04-28 13:19:0523 days 17 hrs ago0xdd426f2650b357cc337a755debbce82e51917d65 IN  Snowball: Governance0 AVAX0.007954232397 81.829457309
0xa3a4b3920d73142cc05474b24382b5dfb06264e4bcdd3c6202461aac984e4c4dVote140093462022-04-28 12:35:2723 days 18 hrs ago0xc490b85d19d970c9990047202197cfb5c18d390a IN  Snowball: Governance0 AVAX0.005361803302 55.159747979
0xc07428e9f8261b15ed42d03a65c27089594872d7d82211223b76d529b958ac90Vote140061472022-04-28 10:47:1223 days 20 hrs ago0xea4ddc1921a322dae69458920e9c6a61d0a4f7aa IN  Snowball: Governance0 AVAX0.00460732309747.398005222
0x8db3883d26597f805a22ab4f24c48405237878aaa59dbeefc1e20e2ca8625210Vote139977712022-04-28 6:05:0824 days 51 mins ago0x6f6fa54d4c680aa40077608592d59dc1a306baf6 IN  Snowball: Governance0 AVAX0.00490416972 50.451825739
0x42c473e37d04f7c090f97620dd7acbcc0d7b3c4b16e400961ff65488791cfdb1Vote139977462022-04-28 6:04:1824 days 51 mins ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.005767743181 50.459237843
0x67f3855ca7739e80b6b757de647d35bb6683857b5e7de3ca575c5d2b88e21f98Propose139976302022-04-28 6:00:2324 days 55 mins ago0xdbc195a0ed72c0b059f8906e97a90636d2b6409f IN  Snowball: Governance0 AVAX0.0212950
0xc25bbace4128a3a9896a849cdb01635a1de4430d901e19ac049cae09cdd04812Vote136820762022-04-20 21:19:3731 days 9 hrs ago0x44a4b9e2a69d86ba382a511f845cbf2e31286770 IN  Snowball: Governance0 AVAX0.007994489862 82.243607451
0x31391d1e1775e71c1cb43684f4ef6c0c1d9d9007844c54fb76aa32718df5afe7Vote136762622022-04-20 18:04:0931 days 12 hrs ago0x0342bf051724c2697362a3b947e170b4bea63299 IN  Snowball: Governance0 AVAX0.031783482366 327.047759037
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Governance

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2021-11-05
*/

// Sources flattened with hardhat v2.3.0 https://hardhat.org

// File contracts/interface/IxSNOB.sol

pragma solidity 0.8.4;

interface IxSNOB {
  function balanceOf(address addr) external view returns (uint256);
}


// File contracts/DummyXSNOB.sol

pragma solidity 0.8.4;

contract DummyXSNOB is IxSNOB {
    mapping (address => uint256) private _balances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor () {
        _name = "Staked SNOB";
        _symbol = "xSNOB";
    }

    /**
     * @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`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev For ease of testing xSNOB.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
}


// File @openzeppelin/contracts/utils/[email protected]

pragma solidity ^0.8.0;

/**
 * @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);
            }
        }
    }
}


// File @openzeppelin/contracts/utils/math/[email protected]

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


// File @openzeppelin/contracts/security/[email protected]

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}


// File contracts/Governance.sol

pragma solidity 0.8.4;

/// SPDX-License-Identifier: MIT
contract Governance is ReentrancyGuard {
    using SafeMath for uint256;

    /// @notice Lower bound for the voting period
    uint256 public minimumVotingPeriod = 3 days;
    uint256 public constant VOTING_PERIOD_MINIMUM = 1 days;
    uint256 public constant VOTING_PERIOD_MAXIMUM = 30 days;

    /// @notice Seconds since the end of the voting period before the proposal can be executed
    uint256 public executionDelay = 24 hours;
    uint256 public constant EXECUTION_DELAY_MINIMUM = 30 seconds;
    uint256 public constant EXECUTION_DELAY_MAXIMUM = 30 days;

    /// @notice Seconds since the proposal could be executed until it is considered expired
    uint256 public constant EXPIRATION_PERIOD = 14 days;

    /// @notice The required minimum number of votes in support of a proposal for it to succeed
    uint256 public quorumVotes = 300_000e18;
    uint256 public constant QUORUM_VOTES_MINIMUM = 100_000e18;
    uint256 public constant QUORUM_VOTES_MAXIMUM = 18_000_000e18;

    /// @notice The minimum number of votes required for an account to create a proposal
    uint256 public proposalThreshold = 100_000e18;
    uint256 public constant PROPOSAL_THRESHOLD_MINIMUM = 50_000e18;
    uint256 public constant PROPOSAL_THRESHOLD_MAXIMUM = 10_000_000e18;

    /// @notice The total number of proposals
    uint256 public proposalCount;

    /// @notice The record of all proposals ever proposed
    mapping(uint256 => Proposal) public proposals;
    mapping(uint256 => ProposalExecutionContext) public proposalExecutionContexts;
    mapping(uint256 => mapping(address => Receipt)) public receipts;
    mapping(address => uint256) public lastProposalByAddress;

    /// @notice Non-tradeable xSNOB used to represent votes
    IxSNOB public xSNOB;

    struct Proposal {
        string title;
        string metadata;
        address proposer;
        address executor;
        uint256 startTime;
        uint256 votingPeriod;
        uint256 quorumVotes;
        uint256 executionDelay;
        uint256 forVotes;
        uint256 againstVotes;
    }

    struct ProposalExecutionContext {
        address target;
        uint256 value;
        bytes data;
    }

    struct Receipt {
        bool hasVoted;
        bool support;
        uint256 votes;
    }

    enum ProposalState {
        Active,
        Defeated,
        PendingExecution,
        ReadyForExecution,
        Executed,
        Expired
    }

    event NewVote(
        uint256 proposalId,
        address voter,
        bool support,
        uint256 votes
    );
    event ProposalCreated(uint256 proposalId, address proposer, string title);
    event ProposalExecuted(uint256 proposalId, address executor);
    event MinimumVotingPeriodChanged(uint256 newMinimumVotingPeriod);
    event ExecutionDelayChanged(uint256 newExecutionDelay);
    event QuorumVotesChanges(uint256 newQuorumVotes);
    event ProposalThresholdChanged(uint256 newProposalThreshold);

    /// @dev This token must not be tradeable
    constructor(address _xSNOB) {
        xSNOB = IxSNOB(_xSNOB);
    }

    modifier onlyGovernor() {
        require(
            msg.sender == address(this),
            "Governance: insufficient privileges"
        );
        _;
    }

    function state(uint256 _proposalId) public view returns (ProposalState) {
        require(
            _proposalId <= proposalCount && _proposalId != 0,
            "Governance::state: invalid proposal id"
        );

        Proposal storage proposal = proposals[_proposalId];

        if (block.timestamp <= proposal.startTime.add(proposal.votingPeriod)) {
            return ProposalState.Active;
        } else if (proposal.executor != address(0)) {
            return ProposalState.Executed;
        } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < proposal.quorumVotes) {
            return ProposalState.Defeated;
        } else if (block.timestamp < proposal.startTime.add(proposal.votingPeriod).add(proposal.executionDelay)) {
            return ProposalState.PendingExecution;
        } else if (block.timestamp < proposal.startTime.add(proposal.votingPeriod).add(proposal.executionDelay).add(EXPIRATION_PERIOD)) {
            return ProposalState.ReadyForExecution;
        } else {
            return ProposalState.Expired;
        }
    }

    function getReceipt(uint256 _proposalId, address _voter) public view returns (Receipt memory) {
        return receipts[_proposalId][_voter];
    }

    function propose(
        string calldata _title,
        string calldata _metadata,
        uint256 _votingPeriod,
        address _target,
        uint256 _value,
        bytes memory _data
    ) public {
        require(
            _votingPeriod >= minimumVotingPeriod,
            "Governance::propose: voting period too short"
        );

        require(
            _votingPeriod <= VOTING_PERIOD_MAXIMUM,
            "Governance::propose: voting period too long"
        );

        uint256 lastProposalId = lastProposalByAddress[msg.sender];

        if (lastProposalId > 0) {
            ProposalState proposalState = state(lastProposalId);
            require(
                proposalState == ProposalState.Executed ||
                proposalState == ProposalState.Defeated ||
                proposalState == ProposalState.Expired,
                "Governance::propose: proposer already has a proposal in progress"
            );
        }

        uint256 votes = xSNOB.balanceOf(msg.sender);

        require(
            votes > proposalThreshold,
            "Governance::propose: proposer votes below proposal threshold"
        );

        proposalCount++;

        Proposal memory newProposal = Proposal({
            title: _title,
            metadata: _metadata,
            proposer: msg.sender,
            executor: address(0),
            startTime: block.timestamp,
            votingPeriod: _votingPeriod,
            quorumVotes: quorumVotes,
            executionDelay: executionDelay,
            forVotes: 0,
            againstVotes: 0
        });

        proposals[proposalCount] = newProposal;
        lastProposalByAddress[msg.sender] = proposalCount;

        ProposalExecutionContext memory newProposalExecutionContext = ProposalExecutionContext({
            target: _target,
            value: _value,
            data: _data
        });

        proposalExecutionContexts[proposalCount] = newProposalExecutionContext;

        emit ProposalCreated(proposalCount, newProposal.proposer, newProposal.title);
    }

    function vote(uint256 _proposalId, bool _support) public {
        require(
            state(_proposalId) == ProposalState.Active,
            "Governance::vote: voting is closed"
        );

        Proposal storage proposal = proposals[_proposalId];
        Receipt storage receipt = receipts[_proposalId][msg.sender];

        uint256 votes = xSNOB.balanceOf(msg.sender);

        if (receipt.hasVoted) {
            if (receipt.support) {
                proposal.forVotes = proposal.forVotes.sub(receipt.votes);
            } else {
                proposal.againstVotes = proposal.againstVotes.sub(receipt.votes);
            }
        }

        if (_support) {
            proposal.forVotes = proposal.forVotes.add(votes);
        } else {
            proposal.againstVotes = proposal.againstVotes.add(votes);
        }

        receipt.hasVoted = true;
        receipt.support = _support;
        receipt.votes = votes;

        emit NewVote(_proposalId, msg.sender, _support, votes);
    }

    function execute(uint256 _proposalId) public payable nonReentrant returns (bytes memory) {
        require(
            state(_proposalId) == ProposalState.ReadyForExecution,
            "Governance::execute: cannot be executed"
        );

        Proposal storage proposal = proposals[_proposalId];

        ProposalExecutionContext storage proposalExecutionContext = proposalExecutionContexts[_proposalId];

        (bool success, bytes memory returnData) = proposalExecutionContext.target.call{value: proposalExecutionContext.value}(proposalExecutionContext.data);
        require(
            success,
            "Governance::execute: transaction execution reverted."
        );
        proposal.executor = msg.sender;

        emit ProposalExecuted(_proposalId, proposal.executor);

        return returnData;
    }

    // Setters

    function setMinimumVotingPeriod(uint256 _seconds) public onlyGovernor {
        require(
            _seconds >= VOTING_PERIOD_MINIMUM,
            "Governance::setMinimumVotingPeriod: TOO_SMALL"
        );
        require(
            _seconds <= VOTING_PERIOD_MAXIMUM,
            "Governance::setMinimumVotingPeriod: TOO_LARGE"
        );
        minimumVotingPeriod = _seconds;
        emit MinimumVotingPeriodChanged(_seconds);
    }

    function setExecutionDelay(uint256 _seconds) public onlyGovernor {
        require(
            _seconds >= EXECUTION_DELAY_MINIMUM,
            "Governance::setExecutionDelay: TOO_SMALL"
        );
        require(
            _seconds <= EXECUTION_DELAY_MAXIMUM,
            "Governance::setExecutionDelay: TOO_LARGE"
        );
        executionDelay = _seconds;
        emit ExecutionDelayChanged(_seconds);
    }

    function setQuorumVotes(uint256 _votes) public onlyGovernor {
        require(
            _votes >= QUORUM_VOTES_MINIMUM,
            "Governance::setQuorumVotes: TOO_SMALL"
        );
        require(
            _votes <= QUORUM_VOTES_MAXIMUM,
            "Governance::setQuorumVotes: TOO_LARGE"
        );
        quorumVotes = _votes;
        emit QuorumVotesChanges(_votes);
    }

    function setProposalThreshold(uint256 _votes) public onlyGovernor {
        require(
            _votes >= PROPOSAL_THRESHOLD_MINIMUM,
            "Governance::setProposalThreshold: TOO_SMALL"
        );
        require(
            _votes <= PROPOSAL_THRESHOLD_MAXIMUM,
            "Governance::setProposalThreshold: TOO_LARGE"
        );
        proposalThreshold = _votes;
        emit ProposalThresholdChanged(_votes);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_xSNOB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newExecutionDelay","type":"uint256"}],"name":"ExecutionDelayChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMinimumVotingPeriod","type":"uint256"}],"name":"MinimumVotingPeriodChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"NewVote","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"string","name":"title","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"executor","type":"address"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newQuorumVotes","type":"uint256"}],"name":"QuorumVotesChanges","type":"event"},{"inputs":[],"name":"EXECUTION_DELAY_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTION_DELAY_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXPIRATION_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_THRESHOLD_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_THRESHOLD_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUORUM_VOTES_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUORUM_VOTES_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_PERIOD_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_PERIOD_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"executionDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"address","name":"_voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct Governance.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastProposalByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumVotingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposalExecutionContexts","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"votingPeriod","type":"uint256"},{"internalType":"uint256","name":"quorumVotes","type":"uint256"},{"internalType":"uint256","name":"executionDelay","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"},{"internalType":"string","name":"_metadata","type":"string"},{"internalType":"uint256","name":"_votingPeriod","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"receipts","outputs":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"setExecutionDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"setMinimumVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votes","type":"uint256"}],"name":"setProposalThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votes","type":"uint256"}],"name":"setQuorumVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum Governance.ProposalState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xSNOB","outputs":[{"internalType":"contract IxSNOB","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526203f48060015562015180600255693f870857a3e0e380000060035569152d02c7e14af680000060045534801561003a57600080fd5b50604051611e62380380611e6283398101604081905261005991610083565b6001600055600a80546001600160a01b0319166001600160a01b03929092169190911790556100b1565b600060208284031215610094578081fd5b81516001600160a01b03811681146100aa578182fd5b9392505050565b611da2806100c06000396000f3fe6080604052600436106101b75760003560e01c80638b257989116100ec578063ca75960b1161008a578063e4917d9f11610064578063e4917d9f14610595578063ea014f48146105b5578063ece40cc1146105ca578063fe0d94c1146105ea57600080fd5b8063ca75960b146104b5578063da35c664146104cc578063e23a9a52146104e257600080fd5b8063b1c360ed116100c6578063b1c360ed1461043a578063b58131b014610450578063c647097514610466578063c9d27afe1461049557600080fd5b80638b257989146103e65780638e19855e146103fc578063a48508b81461041a57600080fd5b80635a1daf73116101595780636b1a5847116101335780636b1a5847146103595780636dedc06e146103915780637ba456af146103a85780638ac56a53146103c757600080fd5b80635a1daf7314610241578063645c71511461030e57806368c671431461032c57600080fd5b80632e54929c116101955780632e54929c1461024157806338249a49146102585780633e4f49e6146102785780634178b249146102a557600080fd5b8063013cf08b146101bc57806302ec8f9e146101fb57806324bc1a641461021d575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004611a02565b61060a565b6040516101f29a99989796959493929190611be1565b60405180910390f35b34801561020757600080fd5b5061021b610216366004611a02565b610776565b005b34801561022957600080fd5b5061023360035481565b6040519081526020016101f2565b34801561024d57600080fd5b5061023362278d0081565b34801561026457600080fd5b5061021b610273366004611a02565b6108ab565b34801561028457600080fd5b50610298610293366004611a02565b6109d1565b6040516101f29190611bb9565b3480156102b157600080fd5b506102f16102c0366004611a32565b60086020908152600092835260408084209091529082529020805460019091015460ff808316926101009004169083565b6040805193151584529115156020840152908201526060016101f2565b34801561031a57600080fd5b5061023369152d02c7e14af680000081565b34801561033857600080fd5b506102336103473660046118c3565b60096020526000908152604090205481565b34801561036557600080fd5b50600a54610379906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b34801561039d57600080fd5b506102336201518081565b3480156103b457600080fd5b506102336a0ee3a5f48a68b55200000081565b3480156103d357600080fd5b506102336a084595161401484a00000081565b3480156103f257600080fd5b5061023360025481565b34801561040857600080fd5b50610233690a968163f0a57b40000081565b34801561042657600080fd5b5061021b6104353660046118dd565b610b39565b34801561044657600080fd5b5061023360015481565b34801561045c57600080fd5b5061023360045481565b34801561047257600080fd5b50610486610481366004611a02565b61105a565b6040516101f293929190611b76565b3480156104a157600080fd5b5061021b6104b0366004611a5d565b61110f565b3480156104c157600080fd5b506102336212750081565b3480156104d857600080fd5b5061023360055481565b3480156104ee57600080fd5b5061056f6104fd366004611a32565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b03939093168452918152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b6040805182511515815260208084015115159082015291810151908201526060016101f2565b3480156105a157600080fd5b5061021b6105b0366004611a02565b611328565b3480156105c157600080fd5b50610233601e81565b3480156105d657600080fd5b5061021b6105e5366004611a02565b611442565b6105fd6105f8366004611a02565b611573565b6040516101f29190611ba6565b60066020526000908152604090208054819061062590611cf0565b80601f016020809104026020016040519081016040528092919081815260200182805461065190611cf0565b801561069e5780601f106106735761010080835404028352916020019161069e565b820191906000526020600020905b81548152906001019060200180831161068157829003601f168201915b5050505050908060010180546106b390611cf0565b80601f01602080910402602001604051908101604052809291908181526020018280546106df90611cf0565b801561072c5780601f106107015761010080835404028352916020019161072c565b820191906000526020600020905b81548152906001019060200180831161070f57829003601f168201915b50505060028401546003850154600486015460058701546006880154600789015460088a01546009909a015498996001600160a01b0396871699959096169750929550909390928a565b33301461079e5760405162461bcd60e51b815260040161079590611c54565b60405180910390fd5b69152d02c7e14af68000008110156108065760405162461bcd60e51b815260206004820152602560248201527f476f7665726e616e63653a3a73657451756f72756d566f7465733a20544f4f5f60448201526414d350531360da1b6064820152608401610795565b6a0ee3a5f48a68b55200000081111561086f5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e616e63653a3a73657451756f72756d566f7465733a20544f4f5f6044820152644c4152474560d81b6064820152608401610795565b60038190556040518181527f4d82feec215c8e1f4d904b7268dd6499d866a96685c31f1e394e6663715f76e1906020015b60405180910390a150565b3330146108ca5760405162461bcd60e51b815260040161079590611c54565b620151808110156109335760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e616e63653a3a7365744d696e696d756d566f74696e675065726960448201526c1bd90e881513d3d7d4d3505313609a1b6064820152608401610795565b62278d0081111561099c5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e616e63653a3a7365744d696e696d756d566f74696e675065726960448201526c6f643a20544f4f5f4c4152474560981b6064820152608401610795565b60018190556040518181527ff4f36c6d71e6dce23fde1248bfb40024041297ac1665de2840339f8a6b32e545906020016108a0565b600060055482111580156109e457508115155b610a3f5760405162461bcd60e51b815260206004820152602660248201527f476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f6044820152651cd85b081a5960d21b6064820152608401610795565b600082815260066020526040902060058101546004820154610a60916117a8565b4211610a6f5750600092915050565b60038101546001600160a01b031615610a8b5750600492915050565b80600901548160080154111580610aa9575080600601548160080154105b15610ab75750600192915050565b610ae08160070154610ada836005015484600401546117a890919063ffffffff16565b906117a8565b421015610af05750600292915050565b610b1a62127500610ada8360070154610ada856005015486600401546117a890919063ffffffff16565b421015610b2a5750600392915050565b50600592915050565b50919050565b600154841015610ba05760405162461bcd60e51b815260206004820152602c60248201527f476f7665726e616e63653a3a70726f706f73653a20766f74696e67207065726960448201526b1bd9081d1bdbc81cda1bdc9d60a21b6064820152608401610795565b62278d00841115610c075760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e616e63653a3a70726f706f73653a20766f74696e67207065726960448201526a6f6420746f6f206c6f6e6760a81b6064820152608401610795565b336000908152600960205260409020548015610d17576000610c28826109d1565b90506004816005811115610c4c57634e487b7160e01b600052602160045260246000fd5b1480610c7757506001816005811115610c7557634e487b7160e01b600052602160045260246000fd5b145b80610ca157506005816005811115610c9f57634e487b7160e01b600052602160045260246000fd5b145b610d15576040805162461bcd60e51b81526020600482015260248101919091527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220616c60448201527f72656164792068617320612070726f706f73616c20696e2070726f67726573736064820152608401610795565b505b600a546040516370a0823160e01b81523360048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610d5b57600080fd5b505afa158015610d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d939190611a1a565b90506004548111610e0c5760405162461bcd60e51b815260206004820152603c60248201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f60448201527f7465732062656c6f772070726f706f73616c207468726573686f6c64000000006064820152608401610795565b60058054906000610e1c83611d25565b9091555050604080516101606020601f8d01819004028201810190925261014081018b81526000928291908e908e9081908501838280828437600092019190915250505090825250604080516020601f8d018190048102820181019092528b815291810191908c908c908190840183828082843760009201829052509385525050336020808501919091526040808501849052426060860152608085018d905260035460a086015260025460c086015260e08501849052610100909401839052600554835260068152929091208351805194955085949193610f03935084929101906117c7565b506020828101518051610f1c92600185019201906117c7565b50604082810151600283810180546001600160a01b03199081166001600160a01b039485161790915560608087015160038701805484169186169190911790556080870151600487015560a087015160058088019190915560c0880151600688015560e0880151600780890191909155610100890151600889015561012090980151600997880155543360009081526020978852868120829055865192830187528e861683528288018e81528388018e8152928252988852959095208151815490931692909416919091178355945160018301559151805185949293611007939085019201906117c7565b5050600554604080850151855191517f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639450611044939290611c97565b60405180910390a1505050505050505050505050565b6007602052600090815260409020805460018201546002830180546001600160a01b0390931693919261108c90611cf0565b80601f01602080910402602001604051908101604052809291908181526020018280546110b890611cf0565b80156111055780601f106110da57610100808354040283529160200191611105565b820191906000526020600020905b8154815290600101906020018083116110e857829003601f168201915b5050505050905083565b600061111a836109d1565b600581111561113957634e487b7160e01b600052602160045260246000fd5b146111915760405162461bcd60e51b815260206004820152602260248201527f476f7665726e616e63653a3a766f74653a20766f74696e6720697320636c6f73604482015261195960f21b6064820152608401610795565b600082815260066020908152604080832060088352818420338086529352818420600a5492516370a0823160e01b815260048101949094529093909290916001600160a01b0316906370a082319060240160206040518083038186803b1580156111fa57600080fd5b505afa15801561120e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112329190611a1a565b825490915060ff1615611284578154610100900460ff161561126b5760018201546008840154611261916117bb565b6008840155611284565b6001820154600984015461127e916117bb565b60098401555b83156112a357600883015461129990826117a8565b60088401556112b8565b60098301546112b290826117a8565b60098401555b8154841515610100810261ffff19909216919091176001908117845583018290556040805187815233602082015290810191909152606081018290527f06e7cd0c868e7a367f3f3557249599fac0fc8712d4d6220bce69c664b9ccfd4a9060800160405180910390a15050505050565b3330146113475760405162461bcd60e51b815260040161079590611c54565b601e8110156113a95760405162461bcd60e51b815260206004820152602860248201527f476f7665726e616e63653a3a736574457865637574696f6e44656c61793a205460448201526713d3d7d4d350531360c21b6064820152608401610795565b62278d0081111561140d5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e616e63653a3a736574457865637574696f6e44656c61793a20546044820152674f4f5f4c4152474560c01b6064820152608401610795565b60028190556040518181527f193d917ecb8a5c0270b102b28be14cc9ee25763c29c0b87e980a0bc65d485e75906020016108a0565b3330146114615760405162461bcd60e51b815260040161079590611c54565b690a968163f0a57b4000008110156114cf5760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e616e63653a3a73657450726f706f73616c5468726573686f6c6460448201526a0e881513d3d7d4d350531360aa1b6064820152608401610795565b6a084595161401484a00000081111561153e5760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e616e63653a3a73657450726f706f73616c5468726573686f6c6460448201526a3a20544f4f5f4c4152474560a81b6064820152608401610795565b60048190556040518181527f0553c1e1d490599cc62884d38bddf3b538bf26581e3d5a830cb2aa0a54fc5633906020016108a0565b6060600260005414156115c85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610795565b600260005560036115d8836109d1565b60058111156115f757634e487b7160e01b600052602160045260246000fd5b146116545760405162461bcd60e51b815260206004820152602760248201527f476f7665726e616e63653a3a657865637574653a2063616e6e6f7420626520656044820152661e1958dd5d195960ca1b6064820152608401610795565b6000828152600660209081526040808320600790925280832080546001820154925193949193919283926001600160a01b0390921691611698906002870190611adb565b60006040518083038185875af1925050503d80600081146116d5576040519150601f19603f3d011682016040523d82523d6000602084013e6116da565b606091505b5091509150816117495760405162461bcd60e51b815260206004820152603460248201527f476f7665726e616e63653a3a657865637574653a207472616e73616374696f6e6044820152731032bc32b1baba34b7b7103932bb32b93a32b21760611b6064820152608401610795565b6003840180546001600160a01b031916339081179091556040805188815260208101929092527f9c85b616f29fca57a17eafe71cf9ff82ffef41766e2cf01ea7f8f7878dd3ec24910160405180910390a1600160005595945050505050565b60006117b48284611cc1565b9392505050565b60006117b48284611cd9565b8280546117d390611cf0565b90600052602060002090601f0160209004810192826117f5576000855561183b565b82601f1061180e57805160ff191683800117855561183b565b8280016001018555821561183b579182015b8281111561183b578251825591602001919060010190611820565b5061184792915061184b565b5090565b5b80821115611847576000815560010161184c565b80356001600160a01b038116811461187757600080fd5b919050565b60008083601f84011261188d578182fd5b50813567ffffffffffffffff8111156118a4578182fd5b6020830191508360208285010111156118bc57600080fd5b9250929050565b6000602082840312156118d4578081fd5b6117b482611860565b60008060008060008060008060c0898b0312156118f8578384fd5b883567ffffffffffffffff8082111561190f578586fd5b61191b8c838d0161187c565b909a50985060208b0135915080821115611933578586fd5b61193f8c838d0161187c565b909850965060408b0135955086915061195a60608c01611860565b945060808b0135935060a08b0135915080821115611976578283fd5b818b0191508b601f830112611989578283fd5b81358181111561199b5761199b611d56565b604051601f8201601f19908116603f011681019083821181831017156119c3576119c3611d56565b816040528281528e60208487010111156119db578586fd5b82602086016020830137856020848301015280955050505050509295985092959890939650565b600060208284031215611a13578081fd5b5035919050565b600060208284031215611a2b578081fd5b5051919050565b60008060408385031215611a44578182fd5b82359150611a5460208401611860565b90509250929050565b60008060408385031215611a6f578182fd5b8235915060208301358015158114611a85578182fd5b809150509250929050565b60008151808452815b81811015611ab557602081850181015186830182015201611a99565b81811115611ac65782602083870101525b50601f01601f19169290920160200192915050565b600080835482600182811c915080831680611af757607f831692505b6020808410821415611b1757634e487b7160e01b87526022600452602487fd5b818015611b2b5760018114611b3c57611b68565b60ff19861689528489019650611b68565b60008a815260209020885b86811015611b605781548b820152908501908301611b47565b505084890196505b509498975050505050505050565b60018060a01b0384168152826020820152606060408201526000611b9d6060830184611a90565b95945050505050565b6020815260006117b46020830184611a90565b6020810160068310611bdb57634e487b7160e01b600052602160045260246000fd5b91905290565b6000610140808352611bf58184018e611a90565b90508281036020840152611c09818d611a90565b6001600160a01b039b8c16604085015299909a16606083015250608081019690965260a086019490945260c085019290925260e0840152610100830152610120909101529392505050565b60208082526023908201527f476f7665726e616e63653a20696e73756666696369656e742070726976696c6560408201526267657360e81b606082015260800190565b8381526001600160a01b0383166020820152606060408201819052600090611b9d90830184611a90565b60008219821115611cd457611cd4611d40565b500190565b600082821015611ceb57611ceb611d40565b500390565b600181811c90821680611d0457607f821691505b60208210811415610b3357634e487b7160e01b600052602260045260246000fd5b6000600019821415611d3957611d39611d40565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212206845c4d8a9bdd0d955becdba3f4f38b291d8adcecb79eb0b26a4527c633867bd64736f6c6343000804003300000000000000000000000083952e7ab4aca74ca96217d6f8f7591bead6d64e

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

00000000000000000000000083952e7ab4aca74ca96217d6f8f7591bead6d64e

-----Decoded View---------------
Arg [0] : _xSNOB (address): 0x83952e7ab4aca74ca96217d6f8f7591bead6d64e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000083952e7ab4aca74ca96217d6f8f7591bead6d64e


Deployed ByteCode Sourcemap

20114:10365:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21555:45;;;;;;;;;;-1:-1:-1;21555:45:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;29632:397;;;;;;;;;;-1:-1:-1;29632:397:0;;;;;:::i;:::-;;:::i;:::-;;20947:39;;;;;;;;;;;;;;;;;;;15855:25:1;;;15843:2;15828:18;20947:39:0;15810:76:1;20631:57:0;;;;;;;;;;;;20681:7;20631:57;;28739:449;;;;;;;;;;-1:-1:-1;28739:449:0;;;;;:::i;:::-;;:::i;23441:1100::-;;;;;;;;;;-1:-1:-1;23441:1100:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21691:63::-;;;;;;;;;;-1:-1:-1;21691:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5983:14:1;;5976:22;5958:41;;6042:14;;6035:22;6030:2;6015:18;;6008:50;6074:18;;;6067:34;5946:2;5931:18;21691:63:0;5913:194:1;20993:57:0;;;;;;;;;;;;21040:10;20993:57;;21761:56;;;;;;;;;;-1:-1:-1;21761:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;21887:19;;;;;;;;;;-1:-1:-1;21887:19:0;;;;-1:-1:-1;;;;;21887:19:0;;;;;;-1:-1:-1;;;;;5334:32:1;;;5316:51;;5304:2;5289:18;21887:19:0;5271:102:1;20296:54:0;;;;;;;;;;;;20344:6;20296:54;;21057:60;;;;;;;;;;;;21104:13;21057:60;;21337:66;;;;;;;;;;;;21390:13;21337:66;;20517:40;;;;;;;;;;;;;;;;21268:62;;;;;;;;;;;;21321:9;21268:62;;24706:2119;;;;;;;;;;-1:-1:-1;24706:2119:0;;;;;:::i;:::-;;:::i;20246:43::-;;;;;;;;;;;;;;;;21216:45;;;;;;;;;;;;;;;;21607:77;;;;;;;;;;-1:-1:-1;21607:77:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;26833:1030::-;;;;;;;;;;-1:-1:-1;26833:1030:0;;;;;:::i;:::-;;:::i;20790:51::-;;;;;;;;;;;;20834:7;20790:51;;21459:28;;;;;;;;;;;;;;;;24549:149;;;;;;;;;;-1:-1:-1;24549:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;24661:21:0;;;;:8;:21;;;;;;;;-1:-1:-1;;;;;24661:29:0;;;;;;;;;;;;;24654:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24549:149;;;;;15540:13:1;;15533:21;15526:29;15508:48;;15626:4;15614:17;;;15608:24;15601:32;15594:40;15572:20;;;15565:70;15679:17;;;15673:24;15651:20;;;15644:54;15496:2;15481:18;24549:149:0;15463:241:1;29196:428:0;;;;;;;;;;-1:-1:-1;29196:428:0;;;;;:::i;:::-;;:::i;20564:60::-;;;;;;;;;;;;20614:10;20564:60;;30037:439;;;;;;;;;;-1:-1:-1;30037:439:0;;;;;:::i;:::-;;:::i;27871:842::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21555:45::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21555:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21555:45:0;;;;;;;;;-1:-1:-1;21555:45:0;;-1:-1:-1;21555:45:0;;;;;:::o;29632:397::-;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;;;;;;;;;21040:10:::1;29725:6;:30;;29703:117;;;::::0;-1:-1:-1;;;29703:117:0;;12259:2:1;29703:117:0::1;::::0;::::1;12241:21:1::0;12298:2;12278:18;;;12271:30;12337:34;12317:18;;;12310:62;-1:-1:-1;;;12388:18:1;;;12381:35;12433:19;;29703:117:0::1;12231:227:1::0;29703:117:0::1;21104:13;29853:6;:30;;29831:117;;;::::0;-1:-1:-1;;;29831:117:0;;9815:2:1;29831:117:0::1;::::0;::::1;9797:21:1::0;9854:2;9834:18;;;9827:30;9893:34;9873:18;;;9866:62;-1:-1:-1;;;9944:18:1;;;9937:35;9989:19;;29831:117:0::1;9787:227:1::0;29831:117:0::1;29959:11;:20:::0;;;29995:26:::1;::::0;15855:25:1;;;29995:26:0::1;::::0;15843:2:1;15828:18;29995:26:0::1;;;;;;;;29632:397:::0;:::o;28739:449::-;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;20344:6:::1;28842:8;:33;;28820:128;;;::::0;-1:-1:-1;;;28820:128:0;;13072:2:1;28820:128:0::1;::::0;::::1;13054:21:1::0;13111:2;13091:18;;;13084:30;13150:34;13130:18;;;13123:62;-1:-1:-1;;;13201:18:1;;;13194:43;13254:19;;28820:128:0::1;13044:235:1::0;28820:128:0::1;20405:7;28981:8;:33;;28959:128;;;::::0;-1:-1:-1;;;28959:128:0;;10629:2:1;28959:128:0::1;::::0;::::1;10611:21:1::0;10668:2;10648:18;;;10641:30;10707:34;10687:18;;;10680:62;-1:-1:-1;;;10758:18:1;;;10751:43;10811:19;;28959:128:0::1;10601:235:1::0;28959:128:0::1;29098:19;:30:::0;;;29144:36:::1;::::0;15855:25:1;;;29144:36:0::1;::::0;15843:2:1;15828:18;29144:36:0::1;15810:76:1::0;23441:1100:0;23498:13;23561;;23546:11;:28;;:48;;;;-1:-1:-1;23578:16:0;;;23546:48;23524:136;;;;-1:-1:-1;;;23524:136:0;;12665:2:1;23524:136:0;;;12647:21:1;12704:2;12684:18;;;12677:30;12743:34;12723:18;;;12716:62;-1:-1:-1;;;12794:18:1;;;12787:36;12840:19;;23524:136:0;12637:228:1;23524:136:0;23673:25;23701:22;;;:9;:22;;;;;23782:21;;;;23759:18;;;;:45;;:22;:45::i;:::-;23740:15;:64;23736:798;;-1:-1:-1;23828:20:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;23736:798::-;23870:17;;;;-1:-1:-1;;;;;23870:17:0;:31;23866:668;;-1:-1:-1;23925:22:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;23866:668::-;23990:8;:21;;;23969:8;:17;;;:42;;:86;;;;24035:8;:20;;;24015:8;:17;;;:40;23969:86;23965:569;;;-1:-1:-1;24079:22:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;23965:569::-;24141:74;24191:8;:23;;;24141:45;24164:8;:21;;;24141:8;:18;;;:22;;:45;;;;:::i;:::-;:49;;:74::i;:::-;24123:15;:92;24119:415;;;-1:-1:-1;24239:30:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;24119:415::-;24309:97;20834:7;24309:74;24359:8;:23;;;24309:45;24332:8;:21;;;24309:8;:18;;;:22;;:45;;;;:::i;:97::-;24291:15;:115;24287:247;;;-1:-1:-1;24430:31:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;24287:247::-;-1:-1:-1;24501:21:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;24287:247::-;23441:1100;;;;:::o;24706:2119::-;24968:19;;24951:13;:36;;24929:130;;;;-1:-1:-1;;;24929:130:0;;13898:2:1;24929:130:0;;;13880:21:1;13937:2;13917:18;;;13910:30;13976:34;13956:18;;;13949:62;-1:-1:-1;;;14027:18:1;;;14020:42;14079:19;;24929:130:0;13870:234:1;24929:130:0;20405:7;25094:13;:38;;25072:131;;;;-1:-1:-1;;;25072:131:0;;13486:2:1;25072:131:0;;;13468:21:1;13525:2;13505:18;;;13498:30;13564:34;13544:18;;;13537:62;-1:-1:-1;;;13615:18:1;;;13608:41;13666:19;;25072:131:0;13458:233:1;25072:131:0;25263:10;25216:22;25241:33;;;:21;:33;;;;;;25291:18;;25287:401;;25326:27;25356:21;25362:14;25356:5;:21::i;:::-;25326:51;-1:-1:-1;25435:22:0;25418:13;:39;;;;;;-1:-1:-1;;;25418:39:0;;;;;;;;;;:99;;;-1:-1:-1;25495:22:0;25478:13;:39;;;;;;-1:-1:-1;;;25478:39:0;;;;;;;;;;25418:99;:158;;;-1:-1:-1;25555:21:0;25538:13;:38;;;;;;-1:-1:-1;;;25538:38:0;;;;;;;;;;25418:158;25392:284;;;;;-1:-1:-1;;;25392:284:0;;14311:2:1;25392:284:0;;;14293:21:1;14330:18;;;14323:30;;;;14389:34;14369:18;;;14362:62;14460:34;14440:18;;;14433:62;14512:19;;25392:284:0;14283:254:1;25392:284:0;25287:401;;25716:5;;:27;;-1:-1:-1;;;25716:27:0;;25732:10;25716:27;;;5316:51:1;25700:13:0;;-1:-1:-1;;;;;25716:5:0;;:15;;5289:18:1;;25716:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25700:43;;25786:17;;25778:5;:25;25756:135;;;;-1:-1:-1;;;25756:135:0;;8965:2:1;25756:135:0;;;8947:21:1;9004:2;8984:18;;;8977:30;9043:34;9023:18;;;9016:62;9114:30;9094:18;;;9087:58;9162:19;;25756:135:0;8937:250:1;25756:135:0;25904:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;25962:376:0;;;;;;;;;;;;;;;;;;;;;;;;;25932:27;;25962:376;;;25993:6;;;;;;25962:376;;25993:6;;;;25962:376;;;;;;;;;-1:-1:-1;;;25962:376:0;;;-1:-1:-1;25962:376:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26024:9;;;;;;25962:376;;26024:9;;;;25962:376;;;;;;;;-1:-1:-1;25962:376:0;;;-1:-1:-1;;26058:10:0;25962:376;;;;;;;;;;;;;;;26129:15;25962:376;;;;;;;;;;26214:11;;25962:376;;;;26256:14;;25962:376;;;;;;;;;;;;;;;;;26361:13;;26351:24;;:9;:24;;;;;;:38;;;;25932:406;;-1:-1:-1;25932:406:0;;26351:24;;:38;;-1:-1:-1;26351:24:0;;:38;;;;:::i;:::-;-1:-1:-1;26351:38:0;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;26351:38:0;;;;;;;;;;;-1:-1:-1;;;;;;26351:38:0;;;-1:-1:-1;;;;;26351:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26436:13;26422:10;-1:-1:-1;26400:33:0;;;;;;;;;;:49;;;26524:121;;;;;;;;;;;;;;;;;;;;;;;;26658:40;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;-1:-1:-1;26658:70:0;;;;;;;26524:121;;26658:40;;:70;;;;;;;;;:::i;:::-;-1:-1:-1;;26762:13:0;;26777:20;;;;;26799:17;;26746:71;;;;-1:-1:-1;26746:71:0;;26762:13;26799:17;26746:71;:::i;:::-;;;;;;;;24706:2119;;;;;;;;;;;;:::o;21607:77::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21607:77:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26833:1030::-;26945:20;26923:18;26929:11;26923:5;:18::i;:::-;:42;;;;;;-1:-1:-1;;;26923:42:0;;;;;;;;;;26901:126;;;;-1:-1:-1;;;26901:126:0;;11452:2:1;26901:126:0;;;11434:21:1;11491:2;11471:18;;;11464:30;11530:34;11510:18;;;11503:62;-1:-1:-1;;;11581:18:1;;;11574:32;11623:19;;26901:126:0;11424:224:1;26901:126:0;27040:25;27068:22;;;:9;:22;;;;;;;;27127:8;:21;;;;;27149:10;27127:33;;;;;;;;27189:5;;:27;;-1:-1:-1;;;27189:27:0;;;;;5316:51:1;;;;27068:22:0;;27127:33;;27040:25;;-1:-1:-1;;;;;27189:5:0;;:15;;5289:18:1;;27189:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27233:16;;27173:43;;-1:-1:-1;27233:16:0;;27229:265;;;27270:15;;;;;;;27266:217;;;27348:13;;;;27326:17;;;;:36;;:21;:36::i;:::-;27306:17;;;:56;27266:217;;;27453:13;;;;27427:21;;;;:40;;:25;:40::i;:::-;27403:21;;;:64;27266:217;27510:8;27506:178;;;27555:17;;;;:28;;27577:5;27555:21;:28::i;:::-;27535:17;;;:48;27506:178;;;27640:21;;;;:32;;27666:5;27640:25;:32::i;:::-;27616:21;;;:56;27506:178;27696:23;;27730:26;;;27696:23;27730:26;;-1:-1:-1;;27730:26:0;;;;;;;27715:4;27730:26;;;;;27767:13;;:21;;;27806:49;;;16395:25:1;;;27827:10:0;16451:2:1;16436:18;;16429:60;16505:18;;;16498:50;;;;16579:2;16564:18;;16557:34;;;27806:49:0;;16382:3:1;16367:19;27806:49:0;;;;;;;26833:1030;;;;;:::o;29196:428::-;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;20614:10:::1;29294:8;:35;;29272:125;;;::::0;-1:-1:-1;;;29272:125:0;;8556:2:1;29272:125:0::1;::::0;::::1;8538:21:1::0;8595:2;8575:18;;;8568:30;8634:34;8614:18;;;8607:62;-1:-1:-1;;;8685:18:1;;;8678:38;8733:19;;29272:125:0::1;8528:230:1::0;29272:125:0::1;20681:7;29430:8;:35;;29408:125;;;::::0;-1:-1:-1;;;29408:125:0;;11043:2:1;29408:125:0::1;::::0;::::1;11025:21:1::0;11082:2;11062:18;;;11055:30;11121:34;11101:18;;;11094:62;-1:-1:-1;;;11172:18:1;;;11165:38;11220:19;;29408:125:0::1;11015:230:1::0;29408:125:0::1;29544:14;:25:::0;;;29585:31:::1;::::0;15855:25:1;;;29585:31:0::1;::::0;15843:2:1;15828:18;29585:31:0::1;15810:76:1::0;30037:439:0;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;21321:9:::1;30136:6;:36;;30114:129;;;::::0;-1:-1:-1;;;30114:129:0;;14744:2:1;30114:129:0::1;::::0;::::1;14726:21:1::0;14783:2;14763:18;;;14756:30;14822:34;14802:18;;;14795:62;-1:-1:-1;;;14873:18:1;;;14866:41;14924:19;;30114:129:0::1;14716:233:1::0;30114:129:0::1;21390:13;30276:6;:36;;30254:129;;;::::0;-1:-1:-1;;;30254:129:0;;8144:2:1;30254:129:0::1;::::0;::::1;8126:21:1::0;8183:2;8163:18;;;8156:30;8222:34;8202:18;;;8195:62;-1:-1:-1;;;8273:18:1;;;8266:41;8324:19;;30254:129:0::1;8116:233:1::0;30254:129:0::1;30394:17;:26:::0;;;30436:32:::1;::::0;15855:25:1;;;30436:32:0::1;::::0;15843:2:1;15828:18;30436:32:0::1;15810:76:1::0;27871:842:0;27946:12;19070:1;19667:7;;:19;;19659:63;;;;-1:-1:-1;;;19659:63:0;;15156:2:1;19659:63:0;;;15138:21:1;15195:2;15175:18;;;15168:30;15234:33;15214:18;;;15207:61;15285:18;;19659:63:0;15128:181:1;19659:63:0;19070:1;19800:7;:18;28015:31:::1;27993:18;27999:11;27993:5;:18::i;:::-;:53;;;;;;-1:-1:-1::0;;;27993:53:0::1;;;;;;;;;;27971:142;;;::::0;-1:-1:-1;;;27971:142:0;;10221:2:1;27971:142:0::1;::::0;::::1;10203:21:1::0;10260:2;10240:18;;;10233:30;10299:34;10279:18;;;10272:62;-1:-1:-1;;;10350:18:1;;;10343:37;10397:19;;27971:142:0::1;10193:229:1::0;27971:142:0::1;28126:25;28154:22:::0;;;:9:::1;:22;::::0;;;;;;;28249:25:::1;:38:::0;;;;;;28342:31;;;28386:30;::::1;::::0;28342:106;;28154:22;;28249:38;;28126:25;;;;-1:-1:-1;;;;;28342:31:0;;::::1;::::0;:106:::1;::::0;28418:29:::1;::::0;::::1;::::0;28342:106:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28300:148;;;;28481:7;28459:109;;;::::0;-1:-1:-1;;;28459:109:0;;9394:2:1;28459:109:0::1;::::0;::::1;9376:21:1::0;9433:2;9413:18;;;9406:30;9472:34;9452:18;;;9445:62;-1:-1:-1;;;9523:18:1;;;9516:50;9583:19;;28459:109:0::1;9366:242:1::0;28459:109:0::1;28579:17;::::0;::::1;:30:::0;;-1:-1:-1;;;;;;28579:30:0::1;28599:10;28579:30:::0;;::::1;::::0;;;28627:48:::1;::::0;;16065:25:1;;;16121:2;16106:18;;16099:60;;;;28627:48:0::1;::::0;16038:18:1;28627:48:0::1;;;;;;;19026:1:::0;19979:7;:22;28695:10;27871:842;-1:-1:-1;;;;;27871:842:0:o;13029:98::-;13087:7;13114:5;13118:1;13114;:5;:::i;:::-;13107:12;13029:98;-1:-1:-1;;;13029:98:0:o;13410:::-;13468:7;13495:5;13499:1;13495;:5;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:376::-;244:8;254:6;308:3;301:4;293:6;289:17;285:27;275:2;;333:8;323;316:26;275:2;-1:-1:-1;363:20:1;;406:18;395:30;;392:2;;;445:8;435;428:26;392:2;489:4;481:6;477:17;465:29;;541:3;534:4;525:6;517;513:19;509:30;506:39;503:2;;;558:1;555;548:12;503:2;265:303;;;;;:::o;573:196::-;632:6;685:2;673:9;664:7;660:23;656:32;653:2;;;706:6;698;691:22;653:2;734:29;753:9;734:29;:::i;774:1777::-;911:6;919;927;935;943;951;959;967;1020:3;1008:9;999:7;995:23;991:33;988:2;;;1042:6;1034;1027:22;988:2;1087:9;1074:23;1116:18;1157:2;1149:6;1146:14;1143:2;;;1178:6;1170;1163:22;1143:2;1222:59;1273:7;1264:6;1253:9;1249:22;1222:59;:::i;:::-;1300:8;;-1:-1:-1;1196:85:1;-1:-1:-1;1388:2:1;1373:18;;1360:32;;-1:-1:-1;1404:16:1;;;1401:2;;;1438:6;1430;1423:22;1401:2;1482:61;1535:7;1524:8;1513:9;1509:24;1482:61;:::i;:::-;1562:8;;-1:-1:-1;1456:87:1;-1:-1:-1;1644:2:1;1629:18;;1616:32;;-1:-1:-1;1456:87:1;;-1:-1:-1;1667:38:1;1701:2;1686:18;;1667:38;:::i;:::-;1657:48;;1752:3;1741:9;1737:19;1724:33;1714:43;;1810:3;1799:9;1795:19;1782:33;1766:49;;1840:2;1830:8;1827:16;1824:2;;;1861:6;1853;1846:22;1824:2;1904:8;1893:9;1889:24;1879:34;;1951:7;1944:4;1940:2;1936:13;1932:27;1922:2;;1978:6;1970;1963:22;1922:2;2019;2006:16;2041:2;2037;2034:10;2031:2;;;2047:18;;:::i;:::-;2122:2;2116:9;2090:2;2176:13;;-1:-1:-1;;2172:22:1;;;2196:2;2168:31;2164:40;2152:53;;;2220:18;;;2240:22;;;2217:46;2214:2;;;2266:18;;:::i;:::-;2306:10;2302:2;2295:22;2341:2;2333:6;2326:18;2381:7;2376:2;2371;2367;2363:11;2359:20;2356:33;2353:2;;;2407:6;2399;2392:22;2353:2;2468;2463;2459;2455:11;2450:2;2442:6;2438:15;2425:46;2513:6;2508:2;2503;2495:6;2491:15;2487:24;2480:40;2539:6;2529:16;;;;;;;978:1573;;;;;;;;;;;:::o;2556:190::-;2615:6;2668:2;2656:9;2647:7;2643:23;2639:32;2636:2;;;2689:6;2681;2674:22;2636:2;-1:-1:-1;2717:23:1;;2626:120;-1:-1:-1;2626:120:1:o;2751:194::-;2821:6;2874:2;2862:9;2853:7;2849:23;2845:32;2842:2;;;2895:6;2887;2880:22;2842:2;-1:-1:-1;2923:16:1;;2832:113;-1:-1:-1;2832:113:1:o;2950:264::-;3018:6;3026;3079:2;3067:9;3058:7;3054:23;3050:32;3047:2;;;3100:6;3092;3085:22;3047:2;3141:9;3128:23;3118:33;;3170:38;3204:2;3193:9;3189:18;3170:38;:::i;:::-;3160:48;;3037:177;;;;;:::o;3219:361::-;3284:6;3292;3345:2;3333:9;3324:7;3320:23;3316:32;3313:2;;;3366:6;3358;3351:22;3313:2;3407:9;3394:23;3384:33;;3467:2;3456:9;3452:18;3439:32;3514:5;3507:13;3500:21;3493:5;3490:32;3480:2;;3541:6;3533;3526:22;3480:2;3569:5;3559:15;;;3303:277;;;;;:::o;3585:475::-;3626:3;3664:5;3658:12;3691:6;3686:3;3679:19;3716:3;3728:162;3742:6;3739:1;3736:13;3728:162;;;3804:4;3860:13;;;3856:22;;3850:29;3832:11;;;3828:20;;3821:59;3757:12;3728:162;;;3908:6;3905:1;3902:13;3899:2;;;3974:3;3967:4;3958:6;3953:3;3949:16;3945:27;3938:40;3899:2;-1:-1:-1;4042:2:1;4021:15;-1:-1:-1;;4017:29:1;4008:39;;;;4049:4;4004:50;;3634:426;-1:-1:-1;;3634:426:1:o;4065:1100::-;4191:3;4220;4255:6;4249:13;4285:3;4307:1;4335:9;4331:2;4327:18;4317:28;;4395:2;4384:9;4380:18;4417;4407:2;;4461:4;4453:6;4449:17;4439:27;;4407:2;4487;4535;4527:6;4524:14;4504:18;4501:38;4498:2;;;-1:-1:-1;;;4562:33:1;;4618:4;4615:1;4608:15;4648:4;4569:3;4636:17;4498:2;4679:18;4706:104;;;;4824:1;4819:321;;;;4672:468;;4706:104;-1:-1:-1;;4739:24:1;;4727:37;;4784:16;;;;-1:-1:-1;4706:104:1;;4819:321;17040:4;17059:17;;;17109:4;17093:21;;4913:3;4929:165;4943:6;4940:1;4937:13;4929:165;;;5021:14;;5008:11;;;5001:35;5064:16;;;;4958:10;;4929:165;;;4933:3;;5123:6;5118:3;5114:16;5107:23;;4672:468;-1:-1:-1;5156:3:1;;4199:966;-1:-1:-1;;;;;;;;4199:966:1:o;5378:385::-;5610:1;5606;5601:3;5597:11;5593:19;5585:6;5581:32;5570:9;5563:51;5650:6;5645:2;5634:9;5630:18;5623:34;5693:2;5688;5677:9;5673:18;5666:30;5544:4;5713:44;5753:2;5742:9;5738:18;5730:6;5713:44;:::i;:::-;5705:52;5553:210;-1:-1:-1;;;;;5553:210:1:o;6112:217::-;6259:2;6248:9;6241:21;6222:4;6279:44;6319:2;6308:9;6304:18;6296:6;6279:44;:::i;6554:345::-;6703:2;6688:18;;6736:1;6725:13;;6715:2;;6781:10;6776:3;6772:20;6769:1;6762:31;6816:4;6813:1;6806:15;6844:4;6841:1;6834:15;6715:2;6868:25;;;6670:229;:::o;6904:1033::-;7288:4;7317:3;7347:2;7336:9;7329:21;7373:44;7413:2;7402:9;7398:18;7390:6;7373:44;:::i;:::-;7359:58;;7465:9;7457:6;7453:22;7448:2;7437:9;7433:18;7426:50;7493:32;7518:6;7510;7493:32;:::i;:::-;-1:-1:-1;;;;;7599:15:1;;;7594:2;7579:18;;7572:43;7651:15;;;;7646:2;7631:18;;7624:43;-1:-1:-1;7698:3:1;7683:19;;7676:35;;;;7552:3;7727:19;;7720:35;;;;7786:3;7771:19;;7764:35;;;;7830:3;7815:19;;7808:35;7874:3;7859:19;;7852:35;7918:3;7903:19;;;7896:35;7485:40;7297:640;-1:-1:-1;;;7297:640:1:o;11653:399::-;11855:2;11837:21;;;11894:2;11874:18;;;11867:30;11933:34;11928:2;11913:18;;11906:62;-1:-1:-1;;;11999:2:1;11984:18;;11977:33;12042:3;12027:19;;11827:225::o;16602:387::-;16789:25;;;-1:-1:-1;;;;;16850:32:1;;16845:2;16830:18;;16823:60;16919:2;16914;16899:18;;16892:30;;;-1:-1:-1;;16939:44:1;;16964:18;;16956:6;16939:44;:::i;17125:128::-;17165:3;17196:1;17192:6;17189:1;17186:13;17183:2;;;17202:18;;:::i;:::-;-1:-1:-1;17238:9:1;;17173:80::o;17258:125::-;17298:4;17326:1;17323;17320:8;17317:2;;;17331:18;;:::i;:::-;-1:-1:-1;17368:9:1;;17307:76::o;17388:380::-;17467:1;17463:12;;;;17510;;;17531:2;;17585:4;17577:6;17573:17;17563:27;;17531:2;17638;17630:6;17627:14;17607:18;17604:38;17601:2;;;17684:10;17679:3;17675:20;17672:1;17665:31;17719:4;17716:1;17709:15;17747:4;17744:1;17737:15;17773:135;17812:3;-1:-1:-1;;17833:17:1;;17830:2;;;17853:18;;:::i;:::-;-1:-1:-1;17900:1:1;17889:13;;17820:88::o;17913:127::-;17974:10;17969:3;17965:20;17962:1;17955:31;18005:4;18002:1;17995:15;18029:4;18026:1;18019:15;18045:127;18106:10;18101:3;18097:20;18094:1;18087:31;18137:4;18134:1;18127:15;18161:4;18158:1;18151:15

Swarm Source

ipfs://6845c4d8a9bdd0d955becdba3f4f38b291d8adcecb79eb0b26a4527c633867bd
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.