Contract 0x516ffd7D1e0Ca40b1879935B2De87cb20Fc1124b

 

Contract Overview

Balance:
1,774.245955133103784409 BNB

BNB Value:
$535,733.57 (@ $301.95/BNB)

Token:
 
Txn Hash
Block
From
To
Value [Txn Fee]
0x33e980a8d3e6e148f40bf79a6c4ebc3ee5df67107b180dca5be72acf0834b6d2(pending)2021-07-25 7:16:496 secs ago0x17d495ab039ad104c5f2835135ed05ee6b4eaa71 IN 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.011768347470422555 BNB(Pending)
0x1222a22b106c26294d8a60ff030a35f2b98e0c00e634d26cb4d3469da3ab2e8694592932021-07-25 7:16:4015 secs ago0x9c733f7f09c070fce9fa033747eab0a5f7d6c30c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x73faac3eb5973d44422b8f885724084b702b070caf600390136a01b89b6f315e94592912021-07-25 7:16:3421 secs ago0x3c7a328f62493b6038dcb381f9766ed0500532b0 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xa665432c8cf8af73153da5b55784469e50424f47dcf5d0d89338d64c4b7cd20d94592912021-07-25 7:16:3421 secs ago0x6edd592e652fc6d7f6cc49380c2eb00c2e48809b IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000486522
0x95cf64f3129dd582b1e286e51bf0131b776a6d9e840ff03b8f05ce2ba2dc7c2594592892021-07-25 7:16:2827 secs ago0x37cd6ec152504cbed590fe9b0941bf0a899b4bf6 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.066 BNB0.000682638
0x420eb3be8e5d6bf7add9a0f32891a7b935746efde9fbe1d40637d91fe0a97c3294592852021-07-25 7:16:1639 secs ago0xf233ca5cfb53272d5097ae03aebde5758634465b IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x248e64f5d4bb4489e2ce62de112c11ac3b16406a76268d1c8175af58612a127194592852021-07-25 7:16:1639 secs ago0x27881ccf619ebc7f2f8c2f7749c9f1ddd81e88f4 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.041290284335381 BNB0.000567318
0x0379b28365fb7c882d093fd744a12f00632d35b8f65b2c2b16cfdd37d8fd3d0794592822021-07-25 7:16:0748 secs ago0xd7a87414a0fe4be90f4b2cc87eece6aaa4e96880 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00037171
0x6ae0bd980f27e2601d5c3d7326021405f08aa5113afc0b6b7be84734481665ef94592812021-07-25 7:16:0451 secs ago0x9fa6bbbf32c172763d5ec0fc572f972a052c300d IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.077766983937428 BNB0.000567318
0x7de64cf5e69a1ac6f6dd491f63b0444706aad929e8f8717e11883dc943773bb294592792021-07-25 7:15:5857 secs ago0xa722e6ab99186a1c655b5bb14ae4f01f34de7fb9 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x92b2de6cc83ae97db8d30439019a1bbe8e54b0dd6d8c4d214c00111670712aca94592772021-07-25 7:15:521 min ago0xb070fc82a831c45db7d172204a1042501c828636 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.01 BNB0.000567318
0xed69dd01c56fd2800f8e66fd41e97dd24fe068a09955e8b012566c54517cc7bf94592742021-07-25 7:15:431 min ago0x7d6475b35b141227bc8782009723ed66fc08e9c4 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000486522
0x758f26ff11e0d1617cc482a68ab20afa0ab5967312fc988f670b875e0a69eca094592732021-07-25 7:15:401 min ago0x151e92ba2fb6d84de0a9112dfd0f40f234b9f42e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x39c0c5742ef9796e82d771e0074dc6bf09d7df031261b2d61105a1a72bcbb65c94592712021-07-25 7:15:341 min ago0x37cd6ec152504cbed590fe9b0941bf0a899b4bf6 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x24a2434d2a3f3297a486af4e4d48acafe5478eca0d38d10f09fc763ffb6e661894592702021-07-25 7:15:311 min ago0x1d7927a58ed3186d843917051519106fb7013a6e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xbbf616dc4ac3467b146d0b38d7af00eb1bfdb93e23769994ce7d1707c5725f1f94592702021-07-25 7:15:311 min ago0x53c99eb20601f99e1e3a6b02e34f59396299939f IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x2275b32a2a5fac0864a1cde64f04c9e613986cb6dbddcded1a90e6b6de9404ba94592702021-07-25 7:15:311 min ago0x6ea23902f5cd47cca2aabc91410ba9d46018c9c2 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xcb72a140f092c40a3358f50e54daf22b0914afd4e0c0d9afe87382f3e58efb3294592692021-07-25 7:15:281 min ago0xc5a6a75dd8aaf168c8653ac08e82eb7a796cba2f IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.043882892543384 BNB0.000772638
0x4e74e7a9f1cc87e1d3ca4eae97d6c0d0412aac8b71fd1fc691702debdc0809af94592672021-07-25 7:15:221 min ago0x3eb70a21b57cce89675afbee8ddd631c969e1b59 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xf5717d2501e74bde1f77a94ab16c8c3eecfbdaba361f6701ae146a41269e968094592642021-07-25 7:15:131 min ago0x7ef711ee185c025b62dfd97c26e5c6442e8d4dea IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xdbc313ba8f208120021c435fd1d85e36b6e42e7ea9c0c30bf744f333435d9b9094592642021-07-25 7:15:131 min ago0x6125c6e2c159daaa264ca8c839cf858f761050ee IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x6f5c3696efaf86c16b1f81be6fbfc4d28f337d16a850199a87f4c6a7f47d767594592622021-07-25 7:15:071 min ago0xebbcb239b29ebe50c4bdfed61b90eb6143902b78 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x373cbc059c07815dfe51f60c98c3f10071a183e8dac67800215521743d62f1f294592622021-07-25 7:15:071 min ago0x10abc05b13c865d8ac5fd9555869ce8ab5e5e278 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000486522
0x0f9c4a6a6057525b34ca9e06997f4bc148ccebfa389a3693599fe4bc6e5e200994592612021-07-25 7:15:041 min ago0xb2a870efc8c19cda978453280aad3b3632a364c5 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x6e7af7c40f273a82c628f86b03c6c2e6c2cd243e84a169cb27b8d83c7978249994592612021-07-25 7:15:041 min ago0xc835d0e5af9949444eb101f82b58e5b21bd991cb IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x420eb3be8e5d6bf7add9a0f32891a7b935746efde9fbe1d40637d91fe0a97c3294592852021-07-25 7:16:1639 secs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xf233ca5cfb53272d5097ae03aebde5758634465b0.159260219666049965 BNB
0x7de64cf5e69a1ac6f6dd491f63b0444706aad929e8f8717e11883dc943773bb294592792021-07-25 7:15:5857 secs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xa722e6ab99186a1c655b5bb14ae4f01f34de7fb90.27074237343228496 BNB
0xed69dd01c56fd2800f8e66fd41e97dd24fe068a09955e8b012566c54517cc7bf94592742021-07-25 7:15:431 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x7d6475b35b141227bc8782009723ed66fc08e9c40.36629850523191492 BNB
0x758f26ff11e0d1617cc482a68ab20afa0ab5967312fc988f670b875e0a69eca094592732021-07-25 7:15:401 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x151e92ba2fb6d84de0a9112dfd0f40f234b9f42e0.40184714594688934 BNB
0x39c0c5742ef9796e82d771e0074dc6bf09d7df031261b2d61105a1a72bcbb65c94592712021-07-25 7:15:341 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x37cd6ec152504cbed590fe9b0941bf0a899b4bf60.105111744979592977 BNB
0x24a2434d2a3f3297a486af4e4d48acafe5478eca0d38d10f09fc763ffb6e661894592702021-07-25 7:15:311 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x1d7927a58ed3186d843917051519106fb7013a6e0.002707423734322849 BNB
0xbbf616dc4ac3467b146d0b38d7af00eb1bfdb93e23769994ce7d1707c5725f1f94592702021-07-25 7:15:311 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x53c99eb20601f99e1e3a6b02e34f59396299939f0.079630109833024982 BNB
0x2275b32a2a5fac0864a1cde64f04c9e613986cb6dbddcded1a90e6b6de9404ba94592702021-07-25 7:15:311 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6ea23902f5cd47cca2aabc91410ba9d46018c9c20.668892922597409854 BNB
0x4e74e7a9f1cc87e1d3ca4eae97d6c0d0412aac8b71fd1fc691702debdc0809af94592672021-07-25 7:15:221 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3eb70a21b57cce89675afbee8ddd631c969e1b590.003695411396529195 BNB
0xf5717d2501e74bde1f77a94ab16c8c3eecfbdaba361f6701ae146a41269e968094592642021-07-25 7:15:131 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x7ef711ee185c025b62dfd97c26e5c6442e8d4dea0.034014836428623666 BNB
0xdbc313ba8f208120021c435fd1d85e36b6e42e7ea9c0c30bf744f333435d9b9094592642021-07-25 7:15:131 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6125c6e2c159daaa264ca8c839cf858f761050ee0.045246041893588586 BNB
0x6f5c3696efaf86c16b1f81be6fbfc4d28f337d16a850199a87f4c6a7f47d767594592622021-07-25 7:15:071 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xebbcb239b29ebe50c4bdfed61b90eb6143902b780.418868975615899877 BNB
0x373cbc059c07815dfe51f60c98c3f10071a183e8dac67800215521743d62f1f294592622021-07-25 7:15:071 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x10abc05b13c865d8ac5fd9555869ce8ab5e5e2780.039272368671588236 BNB
0x0f9c4a6a6057525b34ca9e06997f4bc148ccebfa389a3693599fe4bc6e5e200994592612021-07-25 7:15:041 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xb2a870efc8c19cda978453280aad3b3632a364c50.238890329499074948 BNB
0x6e7af7c40f273a82c628f86b03c6c2e6c2cd243e84a169cb27b8d83c7978249994592612021-07-25 7:15:041 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xc835d0e5af9949444eb101f82b58e5b21bd991cb0.812227120296854823 BNB
0x7e9e0221862abf406bd413c258f4d64fa2da1ddf11c1ad8119f35fcbd0f81d9c94592612021-07-25 7:15:041 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x7679f1f1d5e659eed411edd651f8c35097cccba20.015926021966604996 BNB
0x4eb8657a17f43d0b1de3eaed5bc6e89c9137357a7d5715ed42f32bbcfa17ab0e94592602021-07-25 7:15:011 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x4c1f0625096c0635c05d04977572873329ad4e590.116149981618923887 BNB
0xc5009be60e8e69fcc93065a71b600679ced83caada92707499291eed4c6b4a6194592172021-07-25 7:12:524 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x8cbee3256950ae62e19a113fc90de02f7d1284270.002393537003519427 BNB
0xde76ed12e387e7a886e7568b59720d5715b491218b3627a5a9f1cc92eb56476a94592082021-07-25 7:12:254 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x4d58630f28d9c4adfe9c6bc45f0510621fd4e03d0.337539565471827442 BNB
0x507503b44b0c2521f70a63ca1a544aeadbc8e49537b78c413b0e7707b50eb20b94592072021-07-25 7:12:224 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x809ed8ceeb5adebeea6da2d700c114d4c88e4bec0.03357259920914368 BNB
0xc8b62235338f0569a8689f54e29bde6449f1669e459a1cc2017070a9cef61e8c94592052021-07-25 7:12:164 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xf1dbe8f7b4b2572495b4436398f1e078390c4f120.239353700351942787 BNB
0x24a1b35e2a9091170c30af85e8fe74c2a166639051549f04cae32fc30434350b94592042021-07-25 7:12:134 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3e6c41c4906815f2ddc274b6edc58af0c79473f00.370519528144807434 BNB
0x7f3af90ec1aa6e11fd58bcf971dba08b8bb2c66d001f3643127630781598458594592002021-07-25 7:12:014 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x0ff527929e42222f74f0b6c551af39112f6c9e350.035903055052791418 BNB
0x7a3eeb00c1211731fca587289bf28eb1c969f9479b1a24328332f1074c756c2994591952021-07-25 7:11:465 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x80cffdca4d7e05eb25e703a183e98c7a4094eec00.101379294048267872 BNB
0xa45488d531adba9ae342ba58954c901cdb3cca4c02cbec92c8aa3c1142f7cb1294591952021-07-25 7:11:465 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6edd592e652fc6d7f6cc49380c2eb00c2e48809b0.168091398415244745 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BnbPricePrediction

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-28
*/

