Contract 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b 4

 

Contract Overview

Balance:
502.553783687108047582 BNB

BNB Value:
$167,079.03 (@ $332.46/BNB)

Token:
 
Txn Hash
Block
From
To
Value [Txn Fee]
0x638a07587a46238d7875cdd25eb7d1c854171475541e488e88b2efef4d97946597431122021-08-04 14:15:5955 mins ago0xf51c534c0cbe8791932809acec992d59b9a9a3c1 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x5f800b1a41b1e55faa019e5505bf7ef35e839aeab2b7320cd40bcf0781786b5e97423692021-08-04 13:36:391 hr 35 mins ago0x27dac29cb7c77a20497986efe8d2d6300b49fb49 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xc220a29319442d11d5d368735691a255e64473bb7161aa7e8a4127115271349597418912021-08-04 13:12:451 hr 59 mins ago0xa193d8ff15176a177e9cffcbd9bf1f5685aa9ac9 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00040565
0x4d212bfe0749d08813769841b2ea7b22bdd1cdc688c36aa654af1c5a4a55bc5097403422021-08-04 11:53:123 hrs 18 mins ago0xaf66a36472105e483f021a0b7bcf48bf9b9d7691 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xb36d1a34067cc828839215261efcd8df33d48b9807a2095d32e65f0e88e1543697394422021-08-04 11:06:014 hrs 5 mins ago0xf4b9f162562ef9760f8bd0f126cc93001675e732 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00035681
0x32906ae4647364ecf9e58a657716cffe2cec6bfc10aef999c33e0ffaf615b48797385042021-08-04 10:18:064 hrs 53 mins ago0x125d007545b8e6b4cb134c366dd1932e7ef63cf6 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xe4a100cfaf66b19c297529b5bc33a873b7cf30c66585e814b6fbcdee6eb89d9f97369132021-08-04 8:56:296 hrs 15 mins ago0x3dcf60752330494d6469b8dadc08cf7cac6858a9 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xdde5816c93b12c398ca41b55977e0aab011a6d643ea019be2b252be7192f442097369072021-08-04 8:56:076 hrs 15 mins ago0x3dcf60752330494d6469b8dadc08cf7cac6858a9 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x0616cb559af70fe1c4edb272caa93e76cdbae11b9cc8ce5691ac1486b4f94bef97364032021-08-04 8:30:096 hrs 41 mins ago0x9fdc61d119ae4379319d0013e18c3be39b565c22 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.0060961215 BNB0.000133272
0xe2a29bcf73994157cf64f7e2534257d8bc95bf8c18915226b68c6c4b8bf309ba97356462021-08-04 7:45:457 hrs 26 mins ago0xdbe55a0dadc80ef88e884f15ce41c26c0af933a0 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x318093b81305e615ccfbf7acf6dbe82d7910ce2850fa516c40e82dfa1ab1d04f97346702021-08-04 6:52:448 hrs 19 mins ago0xf67a3ecc0fbb8c8157f7c515c800a6b969933eea IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x59c2b1f06733a013419cd181a16cafc6cdfb51d542aaf553491b0b775443be8997342912021-08-04 6:33:188 hrs 38 mins ago0x7f4fb95ec4269184a46c58c83645de1f75ad7589 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x1a7614e7806e988aa82d4193c8bb2f1cd6c1b11babc33733448a9fd23197f73597342662021-08-04 6:31:528 hrs 39 mins ago0x7f4fb95ec4269184a46c58c83645de1f75ad7589 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00040565
0x0b2f5a9130d53c4f13b0096ca2e4017f86a22e9e388ce78881b7bc30b4386fa497342222021-08-04 6:29:188 hrs 42 mins ago0x0cac81012697043f04fbbd0f455026a4c0e5ed52 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00040565
0xde3423e515c6d140b37702916743603299bad7f9f1772e6bf484970972409faf97338502021-08-04 6:08:319 hrs 3 mins ago0x8c216604a7794096cb51875684ad1534ae22d651 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xeae7369e2d147a9d0f3be09289b5e1e547b7b2900d918716e75fafbbdae3fca597306162021-08-04 3:23:1811 hrs 48 mins ago0x32a30604df3cc33bcac4aaace02f039e8135036c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x0ba65010f2826b62642c226c4c6ba46ca90a2b3f551cb9cc7faff4403508dcce97306132021-08-04 3:23:0911 hrs 48 mins ago0x32a30604df3cc33bcac4aaace02f039e8135036c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xcaabf2b0a1d5c2d01a8e6111978a0f4a065844914f7fe2ea896e63b3cbf3abb597305892021-08-04 3:21:5711 hrs 49 mins ago0xa338d2b070c7f9a6d407e60e55f1a84920636a6e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00037171
0xc755f54514b7d8196a232547b07eb4721e630fa6e69f3e5500f61a383daf313c97300732021-08-04 2:56:0912 hrs 15 mins ago0x78476427251c67b21d6758346eb4c88d1ae1f41f IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xa7768a7e773f5e3576a471127f5a7e6acd66faf45499d71bc59e0921a7a95a4197286422021-08-04 1:42:5513 hrs 28 mins ago0x39e325b403510d8abebad68003129a7a9c7362c8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00040565
0x217d2bc7905a552bd64b282ca63e5f17a7f48f4759393cf1608b23b836c467f797250772021-08-03 22:41:1016 hrs 30 mins ago0x626f3e2c340a557e2242d28f654c5043166839e5 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00040565
0x6b830d4bcb645b97f7feee3bc7f1464c6497d916c7ad6c1bf6c060f13ffa55a797247362021-08-03 22:24:0716 hrs 47 mins ago0x9969028e5fdc76f1d3b806c0e14c7ec372e27f30 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0x1c9f31a28550e40d9986e0c52ccdd3431fded89fdff2451011b35d7da049055197240982021-08-03 21:50:2817 hrs 21 mins ago0x18a221334dd6b043985576b4d88b8e42f548038e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xa42102d02f194003fc2c554187c67db27a8c9b2be53742378bb5c1c4405f403597229472021-08-03 20:52:5518 hrs 18 mins ago0x9a9e047d44ca13bdf4e8f1d3bd3c56d7cc64e667 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00040565
0x10ae66106bb6396aa658d0d936facee367c1d33bdf81525e4acc7f7304cf925097213992021-08-03 19:33:1219 hrs 38 mins ago0xd8843e04f257937b1b7da4edca0cd54c7046737a IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00040565
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x32906ae4647364ecf9e58a657716cffe2cec6bfc10aef999c33e0ffaf615b48797385042021-08-04 10:18:064 hrs 53 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x125d007545b8e6b4cb134c366dd1932e7ef63cf60.138296241884760153 BNB
0xe4a100cfaf66b19c297529b5bc33a873b7cf30c66585e814b6fbcdee6eb89d9f97369132021-08-04 8:56:296 hrs 15 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3dcf60752330494d6469b8dadc08cf7cac6858a90.281465561536638664 BNB
0xdde5816c93b12c398ca41b55977e0aab011a6d643ea019be2b252be7192f442097369072021-08-04 8:56:076 hrs 15 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3dcf60752330494d6469b8dadc08cf7cac6858a90.380641201873107715 BNB
0xe2a29bcf73994157cf64f7e2534257d8bc95bf8c18915226b68c6c4b8bf309ba97356462021-08-04 7:45:457 hrs 26 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xdbe55a0dadc80ef88e884f15ce41c26c0af933a00.061970217058191079 BNB
0x318093b81305e615ccfbf7acf6dbe82d7910ce2850fa516c40e82dfa1ab1d04f97346702021-08-04 6:52:448 hrs 19 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xf67a3ecc0fbb8c8157f7c515c800a6b969933eea0.019525779232596112 BNB
0x59c2b1f06733a013419cd181a16cafc6cdfb51d542aaf553491b0b775443be8997342912021-08-04 6:33:188 hrs 38 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x7f4fb95ec4269184a46c58c83645de1f75ad75890.001142525790770938 BNB
0x1a7614e7806e988aa82d4193c8bb2f1cd6c1b11babc33733448a9fd23197f73597342662021-08-04 6:31:528 hrs 39 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x7f4fb95ec4269184a46c58c83645de1f75ad75890.053034232082937681 BNB
0x0b2f5a9130d53c4f13b0096ca2e4017f86a22e9e388ce78881b7bc30b4386fa497342222021-08-04 6:29:188 hrs 42 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x0cac81012697043f04fbbd0f455026a4c0e5ed520.025327980631238012 BNB
0xde3423e515c6d140b37702916743603299bad7f9f1772e6bf484970972409faf97338502021-08-04 6:08:319 hrs 3 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x8c216604a7794096cb51875684ad1534ae22d6510.014223425061122865 BNB
0xeae7369e2d147a9d0f3be09289b5e1e547b7b2900d918716e75fafbbdae3fca597306162021-08-04 3:23:1811 hrs 48 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x32a30604df3cc33bcac4aaace02f039e8135036c0.022573525119111087 BNB
0x0ba65010f2826b62642c226c4c6ba46ca90a2b3f551cb9cc7faff4403508dcce97306132021-08-04 3:23:0911 hrs 48 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x32a30604df3cc33bcac4aaace02f039e8135036c0.005983842508798569 BNB
0xc755f54514b7d8196a232547b07eb4721e630fa6e69f3e5500f61a383daf313c97300732021-08-04 2:56:0912 hrs 15 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x78476427251c67b21d6758346eb4c88d1ae1f41f0.004940560090563731 BNB
0xa7768a7e773f5e3576a471127f5a7e6acd66faf45499d71bc59e0921a7a95a4197286422021-08-04 1:42:5513 hrs 28 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x39e325b403510d8abebad68003129a7a9c7362c80.257598574717571253 BNB
0x217d2bc7905a552bd64b282ca63e5f17a7f48f4759393cf1608b23b836c467f797250772021-08-03 22:41:1016 hrs 30 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x626f3e2c340a557e2242d28f654c5043166839e50.002855538790170232 BNB
0x6b830d4bcb645b97f7feee3bc7f1464c6497d916c7ad6c1bf6c060f13ffa55a797247362021-08-03 22:24:0716 hrs 47 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x9969028e5fdc76f1d3b806c0e14c7ec372e27f300.001958022816598888 BNB
0x1c9f31a28550e40d9986e0c52ccdd3431fded89fdff2451011b35d7da049055197240982021-08-03 21:50:2817 hrs 21 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x18a221334dd6b043985576b4d88b8e42f548038e0.016612269261243604 BNB
0xa42102d02f194003fc2c554187c67db27a8c9b2be53742378bb5c1c4405f403597229472021-08-03 20:52:5518 hrs 18 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x9a9e047d44ca13bdf4e8f1d3bd3c56d7cc64e6670.173973363619143525 BNB
0x10ae66106bb6396aa658d0d936facee367c1d33bdf81525e4acc7f7304cf925097213992021-08-03 19:33:1219 hrs 38 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xd8843e04f257937b1b7da4edca0cd54c7046737a0.71050356272602528 BNB
0xadac31102862df67b90d83f57bdce6fda79bd48f55c2e8c66d6170ef647e294c97209692021-08-03 19:11:0920 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xf4458ee64699df9c26bbcd802ebef3bbf00f8a180.013392802271260098 BNB
0x41f24256bae7a3c1f98faa3006fd216837bbe11d26ed8b4d55c33e56c881c06997185512021-08-03 17:08:1922 hrs 3 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x4a737f781892292d72dd5b306cf87a9bcd4251490.025506573601486874 BNB
0xe4a0f15e5a764771438b98c14483324f6945ab84686f65cb1b0c9bfa8655aa0197184502021-08-03 17:03:1322 hrs 8 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x44319a7e5cf6193fb35efeecee3c6f06b1e2064c1 BNB
0x5e1cc599fb1b001a1772ef5a7327dec5264edf1e08d771c5d013daa08fe8b86197174032021-08-03 16:09:0423 hrs 2 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x64a037815bff2cd8f79681df02896593017697e80.051985689503185267 BNB
0xbda431bcc9a88f5479c6268cf21a1bbfa2c718dfe23d17eaf91636d14a1204b697151032021-08-03 14:05:471 day 1 hr ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x707cb29eaa485ec3d6020f31c50c71ad9bea40770.012991675021922693 BNB
0x7050cda1c7a984d5209c81abc80b8a5b14d7aaf66d1cfefdf09586d057ef437e97150482021-08-03 14:02:361 day 1 hr ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x92540d1275d8862bd191b4f765331d952e82eab10.1 BNB
0x545970e25c78627262e3d24e3588b8025ff715d8b23a097ad9b2ad7d33ad977897146552021-08-03 13:41:221 day 1 hr ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6438949ed7ca96455a5e5ab7c06739daab7363250.012647388629464286 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.