Contract 0x52438441073A33b6FcBc70fa3F3F334F2dA19906 4

Contract Overview

Phenix Finance: PHNX Token
Balance:
0 CRO

CRO Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x11e1200da71c76fb3be6a02a7a963681f39f12262530f6606f7a1af99d09e49cApprove114356312023-12-03 16:57:022 days 5 hrs agoCronos ID Name mahalo.cro IN  Phenix Finance: PHNX Token0 CRO0.2240447928280
0x23713028035283fb11e9c9f40fed687cc5944757ce5db8781354436bfd5ee1a9Transfer114351742023-12-03 16:14:132 days 6 hrs ago0x6c577fc3a885504643cc6ac389879f36ff397b16 IN  Phenix Finance: PHNX Token0 CRO0.4608193707390
0xe3076aaf2e0544cbdaabdb0241a0eaab5cdd847494252fca05a7d6e6f8137934Approve114341002023-12-03 14:33:472 days 7 hrs ago0xb800973c1da53048105ebe521653b94ab30dfca1 IN  Phenix Finance: PHNX Token0 CRO0.2240480825680
0x9620eb317dbb91e5351b16b8e298bcbafebb02c0f39a718a31d792561677ed5cApprove114262512023-12-03 2:20:352 days 20 hrs agoCronos ID Name ccoincollector.cro IN  Phenix Finance: PHNX Token0 CRO0.224138067846 4,610.092100762
0x52f3a7b63c2f97a404939ae8825a76c6c307591cd9f81985341c443eed161856Transfer114249902023-12-03 0:22:392 days 22 hrs ago0x7271a8e4b9097a0c92e91e9b01a26794fe28e9d2 IN  Phenix Finance: PHNX Token0 CRO0.290218825719 4,609.647956917
0xf4ee862d9e5354dd158ad38fc031117624df0c54d65e73aa37f5f36def1edc64Transfer114187772023-12-02 14:41:193 days 7 hrs ago0x9c45dd253d9032385fcd90cde0d2f247f404a53a IN  Phenix Finance: PHNX Token0 CRO0.3482078148260
0x29af415dfa807cc155e2c0a6cd767a728cbcaa78bcc757b674df2a5d60501462Transfer113998562023-12-01 9:11:274 days 13 hrs ago0xaf81a6ee7b20e61b417641e718a46a0d619a47c9 IN  Phenix Finance: PHNX Token0 CRO0.3434661313670
0xf406ee2def65058639755be7f33d085063a928f2cc91513cae0561b5dbf6f3b8Approve113690212023-11-29 9:08:476 days 13 hrs agoCronos ID Name cazarez.cro IN  Phenix Finance: PHNX Token0 CRO0.2241885646210
0x43c271854683287b5f8e2639f49cabbdf0ba4f8747fc1d9f74478c0c9a231900Approve113443452023-11-27 18:41:528 days 3 hrs ago0x8ef0778ad160214528f334db438abe76991d650a IN  Phenix Finance: PHNX Token0 CRO0.121502646336 4,613.732536052
0x154654eeced38e01f79c5a781fd2f25cbba867878a54bfc3793c548ded55ef9bApprove113399392023-11-27 11:49:558 days 10 hrs ago0xfcbc3667b2a3069a5acde5d901a1e101cdc0ff1c IN  Phenix Finance: PHNX Token0 CRO0.2430950
0x49d39ccb1ba55ebdefa8cebc661b1e82547a0035bc31fda914317f68cb6c30bbTransfer113380492023-11-27 8:53:128 days 13 hrs agoCronos ID Name undefined.cro IN  Phenix Finance: PHNX Token0 CRO0.232689271806 4,614.012647106
0x247f2271a19c930ad7a8b306901d760e89db15e39aab3fed70c7de0bed2c1e7fApprove113362042023-11-27 6:00:468 days 16 hrs agoCronos ID Name bighomiee4cro.cro IN  Phenix Finance: PHNX Token0 CRO0.224332679207 4,614.094884872
0xa0e9cf2fc204830c8b84f40d50ad4ff07099717fea19ef7c02ff0968ea51aa4dApprove113330932023-11-27 1:09:598 days 21 hrs ago0x787cfd70b2149121330d4ed08abed68a308f9d9e IN  Phenix Finance: PHNX Token0 CRO0.2430950
0x870ea8cdef91800d00b90e74db70f9e7e8077ca408f303fe7441879be2beaa76Approve113196532023-11-26 4:13:319 days 18 hrs ago0xca9f472dfae323d8ad676f7f19ba5ba61cfeb04a IN  Phenix Finance: PHNX Token0 CRO0.22850930
0x5e2ea3c528668f3b81a9926bc74710dff612cba3afbbe842b3e89067fb4d0236Approve113134702023-11-25 18:35:4810 days 3 hrs agoCronos ID Name cronosfm.cro IN  Phenix Finance: PHNX Token0 CRO0.2243090694320
0x8bf42519b7e0a9b2b57e7f378e7445980e13aac89b40edcbd219a997bff2a07dTransfer112944082023-11-24 12:53:2211 days 9 hrs ago0x9a54ab5ad0a0cefd429d4441fd6b32911f70fe00 IN  Phenix Finance: PHNX Token0 CRO0.2326562534090
0xd05c98bf4b8a6ab9135b5a5b69ca93b0a6274f1b7754abe9eff41d8d337cff52Approve112834672023-11-23 19:51:2512 days 2 hrs ago0x4bd5bb37eba2c314afca0b029dd0fbea78bc15e8 IN  Phenix Finance: PHNX Token0 CRO0.1215345605530
0xdf1d094d7b0c49438c200db542d2a402399f4dddfcb9f40ca30c11f912d2121eApprove112834612023-11-23 19:50:5112 days 2 hrs ago0x4bd5bb37eba2c314afca0b029dd0fbea78bc15e8 IN  Phenix Finance: PHNX Token0 CRO0.1307644569770
0xc29a7d71427cc7199bc9996c1a3707042687c8c25713afc3892a5add3cc3b304Approve112834592023-11-23 19:50:4012 days 2 hrs ago0x4bd5bb37eba2c314afca0b029dd0fbea78bc15e8 IN  Phenix Finance: PHNX Token0 CRO0.1215345699870
0x310dcd3bfcab9bd9afa58d281df717e2e6ffab814b406ce3672c3ed6f2fa0a24Approve112834562023-11-23 19:50:2312 days 2 hrs ago0x4bd5bb37eba2c314afca0b029dd0fbea78bc15e8 IN  Phenix Finance: PHNX Token0 CRO0.1215345735070
0xd30497d96c4a4e6a2f06f38eaf69e05947ad4f59aa362025c312f04242c8051dApprove112834542023-11-23 19:50:1212 days 2 hrs ago0x4bd5bb37eba2c314afca0b029dd0fbea78bc15e8 IN  Phenix Finance: PHNX Token0 CRO0.1215345781980
0x4a1e78d7fcc44e2865888b61a71726faef41f152a42eb8a0c512e561cfaefb4bApprove112834482023-11-23 19:49:3812 days 2 hrs ago0x4bd5bb37eba2c314afca0b029dd0fbea78bc15e8 IN  Phenix Finance: PHNX Token0 CRO0.1215345828860
0xfbf122345feba68bed4f3dbda20238badfb95817ccab2c5c884a762e108ec6b5Transfer112755022023-11-23 7:26:3512 days 14 hrs ago0x011c2eb1ea43fb54495395c3a8d2583703de30f6 IN  Phenix Finance: PHNX Token0 CRO0.3387350
0x83099390267de4f1179d677c42467ddeaad0b7aa2e0475ac7a05a9a5c486c061Approve112737742023-11-23 4:45:0012 days 17 hrs agoCronos ID Name scottytrades.cro IN  Phenix Finance: PHNX Token0 CRO0.2243949872730
0xbd2482709ef245ac83a4ab0482ab675ec9cb14d4b8fdf1bab461437df89fb763Approve112663632023-11-22 17:12:0113 days 5 hrs ago0x5aa9d1ea35dc2a014072b21c1d4530d172d1cc4e IN  Phenix Finance: PHNX Token0 CRO0.2430950
[ Download CSV Export 

OVERVIEW

The Phenix Finance token at a base offers an extremely easy reward system via their token mechanism.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x6e65f100c03c9c8ba67f7ebc9db93146cd15ad9d09252def70a5270b51abaf8a67911772023-02-03 10:30:49305 days 11 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer1,008 CRO
0xa9a17b914212017491acb8365e4f6bea727fafdb41171dfefae4dd9bdfecd31e60860672022-12-19 6:07:51351 days 16 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer1,102.128863820965214676 CRO
0xa9a17b914212017491acb8365e4f6bea727fafdb41171dfefae4dd9bdfecd31e60860672022-12-19 6:07:51351 days 16 hrs ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router500.96766537316600667 CRO
0xa9a17b914212017491acb8365e4f6bea727fafdb41171dfefae4dd9bdfecd31e60860672022-12-19 6:07:51351 days 16 hrs ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token1,603.096529194131221346 CRO
0xf1871228d4d234c768ef859559baf1127d576e6d1daac2dfc95ef7823514617160829592022-12-19 1:15:18351 days 21 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer1,516.879456154077651671 CRO
0xf1871228d4d234c768ef859559baf1127d576e6d1daac2dfc95ef7823514617160829592022-12-19 1:15:18351 days 21 hrs ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router689.490661888217114395 CRO
0xf1871228d4d234c768ef859559baf1127d576e6d1daac2dfc95ef7823514617160829592022-12-19 1:15:18351 days 21 hrs ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token2,206.370118042294766066 CRO
0xe0df9deab790f37b21a87c0eb506381b0d8d9ad973557ca562143835bc797beb60807492022-12-18 21:47:12352 days 39 mins ago Phenix Finance: PHNX TokenPhenix Finance: Deployer1,179.129351918467104641 CRO
0xe0df9deab790f37b21a87c0eb506381b0d8d9ad973557ca562143835bc797beb60807492022-12-18 21:47:12352 days 39 mins ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router535.967887235666865745 CRO
0xe0df9deab790f37b21a87c0eb506381b0d8d9ad973557ca562143835bc797beb60807492022-12-18 21:47:12352 days 39 mins ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token1,715.097239154133970386 CRO
0xd3d2b131af89a2644202a2fa2bbd3dbf603d3a66cb3f5d976ba955d371ca112560773142022-12-18 16:23:34352 days 6 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer1,482.942916232926469302 CRO
0xd3d2b131af89a2644202a2fa2bbd3dbf603d3a66cb3f5d976ba955d371ca112560773142022-12-18 16:23:34352 days 6 hrs ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router674.064961924057486046 CRO
0xd3d2b131af89a2644202a2fa2bbd3dbf603d3a66cb3f5d976ba955d371ca112560773142022-12-18 16:23:34352 days 6 hrs ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token2,157.007878156983955348 CRO
0x93decf448c7f4b684d16ee500316f0226f9499b04725f5d4b60438280701114560769892022-12-18 15:52:55352 days 6 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer1,357.736805165765499128 CRO
0x93decf448c7f4b684d16ee500316f0226f9499b04725f5d4b60438280701114560769892022-12-18 15:52:55352 days 6 hrs ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router617.153093257166135966 CRO
0x93decf448c7f4b684d16ee500316f0226f9499b04725f5d4b60438280701114560769892022-12-18 15:52:55352 days 6 hrs ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token1,974.889898422931635094 CRO
0xbafd335bbb116727259b842f1072fe7a594d3f1475aab95cbe98a6d86cfb123260768802022-12-18 15:42:38352 days 6 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer2,136.483867292889197176 CRO
0xbafd335bbb116727259b842f1072fe7a594d3f1475aab95cbe98a6d86cfb123260768802022-12-18 15:42:38352 days 6 hrs ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router971.129030587676907806 CRO
0xbafd335bbb116727259b842f1072fe7a594d3f1475aab95cbe98a6d86cfb123260768802022-12-18 15:42:38352 days 6 hrs ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token3,107.612897880566104982 CRO
0xe348bcf14e1682b27b9dc0fa6d30807dc3e8db015e130f5ba163aa17a24a573260753342022-12-18 13:17:04352 days 9 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer1,187.539878392236619311 CRO
0xe348bcf14e1682b27b9dc0fa6d30807dc3e8db015e130f5ba163aa17a24a573260753342022-12-18 13:17:04352 days 9 hrs ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router539.790853814653008777 CRO
0xe348bcf14e1682b27b9dc0fa6d30807dc3e8db015e130f5ba163aa17a24a573260753342022-12-18 13:17:04352 days 9 hrs ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token1,727.330732206889628088 CRO
0x380deb4f07d18e51579f0ecb4a99af2c415cfbda8d6dea4bec6ba50ee1abf84e60719822022-12-18 8:01:38352 days 14 hrs ago Phenix Finance: PHNX TokenPhenix Finance: Deployer940.166598940960290856 CRO
0x380deb4f07d18e51579f0ecb4a99af2c415cfbda8d6dea4bec6ba50ee1abf84e60719822022-12-18 8:01:38352 days 14 hrs ago Phenix Finance: PHNX Token Mad Meerkat Finance: Master Meerkat & Router427.34845406407285948 CRO
0x380deb4f07d18e51579f0ecb4a99af2c415cfbda8d6dea4bec6ba50ee1abf84e60719822022-12-18 8:01:38352 days 14 hrs ago Mad Meerkat Finance: Master Meerkat & Router Phenix Finance: PHNX Token1,367.515053005033150336 CRO
[ Download CSV Export 
Index Block
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PhenixFinance

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-10-11
*/

// File: contracts/InterfaceLP.sol

pragma solidity ^0.7.4;


interface InterfaceLP {
    function sync() external;
}

// File: contracts/SafeMathInt.sol

pragma solidity ^0.7.4;


library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

// File: contracts/SafeMath.sol

pragma solidity ^0.7.4;


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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

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

// File: contracts/Ownable.sol

pragma solidity ^0.7.4;


contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

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

    constructor() {
        _owner = msg.sender;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/IVVSRouter01.sol

pragma solidity ^0.7.4;


interface IVVSRouter01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// File: contracts/IVVSRouter.sol

pragma solidity ^0.7.4;



interface IVVSRouter is IVVSRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

// File: contracts/IVVSFactory.sol

pragma solidity ^0.7.4;


interface IVVSFactory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// File: contracts/IERC20.sol

pragma solidity ^0.7.4;


interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

// File: contracts/ERC20Detailed.sol

pragma solidity ^0.7.4;



abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(
        string memory name,
        string memory symbol,
        uint8 decimals
    ) {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

// File: contracts/Phenix.sol

pragma solidity ^0.7.4;










contract PhenixFinance is ERC20Detailed, Ownable {
    using SafeMath for uint256;
    using SafeMathInt for int256;

    event Rebase(uint256 indexed totalSupply);

    address[] public pairAddresses;
    address public liquidityReceiver;
    address public phenixFundReserveReceiver;
    bool public initialDistributionFinished;

    mapping(address => bool) _allowTransfer;
    mapping(address => bool) _isFeeExempt;

    uint256 private constant FXP_BASE = 1000000;
    uint256 private constant DECIMALS = 18;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;
    uint256 private constant REBASE_INTERVAL = 86400;
    uint256 private constant INITIAL_FRAGMENTS_SUPPLY =
        300 * 10**6 * 10**DECIMALS;

    uint256 public liquidityFee = 2;
    uint256 public phenixVaultFee = 8;
    uint256 public sellFee = 15;
    uint256 public totalFee = liquidityFee.add(phenixVaultFee);
    uint256 public feeDenominator = 100;

    uint256 public lastRebaseTimestamp = block.timestamp;
    uint256 public lastRebaseDelta = 0;
    uint256 public rebasePercentDelta = (18 * FXP_BASE) / 1000;

    bool public rebaseRX3Enabled = true;
    uint256 public rebaseRX3Multiplier = FXP_BASE;
    uint256 public rebaseMaxRX3Multiplier = FXP_BASE + FXP_BASE / 2;
    uint256 public rebaseRX3MultiplierStep = (1 * FXP_BASE) / 1000;

    IVVSRouter public router;
    bool public swapEnabled = true;
    uint256 private gonSwapThreshold = (TOTAL_GONS * 10) / 10000;
    bool inSwap;

    uint256 private constant TOTAL_GONS =
        MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);
    uint256 private constant MAX_SUPPLY = ~uint128(0);
    uint256 private _totalSupply;
    uint256 private _gonsPerFragment;
    mapping(address => uint256) private _gonBalances;
    mapping(address => mapping(address => uint256)) private _allowedFragments;
    mapping(address => bool) public taxableAddress;
    mapping(address => bool) public authorizedRebaseAddress;

    constructor() ERC20Detailed("Phenix Finance", "PHNX", uint8(DECIMALS)) {
        router = IVVSRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);

        address _pairAddress = address(
            IVVSFactory(router.factory()).createPair(
                router.WETH(),
                address(this)
            )
        );

        liquidityReceiver = address(msg.sender);
        phenixFundReserveReceiver = address(msg.sender);

        _allowedFragments[address(this)][address(router)] = uint256(-1);

        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        _gonBalances[address(msg.sender)] = TOTAL_GONS;
        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

        _isFeeExempt[address(phenixFundReserveReceiver)] = true;
        _isFeeExempt[address(this)] = true;
        _isFeeExempt[address(msg.sender)] = true;

        taxableAddress[_pairAddress] = true;
        pairAddresses.push(_pairAddress);
        authorizedRebaseAddress[address(msg.sender)] = true;

        emit Transfer(address(0x0), address(msg.sender), _totalSupply);
    }

    /**
     * @dev Swapping switch used to mitigate any calculation
     * issues during swapBack.
     */
    modifier noReentrancy() {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier initialDistributionLock() {
        require(
            initialDistributionFinished ||
                isOwner() ||
                _allowTransfer[msg.sender],
            "Initial distirbution not finalized."
        );
        _;
    }

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    /**
     * @dev Returns the delta of the next rebase.
     * @return next rebase delta as uint256 value.
     */
    function getNextRebase(uint256 _timestamp) public view returns (uint256) {
        uint256 rebaseTimestampDelta = _timestamp - lastRebaseTimestamp;

        uint256 nextScaledRebaseIntervalPercentage = rebaseTimestampDelta
            .mul(FXP_BASE)
            .div(REBASE_INTERVAL);

        uint256 nextRebaseDelta = _totalSupply
            .mul(rebasePercentDelta)
            .div(FXP_BASE)
            .mul(nextScaledRebaseIntervalPercentage)
            .div(FXP_BASE);

        if (rebaseRX3Enabled == true) {
            nextRebaseDelta = nextRebaseDelta
                .mul(
                    rebaseRX3Multiplier < rebaseMaxRX3Multiplier
                        ? rebaseRX3Multiplier
                        : rebaseMaxRX3Multiplier
                )
                .div(FXP_BASE);
        }

        return nextRebaseDelta;
    }

    /**
     * @dev Rebases total token supply based on the getNextRebase()
     * return result. Rebase is capped when MAX_SUPPLY is reached.
     */
    function _rebase() internal {
        uint256 supplyDelta = getNextRebase(block.timestamp);
        _totalSupply = _totalSupply.add(uint256(supplyDelta));

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

        lastRebaseDelta = supplyDelta;
        lastRebaseTimestamp = block.timestamp;
        rebaseRX3Multiplier = FXP_BASE;

        emit Rebase(_totalSupply);
    }

    /**
     * @dev Executes the internal _rebase() function and then
     * performs the sync() call on all applicable pairAddresses
     */
    function rebaseAndSync() external {
        require(
            authorizedRebaseAddress[msg.sender] == true,
            "Not authroized to execute rebase"
        );

        _rebase();

        for (uint256 i = 0; i < pairAddresses.length; i++) {
            if (taxableAddress[pairAddresses[i]] == true) {
                InterfaceLP(pairAddresses[i]).sync();
            }
        }
    }

    /**
     * @dev Sets the last rebase time to the current block
     * timestamp as means to reset the value.
     */
    function resetLastRebaseTimestamp() external {
        require(
            authorizedRebaseAddress[msg.sender] == true,
            "Not authroized to execute this function."
        );

        lastRebaseTimestamp = block.timestamp;
    }

    /**
     * @dev Returns total token supply. Overrides ERC-20
     * totalSupply() function to return elastic supply.
     */
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev Transfers amount tokens to an address.
     * @param to Receiver of the transfered tokens.
     * @param value Amount of tokens that are received.
     * @return true
     */
    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        initialDistributionLock
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Adds LP contract address and removes
     * fees from the given address. Added pair contract tested
     * sync() before adding to see if it is a pair address.
     * Addition will fail if sync() fails.
     * @param _address Update LP contract address.
     */
    function addLPAddress(address _address) external onlyOwner {
        InterfaceLP(_address).sync();

        for (uint256 i = 0; i < pairAddresses.length; i++) {
            require(pairAddresses[i] != _address, "Pair address already added");
        }

        pairAddresses.push(_address);
        taxableAddress[_address] = true;
    }

    /**
     * @dev Returns array of all LP Addresses
     * @return address[] Array of LP Addresses.
     **/
    function getLPAddresses() external view returns (address[] memory) {
        return pairAddresses;
    }

    /**
     * @dev Updates given address' taxable status.
     * @param _address Subject address of taxable state adjustment.
     * @param _status State if address should be taxed.
     */
    function setTaxableAddress(address _address, bool _status)
        external
        onlyOwner
    {
        taxableAddress[_address] = _status;
    }

    /**
     * @dev Updates given address' Authorized Rebase status.
     * @param _address Subject address of Authorized Rebase state adjustment.
     * @param _status State if address should be allowed call rebaseAndSync().
     */
    function setAuthorizedRebaseAddress(address _address, bool _status)
        external
        onlyOwner
    {
        authorizedRebaseAddress[_address] = _status;
    }

    /**
     * @dev Returns spender alloance of an owner address.
     * Overides ERC-20 allowance(address, address) function
     * to return allowed fragments.
     * @param owner Owner address of tokens.
     * @param spender Spender address of tokens.
     * @return uint256 Amount of allowed tokens for the spender to use.
     */
    function allowance(address owner, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowedFragments[owner][spender];
    }

    /**
     * @dev Returns balance of given address. Overrides
     * ERC-20 balanceOf(address) to provide balance based
     * on holder gons and gonsPerFragment.
     * @param who Balance of address.
     * @return uint256 value of address balance.
     */
    function balanceOf(address who) external view override returns (uint256) {
        return _gonBalances[who].div(_gonsPerFragment);
    }

    /**
     * @dev Performs basic token transfer. Used as
     * internal function in _transferFrom(address,
     * address, uint256) function.
     * @param from sender address of transfer.
     * @param to receiver adddress of transfer.
     * @param amount amount of tokens for receiver.
     * @return true.
     */
    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        uint256 gonAmount = amount.mul(_gonsPerFragment);
        _gonBalances[from] = _gonBalances[from].sub(gonAmount);
        _gonBalances[to] = _gonBalances[to].add(gonAmount);
        return true;
    }

    /**
     * @dev Transfers token from sender address
     * to receiver address. Performs token supply
     * rebase provided it is acceptable. Executes
     * _baseTransfer(address, address, uint256) if
     * swap is in progress.
     * @param sender sender address of transfer.
     * @param to receiver adddress of transfer.
     * @param amount amount of tokens for receiver.
     * @return true.
     */
    function _transferFrom(
        address sender,
        address to,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, to, amount);
        }

        uint256 gonAmount = amount.mul(_gonsPerFragment);

        if (_shouldSwapBack()) {
            _swapBack();
        }

        if (rebaseRX3Enabled == true) {
            rebaseRX3Multiplier = rebaseRX3Multiplier.add(
                rebaseRX3MultiplierStep
            );
        }

        _gonBalances[sender] = _gonBalances[sender].sub(gonAmount);

        uint256 gonAmountReceived = _shouldTakeFee(sender, to)
            ? _takeFee(sender, to, gonAmount)
            : gonAmount;
        _gonBalances[to] = _gonBalances[to].add(gonAmountReceived);

        emit Transfer(sender, to, gonAmountReceived.div(_gonsPerFragment));

        return true;
    }

    /**
     * @dev Transfers token from sender address
     * to receiver address. Overrides ERC-20
     * transferFrom(address, address, uint256) to
     * check value of allowed fragments that sender
     * can access from the owner (from address).
     * @param from sender address of transfer.
     * @param to receiver adddress of transfer.
     * @param value amount of tokens for receiver.
     * @return true.
     */
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        if (_allowedFragments[from][msg.sender] != uint256(-1)) {
            _allowedFragments[from][msg.sender] = _allowedFragments[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }

        _transferFrom(from, to, value);
        return true;
    }

    /**
     * @dev Executes fee allocations and distributes tokens
     * to contract address, phenix vault receiver address, and
     * liquidity receiver address.
     */
    function _swapBack() internal noReentrancy {
        uint256 contractTokenBalance = _gonBalances[address(this)].div(
            _gonsPerFragment
        );
        uint256 amountToLiquify = contractTokenBalance
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityReceiver,
                block.timestamp
            );
        }

        (bool success, ) = payable(phenixFundReserveReceiver).call{
            value: address(this).balance
        }("");
    }

    /**
     * @dev Calculates swap fee and returns new allocation
     * of swap based on swap conditions. Calculate is based
     * on liquidity fee and phenix vault fee. Sell fee will also
     * be taken into consideration if receiver is pair address.
     * @return uint256 gonAmount that is transfered in the swap.
     */
    function _takeFee(
        address sender,
        address to,
        uint256 gonAmount
    ) internal returns (uint256) {
        uint256 _totalFee = totalFee;
        if (taxableAddress[to] == true) _totalFee = _totalFee.add(sellFee);

        uint256 feeAmount = gonAmount.mul(_totalFee).div(feeDenominator);

        _gonBalances[address(this)] = _gonBalances[address(this)].add(
            feeAmount
        );
        emit Transfer(sender, address(this), feeAmount.div(_gonsPerFragment));

        return gonAmount.sub(feeAmount);
    }

    /**
     * @dev Decreases spender allowance of sender address.
     * @param spender Spender address.
     * @param subtractedValue Amount to reduce spender allowance by.
     * @return bool
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        initialDistributionLock
        returns (bool)
    {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowedFragments[msg.sender][spender]
        );
        return true;
    }

    /**
     * @dev Updates router address
     * @param _address address to set for the dex router
     */
    function updateRouter(address _address) external onlyOwner {
        require(address(router) != _address, "Router address already set");
        router = IVVSRouter(_address);
    }

    /**
     * @dev Increases spender allowance of sender address.
     * @param spender Spender address.
     * @param addedValue Amount to increase spender allowance by.
     * @return bool
     */
    function increaseAllowance(address spender, uint256 addedValue)
        external
        initialDistributionLock
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowedFragments[msg.sender][spender]
        );
        return true;
    }

    /**
     * @dev Approves spender address to use sender tokens.
     * @param spender Spender address.
     * @param value Amount of tokens spender can access.
     * @return bool
     */
    function approve(address spender, uint256 value)
        external
        override
        initialDistributionLock
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Checks if given address is exempt from swap fees.
     * @param _addr Address to check current exemption status.
     * @return bool
     */
    function checkFeeExempt(address _addr) external view returns (bool) {
        return _isFeeExempt[_addr];
    }

    /**
     * @dev Unlocks tokens and sets initialDistributedFinished
     * to true. Only callable from owner address.
     */
    function setInitialDistributionFinished() external onlyOwner {
        initialDistributionFinished = true;
    }

    /**
     * @dev Enables transfers for a specific address.
     * Only callable from owner address.
     * @param _addr Address to enable transfers.
     */
    function enableTransfer(address _addr) external onlyOwner {
        _allowTransfer[_addr] = true;
    }

    /**
     * @dev Sets given address to have exceptions from
     * swap fees. Only callable from owner address.
     * @param _addr Address to set fee exemptions.
     */
    function setFeeExempt(address _addr) external onlyOwner {
        _isFeeExempt[_addr] = true;
    }

    /**
     * @dev Checks if a sender (from) and receiver
     * (to) need swap fees applied in transfer. Used
     * in _transferFrom(address, address, uint256) internal
     * function. Should only apply when user is interacting with
     * the pair (to or from)
     * @param from Sender address of swap
     * @param to Receiver address of swap.
     * @return bool True if fees apply on transfer.
     */
    function _shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        return
            (taxableAddress[from] || taxableAddress[to]) &&
            (!_isFeeExempt[from] && !_isFeeExempt[to]);
    }

    /**
     * @dev Updates swap back settings.
     * @param _enabled bool value to determine of swap back is enabled.
     * @param _num uint256 value for the swap back threshhold
     * @param _denom uint256 value used for the threshold deminator
     */
    function setSwapBackSettings(
        bool _enabled,
        uint256 _num,
        uint256 _denom
    ) external onlyOwner {
        swapEnabled = _enabled;
        gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num);
    }

    /**
     * @dev Updates RX3 Rebase settings.
     * @param _enabled bool value to determine of RX3 Protocol is enabled.
     * @param _rebaseMaxRX3Multiplier uint256 value for the max RX3 Multiplier
     * @param _rebaseRX3MultiplierStep uint256 value used for the RX3 Multiplier Step
     */
    function setRX3Settings(
        bool _enabled,
        uint256 _rebaseMaxRX3Multiplier,
        uint256 _rebaseRX3MultiplierStep
    ) external onlyOwner {
        rebaseRX3Enabled = _enabled;
        rebaseMaxRX3Multiplier = _rebaseMaxRX3Multiplier;
        rebaseRX3MultiplierStep = _rebaseRX3MultiplierStep;
    }

    /**
     * @dev Configures Rebase settings. Sets
     * RebasePercentDelta, and Accuracy.
     * @param _percentage value of rebase percent delta based on a daily interval (18)
     * @param _accuracy defines the value of the rebase delta percentage demoninator (1000)
     */
    function setRebaseSettings(uint256 _percentage, uint256 _accuracy)
        external
        onlyOwner
    {
        rebasePercentDelta = (_percentage * FXP_BASE) / _accuracy;
    }

    /**
     * @dev Check whether the a swap back can be performed.
     * @return bool, true if swapBack is allowed to execute.
     */
    function _shouldSwapBack() internal view returns (bool) {
        return
            taxableAddress[msg.sender] == false &&
            !inSwap &&
            swapEnabled &&
            _gonBalances[address(this)] >= gonSwapThreshold;
    }

    /**
     * @dev Returns current circulating token supply
     * @return uint256, value of total circulating supply.
     */
    function getCirculatingSupply() public view returns (uint256) {
        return
            (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div(
                _gonsPerFragment
            );
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function checkSwapThreshold() external view returns (uint256) {
        return gonSwapThreshold.div(_gonsPerFragment);
    }

    function setFeeReceivers(
        address _liquidityReceiver,
        address _phenixFundReserveReceiver
    ) external onlyOwner {
        liquidityReceiver = _liquidityReceiver;
        phenixFundReserveReceiver = _phenixFundReserveReceiver;
    }

    function setFees(
        uint256 _liquidityFee,
        uint256 _phenixVaultFee,
        uint256 _sellFee,
        uint256 _feeDenominator
    ) external onlyOwner {
        liquidityFee = _liquidityFee;
        phenixVaultFee = _phenixVaultFee;
        sellFee = _sellFee;
        totalFee = liquidityFee.add(phenixVaultFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 4);
    }

    function emergencyRecoverETH() external onlyOwner {
        require(address(this).balance > 0, "No ETH to recover.");
        (bool success, ) = address(msg.sender).call{
            value: address(this).balance
        }("");
        require(success, "Failed to recover ETH.");
    }

    function emergencyRecoverToken(address _tokenAddress) external onlyOwner {
        require(
            IERC20(_tokenAddress).balanceOf(address(this)) > 0,
            "No tokens to recover."
        );
        IERC20(_tokenAddress).transfer(
            msg.sender,
            IERC20(_tokenAddress).balanceOf(address(this))
        );
    }

    receive() external payable {}
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","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":true,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"Rebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addLPAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedRebaseAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyRecoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"emergencyRecoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"enableTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLPAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"getNextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialDistributionFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebaseDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebaseTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phenixFundReserveReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phenixVaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseAndSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebaseMaxRX3Multiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebasePercentDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseRX3Enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseRX3Multiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseRX3MultiplierStep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetLastRebaseTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IVVSRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAuthorizedRebaseAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityReceiver","type":"address"},{"internalType":"address","name":"_phenixFundReserveReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_phenixVaultFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setInitialDistributionFinished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_rebaseMaxRX3Multiplier","type":"uint256"},{"internalType":"uint256","name":"_rebaseRX3MultiplierStep","type":"uint256"}],"name":"setRX3Settings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"},{"internalType":"uint256","name":"_accuracy","type":"uint256"}],"name":"setRebaseSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_num","type":"uint256"},{"internalType":"uint256","name":"_denom","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setTaxableAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"taxableAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260026008556008600955600f600a55620000316009546008546200045460201b62001e6e1790919060201c565b600b556064600c5542600d556000600e55614650600f556010805460ff19166001179055620f42406011556216e3606012556103e86013556014805460ff60a01b1916600160a01b1790557e068db8bac710cb295e9e1b089a027525460aa64c2f60beb15a6764b6a2339c601555348015620000ac57600080fd5b50604080518082018252600e81526d5068656e69782046696e616e636560901b6020808301918252835180850190945260048452630a0909cb60e31b908401528151919291601291620001039160009190620005a7565b50815162000119906001906020850190620005a7565b506002805460ff191660ff9290921691909117610100600160a81b031916610100330217905550506014805473145677fc4d9b8f19b5d56d1820c48e0443049a306001600160a01b031990911617908190556040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b158015620001ae57600080fd5b505afa158015620001c3573d6000803e3d6000fd5b505050506040513d6020811015620001da57600080fd5b5051601454604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b1580156200022957600080fd5b505afa1580156200023e573d6000803e3d6000fd5b505050506040513d60208110156200025557600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b158015620002a557600080fd5b505af1158015620002ba573d6000803e3d6000fd5b505050506040513d6020811015620002d157600080fd5b505160048054336001600160a01b031991821681179092556005805490911682179055306000908152601a602090815260408083206014546001600160a01b03168452825280832060001990556af8277896582678ac0000006017908155938352601982529091206a87b0b4d075b8302fffffff19908190559154929350620003649290620004b6811b62001ecf17901c565b6018556005546001600160a01b0390811660009081526007602090815260408083208054600160ff1991821681179092553085528285208054821683179055338086528386208054831684179055958716808652601b85528386208054831684179055600380548085019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055858552601c845282852080549091169091179055601754815190815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35062000653565b600082820183811015620004af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000620004af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200050060201b60201c565b60008183620005905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005545781810151838201526020016200053a565b50505050905090810190601f168015620005825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200059d57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620005df57600085556200062a565b82601f10620005fa57805160ff19168380011785556200062a565b828001600101855582156200062a579182015b828111156200062a5782518255916020019190600101906200060d565b50620006389291506200063c565b5090565b5b808211156200063857600081556001016200063d565b61298280620006636000396000f3fe60806040526004361061037a5760003560e01c8063784d20b1116101d1578063b065406911610102578063d1fce264116100a0578063dd62ed3e1161006f578063dd62ed3e14610bd9578063f2fde38b14610c14578063f887ea4014610c47578063fff4348114610c5c57610381565b8063d1fce26414610b2b578063d439979014610b40578063d5938aac14610b73578063d780d4dc14610ba657610381565b8063bdb938e2116100dc578063bdb938e214610a70578063c851cc3214610aab578063c939a4f614610ade578063d088935814610af357610381565b8063b065406914610a1c578063b86a2fd714610a31578063bd94c8dd14610a4657610381565b806399e3b3bd1161016f578063a8688e2a11610149578063a8688e2a14610986578063a9059cbb146109b9578063a92558d0146109f2578063ab92c3f214610a0757610381565b806399e3b3bd146108fd578063a457c2d714610912578063a4b45c001461094b57610381565b80638da5cb5b116101ab5780638da5cb5b146108a95780638f32d59b146108be57806395d89b41146108d357806398118cb4146108e857610381565b8063784d20b11461083157806383b4ac681461086457806389e9616e1461087957610381565b80632d517fdc116102ab578063530ddf64116102495780636fcba377116102235780636fcba3771461077a57806370a08231146107b6578063715018a6146107e9578063749796a5146107fe57610381565b8063530ddf641461073b5780636d351d1a146107505780636ddd17131461076557610381565b8063395093511161028557806339509351146106735780634513e7d0146106ac5780634bfed05c146106c15780634c50855d146106d657610381565b80632d517fdc146105fb578063313ce567146106105780633751ed741461063b57610381565b806323b872dd116103185780632b112e49116102f25780632b112e49146105a75780632b14ca56146105bc5780632b28af1b146105d15780632be6937d146105e657610381565b806323b872dd146104f8578063264d26dd1461053b5780632abf77f51461056c57610381565b8063180b0d7e11610354578063180b0d7e1461049257806318160ddd146104b9578063186e2d77146104ce5780631df4ccfc146104e357610381565b806306fdde031461038657806307f594a314610410578063095ea7b31461044557610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610c86565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d55781810151838201526020016103bd565b50505050905090810190601f1680156104025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041c57600080fd5b506104436004803603602081101561043357600080fd5b50356001600160a01b0316610d1c565b005b34801561045157600080fd5b5061047e6004803603604081101561046857600080fd5b506001600160a01b038135169060200135610ef9565b604080519115158252519081900360200190f35b34801561049e57600080fd5b506104a7610fd4565b60408051918252519081900360200190f35b3480156104c557600080fd5b506104a7610fda565b3480156104da57600080fd5b50610443610fe0565b3480156104ef57600080fd5b506104a76110d4565b34801561050457600080fd5b5061047e6004803603606081101561051b57600080fd5b506001600160a01b038135811691602081013590911690604001356110da565b34801561054757600080fd5b506105506111b4565b604080516001600160a01b039092168252519081900360200190f35b34801561057857600080fd5b506104436004803603604081101561058f57600080fd5b506001600160a01b03813516906020013515156111c3565b3480156105b357600080fd5b506104a76111ff565b3480156105c857600080fd5b506104a7611288565b3480156105dd57600080fd5b506104a761128e565b3480156105f257600080fd5b50610443611294565b34801561060757600080fd5b506104a76112ba565b34801561061c57600080fd5b506106256112c0565b6040805160ff9092168252519081900360200190f35b34801561064757600080fd5b506104436004803603606081101561065e57600080fd5b508035151590602081013590604001356112c9565b34801561067f57600080fd5b5061047e6004803603604081101561069657600080fd5b506001600160a01b0381351690602001356112f4565b3480156106b857600080fd5b506104436113fa565b3480156106cd57600080fd5b506104a7611453565b3480156106e257600080fd5b506106eb611459565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561072757818101518382015260200161070f565b505050509050019250505060405180910390f35b34801561074757600080fd5b506104436114ba565b34801561075c57600080fd5b506104a76115f4565b34801561077157600080fd5b5061047e61160d565b34801561078657600080fd5b506104436004803603608081101561079d57600080fd5b508035906020810135906040810135906060013561161d565b3480156107c257600080fd5b506104a7600480360360208110156107d957600080fd5b50356001600160a01b0316611666565b3480156107f557600080fd5b5061044361168e565b34801561080a57600080fd5b506104436004803603602081101561082157600080fd5b50356001600160a01b03166116ee565b34801561083d57600080fd5b5061047e6004803603602081101561085457600080fd5b50356001600160a01b0316611723565b34801561087057600080fd5b5061047e611738565b34801561088557600080fd5b506104436004803603604081101561089c57600080fd5b5080359060200135611742565b3480156108b557600080fd5b50610550611769565b3480156108ca57600080fd5b5061047e61177d565b3480156108df57600080fd5b5061039b611793565b3480156108f457600080fd5b506104a76117f3565b34801561090957600080fd5b506105506117f9565b34801561091e57600080fd5b5061047e6004803603604081101561093557600080fd5b506001600160a01b038135169060200135611808565b34801561095757600080fd5b506104436004803603604081101561096e57600080fd5b506001600160a01b0381358116916020013516611964565b34801561099257600080fd5b50610443600480360360208110156109a957600080fd5b50356001600160a01b03166119a3565b3480156109c557600080fd5b5061047e600480360360408110156109dc57600080fd5b506001600160a01b038135169060200135611b03565b3480156109fe57600080fd5b506104a7611b9f565b348015610a1357600080fd5b506104a7611ba5565b348015610a2857600080fd5b506104a7611bab565b348015610a3d57600080fd5b506104a7611bb1565b348015610a5257600080fd5b506104a760048036036020811015610a6957600080fd5b5035611bb7565b348015610a7c57600080fd5b5061044360048036036040811015610a9357600080fd5b506001600160a01b0381351690602001351515611c4d565b348015610ab757600080fd5b5061044360048036036020811015610ace57600080fd5b50356001600160a01b0316611c89565b348015610aea57600080fd5b5061047e611d1f565b348015610aff57600080fd5b5061044360048036036060811015610b1657600080fd5b50803515159060208101359060400135611d28565b348015610b3757600080fd5b5061047e611d78565b348015610b4c57600080fd5b5061047e60048036036020811015610b6357600080fd5b50356001600160a01b0316611d88565b348015610b7f57600080fd5b5061044360048036036020811015610b9657600080fd5b50356001600160a01b0316611da6565b348015610bb257600080fd5b5061047e60048036036020811015610bc957600080fd5b50356001600160a01b0316611ddb565b348015610be557600080fd5b506104a760048036036040811015610bfc57600080fd5b506001600160a01b0381358116916020013516611df0565b348015610c2057600080fd5b5061044360048036036020811015610c3757600080fd5b50356001600160a01b0316611e1b565b348015610c5357600080fd5b50610550611e35565b348015610c6857600080fd5b5061055060048036036020811015610c7f57600080fd5b5035611e44565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d125780601f10610ce757610100808354040283529160200191610d12565b820191906000526020600020905b815481529060010190602001808311610cf557829003601f168201915b5050505050905090565b610d2461177d565b610d2d57600080fd5b6000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d7c57600080fd5b505afa158015610d90573d6000803e3d6000fd5b505050506040513d6020811015610da657600080fd5b505111610df2576040805162461bcd60e51b81526020600482015260156024820152742737903a37b5b2b739903a37903932b1b7bb32b91760591b604482015290519081900360640190fd5b806001600160a01b031663a9059cbb33836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d6020811015610e7957600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610eca57600080fd5b505af1158015610ede573d6000803e3d6000fd5b505050506040513d6020811015610ef457600080fd5b505050565b600554600090600160a01b900460ff1680610f175750610f1761177d565b80610f3157503360009081526006602052604090205460ff165b610f6c5760405162461bcd60e51b81526004018080602001828103825260238152602001806129026023913960400191505060405180910390fd5b336000818152601a602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b600c5481565b60175490565b610fe861177d565b610ff157600080fd5b6000471161103b576040805162461bcd60e51b815260206004820152601260248201527127379022aa24103a37903932b1b7bb32b91760711b604482015290519081900360640190fd5b604051600090339047908381818185875af1925050503d806000811461107d576040519150601f19603f3d011682016040523d82523d6000602084013e611082565b606091505b50509050806110d1576040805162461bcd60e51b81526020600482015260166024820152752330b4b632b2103a37903932b1b7bb32b91022aa241760511b604482015290519081900360640190fd5b50565b600b5481565b6000826001600160a01b0381166110f057600080fd5b6001600160a01b0385166000908152601a602090815260408083203384529091529020546000191461119d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0388166000908152601a82528381203382529091529190912054611178918590611f11565b6001600160a01b0386166000908152601a602090815260408083203384529091529020555b6111a8858585611fa8565b50600195945050505050565b6004546001600160a01b031681565b6111cb61177d565b6111d457600080fd5b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b60185460196020527fd2ac945fcc0096878c763e37d6929b78378c1a2defabde8ba7ee5ed1d6e7a5b25461dead60009081527fc73b1d6eda13a615b81c31830292dbbbf5fbb07f472982e223002bd83d5c3dc454909261128392909161127d9190611277906a87b0b4d075b8302fffffff199061210b565b9061210b565b90611ecf565b905090565b600a5481565b600e5481565b61129c61177d565b6112a557600080fd5b6005805460ff60a01b1916600160a01b179055565b60115481565b60025460ff1690565b6112d161177d565b6112da57600080fd5b6010805460ff191693151593909317909255601255601355565b600554600090600160a01b900460ff1680611312575061131261177d565b8061132c57503360009081526006602052604090205460ff165b6113675760405162461bcd60e51b81526004018080602001828103825260238152602001806129026023913960400191505060405180910390fd5b336000908152601a602090815260408083206001600160a01b03871684529091529020546113959083611e6e565b336000818152601a602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b336000908152601c602052604090205460ff16151560011461144d5760405162461bcd60e51b81526004018080602001828103825260288152602001806129256028913960400191505060405180910390fd5b42600d55565b600f5481565b60606003805480602002602001604051908101604052809291908181526020018280548015610d1257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611493575050505050905090565b336000908152601c602052604090205460ff161515600114611523576040805162461bcd60e51b815260206004820181905260248201527f4e6f742061757468726f697a656420746f206578656375746520726562617365604482015290519081900360640190fd5b61152b61214d565b60005b6003548110156110d157601b60006003838154811061154957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161515600114156115ec576003818154811061158857fe5b60009182526020822001546040805160016209351760e01b0319815290516001600160a01b039092169263fff6cae99260048084019382900301818387803b1580156115d357600080fd5b505af11580156115e7573d6000803e3d6000fd5b505050505b60010161152e565b6000611283601854601554611ecf90919063ffffffff16565b601454600160a01b900460ff1681565b61162561177d565b61162e57600080fd5b60088490556009839055600a8290556116478484611e6e565b600b55600c81905560048104600b541061166057600080fd5b50505050565b6018546001600160a01b0382166000908152601960205260408120549091610fce9190611ecf565b61169661177d565b61169f57600080fd5b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b6116f661177d565b6116ff57600080fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b601c6020526000908152604090205460ff1681565b60165460ff161590565b61174a61177d565b61175357600080fd5b80620f424083028161176157fe5b04600f555050565b60025461010090046001600160a01b031690565b60025461010090046001600160a01b0316331490565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d125780601f10610ce757610100808354040283529160200191610d12565b60085481565b6005546001600160a01b031681565b600554600090600160a01b900460ff1680611826575061182661177d565b8061184057503360009081526006602052604090205460ff165b61187b5760405162461bcd60e51b81526004018080602001828103825260238152602001806129026023913960400191505060405180910390fd5b336000908152601a602090815260408083206001600160a01b03871684529091529020548083106118cf57336000908152601a602090815260408083206001600160a01b03881684529091528120556118fe565b6118d9818461210b565b336000908152601a602090815260408083206001600160a01b03891684529091529020555b336000818152601a602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b61196c61177d565b61197557600080fd5b600480546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055565b6119ab61177d565b6119b457600080fd5b806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156119ef57600080fd5b505af1158015611a03573d6000803e3d6000fd5b5050505060005b600354811015611a9b57816001600160a01b031660038281548110611a2b57fe5b6000918252602090912001546001600160a01b03161415611a93576040805162461bcd60e51b815260206004820152601a60248201527f50616972206164647265737320616c7265616479206164646564000000000000604482015290519081900360640190fd5b600101611a0a565b506003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b039093166001600160a01b0319909316831790556000918252601b6020526040909120805460ff19169091179055565b6000826001600160a01b038116611b1957600080fd5b600554600160a01b900460ff1680611b345750611b3461177d565b80611b4e57503360009081526006602052604090205460ff165b611b895760405162461bcd60e51b81526004018080602001828103825260238152602001806129026023913960400191505060405180910390fd5b611b94338585611fa8565b506001949350505050565b60135481565b60125481565b60095481565b600d5481565b600d54600090820381611bd46201518061127d84620f42406121e4565b90506000611c07620f424061127d84611c01620f424061127d600f546017546121e490919063ffffffff16565b906121e4565b60105490915060ff16151560011415611c4557611c42620f424061127d60125460115410611c3757601254611c3b565b6011545b84906121e4565b90505b949350505050565b611c5561177d565b611c5e57600080fd5b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b611c9161177d565b611c9a57600080fd5b6014546001600160a01b0382811691161415611cfd576040805162461bcd60e51b815260206004820152601a60248201527f526f75746572206164647265737320616c726561647920736574000000000000604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60105460ff1681565b611d3061177d565b611d3957600080fd5b6014805460ff60a01b1916600160a01b85151502179055611d7082611c01836af8277896582678ac0000006000195b061990611ecf565b601555505050565b600554600160a01b900460ff1681565b6001600160a01b031660009081526007602052604090205460ff1690565b611dae61177d565b611db757600080fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b601b6020526000908152604090205460ff1681565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205490565b611e2361177d565b611e2c57600080fd5b6110d18161223d565b6014546001600160a01b031681565b60038181548110611e5457600080fd5b6000918252602090912001546001600160a01b0316905081565b600082820183811015611ec8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611ec883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b7565b60008184841115611fa05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f65578181015183820152602001611f4d565b50505050905090810190601f168015611f925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60165460009060ff1615611fc857611fc184848461231c565b9050611ec8565b6000611fdf601854846121e490919063ffffffff16565b9050611fe96123ae565b15611ff657611ff6612406565b60105460ff161515600114156120195760135460115461201591611e6e565b6011555b6001600160a01b03851660009081526019602052604090205461203c908261210b565b6001600160a01b0386166000908152601960205260408120919091556120628686612773565b61206c5781612077565b6120778686846127ff565b6001600160a01b03861660009081526019602052604090205490915061209d9082611e6e565b6001600160a01b03808716600081815260196020526040902092909255601854908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120ee908590611ecf565b60408051918252519081900360200190a350600195945050505050565b6000611ec883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f11565b600061215842611bb7565b6017549091506121689082611e6e565b60178190556001600160801b031015612187576001600160801b036017555b6017546121a2906af8277896582678ac000000600019611d68565b601855600e81905542600d55620f42406011556017546040517fafae32ce2847c13a56ab802c034c27d3c19f1d61be48c424c5df134145cd44d090600090a250565b6000826121f357506000610fce565b8282028284828161220057fe5b0414611ec85760405162461bcd60e51b81526004018080602001828103825260218152602001806128e16021913960400191505060405180910390fd5b6001600160a01b03811661225057600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081836123065760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f65578181015183820152602001611f4d565b50600083858161231257fe5b0495945050505050565b600080612334601854846121e490919063ffffffff16565b6001600160a01b03861660009081526019602052604090205490915061235a908261210b565b6001600160a01b0380871660009081526019602052604080822093909355908616815220546123899082611e6e565b6001600160a01b03851660009081526019602052604090205550600190509392505050565b336000908152601b602052604081205460ff161580156123d1575060165460ff16155b80156123e65750601454600160a01b900460ff165b801561128357505060155430600090815260196020526040902054101590565b6016805460ff191660011790556018543060009081526019602052604081205490916124329190611ecf565b90506000612456600261127d600b5461127d600854876121e490919063ffffffff16565b90506000612464838361210b565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061249857fe5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156124ec57600080fd5b505afa158015612500573d6000803e3d6000fd5b505050506040513d602081101561251657600080fd5b505181518290600190811061252757fe5b6001600160a01b0392831660209182029290920181019190915260145460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156125c15781810151838201526020016125a9565b505050509050019650505050505050600060405180830381600087803b1580156125ea57600080fd5b505af11580156125fe573d6000803e3d6000fd5b505050506000612617824761210b90919063ffffffff16565b9050600061263d6126346002600854611ecf90919063ffffffff16565b600b549061210b565b9050600061265f600261127d8461127d600854886121e490919063ffffffff16565b9050861561270957601454600480546040805163f305d71960e01b81523093810193909352602483018b905260006044840181905260648401526001600160a01b0391821660848401524260a48401525192169163f305d71991849160c480830192606092919082900301818588803b1580156126db57600080fd5b505af11580156126ef573d6000803e3d6000fd5b50505050506040513d606081101561270657600080fd5b50505b6005546040516000916001600160a01b03169047908381818185875af1925050503d8060008114612756576040519150601f19603f3d011682016040523d82523d6000602084013e61275b565b606091505b50506016805460ff1916905550505050505050505050565b6001600160a01b0382166000908152601b602052604081205460ff16806127b257506001600160a01b0382166000908152601b602052604090205460ff165b8015611ec857506001600160a01b03831660009081526007602052604090205460ff16158015611ec85750506001600160a01b031660009081526007602052604090205460ff1615919050565b600b546001600160a01b0383166000908152601b602052604081205490919060ff1615156001141561283c57600a54612839908290611e6e565b90505b600c546000906128509061127d86856121e4565b3060009081526019602052604090205490915061286d9082611e6e565b306000818152601960205260409020919091556018546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128bb908590611ecf565b60408051918252519081900360200190a36128d6848261210b565b969550505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e697469616c20646973746972627574696f6e206e6f742066696e616c697a65642e4e6f742061757468726f697a656420746f206578656375746520746869732066756e6374696f6e2ea2646970667358221220cfa5b583fae8087fd05d9fbb5b60f35867f6610e4ab8b6455287b79474eb04b164736f6c63430007060033

Deployed ByteCode Sourcemap

11923:23291:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11569:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34823:351;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34823:351:0;-1:-1:-1;;;;;34823:351:0;;:::i;:::-;;29140:286;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29140:286:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;13004:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18488:102;;;;;;;;;;;;;:::i;34525:290::-;;;;;;;;;;;;;:::i;12939:58::-;;;;;;;;;;;;;:::i;24118:457::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24118:457:0;;;;;;;;;;;;;;;;;:::i;12136:32::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;12136:32:0;;;;;;;;;;;;;;20524:172;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20524:172:0;;;;;;;;;;:::i;33369:215::-;;;;;;;;;;;;;:::i;12905:27::-;;;;;;;;;;;;;:::i;13107:34::-;;;;;;;;;;;;;:::i;29854:114::-;;;;;;;;;;;;;:::i;13257:45::-;;;;;;;;;;;;;:::i;11755:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32029:325;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32029:325:0;;;;;;;;;;;;;;:::i;28496:439::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28496:439:0;;;;;;;;:::i;18100:247::-;;;;;;;;;;;;;:::i;13148:58::-;;;;;;;;;;;;;:::i;19813:106::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17561:406;;;;;;;;;;;;;:::i;33685:126::-;;;;;;;;;;;;;:::i;13481:30::-;;;;;;;;;;;;;:::i;34082:435::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34082:435:0;;;;;;;;;;;;;;;;;:::i;21515:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21515:138:0;-1:-1:-1;;;;;21515:138:0;;:::i;3290:126::-;;;;;;;;;;;;;:::i;30433:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30433:101:0;-1:-1:-1;;;;;30433:101:0;;:::i;14031:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14031:55:0;-1:-1:-1;;;;;14031:55:0;;:::i;33592:85::-;;;;;;;;;;;;;:::i;32649:185::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32649:185:0;;;;;;;:::i;3025:79::-;;;;;;;;;;;;;:::i;3190:92::-;;;;;;;;;;;;;:::i;11660:87::-;;;;;;;;;;;;;:::i;12827:31::-;;;;;;;;;;;;;:::i;12175:40::-;;;;;;;;;;;;;:::i;27349:629::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27349:629:0;;;;;;;;:::i;33819:255::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33819:255:0;;;;;;;;;;:::i;19344:346::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19344:346:0;-1:-1:-1;;;;;19344:346:0;;:::i;18799:248::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18799:248:0;;;;;;;;:::i;13379:62::-;;;;;;;;;;;;;:::i;13309:63::-;;;;;;;;;;;;;:::i;12865:33::-;;;;;;;;;;;;;:::i;13048:52::-;;;;;;;;;;;;;:::i;15888:869::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15888:869:0;;:::i;20123:154::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20123:154:0;;;;;;;;;;:::i;28098:184::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28098:184:0;-1:-1:-1;;;;;28098:184:0;;:::i;13215:35::-;;;;;;;;;;;;;:::i;31488:230::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31488:230:0;;;;;;;;;;;;;;:::i;12222:39::-;;;;;;;;;;;;;:::i;29600:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29600:113:0;-1:-1:-1;;;;;29600:113:0;;:::i;30141:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30141:105:0;-1:-1:-1;;;;;30141:105:0;;:::i;13978:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13978:46:0;-1:-1:-1;;;;;13978:46:0;;:::i;21048:192::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21048:192:0;;;;;;;;;;:::i;3424:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3424:109:0;-1:-1:-1;;;;;3424:109:0;;:::i;13450:24::-;;;;;;;;;;;;;:::i;12099:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12099:30:0;;:::i;11569:83::-;11639:5;11632:12;;;;;;;;-1:-1:-1;;11632:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11606:13;;11632:12;;11639:5;;11632:12;;11639:5;11632:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11569:83;:::o;34823:351::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;34978:1:::1;34936:13;-1:-1:-1::0;;;;;34929:31:0::1;;34969:4;34929:46;;;;;;;;;;;;;-1:-1:-1::0;;;;;34929:46:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34929:46:0;:50:::1;34907:121;;;::::0;;-1:-1:-1;;;34907:121:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34907:121:0;;;;;;;;;;;;;::::1;;35046:13;-1:-1:-1::0;;;;;35039:30:0::1;;35084:10;35116:13;-1:-1:-1::0;;;;;35109:31:0::1;;35149:4;35109:46;;;;;;;;;;;;;-1:-1:-1::0;;;;;35109:46:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35109:46:0;35039:127:::1;::::0;;-1:-1:-1;;;;;;35039:127:0::1;::::0;;;;;;-1:-1:-1;;;;;35039:127:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;35109:46:::1;::::0;35039:127;;;;;;;-1:-1:-1;35039:127:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;34823:351:0:o;29140:286::-;15470:27;;29276:4;;-1:-1:-1;;;15470:27:0;;;;;:57;;;15518:9;:7;:9::i;:::-;15470:104;;;-1:-1:-1;15563:10:0;15548:26;;;;:14;:26;;;;;;;;15470:104;15448:189;;;;-1:-1:-1;;;15448:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29316:10:::1;29298:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;29298:38:0;::::1;::::0;;;;;;;;;;:46;;;29360:36;;;;;;;29298:38;;29316:10;29360:36:::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;29414:4:0::1;15648:1;29140:286:::0;;;;:::o;13004:35::-;;;;:::o;18488:102::-;18570:12;;18488:102;:::o;34525:290::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;34618:1:::1;34594:21;:25;34586:56;;;::::0;;-1:-1:-1;;;34586:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34586:56:0;;;;;;;;;;;;;::::1;;34672:82;::::0;34654:12:::1;::::0;34680:10:::1;::::0;34718:21:::1;::::0;34654:12;34672:82;34654:12;34672:82;34718:21;34680:10;34672:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34653:101;;;34773:7;34765:42;;;::::0;;-1:-1:-1;;;34765:42:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34765:42:0;;;;;;;;;;;;;::::1;;3173:1;34525:290::o:0;12939:58::-;;;;:::o;24118:457::-;24261:4;24248:2;-1:-1:-1;;;;;15720:18:0;;15712:27;;;;;;-1:-1:-1;;;;;24282:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;24306:10:::1;24282:35:::0;;;;;;;;-1:-1:-1;;24282:50:0::1;24278:225;;24387:104;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;24387:104:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;24387:23:0;::::1;-1:-1:-1::0;24387:23:0;;;:17:::1;:23:::0;;;;;24429:10:::1;24387:67:::0;;;;;;;;;;:104:::1;::::0;24459:5;;24387:71:::1;:104::i;:::-;-1:-1:-1::0;;;;;24349:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;24373:10:::1;24349:35:::0;;;;;;;:142;24278:225:::1;24515:30;24529:4;24535:2;24539:5;24515:13;:30::i;:::-;-1:-1:-1::0;24563:4:0::1;::::0;24118:457;-1:-1:-1;;;;;24118:457:0:o;12136:32::-;;;-1:-1:-1;;;;;12136:32:0;;:::o;20524:172::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;-1:-1:-1;;;;;20645:33:0;;;::::1;;::::0;;;:23:::1;:33;::::0;;;;:43;;-1:-1:-1;;20645:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20524:172::o;33369:215::-;33545:16;;33502:12;:18;;;;12546:42;33422:7;33478:18;;;;;33422:7;;33462:114;;33545:16;;33463:58;;33502:18;33463:34;;-1:-1:-1;;13652:54:0;33463:14;:34::i;:::-;:38;;:58::i;:::-;33462:64;;:114::i;:::-;33442:134;;33369:215;:::o;12905:27::-;;;;:::o;13107:34::-;;;;:::o;29854:114::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;29926:27:::1;:34:::0;;-1:-1:-1;;;;29926:34:0::1;-1:-1:-1::0;;;29926:34:0::1;::::0;;29854:114::o;13257:45::-;;;;:::o;11755:83::-;11821:9;;;;11755:83;:::o;32029:325::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;32199:16:::1;:27:::0;;-1:-1:-1;;32199:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;32237:22:::1;:48:::0;32296:23:::1;:50:::0;32029:325::o;28496:439::-;15470:27;;28629:4;;-1:-1:-1;;;15470:27:0;;;;;:57;;;15518:9;:7;:9::i;:::-;15470:104;;;-1:-1:-1;15563:10:0;15548:26;;;;:14;:26;;;;;;;;15470:104;15448:189;;;;-1:-1:-1;;;15448:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28710:10:::1;28692:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;28692:62:0;::::1;::::0;;;;;;;;:78:::1;::::0;28759:10;28692:66:::1;:78::i;:::-;28669:10;28651:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;28651:38:0;::::1;::::0;;;;;;;;;;:119;;;28786;;;;;;28651:38;;28786:119:::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;28923:4:0::1;28496:439:::0;;;;:::o;18100:247::-;18202:10;18178:35;;;;:23;:35;;;;;;;;:43;;:35;:43;18156:133;;;;-1:-1:-1;;;18156:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18324:15;18302:19;:37;18100:247::o;13148:58::-;;;;:::o;19813:106::-;19862:16;19898:13;19891:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19891:20:0;;;;;;;;;;;;;;;;;;;;;;19813:106;:::o;17561:406::-;17652:10;17628:35;;;;:23;:35;;;;;;;;:43;;:35;:43;17606:125;;;;;-1:-1:-1;;;17606:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17744:9;:7;:9::i;:::-;17771;17766:194;17790:13;:20;17786:24;;17766:194;;;17836:14;:32;17851:13;17865:1;17851:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17851:16:0;17836:32;;;;;;;;;;;;;;;:40;;17851:16;17836:40;17832:117;;;17909:13;17923:1;17909:16;;;;;;;;;;;;;;;;;17897:36;;;-1:-1:-1;;;;;;17897:36:0;;;;-1:-1:-1;;;;;17909:16:0;;;;17897:34;;:36;;;;;;;;;;17909:16;;17897:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17832:117;17812:3;;17766:194;;33685:126;33738:7;33765:38;33786:16;;33765;;:20;;:38;;;;:::i;13481:30::-;;;-1:-1:-1;;;13481:30:0;;;;;:::o;34082:435::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;34263:12:::1;:28:::0;;;34302:14:::1;:32:::0;;;34345:7:::1;:18:::0;;;34385:32:::1;34278:13:::0;34319:15;34385:16:::1;:32::i;:::-;34374:8;:43:::0;34428:14:::1;:32:::0;;;34507:1:::1;34445:15:::0;34490:18:::1;34479:8;;:29;34471:38;;;::::0;::::1;;34082:435:::0;;;;:::o;21515:138::-;21628:16;;-1:-1:-1;;;;;21606:17:0;;21579:7;21606:17;;;:12;:17;;;;;;21579:7;;21606:39;;:17;:21;:39::i;3290:126::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;3371:6:::1;::::0;3352:26:::1;::::0;3371:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;3371:6:0::1;::::0;3352:26:::1;::::0;;;::::1;3389:6;:19:::0;;-1:-1:-1;;;;;;3389:19:0::1;::::0;;3290:126::o;30433:101::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;-1:-1:-1;;;;;30500:19:0::1;;::::0;;;:12:::1;:19;::::0;;;;:26;;-1:-1:-1;;30500:26:0::1;30522:4;30500:26;::::0;;30433:101::o;14031:55::-;;;;;;;;;;;;;;;:::o;33592:85::-;33663:6;;;;33662:7;33592:85;:::o;32649:185::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;32817:9:::1;12398:7;32791:11;:22;32790:36;;;;;;32769:18;:57:::0;-1:-1:-1;;32649:185:0:o;3025:79::-;3090:6;;;;;-1:-1:-1;;;;;3090:6:0;;3025:79::o;3190:92::-;3268:6;;;;;-1:-1:-1;;;;;3268:6:0;3254:10;:20;;3190:92::o;11660:87::-;11732:7;11725:14;;;;;;;;-1:-1:-1;;11725:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11699:13;;11725:14;;11732:7;;11725:14;;11732:7;11725:14;;;;;;;;;;;;;;;;;;;;;;;;12827:31;;;;:::o;12175:40::-;;;-1:-1:-1;;;;;12175:40:0;;:::o;27349:629::-;15470:27;;27487:4;;-1:-1:-1;;;15470:27:0;;;;;:57;;;15518:9;:7;:9::i;:::-;15470:104;;;-1:-1:-1;15563:10:0;15548:26;;;;:14;:26;;;;;;;;15470:104;15448:189;;;;-1:-1:-1;;;15448:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27546:10:::1;27509:16;27528:29:::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;27528:38:0;::::1;::::0;;;;;;;;27581:27;;::::1;27577:237;;27643:10;27666:1;27625:29:::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;27625:38:0;::::1;::::0;;;;;;;:42;27577:237:::1;;;27741:61;:8:::0;27772:15;27741:12:::1;:61::i;:::-;27718:10;27700:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;27700:38:0;::::1;::::0;;;;;;;:102;27577:237:::1;27852:10;27899:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;27829:119:0;::::1;27899:38:::0;;;;;;;;;;;27829:119;;;;;;;;;27852:10;27829:119:::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;27966:4:0::1;::::0;27349:629;-1:-1:-1;;;27349:629:0:o;33819:255::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;33963:17:::1;:38:::0;;-1:-1:-1;;;;;33963:38:0;;::::1;-1:-1:-1::0;;;;;;33963:38:0;;::::1;;::::0;;;34012:25:::1;:54:::0;;;;;::::1;::::0;::::1;;::::0;;33819:255::o;19344:346::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;19426:8:::1;-1:-1:-1::0;;;;;19414:26:0::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19460:9;19455:145;19479:13;:20:::0;19475:24;::::1;19455:145;;;19549:8;-1:-1:-1::0;;;;;19529:28:0::1;:13;19543:1;19529:16;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19529:16:0::1;:28;;19521:67;;;::::0;;-1:-1:-1;;;19521:67:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19501:3;;19455:145;;;-1:-1:-1::0;19612:13:0::1;:28:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;19612:28:0;;::::1;-1:-1:-1::0;;;;;;19612:28:0;;::::1;::::0;::::1;::::0;;-1:-1:-1;19651:24:0;;;:14:::1;19612:28;19651:24:::0;;;;;:31;;-1:-1:-1;;19651:31:0::1;::::0;;::::1;::::0;;19344:346::o;18799:248::-;18959:4;18904:2;-1:-1:-1;;;;;15720:18:0;;15712:27;;;;;;15470::::1;::::0;-1:-1:-1;;;15470:27:0;::::1;;;::::0;:57:::1;;;15518:9;:7;:9::i;:::-;15470:104;;;-1:-1:-1::0;15563:10:0::1;15548:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;15470:104;15448:189;;;;-1:-1:-1::0;;;15448:189:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18981:36:::2;18995:10;19007:2;19011:5;18981:13;:36::i;:::-;-1:-1:-1::0;19035:4:0::2;::::0;18799:248;-1:-1:-1;;;;18799:248:0:o;13379:62::-;;;;:::o;13309:63::-;;;;:::o;12865:33::-;;;;:::o;13048:52::-;;;;:::o;15888:869::-;16016:19;;15952:7;;16003:32;;15952:7;16093:83;12719:5;16093:48;16003:32;12398:7;16093:38;:48::i;:83::-;16048:128;;16189:23;16215:160;12398:7;16215:132;16312:34;16215:78;12398:7;16215:50;16246:18;;16215:12;;:30;;:50;;;;:::i;:78::-;:96;;:132::i;:160::-;16392:16;;16189:186;;-1:-1:-1;16392:16:0;;:24;;:16;:24;16388:327;;;16451:252;12398:7;16451:220;16533:22;;16511:19;;:44;:141;;16630:22;;16511:141;;;16583:19;;16511:141;16451:15;;:37;:220::i;:252::-;16433:270;;16388:327;16734:15;15888:869;-1:-1:-1;;;;15888:869:0:o;20123:154::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;-1:-1:-1;;;;;20235:24:0;;;::::1;;::::0;;;:14:::1;:24;::::0;;;;:34;;-1:-1:-1;;20235:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20123:154::o;28098:184::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;28184:6:::1;::::0;-1:-1:-1;;;;;28176:27:0;;::::1;28184:6:::0;::::1;28176:27;;28168:66;;;::::0;;-1:-1:-1;;;28168:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28245:6;:29:::0;;-1:-1:-1;;;;;;28245:29:0::1;-1:-1:-1::0;;;;;28245:29:0;;;::::1;::::0;;;::::1;::::0;;28098:184::o;13215:35::-;;;;;;:::o;31488:230::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;31626:11:::1;:22:::0;;-1:-1:-1;;;;31626:22:0::1;-1:-1:-1::0;;;31626:22:0;::::1;;;;::::0;;31678:32:::1;31705:4:::0;31678:22:::1;31693:6:::0;12792:26;-1:-1:-1;;13667:38:0::1;;13652:54:::0;;31678:14:::1;:22::i;:32::-;31659:16;:51:::0;-1:-1:-1;;;31488:230:0:o;12222:39::-;;;-1:-1:-1;;;12222:39:0;;;;;:::o;29600:113::-;-1:-1:-1;;;;;29686:19:0;29662:4;29686:19;;;:12;:19;;;;;;;;;29600:113::o;30141:105::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;-1:-1:-1;;;;;30210:21:0::1;;::::0;;;:14:::1;:21;::::0;;;;:28;;-1:-1:-1;;30210:28:0::1;30234:4;30210:28;::::0;;30141:105::o;13978:46::-;;;;;;;;;;;;;;;:::o;21048:192::-;-1:-1:-1;;;;;21199:24:0;;;21167:7;21199:24;;;:17;:24;;;;;;;;:33;;;;;;;;;;;;;21048:192::o;3424:109::-;3152:9;:7;:9::i;:::-;3144:18;;;;;;3497:28:::1;3516:8;3497:18;:28::i;13450:24::-:0;;;-1:-1:-1;;;;;13450:24:0;;:::o;12099:30::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12099:30:0;;-1:-1:-1;12099:30:0;:::o;1337:181::-;1395:7;1427:5;;;1451:6;;;;1443:46;;;;;-1:-1:-1;;;1443:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:1;1337:181;-1:-1:-1;;;1337:181:0:o;2162:132::-;2220:7;2247:39;2251:1;2254;2247:39;;;;;;;;;;;;;;;;;:3;:39::i;1670:226::-;1790:7;1826:12;1818:6;;;;1810:29;;;;-1:-1:-1;;;1810:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1862:5:0;;;1670:226::o;22762:910::-;22902:6;;22881:4;;22902:6;;22898:80;;;22932:34;22947:6;22955:2;22959:6;22932:14;:34::i;:::-;22925:41;;;;22898:80;22990:17;23010:28;23021:16;;23010:6;:10;;:28;;;;:::i;:::-;22990:48;;23055:17;:15;:17::i;:::-;23051:61;;;23089:11;:9;:11::i;:::-;23128:16;;;;:24;;:16;:24;23124:159;;;23233:23;;23191:19;;:80;;:23;:80::i;:::-;23169:19;:102;23124:159;-1:-1:-1;;;;;23318:20:0;;;;;;:12;:20;;;;;;:35;;23343:9;23318:24;:35::i;:::-;-1:-1:-1;;;;;23295:20:0;;;;;;:12;:20;;;;;:58;;;;23394:26;23308:6;23417:2;23394:14;:26::i;:::-;:98;;23483:9;23394:98;;;23436:31;23445:6;23453:2;23457:9;23436:8;:31::i;:::-;-1:-1:-1;;;;;23522:16:0;;;;;;:12;:16;;;;;;23366:126;;-1:-1:-1;23522:39:0;;23366:126;23522:20;:39::i;:::-;-1:-1:-1;;;;;23503:16:0;;;;;;;:12;:16;;;;;:58;;;;23622:16;;23579:61;;;;;;23600:39;;:17;;:21;:39::i;:::-;23579:61;;;;;;;;;;;;;;;-1:-1:-1;23660:4:0;;22762:910;-1:-1:-1;;;;;22762:910:0:o;1526:136::-;1584:7;1611:43;1615:1;1618;1611:43;;;;;;;;;;;;;;;;;:3;:43::i;16920:487::-;16959:19;16981:30;16995:15;16981:13;:30::i;:::-;17037:12;;16959:52;;-1:-1:-1;17037:38:0;;16959:52;17037:16;:38::i;:::-;17022:12;:53;;;-1:-1:-1;;;;;;17088:83:0;;;-1:-1:-1;;;;;17134:12:0;:25;17088:83;17217:12;;17202:28;;12792:26;-1:-1:-1;;13667:38:0;;17202:28;17183:16;:47;17243:15;:29;;;17305:15;17283:19;:37;12398:7;17331:19;:30;17386:12;;17379:20;;;;-1:-1:-1;;17379:20:0;16920:487;:::o;1904:250::-;1962:7;1986:6;1982:47;;-1:-1:-1;2016:1:0;2009:8;;1982:47;2053:5;;;2057:1;2053;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3541:187;-1:-1:-1;;;;;3615:22:0;;3607:31;;;;;;3675:6;;3654:38;;-1:-1:-1;;;;;3654:38:0;;;;3675:6;;;;;3654:38;;;;;3703:6;:17;;-1:-1:-1;;;;;3703:17:0;;;;;-1:-1:-1;;;;;;3703:17:0;;;;;;;;;3541:187::o;2302:225::-;2422:7;2457:12;2450:5;2442:28;;;;-1:-1:-1;;;2442:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2481:9;2497:1;2493;:5;;;;;;;2302:225;-1:-1:-1;;;;;2302:225:0:o;21991:339::-;22109:4;22126:17;22146:28;22157:16;;22146:6;:10;;:28;;;;:::i;:::-;-1:-1:-1;;;;;22206:18:0;;;;;;:12;:18;;;;;;22126:48;;-1:-1:-1;22206:33:0;;22126:48;22206:22;:33::i;:::-;-1:-1:-1;;;;;22185:18:0;;;;;;;:12;:18;;;;;;:54;;;;22269:16;;;;;;;:31;;22290:9;22269:20;:31::i;:::-;-1:-1:-1;;;;;22250:16:0;;;;;;:12;:16;;;;;:50;-1:-1:-1;22318:4:0;;-1:-1:-1;21991:339:0;;;;;:::o;32983:246::-;33085:10;33033:4;33070:26;;;:14;:26;;;;;;;;:35;;;:59;;-1:-1:-1;33123:6:0;;;;33122:7;33070:59;:87;;;;-1:-1:-1;33146:11:0;;-1:-1:-1;;;33146:11:0;;;;33070:87;:151;;;;-1:-1:-1;;33205:16:0;;33195:4;33174:27;;;;:12;:27;;;;;;:47;;;32983:246::o;24762:1466::-;15336:6;:13;;-1:-1:-1;;15336:13:0;15345:4;15336:13;;;24893:16:::1;::::0;24868:4:::1;15336:6:::0;24847:27;;;:12:::1;:27;::::0;;;;;15336:6;;24847:73:::1;::::0;:27;:31:::1;:73::i;:::-;24816:104;;24931:23;24957:101;25056:1;24957:80;25028:8;;24957:52;24996:12;;24957:20;:38;;:52;;;;:::i;:101::-;24931:127:::0;-1:-1:-1;25069:20:0::1;25092:41;:20:::0;24931:127;25092:24:::1;:41::i;:::-;25170:16;::::0;;25184:1:::1;25170:16:::0;;;;;::::1;::::0;;25069:64;;-1:-1:-1;25146:21:0::1;::::0;25170:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25170:16:0::1;25146:40;;25215:4;25197;25202:1;25197:7;;;;;;;;-1:-1:-1::0;;;;;25197:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;25241:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;25241:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;25197:7;;25241:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25241:13:0;25231:7;;:4;;25236:1:::1;::::0;25231:7;::::1;;;;;-1:-1:-1::0;;;;;25231:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;25325:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;25325:188:0;;::::1;::::0;::::1;::::0;;;25267:21:::1;25325:188:::0;;;;;;25467:4:::1;25325:188:::0;;;;;;25487:15:::1;25325:188:::0;;;;;;;;;;;;;;;;;;;;;25291:21:::1;::::0;25325:6;;;::::1;::::0;:57:::1;::::0;25397:12;;25267:21;;25440:4;;25325:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;25267:21;25325:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25526:17;25546:40;25572:13;25546:21;:25;;:40;;;;:::i;:::-;25526:60;;25597:19;25619:33;25632:19;25649:1;25632:12;;:16;;:19;;;;:::i;:::-;25619:8;::::0;;:12:::1;:33::i;:::-;25597:55;;25665:26;25694:93;25785:1;25694:72;25754:11;25694:41;25722:12;;25694:9;:27;;:41;;;;:::i;:93::-;25665:122:::0;-1:-1:-1;25804:19:0;;25800:292:::1;;25840:6;::::0;26014:17:::1;::::0;;25840:240:::1;::::0;;-1:-1:-1;;;25840:240:0;;25916:4:::1;25840:240:::0;;::::1;::::0;;;;;;;;;;:6:::1;:240:::0;;;;;;;;;;-1:-1:-1;;;;;26014:17:0;;::::1;25840:240:::0;;;;26050:15:::1;25840:240:::0;;;;;:6;::::1;::::0;:22:::1;::::0;25870:18;;25840:240;;;;;::::1;::::0;;;;;;;;25870:18;25840:6;:240;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;25800:292:0::1;26131:25;::::0;26123:97:::1;::::0;26105:12:::1;::::0;-1:-1:-1;;;;;26131:25:0::1;::::0;26184:21:::1;::::0;26105:12;26123:97;26105:12;26123:97;26184:21;26131:25;26123:97:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15372:6:0;:14;;-1:-1:-1;;15372:14:0;;;-1:-1:-1;;;;;;;;;;24762:1466:0:o;30963:253::-;-1:-1:-1;;;;;31106:20:0;;31063:4;31106:20;;;:14;:20;;;;;;;;;:42;;-1:-1:-1;;;;;;31130:18:0;;;;;;:14;:18;;;;;;;;31106:42;31105:103;;;;-1:-1:-1;;;;;;31168:18:0;;;;;;:12;:18;;;;;;;;31167:19;:40;;;;-1:-1:-1;;;;;;;31191:16:0;;;;;:12;:16;;;;;;;;31190:17;;30963:253;-1:-1:-1;30963:253:0:o;26572:560::-;26729:8;;-1:-1:-1;;;;;26752:18:0;;26689:7;26752:18;;;:14;:18;;;;;;26689:7;;26729:8;26752:18;;:26;;:18;:26;26748:66;;;26806:7;;26792:22;;:9;;:13;:22::i;:::-;26780:34;;26748:66;26876:14;;26827:17;;26847:44;;:24;:9;26861;26847:13;:24::i;:44::-;26955:4;26934:27;;;;:12;:27;;;;;;26827:64;;-1:-1:-1;26934:66:0;;26827:64;26934:31;:66::i;:::-;26925:4;26904:27;;;;:12;:27;;;;;:96;;;;27062:16;;-1:-1:-1;;;;;27016:64:0;;;;;27048:31;;:9;;:13;:31::i;:::-;27016:64;;;;;;;;;;;;;;;27100:24;:9;27114;27100:13;:24::i;:::-;27093:31;26572:560;-1:-1:-1;;;;;;26572:560:0:o

Swarm Source

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