// File: @openzeppelin/contracts/math/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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) {
        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) {
        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) {
        // 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) {
        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) {
        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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @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. 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) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b > 0, "SafeMath: modulo by zero");
        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) {
        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.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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) {
        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) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/utils/Context.sol

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: @openzeppelin/contracts/utils/Pausable.sol

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() internal {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: contracts/interfaces/AggregatorV3Interface.sol

pragma solidity >=0.6.0;

interface AggregatorV3Interface {
    function decimals() external view returns (uint8);

    function description() external view returns (string memory);

    function version() external view returns (uint256);

    // getRoundData and latestRoundData should both raise "No data present"
    // if they do not have data to report, instead of returning unset values
    // which could be misinterpreted as actual reported values.
    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}

// File: contracts/BnbPricePrediction.sol

pragma solidity 0.6.12;

contract BnbPricePrediction is Ownable, Pausable {
    using SafeMath for uint256;

    struct Round {
        uint256 epoch;
        uint256 startBlock;
        uint256 lockBlock;
        uint256 endBlock;
        int256 lockPrice;
        int256 closePrice;
        uint256 totalAmount;
        uint256 bullAmount;
        uint256 bearAmount;
        uint256 rewardBaseCalAmount;
        uint256 rewardAmount;
        bool oracleCalled;
    }

    enum Position {Bull, Bear}

    struct BetInfo {
        Position position;
        uint256 amount;
        bool claimed; // default false
    }

    mapping(uint256 => Round) public rounds;
    mapping(uint256 => mapping(address => BetInfo)) public ledger;
    mapping(address => uint256[]) public userRounds;
    uint256 public currentEpoch;
    uint256 public intervalBlocks;
    uint256 public bufferBlocks;
    address public adminAddress;
    address public operatorAddress;
    uint256 public treasuryAmount;
    AggregatorV3Interface internal oracle;
    uint256 public oracleLatestRoundId;

    uint256 public constant TOTAL_RATE = 100; // 100%
    uint256 public rewardRate = 90; // 90%
    uint256 public treasuryRate = 10; // 10%
    uint256 public minBetAmount;
    uint256 public oracleUpdateAllowance; // seconds

    bool public genesisStartOnce = false;
    bool public genesisLockOnce = false;

    event StartRound(uint256 indexed epoch, uint256 blockNumber);
    event LockRound(uint256 indexed epoch, uint256 blockNumber, int256 price);
    event EndRound(uint256 indexed epoch, uint256 blockNumber, int256 price);
    event BetBull(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event BetBear(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event Claim(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event ClaimTreasury(uint256 amount);
    event RatesUpdated(uint256 indexed epoch, uint256 rewardRate, uint256 treasuryRate);
    event MinBetAmountUpdated(uint256 indexed epoch, uint256 minBetAmount);
    event RewardsCalculated(
        uint256 indexed epoch,
        uint256 rewardBaseCalAmount,
        uint256 rewardAmount,
        uint256 treasuryAmount
    );
    event Pause(uint256 epoch);
    event Unpause(uint256 epoch);

    constructor(
        AggregatorV3Interface _oracle,
        address _adminAddress,
        address _operatorAddress,
        uint256 _intervalBlocks,
        uint256 _bufferBlocks,
        uint256 _minBetAmount,
        uint256 _oracleUpdateAllowance
    ) public {
        oracle = _oracle;
        adminAddress = _adminAddress;
        operatorAddress = _operatorAddress;
        intervalBlocks = _intervalBlocks;
        bufferBlocks = _bufferBlocks;
        minBetAmount = _minBetAmount;
        oracleUpdateAllowance = _oracleUpdateAllowance;
    }

    modifier onlyAdmin() {
        require(msg.sender == adminAddress, "admin: wut?");
        _;
    }

    modifier onlyOperator() {
        require(msg.sender == operatorAddress, "operator: wut?");
        _;
    }

    modifier onlyAdminOrOperator() {
        require(msg.sender == adminAddress || msg.sender == operatorAddress, "admin | operator: wut?");
        _;
    }

    modifier notContract() {
        require(!_isContract(msg.sender), "contract not allowed");
        require(msg.sender == tx.origin, "proxy contract not allowed");
        _;
    }

    /**
     * @dev set admin address
     * callable by owner
     */
    function setAdmin(address _adminAddress) external onlyOwner {
        require(_adminAddress != address(0), "Cannot be zero address");
        adminAddress = _adminAddress;
    }

    /**
     * @dev set operator address
     * callable by admin
     */
    function setOperator(address _operatorAddress) external onlyAdmin {
        require(_operatorAddress != address(0), "Cannot be zero address");
        operatorAddress = _operatorAddress;
    }

    /**
     * @dev set interval blocks
     * callable by admin
     */
    function setIntervalBlocks(uint256 _intervalBlocks) external onlyAdmin {
        intervalBlocks = _intervalBlocks;
    }

    /**
     * @dev set buffer blocks
     * callable by admin
     */
    function setBufferBlocks(uint256 _bufferBlocks) external onlyAdmin {
        require(_bufferBlocks <= intervalBlocks, "Cannot be more than intervalBlocks");
        bufferBlocks = _bufferBlocks;
    }

    /**
     * @dev set Oracle address
     * callable by admin
     */
    function setOracle(address _oracle) external onlyAdmin {
        require(_oracle != address(0), "Cannot be zero address");
        oracle = AggregatorV3Interface(_oracle);
    }

    /**
     * @dev set oracle update allowance
     * callable by admin
     */
    function setOracleUpdateAllowance(uint256 _oracleUpdateAllowance) external onlyAdmin {
        oracleUpdateAllowance = _oracleUpdateAllowance;
    }

    /**
     * @dev set reward rate
     * callable by admin
     */
    function setRewardRate(uint256 _rewardRate) external onlyAdmin {
        require(_rewardRate <= TOTAL_RATE, "rewardRate cannot be more than 100%");
        rewardRate = _rewardRate;
        treasuryRate = TOTAL_RATE.sub(_rewardRate);

        emit RatesUpdated(currentEpoch, rewardRate, treasuryRate);
    }

    /**
     * @dev set treasury rate
     * callable by admin
     */
    function setTreasuryRate(uint256 _treasuryRate) external onlyAdmin {
        require(_treasuryRate <= TOTAL_RATE, "treasuryRate cannot be more than 100%");
        rewardRate = TOTAL_RATE.sub(_treasuryRate);
        treasuryRate = _treasuryRate;

        emit RatesUpdated(currentEpoch, rewardRate, treasuryRate);
    }

    /**
     * @dev set minBetAmount
     * callable by admin
     */
    function setMinBetAmount(uint256 _minBetAmount) external onlyAdmin {
        minBetAmount = _minBetAmount;

        emit MinBetAmountUpdated(currentEpoch, minBetAmount);
    }

    /**
     * @dev Start genesis round
     */
    function genesisStartRound() external onlyOperator whenNotPaused {
        require(!genesisStartOnce, "Can only run genesisStartRound once");

        currentEpoch = currentEpoch + 1;
        _startRound(currentEpoch);
        genesisStartOnce = true;
    }

    /**
     * @dev Lock genesis round
     */
    function genesisLockRound() external onlyOperator whenNotPaused {
        require(genesisStartOnce, "Can only run after genesisStartRound is triggered");
        require(!genesisLockOnce, "Can only run genesisLockRound once");
        require(
            block.number <= rounds[currentEpoch].lockBlock.add(bufferBlocks),
            "Can only lock round within bufferBlocks"
        );

        int256 currentPrice = _getPriceFromOracle();
        _safeLockRound(currentEpoch, currentPrice);

        currentEpoch = currentEpoch + 1;
        _startRound(currentEpoch);
        genesisLockOnce = true;
    }

    /**
     * @dev Start the next round n, lock price for round n-1, end round n-2
     */
    function executeRound() external onlyOperator whenNotPaused {
        require(
            genesisStartOnce && genesisLockOnce,
            "Can only run after genesisStartRound and genesisLockRound is triggered"
        );

        int256 currentPrice = _getPriceFromOracle();
        // CurrentEpoch refers to previous round (n-1)
        _safeLockRound(currentEpoch, currentPrice);
        _safeEndRound(currentEpoch - 1, currentPrice);
        _calculateRewards(currentEpoch - 1);

        // Increment currentEpoch to current round (n)
        currentEpoch = currentEpoch + 1;
        _safeStartRound(currentEpoch);
    }

    /**
     * @dev Bet bear position
     */
    function betBear() external payable whenNotPaused notContract {
        require(_bettable(currentEpoch), "Round not bettable");
        require(msg.value >= minBetAmount, "Bet amount must be greater than minBetAmount");
        require(ledger[currentEpoch][msg.sender].amount == 0, "Can only bet once per round");

        // Update round data
        uint256 amount = msg.value;
        Round storage round = rounds[currentEpoch];
        round.totalAmount = round.totalAmount.add(amount);
        round.bearAmount = round.bearAmount.add(amount);

        // Update user data
        BetInfo storage betInfo = ledger[currentEpoch][msg.sender];
        betInfo.position = Position.Bear;
        betInfo.amount = amount;
        userRounds[msg.sender].push(currentEpoch);

        emit BetBear(msg.sender, currentEpoch, amount);
    }

    /**
     * @dev Bet bull position
     */
    function betBull() external payable whenNotPaused notContract {
        require(_bettable(currentEpoch), "Round not bettable");
        require(msg.value >= minBetAmount, "Bet amount must be greater than minBetAmount");
        require(ledger[currentEpoch][msg.sender].amount == 0, "Can only bet once per round");

        // Update round data
        uint256 amount = msg.value;
        Round storage round = rounds[currentEpoch];
        round.totalAmount = round.totalAmount.add(amount);
        round.bullAmount = round.bullAmount.add(amount);

        // Update user data
        BetInfo storage betInfo = ledger[currentEpoch][msg.sender];
        betInfo.position = Position.Bull;
        betInfo.amount = amount;
        userRounds[msg.sender].push(currentEpoch);

        emit BetBull(msg.sender, currentEpoch, amount);
    }

    /**
     * @dev Claim reward
     */
    function claim(uint256 epoch) external notContract {
        require(rounds[epoch].startBlock != 0, "Round has not started");
        require(block.number > rounds[epoch].endBlock, "Round has not ended");
        require(!ledger[epoch][msg.sender].claimed, "Rewards claimed");

        uint256 reward;
        // Round valid, claim rewards
        if (rounds[epoch].oracleCalled) {
            require(claimable(epoch, msg.sender), "Not eligible for claim");
            Round memory round = rounds[epoch];
            reward = ledger[epoch][msg.sender].amount.mul(round.rewardAmount).div(round.rewardBaseCalAmount);
        }
        // Round invalid, refund bet amount
        else {
            require(refundable(epoch, msg.sender), "Not eligible for refund");
            reward = ledger[epoch][msg.sender].amount;
        }

        BetInfo storage betInfo = ledger[epoch][msg.sender];
        betInfo.claimed = true;
        _safeTransferBNB(address(msg.sender), reward);

        emit Claim(msg.sender, epoch, reward);
    }

    /**
     * @dev Claim all rewards in treasury
     * callable by admin
     */
    function claimTreasury() external onlyAdmin {
        uint256 currentTreasuryAmount = treasuryAmount;
        treasuryAmount = 0;
        _safeTransferBNB(adminAddress, currentTreasuryAmount);

        emit ClaimTreasury(currentTreasuryAmount);
    }

    /**
     * @dev Return round epochs that a user has participated
     */
    function getUserRounds(
        address user,
        uint256 cursor,
        uint256 size
    ) external view returns (uint256[] memory, uint256) {
        uint256 length = size;
        if (length > userRounds[user].length - cursor) {
            length = userRounds[user].length - cursor;
        }

        uint256[] memory values = new uint256[](length);
        for (uint256 i = 0; i < length; i++) {
            values[i] = userRounds[user][cursor + i];
        }

        return (values, cursor + length);
    }

    /**
     * @dev called by the admin to pause, triggers stopped state
     */
    function pause() public onlyAdminOrOperator whenNotPaused {
        _pause();

        emit Pause(currentEpoch);
    }

    /**
     * @dev called by the admin to unpause, returns to normal state
     * Reset genesis state. Once paused, the rounds would need to be kickstarted by genesis
     */
    function unpause() public onlyAdmin whenPaused {
        genesisStartOnce = false;
        genesisLockOnce = false;
        _unpause();

        emit Unpause(currentEpoch);
    }

    /**
     * @dev Get the claimable stats of specific epoch and user account
     */
    function claimable(uint256 epoch, address user) public view returns (bool) {
        BetInfo memory betInfo = ledger[epoch][user];
        Round memory round = rounds[epoch];
        if (round.lockPrice == round.closePrice) {
            return false;
        }
        return
            round.oracleCalled &&
            ((round.closePrice > round.lockPrice && betInfo.position == Position.Bull) ||
                (round.closePrice < round.lockPrice && betInfo.position == Position.Bear));
    }

    /**
     * @dev Get the refundable stats of specific epoch and user account
     */
    function refundable(uint256 epoch, address user) public view returns (bool) {
        BetInfo memory betInfo = ledger[epoch][user];
        Round memory round = rounds[epoch];
        return !round.oracleCalled && block.number > round.endBlock.add(bufferBlocks) && betInfo.amount != 0;
    }

    /**
     * @dev Start round
     * Previous round n-2 must end
     */
    function _safeStartRound(uint256 epoch) internal {
        require(genesisStartOnce, "Can only run after genesisStartRound is triggered");
        require(rounds[epoch - 2].endBlock != 0, "Can only start round after round n-2 has ended");
        require(block.number >= rounds[epoch - 2].endBlock, "Can only start new round after round n-2 endBlock");
        _startRound(epoch);
    }

    function _startRound(uint256 epoch) internal {
        Round storage round = rounds[epoch];
        round.startBlock = block.number;
        round.lockBlock = block.number.add(intervalBlocks);
        round.endBlock = block.number.add(intervalBlocks * 2);
        round.epoch = epoch;
        round.totalAmount = 0;

        emit StartRound(epoch, block.number);
    }

    /**
     * @dev Lock round
     */
    function _safeLockRound(uint256 epoch, int256 price) internal {
        require(rounds[epoch].startBlock != 0, "Can only lock round after round has started");
        require(block.number >= rounds[epoch].lockBlock, "Can only lock round after lockBlock");
        require(block.number <= rounds[epoch].lockBlock.add(bufferBlocks), "Can only lock round within bufferBlocks");
        _lockRound(epoch, price);
    }

    function _lockRound(uint256 epoch, int256 price) internal {
        Round storage round = rounds[epoch];
        round.lockPrice = price;

        emit LockRound(epoch, block.number, round.lockPrice);
    }

    /**
     * @dev End round
     */
    function _safeEndRound(uint256 epoch, int256 price) internal {
        require(rounds[epoch].lockBlock != 0, "Can only end round after round has locked");
        require(block.number >= rounds[epoch].endBlock, "Can only end round after endBlock");
        require(block.number <= rounds[epoch].endBlock.add(bufferBlocks), "Can only end round within bufferBlocks");
        _endRound(epoch, price);
    }

    function _endRound(uint256 epoch, int256 price) internal {
        Round storage round = rounds[epoch];
        round.closePrice = price;
        round.oracleCalled = true;

        emit EndRound(epoch, block.number, round.closePrice);
    }

    /**
     * @dev Calculate rewards for round
     */
    function _calculateRewards(uint256 epoch) internal {
        require(rewardRate.add(treasuryRate) == TOTAL_RATE, "rewardRate and treasuryRate must add up to TOTAL_RATE");
        require(rounds[epoch].rewardBaseCalAmount == 0 && rounds[epoch].rewardAmount == 0, "Rewards calculated");
        Round storage round = rounds[epoch];
        uint256 rewardBaseCalAmount;
        uint256 rewardAmount;
        uint256 treasuryAmt;
        // Bull wins
        if (round.closePrice > round.lockPrice) {
            rewardBaseCalAmount = round.bullAmount;
            rewardAmount = round.totalAmount.mul(rewardRate).div(TOTAL_RATE);
            treasuryAmt = round.totalAmount.mul(treasuryRate).div(TOTAL_RATE);
        }
        // Bear wins
        else if (round.closePrice < round.lockPrice) {
            rewardBaseCalAmount = round.bearAmount;
            rewardAmount = round.totalAmount.mul(rewardRate).div(TOTAL_RATE);
            treasuryAmt = round.totalAmount.mul(treasuryRate).div(TOTAL_RATE);
        }
        // House wins
        else {
            rewardBaseCalAmount = 0;
            rewardAmount = 0;
            treasuryAmt = round.totalAmount;
        }
        round.rewardBaseCalAmount = rewardBaseCalAmount;
        round.rewardAmount = rewardAmount;

        // Add to treasury
        treasuryAmount = treasuryAmount.add(treasuryAmt);

        emit RewardsCalculated(epoch, rewardBaseCalAmount, rewardAmount, treasuryAmt);
    }

    /**
     * @dev Get latest recorded price from oracle
     * If it falls below allowed buffer or has not updated, it would be invalid
     */
    function _getPriceFromOracle() internal returns (int256) {
        uint256 leastAllowedTimestamp = block.timestamp.add(oracleUpdateAllowance);
        (uint80 roundId, int256 price, , uint256 timestamp, ) = oracle.latestRoundData();
        require(timestamp <= leastAllowedTimestamp, "Oracle update exceeded max timestamp allowance");
        require(roundId > oracleLatestRoundId, "Oracle update roundId must be larger than oracleLatestRoundId");
        oracleLatestRoundId = uint256(roundId);
        return price;
    }

    function _safeTransferBNB(address to, uint256 value) internal {
        (bool success, ) = to.call{gas: 23000, value: value}("");
        require(success, "TransferHelper: BNB_TRANSFER_FAILED");
    }

    function _isContract(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    /**
     * @dev Determine if a round is valid for receiving bets
     * Round must have started and locked
     * Current block must be within startBlock and endBlock
     */
    function _bettable(uint256 epoch) internal view returns (bool) {
        return
            rounds[epoch].startBlock != 0 &&
            rounds[epoch].lockBlock != 0 &&
            block.number > rounds[epoch].startBlock &&
            block.number < rounds[epoch].lockBlock;
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract AggregatorV3Interface","name":"_oracle","type":"address"},{"internalType":"address","name":"_adminAddress","type":"address"},{"internalType":"address","name":"_operatorAddress","type":"address"},{"internalType":"uint256","name":"_intervalBlocks","type":"uint256"},{"internalType":"uint256","name":"_bufferBlocks","type":"uint256"},{"internalType":"uint256","name":"_minBetAmount","type":"uint256"},{"internalType":"uint256","name":"_oracleUpdateAllowance","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BetBear","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BetBull","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"int256","name":"price","type":"int256"}],"name":"EndRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"int256","name":"price","type":"int256"}],"name":"LockRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minBetAmount","type":"uint256"}],"name":"MinBetAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryRate","type":"uint256"}],"name":"RatesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardBaseCalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryAmount","type":"uint256"}],"name":"RewardsCalculated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"StartRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"TOTAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"betBear","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"betBull","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"bufferBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisLockOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisLockRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisStartOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisStartRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"cursor","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"name":"getUserRounds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"intervalBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"ledger","outputs":[{"internalType":"enum BnbPricePrediction.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleLatestRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleUpdateAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"refundable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rounds","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"lockBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"int256","name":"lockPrice","type":"int256"},{"internalType":"int256","name":"closePrice","type":"int256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"bullAmount","type":"uint256"},{"internalType":"uint256","name":"bearAmount","type":"uint256"},{"internalType":"uint256","name":"rewardBaseCalAmount","type":"uint256"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"bool","name":"oracleCalled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adminAddress","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bufferBlocks","type":"uint256"}],"name":"setBufferBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervalBlocks","type":"uint256"}],"name":"setIntervalBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBetAmount","type":"uint256"}],"name":"setMinBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operatorAddress","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_oracleUpdateAllowance","type":"uint256"}],"name":"setOracleUpdateAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryRate","type":"uint256"}],"name":"setTreasuryRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052605a600c55600a600d556010805461ffff191690553480156200002657600080fd5b50604051620044af380380620044af833981810160405260e08110156200004c57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919060006200008562000132565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b19169055600a80546001600160a01b03199081166001600160a01b03998a161790915560078054821697891697909717909655600880549096169490961693909317909355600555600691909155600e55600f5562000136565b3390565b61436980620001466000396000f3fe6080604052600436106102cf5760003560e01c8063821daba111610179578063b3ab15fb116100d6578063e4b725161161008a578063f7fdec2811610064578063f7fdec281461097a578063fa968eea1461098f578063fc6f9468146109a4576102cf565b8063e4b7251614610910578063ec32470314610925578063f2fde38b1461093a576102cf565b8063d0bf9c54116100bb578063d0bf9c541461088b578063d9d55eac146108b5578063dd1f7596146108ca576102cf565b8063b3ab15fb14610821578063cf2f503914610861576102cf565b80639780a7521161012d578063a067455b11610112578063a067455b1461079c578063a0c7f71c146107c6578063b29c299b1461080c576102cf565b80639780a7521461075d5780639e447fc614610772576102cf565b80638c65c81f1161015e5780638c65c81f146106165780638da5cb5b146106a1578063951fd600146106b6576102cf565b8063821daba1146105f95780638456cb5914610601576102cf565b80635c975abb116102325780637285c58b116101e65780637b0a47ee116101c05780637b0a47ee146105895780637b3205f51461059e5780637bf41254146105b3576102cf565b80637285c58b146104bd57806376671808146105345780637adbf97314610549576102cf565b80636c188593116102175780636c1885931461043e578063704b6c0214610468578063715018a6146104a8576102cf565b80635c975abb146104145780636055401114610429576102cf565b80631ec9f34b11610289578063379607f51161026e578063379607f5146103c05780633f4ba83a146103ea578063452fd75a146103ff576102cf565b80631ec9f34b14610384578063368acb09146103ab576102cf565b80630f74174f116102ba5780630f74174f146102f357806310c0ee641461031c578063127effb214610346576102cf565b80623bdc74146102d457806288160f146102eb575b600080fd5b3480156102e057600080fd5b506102e96109b9565b005b6102e9610aa1565b3480156102ff57600080fd5b50610308610e39565b604080519115158252519081900360200190f35b34801561032857600080fd5b506102e96004803603602081101561033f57600080fd5b5035610e47565b34801561035257600080fd5b5061035b610f2d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561039057600080fd5b50610399610f49565b60408051918252519081900360200190f35b3480156103b757600080fd5b50610399610f4f565b3480156103cc57600080fd5b506102e9600480360360208110156103e357600080fd5b5035610f55565b3480156103f657600080fd5b506102e9611445565b34801561040b57600080fd5b506102e96115a5565b34801561042057600080fd5b5061030861173c565b34801561043557600080fd5b5061039961175d565b34801561044a57600080fd5b506102e96004803603602081101561046157600080fd5b5035611763565b34801561047457600080fd5b506102e96004803603602081101561048b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611827565b3480156104b457600080fd5b506102e9611998565b3480156104c957600080fd5b50610503600480360360408110156104e057600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611aaf565b6040518084600181111561051357fe5b81526020018381526020018215158152602001935050505060405180910390f35b34801561054057600080fd5b50610399611ade565b34801561055557600080fd5b506102e96004803603602081101561056c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ae4565b34801561059557600080fd5b50610399611c33565b3480156105aa57600080fd5b506102e9611c39565b3480156105bf57600080fd5b50610308600480360360408110156105d657600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611ded565b6102e9611f46565b34801561060d57600080fd5b506102e96122db565b34801561062257600080fd5b506106406004803603602081101561063957600080fd5b5035612436565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e0870152610100860152610120850152610140840152151561016083015251908190036101800190f35b3480156106ad57600080fd5b5061035b612499565b3480156106c257600080fd5b50610702600480360360608110156106d957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602081013590604001356124b5565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015610748578181015183820152602001610730565b50505050905001935050505060405180910390f35b34801561076957600080fd5b506103996125cf565b34801561077e57600080fd5b506102e96004803603602081101561079557600080fd5b50356125d5565b3480156107a857600080fd5b506102e9600480360360208110156107bf57600080fd5b503561270f565b3480156107d257600080fd5b50610308600480360360408110156107e957600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff1661279a565b34801561081857600080fd5b50610399612935565b34801561082d57600080fd5b506102e96004803603602081101561084457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661293a565b34801561086d57600080fd5b506102e96004803603602081101561088457600080fd5b5035612a89565b34801561089757600080fd5b506102e9600480360360208110156108ae57600080fd5b5035612b14565b3480156108c157600080fd5b506102e9612c4c565b3480156108d657600080fd5b50610399600480360360408110156108ed57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612ed6565b34801561091c57600080fd5b50610399612f04565b34801561093157600080fd5b50610399612f0a565b34801561094657600080fd5b506102e96004803603602081101561095d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612f10565b34801561098657600080fd5b506103086130b1565b34801561099b57600080fd5b506103996130ba565b3480156109b057600080fd5b5061035b6130c0565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a3f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600980546000909155600754610a6b9073ffffffffffffffffffffffffffffffffffffffff16826130dc565b6040805182815290517f609175abb7f12481e4f200d1ef4fc834e6caac3d9eadba42d664352f6d0932ca9181900360200190a150565b610aa961173c565b15610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b610b1e3361319d565b15610b8a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b333214610bf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b610c036004546131a3565b610c6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015290519081900360640190fd5b600e54341015610cc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140eb602c913960400191505060405180910390fd5b600454600090815260026020908152604080832033845290915290206001015415610d5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015290519081900360640190fd5b60045460009081526001602052604090206006810154349190610d78908361320f565b60068201556008810154610d8c908361320f565b60088201556004805460009081526002602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255808201899055600385528386208754815492830182559087529585902001949094559354815187815291519394909390927f0d8c1fe3e67ab767116a81f122b83c2557a8c2564019cb7c4f83de1aeb1f1f0d928290030190a3505050565b601054610100900460ff1681565b60075473ffffffffffffffffffffffffffffffffffffffff163314610ecd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600554811115610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613f946022913960400191505060405180910390fd5b600655565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60095481565b610f5e3361319d565b15610fca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b33321461103857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600081815260016020819052604090912001546110b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f526f756e6420686173206e6f7420737461727465640000000000000000000000604482015290519081900360640190fd5b600081815260016020526040902060030154431161113557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f526f756e6420686173206e6f7420656e64656400000000000000000000000000604482015290519081900360640190fd5b6000818152600260208181526040808420338552909152909120015460ff16156111c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5265776172647320636c61696d65640000000000000000000000000000000000604482015290519081900360640190fd5b6000818152600160205260408120600b015460ff1615611324576111e4823361279a565b61124f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e6f7420656c696769626c6520666f7220636c61696d00000000000000000000604482015290519081900360640190fd5b611257613f0e565b506000828152600160208181526040808420815161018081018352815481528185015481850152600280830154828501526003830154606083015260048301546080830152600583015460a0830152600683015460c0830152600783015460e0830152600883015461010083015260098301546101208301819052600a8401546101408401819052600b9094015460ff1615156101608401528988529085528387203388529094529190942090920154919261131c926113169161328a565b906132fd565b9150506113b8565b61132e8233611ded565b61139957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420656c696769626c6520666f7220726566756e64000000000000000000604482015290519081900360640190fd5b5060008181526002602090815260408083203384529091529020600101545b600082815260026020818152604080842033808652925290922090810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559061140990836130dc565b604080518381529051849133917f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79181900360200190a3505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146114cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b6114d361173c565b61153e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905561156e61337e565b60045460408051918252517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60085473ffffffffffffffffffffffffffffffffffffffff16331461162b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b61163361173c565b1561169f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff16156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806141bd6023913960400191505060405180910390fd5b600480546001019081905561170f9061346c565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60005474010000000000000000000000000000000000000000900460ff1690565b600f5481565b60075473ffffffffffffffffffffffffffffffffffffffff1633146117e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600e8190556004546040805183815290517f82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc76089181900360200190a250565b61182f6134f3565b73ffffffffffffffffffffffffffffffffffffffff1661184d612499565b73ffffffffffffffffffffffffffffffffffffffff16146118cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661195157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6119a06134f3565b73ffffffffffffffffffffffffffffffffffffffff166119be612499565b73ffffffffffffffffffffffffffffffffffffffff1614611a4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6002602081815260009384526040808520909152918352912080546001820154919092015460ff928316921683565b60045481565b60075473ffffffffffffffffffffffffffffffffffffffff163314611b6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611bec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600c5481565b60085473ffffffffffffffffffffffffffffffffffffffff163314611cbf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b611cc761173c565b15611d3357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff168015611d4c5750601054610100900460ff165b611da1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001806142036046913960600191505060405180910390fd5b6000611dab6134f7565b9050611db960045482613695565b611dc8600160045403826137eb565b611dd660016004540361393c565b6004805460010190819055611dea90613b5f565b50565b6000611df7613f71565b600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152908190208151606081019092528054829060ff166001811115611e4357fe5b6001811115611e4e57fe5b81526001820154602082015260029091015460ff1615156040909101529050611e75613f0e565b506000848152600160208181526040928390208351610180810185528154815292810154918301919091526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b9091015460ff161580156101608301819052611f2c57506006546060820151611f299161320f565b43115b8015611f3b5750602082015115155b925050505b92915050565b611f4e61173c565b15611fba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611fc33361319d565b1561202f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b33321461209d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6120a86004546131a3565b61211357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015290519081900360640190fd5b600e5434101561216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140eb602c913960400191505060405180910390fd5b6004546000908152600260209081526040808320338452909152902060010154156121fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015290519081900360640190fd5b6004546000908152600160205260409020600681015434919061221d908361320f565b60068201556007810154612231908361320f565b60078201556004805460009081526002602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556001808201899055600385528386208754815492830182559087529585902001949094559354815187815291519394909390927f438122d8cff518d18388099a5181f0d17a12b4f1b55faedf6e4a6acee0060c12928290030190a3505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331480612318575060085473ffffffffffffffffffffffffffffffffffffffff1633145b61238357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f61646d696e207c206f70657261746f723a207775743f00000000000000000000604482015290519081900360640190fd5b61238b61173c565b156123f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6123ff613cda565b60045460408051918252517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b909a01549899979896979596949593949293919290919060ff168c565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812054606091908390859003811115612516575073ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020548490035b60608167ffffffffffffffff8111801561252f57600080fd5b50604051908082528060200260200182016040528015612559578160200160208202803683370190505b50905060005b828110156125c45773ffffffffffffffffffffffffffffffffffffffff88166000908152600360205260409020805488830190811061259a57fe5b90600052602060002001548282815181106125b157fe5b602090810291909101015260010161255f565b509694019450505050565b60065481565b60075473ffffffffffffffffffffffffffffffffffffffff16331461265b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b60648111156126b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061426c6023913960400191505060405180910390fd5b600c8190556126c5606482613db6565b600d819055600454600c54604080519182526020820193909352825191927f023010bc68e7f4c0be9887f513c570c7a0f5f511b9716abccd42bf3b8943532b92918290030190a250565b60075473ffffffffffffffffffffffffffffffffffffffff16331461279557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600555565b60006127a4613f71565b600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152908190208151606081019092528054829060ff1660018111156127f057fe5b60018111156127fb57fe5b81526001820154602082015260029091015460ff1615156040909101529050612822613f0e565b5060008481526001602081815260409283902083516101808101855281548152928101549183019190915260028101549282019290925260038201546060820152600482015460808201819052600583015460a08301819052600684015460c0840152600784015460e084015260088401546101008401526009840154610120840152600a840154610140840152600b9093015460ff161515610160830152909114156128d457600092505050611f40565b8061016001518015611f3b575080608001518160a00151138015612904575060008251600181111561290257fe5b145b80611f3b575080608001518160a00151128015611f3b575060018251600181111561292b57fe5b1495945050505050565b606481565b60075473ffffffffffffffffffffffffffffffffffffffff1633146129c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612a4257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60075473ffffffffffffffffffffffffffffffffffffffff163314612b0f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600f55565b60075473ffffffffffffffffffffffffffffffffffffffff163314612b9a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b6064811115612bf4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806142b06025913960400191505060405180910390fd5b612bff606482613db6565b600c819055600d8290556004546040805192835260208301849052805191927f023010bc68e7f4c0be9887f513c570c7a0f5f511b9716abccd42bf3b8943532b929081900390910190a250565b60085473ffffffffffffffffffffffffffffffffffffffff163314612cd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b612cda61173c565b15612d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff16612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613fe16031913960400191505060405180910390fd5b601054610100900460ff1615612e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806140c96022913960400191505060405180910390fd5b600654600454600090815260016020526040902060020154612e239161320f565b431115612e7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806141176027913960400191505060405180910390fd5b6000612e856134f7565b9050612e9360045482613695565b6004805460010190819055612ea79061346c565b50601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60036020528160005260406000208181548110612eef57fe5b90600052602060002001600091509150505481565b600d5481565b600b5481565b612f186134f3565b73ffffffffffffffffffffffffffffffffffffffff16612f36612499565b73ffffffffffffffffffffffffffffffffffffffff1614612fb857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140126026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60105460ff1681565b600e5481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60405160009073ffffffffffffffffffffffffffffffffffffffff8416906159d890849084818181858888f193505050503d8060008114613139576040519150601f19603f3d011682016040523d82523d6000602084013e61313e565b606091505b5050905080613198576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806142496023913960400191505060405180910390fd5b505050565b3b151590565b600081815260016020819052604082200154158015906131d3575060008281526001602052604090206002015415155b80156131f057506000828152600160208190526040909120015443115b8015611f40575050600090815260016020526040902060020154431090565b60008282018381101561328357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008261329957506000611f40565b828202828482816132a657fe5b0414613283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141736021913960400191505060405180910390fd5b600080821161336d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161337657fe5b049392505050565b61338661173c565b6133f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6134426134f3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60008181526001602081905260409091204391810182905560055490916134929161320f565b6002808301919091556005546134aa9143910261320f565b60038201558181556000600682015560408051438152905183917f0e5543feb86a4cd302f2b88b26c42be2d1673013a34e1f98bd6d524dd3b4ab41919081900360200190a25050565b3390565b60008061350f600f544261320f90919063ffffffff16565b90506000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561357e57600080fd5b505afa158015613592573d6000803e3d6000fd5b505050506040513d60a08110156135a857600080fd5b5080516020820151606090920151909450909250905083811115613617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614306602e913960400191505060405180910390fd5b600b548369ffffffffffffffffffff161161367d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180614066603d913960400191505060405180910390fd5b5069ffffffffffffffffffff909116600b5591505090565b600082815260016020819052604090912001546136fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fb6602b913960400191505060405180910390fd5b600082815260016020526040902060020154431015613767576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806141e06023913960400191505060405180910390fd5b6006546000838152600160205260409020600201546137859161320f565b4311156137dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806141176027913960400191505060405180910390fd5b6137e78282613e2d565b5050565b600082815260016020526040902060020154613852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141946029913960400191505060405180910390fd5b6000828152600160205260409020600301544310156138bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061428f6021913960400191505060405180910390fd5b6006546000838152600160205260409020600301546138da9161320f565b431115613932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140a36026913960400191505060405180910390fd5b6137e78282613e87565b6064613955600d54600c5461320f90919063ffffffff16565b146139ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061413e6035913960400191505060405180910390fd5b6000818152600160205260409020600901541580156139d957506000818152600160205260409020600a0154155b613a4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526577617264732063616c63756c617465640000000000000000000000000000604482015290519081900360640190fd5b600081815260016020526040812060048101546005820154919291829182911315613ab55783600701549250613a8e6064611316600c54876006015461328a90919063ffffffff16565b9150613aae6064611316600d54876006015461328a90919063ffffffff16565b9050613af8565b836004015484600501541215613aea5783600801549250613a8e6064611316600c54876006015461328a90919063ffffffff16565b505050600681015460009081905b6009808501849055600a850183905554613b12908261320f565b6009556040805184815260208101849052808201839052905186917f6dfdfcb09c8804d0058826cd2539f1acfbe3cb887c9be03d928035bce0f1a58d919081900360600190a25050505050565b60105460ff16613bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613fe16031913960400191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8101600090815260016020526040902060030154613c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614038602e913960400191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8101600090815260016020526040902060030154431015613cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806142d56031913960400191505060405180910390fd5b611dea8161346c565b613ce261173c565b15613d4e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134426134f3565b600082821115613e2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828152600160209081526040918290206004810184905582514381529182018490528251909285927f482e76a65b448a42deef26e99e58fb20c85e26f075defff8df6aa80459b39006929081900390910190a2505050565b60008281526001602081815260409283902060058101859055600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690931790925582514381529081018490528251919285927fb6ff1fe915db84788cbbbc017f0d2bef9485fad9fd0bd8ce9340fde0d8410dd89281900390910190a2505050565b60405180610180016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604080516060810190915280600081526000602082018190526040909101529056fe43616e6e6f74206265206d6f7265207468616e20696e74657276616c426c6f636b7343616e206f6e6c79206c6f636b20726f756e6420616674657220726f756e6420686173207374617274656443616e206f6e6c792072756e2061667465722067656e657369735374617274526f756e64206973207472696767657265644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616e206f6e6c7920737461727420726f756e6420616674657220726f756e64206e2d322068617320656e6465644f7261636c652075706461746520726f756e644964206d757374206265206c6172676572207468616e206f7261636c654c6174657374526f756e64496443616e206f6e6c7920656e6420726f756e642077697468696e20627566666572426c6f636b7343616e206f6e6c792072756e2067656e657369734c6f636b526f756e64206f6e636542657420616d6f756e74206d7573742062652067726561746572207468616e206d696e426574416d6f756e7443616e206f6e6c79206c6f636b20726f756e642077697468696e20627566666572426c6f636b737265776172645261746520616e6420747265617375727952617465206d7573742061646420757020746f20544f54414c5f52415445536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616e206f6e6c7920656e6420726f756e6420616674657220726f756e6420686173206c6f636b656443616e206f6e6c792072756e2067656e657369735374617274526f756e64206f6e636543616e206f6e6c79206c6f636b20726f756e64206166746572206c6f636b426c6f636b43616e206f6e6c792072756e2061667465722067656e657369735374617274526f756e6420616e642067656e657369734c6f636b526f756e64206973207472696767657265645472616e7366657248656c7065723a20424e425f5452414e534645525f4641494c4544726577617264526174652063616e6e6f74206265206d6f7265207468616e203130302543616e206f6e6c7920656e6420726f756e6420616674657220656e64426c6f636b7472656173757279526174652063616e6e6f74206265206d6f7265207468616e203130302543616e206f6e6c79207374617274206e657720726f756e6420616674657220726f756e64206e2d3220656e64426c6f636b4f7261636c6520757064617465206578636565646564206d61782074696d657374616d7020616c6c6f77616e6365a26469706673582212205f381da2546906c21d47467cb54bd4e02bfd6b81997b4bec99f2fa296c32d26d64736f6c634300060c00330000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca891490000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000012c

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

0000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca891490000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000012c

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee
Arg [1] : 00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f
Arg [2] : 000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca89149
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [6] : 000000000000000000000000000000000000000000000000000000000000012c


Deployed ByteCode Sourcemap

14285:18740:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25167:256;;;;;;;;;;;;;:::i;:::-;;22206:851;;;:::i;15655:35::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18631:203;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18631:203:0;;:::i;15217:30::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15113:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15254;;;;;;;;;;;;;:::i;24017:1055::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24017:1055:0;;:::i;26448:184::-;;;;;;;;;;;;;:::i;20463:263::-;;;;;;;;;;;;;:::i;11976:86::-;;;;;;;;;;;;;:::i;15556:36::-;;;;;;;;;;;;;:::i;20225:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20225:179:0;;:::i;17880:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17880:180:0;;;;:::i;10340:148::-;;;;;;;;;;;;;:::i;14957:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14957:61:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15079:27;;;;;;;;;;;;;:::i;18918:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18918:180:0;;;;:::i;15432:30::-;;;;;;;;;;;;;:::i;21508:641::-;;;;;;;;;;;;;:::i;27337:295::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27337:295:0;;;;;;;;;:::i;23114:851::-;;;:::i;26138:122::-;;;;;;;;;;;;;:::i;14911:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14911:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9689:87;;;;;;;;;;;;;:::i;25511:535::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25511:535:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15149:27;;;;;;;;;;;;;:::i;19422:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19422:313:0;;:::i;18426:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18426:122:0;;:::i;26730:508::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26730:508:0;;;;;;;;;:::i;15377:40::-;;;;;;;;;;;;;:::i;18146:195::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18146:195:0;;;;:::i;19191:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19191:150:0;;:::i;19818:325::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19818:325:0;;:::i;20784:621::-;;;;;;;;;;;;;:::i;15025:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15025:47:0;;;;;;;;;:::i;15476:32::-;;;;;;;;;;;;;:::i;15334:34::-;;;;;;;;;;;;;:::i;10643:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10643:244:0;;;;:::i;15612:36::-;;;;;;;;;;;;;:::i;15522:27::-;;;;;;;;;;;;;:::i;15183:::-;;;;;;;;;;;;;:::i;25167:256::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25254:14:::1;::::0;;25222:29:::1;25279:18:::0;;;25325:12:::1;::::0;25308:53:::1;::::0;25325:12:::1;;25254:14:::0;25308:16:::1;:53::i;:::-;25379:36;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;17313:1;25167:256::o:0;22206:851::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:23:::1;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17723:10;17737:9;17723:23;17715:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22287:23:::2;22297:12;;22287:9;:23::i;:::-;22279:54;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;22365:12;;22352:9;:25;;22344:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22452:12;::::0;22445:20:::2;::::0;;;:6:::2;:20;::::0;;;;;;;22466:10:::2;22445:32:::0;;;;;;;:39:::2;;::::0;:44;22437:84:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;22630:12;::::0;22564:14:::2;22623:20:::0;;;:6:::2;:20;::::0;;;;22674:17:::2;::::0;::::2;::::0;22581:9:::2;::::0;22623:20;22674:29:::2;::::0;22581:9;22674:21:::2;:29::i;:::-;22654:17;::::0;::::2;:49:::0;22733:16:::2;::::0;::::2;::::0;:28:::2;::::0;22754:6;22733:20:::2;:28::i;:::-;22714:16;::::0;::::2;:47:::0;22836:12:::2;::::0;;22803:23:::2;22829:20:::0;;;:6:::2;:20;::::0;;;;;;;22850:10:::2;22829:32:::0;;;;;;;;;22872;;;::::2;22891:13;22872:32:::0;;::::2;::::0;;22915:14;;::::2;:23:::0;;;22949:10:::2;:22:::0;;;;;22977:12;;22949:41;;;;::::2;::::0;;;;;;;;;::::2;::::0;;;;23028:12;;23008:41;;;;;;;22829:32;;23028:12;;22850:10;;23008:41:::2;::::0;;;;;;::::2;17788:1;;;22206:851::o:0;15655:35::-;;;;;;;;;:::o;18631:203::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18734:14:::1;;18717:13;:31;;18709:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18798:12;:28:::0;18631:203::o;15217:30::-;;;;;;:::o;15113:29::-;;;;:::o;15254:::-;;;;:::o;24017:1055::-;17656:23;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17723:10;17737:9;17723:23;17715:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24087:13:::1;::::0;;;:6:::1;:13;::::0;;;;;;;:24:::1;::::0;24079:63:::1;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24176:13;::::0;;;:6:::1;:13;::::0;;;;:22:::1;;::::0;24161:12:::1;:37;24153:69;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24242:13;::::0;;;:6:::1;:13;::::0;;;;;;;24256:10:::1;24242:25:::0;;;;;;;;:33:::1;::::0;::::1;;24241:34;24233:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24308:14;24376:13:::0;;;:6:::1;:13;::::0;;;;:26:::1;;::::0;::::1;;24372:490;;;24427:28;24437:5;24444:10;24427:9;:28::i;:::-;24419:63;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24497:18;;:::i;:::-;-1:-1:-1::0;24518:13:0::1;::::0;;;:6:::1;:13;::::0;;;;;;;24497:34;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;::::0;;;;24555:13;;;;;;;;;24569:10:::1;24555:25:::0;;;;;;;;;:32;;::::1;::::0;24497:34;;24555:87:::1;::::0;:56:::1;::::0;:36:::1;:56::i;:::-;:60:::0;::::1;:87::i;:::-;24546:96;;24372:490;;;;24737:29;24748:5;24755:10;24737;:29::i;:::-;24729:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;24818:13:0::1;::::0;;;:6:::1;:13;::::0;;;;;;;24832:10:::1;24818:25:::0;;;;;;;:32:::1;;::::0;24372:490:::1;24874:23;24900:13:::0;;;:6:::1;:13;::::0;;;;;;;24914:10:::1;24900:25:::0;;;;;;;;24936:15;;::::1;:22:::0;;;::::1;24954:4;24936:22;::::0;;24900:25;24969:45:::1;::::0;25007:6;24969:16:::1;:45::i;:::-;25032:32;::::0;;;;;;;25050:5;;25038:10:::1;::::0;25032:32:::1;::::0;;;;::::1;::::0;;::::1;17788:1;;24017:1055:::0;:::o;26448:184::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12579:8:::1;:6;:8::i;:::-;12571:41;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26506:16:::2;:24:::0;;26541:23;;;;26575:10:::2;:8;:10::i;:::-;26611:12;::::0;26603:21:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;26448:184::o:0;20463:263::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20548:16:::2;::::0;::::2;;20547:17;20539:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20632:12;::::0;;20647:1:::2;20632:16;20617:31:::0;;;;20659:25:::2;::::0;:11:::2;:25::i;:::-;20695:16;:23:::0;;;::::2;20714:4;20695:23;::::0;;20463:263::o;11976:86::-;12023:4;12047:7;;;;;;;11976:86::o;15556:36::-;;;;:::o;20225:179::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20303:12:::1;:28:::0;;;20369:12:::1;::::0;20349:47:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;20225:179:::0;:::o;17880:180::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17959:27:::1;::::0;::::1;17951:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18024:12;:28:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;17880:180::o;10340:148::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10447:1:::1;10431:6:::0;;10410:40:::1;::::0;::::1;10431:6:::0;;::::1;::::0;10410:40:::1;::::0;10447:1;;10410:40:::1;10478:1;10461:19:::0;;;::::1;::::0;;10340:148::o;14957:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15079:27::-;;;;:::o;18918:180::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18992:21:::1;::::0;::::1;18984:56;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19051:6;:39:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18918:180::o;15432:30::-;;;;:::o;21508:641::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21601:16:::2;::::0;::::2;;:35:::0;::::2;;;-1:-1:-1::0;21621:15:0::2;::::0;::::2;::::0;::::2;;;21601:35;21579:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21747:19;21769:21;:19;:21::i;:::-;21747:43;;21857:42;21872:12;;21886;21857:14;:42::i;:::-;21910:45;21939:1;21924:12;;:16;21942:12;21910:13;:45::i;:::-;21966:35;21999:1;21984:12;;:16;21966:17;:35::i;:::-;22085:12;::::0;;22100:1:::2;22085:16;22070:31:::0;;;;22112:29:::2;::::0;:15:::2;:29::i;:::-;12342:1;21508:641::o:0;27337:295::-;27407:4;27424:22;;:::i;:::-;27449:13;;;;:6;:13;;;;;;;;:19;;;;;;;;;;;;27424:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27479:18:0;;:::i;:::-;-1:-1:-1;27500:13:0;;;;:6;:13;;;;;;;;;27479:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27531:70;;-1:-1:-1;27588:12:0;;27569:14;;;;:32;;:18;:32::i;:::-;27554:12;:47;27531:70;:93;;;;-1:-1:-1;27605:14:0;;;;:19;;27531:93;27524:100;;;;27337:295;;;;;:::o;23114:851::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:23:::1;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17723:10;17737:9;17723:23;17715:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23195:23:::2;23205:12;;23195:9;:23::i;:::-;23187:54;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;23273:12;;23260:9;:25;;23252:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23360:12;::::0;23353:20:::2;::::0;;;:6:::2;:20;::::0;;;;;;;23374:10:::2;23353:32:::0;;;;;;;:39:::2;;::::0;:44;23345:84:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;23538:12;::::0;23472:14:::2;23531:20:::0;;;:6:::2;:20;::::0;;;;23582:17:::2;::::0;::::2;::::0;23489:9:::2;::::0;23531:20;23582:29:::2;::::0;23489:9;23582:21:::2;:29::i;:::-;23562:17;::::0;::::2;:49:::0;23641:16:::2;::::0;::::2;::::0;:28:::2;::::0;23662:6;23641:20:::2;:28::i;:::-;23622:16;::::0;::::2;:47:::0;23744:12:::2;::::0;;23711:23:::2;23737:20:::0;;;:6:::2;:20;::::0;;;;;;;23758:10:::2;23737:32:::0;;;;;;;;;23780;;;::::2;::::0;;;23823:14;;::::2;:23:::0;;;23857:10:::2;:22:::0;;;;;23885:12;;23857:41;;;;::::2;::::0;;;;;;;;;::::2;::::0;;;;23936:12;;23916:41;;;;;;;23737:32;;23936:12;;23758:10;;23916:41:::2;::::0;;;;;;::::2;17788:1;;;23114:851::o:0;26138:122::-;17513:12;;;;17499:10;:26;;:59;;-1:-1:-1;17543:15:0;;;;17529:10;:29;17499:59;17491:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26207:8:::2;:6;:8::i;:::-;26239:12;::::0;26233:19:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;26138:122::o:0;14911:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9689:87::-;9735:7;9762:6;;;9689:87;:::o;25511:535::-;25718:16;;;25653:7;25718:16;;;:10;:16;;;;;:23;25635:16;;25653:7;25690:4;;25718:32;;;25709:41;;25705:115;;;-1:-1:-1;25776:16:0;;;;;;;:10;:16;;;;;:23;:32;;;25705:115;25832:23;25872:6;25858:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25858:21:0;;25832:47;;25895:9;25890:104;25914:6;25910:1;:10;25890:104;;;25954:16;;;;;;;:10;:16;;;;;:28;;25971:10;;;;25954:28;;;;;;;;;;;;;;25942:6;25949:1;25942:9;;;;;;;;;;;;;;;;;:40;25922:3;;25890:104;;;-1:-1:-1;26014:6:0;26022:15;;;-1:-1:-1;;;;25511:535:0:o;15149:27::-;;;;:::o;19422:313::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:3:::1;19504:11;:25;;19496:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19580:10;:24:::0;;;19630:27:::1;15414:3;19593:11:::0;19630:14:::1;:27::i;:::-;19615:12;:42:::0;;;19688:12:::1;::::0;19702:10:::1;::::0;19675:52:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;19688:12;;19675:52:::1;::::0;;;;;;;::::1;19422:313:::0;:::o;18426:122::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18508:14:::1;:32:::0;18426:122::o;26730:508::-;26799:4;26816:22;;:::i;:::-;26841:13;;;;:6;:13;;;;;;;;:19;;;;;;;;;;;;26816:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26871:18:0;;:::i;:::-;-1:-1:-1;26892:13:0;;;;:6;:13;;;;;;;;;26871:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26920:35;26916:80;;;26979:5;26972:12;;;;;;26916:80;27026:5;:18;;;:204;;;;;27082:5;:15;;;27063:5;:16;;;:34;:71;;;;-1:-1:-1;27121:13:0;27101:16;;:33;;;;;;;;;27063:71;27062:167;;;;27176:5;:15;;;27157:5;:16;;;:34;:71;;;;-1:-1:-1;27215:13:0;27195:16;;:33;;;;;;;;;;26730:508;-1:-1:-1;;;;;26730:508:0:o;15377:40::-;15414:3;15377:40;:::o;18146:195::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18231:30:::1;::::0;::::1;18223:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18299:15;:34:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18146:195::o;19191:150::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19287:21:::1;:46:::0;19191:150::o;19818:325::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:3:::1;19904:13;:27;;19896:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19997:29;15414:3;20012:13:::0;19997:14:::1;:29::i;:::-;19984:10;:42:::0;;;20037:12:::1;:28:::0;;;20096:12:::1;::::0;20083:52:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;20096:12;;20083:52:::1;::::0;;;;;;;;;::::1;19818:325:::0;:::o;20784:621::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20867:16:::2;::::0;::::2;;20859:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20957:15;::::0;::::2;::::0;::::2;;;20956:16;20948:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21095:12;::::0;21067::::2;::::0;21060:20:::2;::::0;;;:6:::2;:20;::::0;;;;:30:::2;;::::0;:48:::2;::::0;:34:::2;:48::i;:::-;21044:12;:64;;21022:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21188:19;21210:21;:19;:21::i;:::-;21188:43;;21242:42;21257:12;;21271;21242:14;:42::i;:::-;21312:12;::::0;;21327:1:::2;21312:16;21297:31:::0;;;;21339:25:::2;::::0;:11:::2;:25::i;:::-;-1:-1:-1::0;21375:15:0::2;:22:::0;;;::::2;;;::::0;;20784:621::o;15025:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15476:32::-;;;;:::o;15334:34::-;;;;:::o;10643:244::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10732:22:::1;::::0;::::1;10724:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10834:6;::::0;;10813:38:::1;::::0;::::1;::::0;;::::1;::::0;10834:6;::::1;::::0;10813:38:::1;::::0;::::1;10862:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10643:244::o;15612:36::-;;;;;;:::o;15522:27::-;;;;:::o;15183:::-;;;;;;:::o;32141:203::-;32233:37;;32215:12;;32233:7;;;;32246:5;;32260;;32215:12;32233:37;32215:12;32233:37;32260:5;32233:7;32246:5;32233:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32214:56;;;32289:7;32281:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32141:203;;;:::o;32352:191::-;32482:17;32527:8;;;32352:191::o;32735:287::-;32792:4;32829:13;;;:6;:13;;;;;;;:24;;:29;;;;:74;;-1:-1:-1;32875:13:0;;;;:6;:13;;;;;:23;;;:28;;32829:74;:130;;;;-1:-1:-1;32935:13:0;;;;:6;:13;;;;;;;;:24;;32920:12;:39;32829:130;:185;;;;-1:-1:-1;;32991:13:0;;;;:6;:13;;;;;:23;;;32976:12;:38;;32735:287::o;2828:179::-;2886:7;2918:5;;;2942:6;;;;2934:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:1;2828:179;-1:-1:-1;;;2828:179:0:o;3707:220::-;3765:7;3789:6;3785:20;;-1:-1:-1;3804:1:0;3797:8;;3785:20;3828:5;;;3832:1;3828;:5;:1;3852:5;;;;;:10;3844:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4405:153;4463:7;4495:1;4491;:5;4483:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4549:1;4545;:5;;;;;;;4405:153;-1:-1:-1;;;4405:153:0:o;13035:120::-;12579:8;:6;:8::i;:::-;12571:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13104:5:::1;13094:15:::0;;;::::1;::::0;;13125:22:::1;13134:12;:10;:12::i;:::-;13125:22;::::0;;::::1;::::0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;13035:120::o:0;28118:377::-;28174:19;28196:13;;;:6;:13;;;;;;;;28239:12;28220:16;;;:31;;;28297:14;;28196:13;;28280:32;;:16;:32::i;:::-;28262:15;;;;:50;;;;28357:14;;28340:36;;:12;;28357:18;28340:16;:36::i;:::-;28323:14;;;:53;28387:19;;;:11;28417:17;;;:21;28456:31;;;28474:12;28456:31;;;;28401:5;;28456:31;;;;;;;;;;28118:377;;:::o;8229:106::-;8317:10;8229:106;:::o;31602:531::-;31651:6;31670:29;31702:42;31722:21;;31702:15;:19;;:42;;;;:::i;:::-;31670:74;;31756:14;31772:12;31788:17;31811:6;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31811:24:0;;;;;;;;;;;;;-1:-1:-1;31811:24:0;;-1:-1:-1;31811:24:0;-1:-1:-1;31854:34:0;;;;31846:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31968:19;;31958:7;:29;;;31950:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32086:16:0;;;;32064:19;:38;32120:5;-1:-1:-1;;31602:531:0;:::o;28545:419::-;28626:13;;;;:6;:13;;;;;;;;:24;;28618:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28738:13;;;;:6;:13;;;;;:23;;;28722:12;:39;;28714:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28864:12;;28836:13;;;;:6;:13;;;;;:23;;;:41;;:27;:41::i;:::-;28820:12;:57;;28812:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28932:24;28943:5;28950;28932:10;:24::i;:::-;28545:419;;:::o;29232:409::-;29312:13;;;;:6;:13;;;;;:23;;;29304:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29421:13;;;;:6;:13;;;;;:22;;;29405:12;:38;;29397:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29543:12;;29516:13;;;;:6;:13;;;;;:22;;;:40;;:26;:40::i;:::-;29500:12;:56;;29492:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29610:23;29620:5;29627;29610:9;:23::i;29963:1481::-;15414:3;30033:28;30048:12;;30033:10;;:14;;:28;;;;:::i;:::-;:42;30025:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30152:13;;;;:6;:13;;;;;:33;;;:38;:73;;;;-1:-1:-1;30194:13:0;;;;:6;:13;;;;;:26;;;:31;30152:73;30144:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30259:19;30281:13;;;:6;:13;;;;;30449:15;;;;30430:16;;;;30281:13;;30259:19;;;;;30430:34;30426:730;;;30503:5;:16;;;30481:38;;30549:49;15414:3;30549:33;30571:10;;30549:5;:17;;;:21;;:33;;;;:::i;:49::-;30534:64;;30627:51;15414:3;30627:35;30649:12;;30627:5;:17;;;:21;;:35;;;;:::i;:51::-;30613:65;;30426:730;;;30750:5;:15;;;30731:5;:16;;;:34;30727:429;;;30804:5;:16;;;30782:38;;30850:49;15414:3;30850:33;30872:10;;30850:5;:17;;;:21;;:33;;;;:::i;30727:429::-;-1:-1:-1;;;31127:17:0;;;;31066:1;;;;30727:429;31166:25;;;;:47;;;31224:18;;;:33;;;31315:14;:31;;31334:11;31315:18;:31::i;:::-;31298:14;:48;31364:72;;;;;;;;;;;;;;;;;;;;31382:5;;31364:72;;;;;;;;;;29963:1481;;;;;:::o;27719:391::-;27787:16;;;;27779:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27883:9;;;27876:17;;;;:6;:17;;;;;:26;;;27868:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28000:9;;;27993:17;;;;:6;:17;;;;;:26;;;27977:12;:42;;27969:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28084:18;28096:5;28084:11;:18::i;12776:118::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12836:7:::1;:14:::0;;;::::1;::::0;::::1;::::0;;12866:20:::1;12873:12;:10;:12::i;3290:158::-:0;3348:7;3381:1;3376;:6;;3368:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3435:5:0;;;3290:158::o;28972:211::-;29041:19;29063:13;;;:6;:13;;;;;;;;;29087:15;;;:23;;;29128:47;;29145:12;29128:47;;;;;;;;;;29063:13;;29070:5;;29128:47;;;;;;;;;;;28972:211;;;:::o;29649:247::-;29717:19;29739:13;;;:6;:13;;;;;;;;;29763:16;;;:24;;;29798:18;;;:25;;;;;;;;;;29841:47;;29857:12;29841:47;;;;;;;;;;29739:13;;29746:5;;29841:47;;;;;;;;;;29649:247;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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