Contract 0x1f7a54df8b04ca31ac875cef5acaa247c87420ed

Tarot 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x722b2bb05effdde1ac21147dfe1852ba2ef9b8b7cb3a36fa229449c9478ee05fDeliver Liquidit...311788302022-02-16 23:17:35140 days 17 hrs agoTarot: Deployer IN  Tarot: Liquidity Generator0 FTM0.022420049019
0xb80cd760fb96b160299bc3b9f351f80447561883b471c755133ab562cfee889fFinalize150863972021-08-20 20:00:48320 days 20 hrs agoTarot: Deployer IN  Tarot: Liquidity Generator0 FTM0.2748045
0x04047e709a3e99dacc2f16e424c1c58de7d521ca5a39ba472d5666dd027f62f5Deposit150862942021-08-20 19:59:22320 days 20 hrs ago0x608b41d3271883e21f035c87aa2609566aeb172f IN  Tarot: Liquidity Generator127 FTM0.0316495
0xdd635b8a32aea07aa5df85107c39f40ebbd85561bb2769bc0cf08af35eb94e14Deposit150862812021-08-20 19:59:12320 days 20 hrs ago0xf0b18fddad37b6a3b6f3c762aca6008e27774e54 IN  Tarot: Liquidity Generator500 FTM0.0316495
0x8e55ca3901a40e9eb28d607e2ca7f50bfcd4c66c54ef29c423ac1837071dae30Deposit150862312021-08-20 19:58:32320 days 20 hrs ago0x608b41d3271883e21f035c87aa2609566aeb172f IN  Tarot: Liquidity Generator81 FTM0.0316495
0x17a282b3fc7f46b39736dc59bdcc17775c500af50c9092983c0bb43ef7ff2575Deposit150862272021-08-20 19:58:28320 days 20 hrs ago0x650f2ea1edcbc7908dac06ea410b98d708664445 IN  Tarot: Liquidity Generator670 FTM0.0391495
0x316935e3ea37b07b61230004872ead6d784b355df2202a3fcb67f817fbb4c505Deposit150861722021-08-20 19:57:39320 days 20 hrs ago0xfecd16177770137f7885141c4d95e07533999d8d IN  Tarot: Liquidity Generator200 FTM0.0056766775
0x1fbc6b63efd24f80ad0a9f0cc13e10bd557079fe6a8b7d6935116c5ec82f8c01Deposit150861132021-08-20 19:56:45320 days 20 hrs ago0x608b41d3271883e21f035c87aa2609566aeb172f IN  Tarot: Liquidity Generator71 FTM0.00443093
0xa7a1a99a67853d216205d886cd9cd3fe638eaa116eb1aa063ceb4463d1c2b0d3Deposit150861072021-08-20 19:56:37320 days 20 hrs ago0xa04bb161c7cd5f48b9409520aa46eb02a1c71efe IN  Tarot: Liquidity Generator666 FTM0.00548093
0xc6f0383f7c63ddb12fe3d42fb89c36444c342414f06a31dd0bba0a0d92a05756Deposit150860012021-08-20 19:54:45320 days 20 hrs ago0xa6b59687a95bdece85d4bf946ee460707850c9b7 IN  Tarot: Liquidity Generator100 FTM0.00443093
0xdf6ccb7f9541326ca5a8a622b99e0c92373d1889f515411ece67e5a123e961c7Deposit150859062021-08-20 19:53:05320 days 20 hrs ago0xf478f2619870795380582e5dd5ce1016cdba3dbe IN  Tarot: Liquidity Generator250 FTM0.00443093
0x8a013e5f319c38d900351a1f1cd304a75c3097ce3555a8ee7d57a5098bc24ae5Deposit150858882021-08-20 19:52:50320 days 20 hrs ago0x67a53061f9750da6f09b5b744e04a9e9b87b711a IN  Tarot: Liquidity Generator800 FTM0.00548093
0xe8639ee968c2cf0be772792155dc9fef5f599aa67f1089c3982049eba721b177Deposit150858552021-08-20 19:52:14320 days 20 hrs ago0xd256c2324f3e36d06f5e645d309434b185c58e7f IN  Tarot: Liquidity Generator11.1984 FTM0.00548093
0x9d844c856d3194c3f8aa25ebe7902ecb0e7df32236e033eb4adccef2fc34987bDeposit150853912021-08-20 19:44:26320 days 21 hrs ago0x608b41d3271883e21f035c87aa2609566aeb172f IN  Tarot: Liquidity Generator805.417 FTM0.00548093
0x096a0f8c2502d97711a7e4cedf3e5ec207126987d2c4ff618a8caeac9a5abce2Deposit150852802021-08-20 19:42:37320 days 21 hrs ago0xf478f2619870795380582e5dd5ce1016cdba3dbe IN  Tarot: Liquidity Generator50 FTM0.00443093
0xa5eeb433068c400926484e3dd73e033273b4301efca29b47a42f8fd2b9845d0fDeposit150852492021-08-20 19:42:09320 days 21 hrs ago0x0df7e892f545d164c40dc7dbf0c87bd69de732fb IN  Tarot: Liquidity Generator2,000 FTM0.00443093
0x0ba25912ecf3b7fe4607cea03ca42cef8b2212b47ae4b49b4840b5fbdcfd956eDeposit150851102021-08-20 19:39:47320 days 21 hrs ago0xb84848ce4a46a44f06864b5decc2fe07b842cf30 IN  Tarot: Liquidity Generator130 FTM0.00443093
0x9e07d679e8f66eb58c3c76f4d88ecabf594f0af891307f15e5ff9e467dbb6d97Deposit150846132021-08-20 19:30:34320 days 21 hrs ago0x581da705c53f07001d57e7086c72001664b5fb42 IN  Tarot: Liquidity Generator20 FTM0.00548093
0x9b092320723ee27056d1a16d8229bbe72b0d8bb92e516e60960d3927a230e522Deposit150846112021-08-20 19:30:32320 days 21 hrs ago0x432f24ba6660863accc2bf60e94917f9453bde1d IN  Tarot: Liquidity Generator650 FTM0.00548093
0x0c42c1304e71adb33d22c8c2912344733989094c4802e8949f6a37386c6e8ec6Deposit150844082021-08-20 19:26:49320 days 21 hrs ago0xb460336e8850ba79c56cfa6e47de2fcd3d2d3d63 IN  Tarot: Liquidity Generator1,600 FTM0.00548093
0xbfac63a04bb2d7a0e25e4fd186c0e2d8991f47726a3f0b49b31be074c45a462aDeposit150843182021-08-20 19:25:05320 days 21 hrs ago0x0df7e892f545d164c40dc7dbf0c87bd69de732fb IN  Tarot: Liquidity Generator3,000 FTM0.00548093
0x820ab9494c2813e019f74fae217ee5260bc67723fa9987dda8ed2ce913822210Deposit150837922021-08-20 19:16:09320 days 21 hrs ago0xdcf7e0bf73f96e60835e4c62ad1a48d572d817f1 IN  Tarot: Liquidity Generator2,000 FTM0.00548093
0xf6f3f8d3a54e7242b0af81e7b334b10aa770829763cfea1aa3eec93336a044efDeposit150828592021-08-20 19:00:25320 days 21 hrs ago0x1967b8a305c152898ca71e035891b6bc9e176737 IN  Tarot: Liquidity Generator150 FTM0.005548458189
0x5db355daad36d37a6d7884d036d8b015ed01ecdc8a04fc519aa432ba5a3f9cd6Deposit150824572021-08-20 18:52:36320 days 21 hrs ago0x2ddbb811f1b310efc1d7c31b426f82d6dcf584f4 IN  Tarot: Liquidity Generator2,222.2 FTM0.00469794
0x3d9ee6aa3535468b12c5e3bc98f96437f781e107063fe0126edfe9a211783c5eDeposit150824282021-08-20 18:51:53320 days 21 hrs ago0x89fc66ba59f9672748cb0c3ca4e4616ac36d38aa IN  Tarot: Liquidity Generator4,000 FTM0.00469794
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb80cd760fb96b160299bc3b9f351f80447561883b471c755133ab562cfee889f150863972021-08-20 20:00:48320 days 20 hrs ago Tarot: Liquidity Generator SpiritSwap: Router225,255.172063 FTM
0xb80cd760fb96b160299bc3b9f351f80447561883b471c755133ab562cfee889f150863972021-08-20 20:00:48320 days 20 hrs ago Tarot: Liquidity Generator SpookySwap: Router501,374.415237 FTM
0x04047e709a3e99dacc2f16e424c1c58de7d521ca5a39ba472d5666dd027f62f5150862942021-08-20 19:59:22320 days 20 hrs ago 0x608b41d3271883e21f035c87aa2609566aeb172f Tarot: Liquidity Generator127 FTM
0xdd635b8a32aea07aa5df85107c39f40ebbd85561bb2769bc0cf08af35eb94e14150862812021-08-20 19:59:12320 days 20 hrs ago 0xf0b18fddad37b6a3b6f3c762aca6008e27774e54 Tarot: Liquidity Generator500 FTM
0x8e55ca3901a40e9eb28d607e2ca7f50bfcd4c66c54ef29c423ac1837071dae30150862312021-08-20 19:58:32320 days 20 hrs ago 0x608b41d3271883e21f035c87aa2609566aeb172f Tarot: Liquidity Generator81 FTM
0x17a282b3fc7f46b39736dc59bdcc17775c500af50c9092983c0bb43ef7ff2575150862272021-08-20 19:58:28320 days 20 hrs ago 0x650f2ea1edcbc7908dac06ea410b98d708664445 Tarot: Liquidity Generator670 FTM
0x316935e3ea37b07b61230004872ead6d784b355df2202a3fcb67f817fbb4c505150861722021-08-20 19:57:39320 days 20 hrs ago 0xfecd16177770137f7885141c4d95e07533999d8d Tarot: Liquidity Generator200 FTM
0x1fbc6b63efd24f80ad0a9f0cc13e10bd557079fe6a8b7d6935116c5ec82f8c01150861132021-08-20 19:56:45320 days 20 hrs ago 0x608b41d3271883e21f035c87aa2609566aeb172f Tarot: Liquidity Generator71 FTM
0xa7a1a99a67853d216205d886cd9cd3fe638eaa116eb1aa063ceb4463d1c2b0d3150861072021-08-20 19:56:37320 days 20 hrs ago 0xa04bb161c7cd5f48b9409520aa46eb02a1c71efe Tarot: Liquidity Generator666 FTM
0xc6f0383f7c63ddb12fe3d42fb89c36444c342414f06a31dd0bba0a0d92a05756150860012021-08-20 19:54:45320 days 20 hrs ago 0xa6b59687a95bdece85d4bf946ee460707850c9b7 Tarot: Liquidity Generator100 FTM
0xdf6ccb7f9541326ca5a8a622b99e0c92373d1889f515411ece67e5a123e961c7150859062021-08-20 19:53:05320 days 20 hrs ago 0xf478f2619870795380582e5dd5ce1016cdba3dbe Tarot: Liquidity Generator250 FTM
0x8a013e5f319c38d900351a1f1cd304a75c3097ce3555a8ee7d57a5098bc24ae5150858882021-08-20 19:52:50320 days 20 hrs ago 0x67a53061f9750da6f09b5b744e04a9e9b87b711a Tarot: Liquidity Generator800 FTM
0xe8639ee968c2cf0be772792155dc9fef5f599aa67f1089c3982049eba721b177150858552021-08-20 19:52:14320 days 20 hrs ago 0xd256c2324f3e36d06f5e645d309434b185c58e7f Tarot: Liquidity Generator11.1984 FTM
0x9d844c856d3194c3f8aa25ebe7902ecb0e7df32236e033eb4adccef2fc34987b150853912021-08-20 19:44:26320 days 21 hrs ago 0x608b41d3271883e21f035c87aa2609566aeb172f Tarot: Liquidity Generator805.417 FTM
0x096a0f8c2502d97711a7e4cedf3e5ec207126987d2c4ff618a8caeac9a5abce2150852802021-08-20 19:42:37320 days 21 hrs ago 0xf478f2619870795380582e5dd5ce1016cdba3dbe Tarot: Liquidity Generator50 FTM
0xa5eeb433068c400926484e3dd73e033273b4301efca29b47a42f8fd2b9845d0f150852492021-08-20 19:42:09320 days 21 hrs ago 0x0df7e892f545d164c40dc7dbf0c87bd69de732fb Tarot: Liquidity Generator2,000 FTM
0x0ba25912ecf3b7fe4607cea03ca42cef8b2212b47ae4b49b4840b5fbdcfd956e150851102021-08-20 19:39:47320 days 21 hrs ago 0xb84848ce4a46a44f06864b5decc2fe07b842cf30 Tarot: Liquidity Generator130 FTM
0x9e07d679e8f66eb58c3c76f4d88ecabf594f0af891307f15e5ff9e467dbb6d97150846132021-08-20 19:30:34320 days 21 hrs ago 0x581da705c53f07001d57e7086c72001664b5fb42 Tarot: Liquidity Generator20 FTM
0x9b092320723ee27056d1a16d8229bbe72b0d8bb92e516e60960d3927a230e522150846112021-08-20 19:30:32320 days 21 hrs ago 0x432f24ba6660863accc2bf60e94917f9453bde1d Tarot: Liquidity Generator650 FTM
0x0c42c1304e71adb33d22c8c2912344733989094c4802e8949f6a37386c6e8ec6150844082021-08-20 19:26:49320 days 21 hrs ago 0xb460336e8850ba79c56cfa6e47de2fcd3d2d3d63 Tarot: Liquidity Generator1,600 FTM
0xbfac63a04bb2d7a0e25e4fd186c0e2d8991f47726a3f0b49b31be074c45a462a150843182021-08-20 19:25:05320 days 21 hrs ago 0x0df7e892f545d164c40dc7dbf0c87bd69de732fb Tarot: Liquidity Generator3,000 FTM
0x820ab9494c2813e019f74fae217ee5260bc67723fa9987dda8ed2ce913822210150837922021-08-20 19:16:09320 days 21 hrs ago 0xdcf7e0bf73f96e60835e4c62ad1a48d572d817f1 Tarot: Liquidity Generator2,000 FTM
0xf6f3f8d3a54e7242b0af81e7b334b10aa770829763cfea1aa3eec93336a044ef150828592021-08-20 19:00:25320 days 21 hrs ago 0x1967b8a305c152898ca71e035891b6bc9e176737 Tarot: Liquidity Generator150 FTM
0x5db355daad36d37a6d7884d036d8b015ed01ecdc8a04fc519aa432ba5a3f9cd6150824572021-08-20 18:52:36320 days 21 hrs ago 0x2ddbb811f1b310efc1d7c31b426f82d6dcf584f4 Tarot: Liquidity Generator2,222.2 FTM
0x3d9ee6aa3535468b12c5e3bc98f96437f781e107063fe0126edfe9a211783c5e150824282021-08-20 18:51:53320 days 21 hrs ago 0x89fc66ba59f9672748cb0c3ca4e4616ac36d38aa Tarot: Liquidity Generator4,000 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LiquidityGenerator

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : LiquidityGenerator.sol
pragma solidity =0.6.6;

import "./interfaces/IERC20.sol";
import "./interfaces/IOwnedDistributor.sol";
import "./interfaces/IUniswapV2Router01.sol";
import "./libraries/SafeMath.sol";
import "./libraries/SafeToken.sol";

contract LiquidityGenerator {
    using SafeMath for uint256;
    using SafeToken for address;

    address public immutable admin;
    address public immutable tarot;
    address public immutable router0;
    address public immutable router1;
    address public immutable pair0;
    address public immutable pair1;
    address public immutable reservesManager;
    address public immutable distributor;
    address public immutable bonusDistributor;
    uint public immutable periodBegin;
    uint public immutable periodEnd;
    uint public immutable bonusEnd;
    uint public immutable sharesRouter0;
    uint public immutable sharesRouter1;
    uint public immutable totalRouterShares;
    uint public unlockTimestamp;
    bool public finalized = false;
    bool public delivered = false;

    event Finalized(uint amountTarot, uint amountETH);
    event Deposit(
        address indexed sender,
        uint amount,
        uint distributorTotalShares,
        uint bonusDistributorTotalShares,
        uint newShares,
        uint newBonusShares
    );
    event PostponeUnlockTimestamp(uint prevUnlockTimestamp, uint unlockTimestamp);
    event Delivered(uint amountPair0, uint amountPair1);

    constructor(
        address admin_,
        address tarot_,
        address router0_,
        address router1_,
        address pair0_,
        address pair1_,
        address reservesManager_,
        address distributor_,
        address bonusDistributor_,
        uint periodBegin_,
        uint periodDuration_,
        uint bonusDuration_,
        uint sharesRouter0_,
        uint sharesRouter1_
    ) public {
        require(periodDuration_ > 0, "LiquidityGenerator: INVALID_PERIOD_DURATION");
        require(bonusDuration_ > 0 && bonusDuration_ <= periodDuration_, "LiquidityGenerator: INVALID_BONUS_DURATION");
        admin = admin_;
        tarot = tarot_;
        router0 = router0_;
        router1 = router1_;
        pair0 = pair0_;
        pair1 = pair1_;
        reservesManager = reservesManager_;
        distributor = distributor_;
        bonusDistributor = bonusDistributor_;
        periodBegin = periodBegin_;
        periodEnd = periodBegin_.add(periodDuration_);
        bonusEnd = periodBegin_.add(bonusDuration_);
        sharesRouter0 = sharesRouter0_;
        sharesRouter1 = sharesRouter1_;
        totalRouterShares = sharesRouter0_.add(sharesRouter1_);
    }

    function distributorTotalShares() public view returns (uint totalShares) {
        return IOwnedDistributor(distributor).totalShares();
    }

    function bonusDistributorTotalShares() public view returns (uint totalShares) {
        return IOwnedDistributor(bonusDistributor).totalShares();
    }

    function distributorRecipients(address account)
        public
        view
        returns (
            uint shares,
            uint lastShareIndex,
            uint credit
        )
    {
        return IOwnedDistributor(distributor).recipients(account);
    }

    function bonusDistributorRecipients(address account)
        public
        view
        returns (
            uint shares,
            uint lastShareIndex,
            uint credit
        )
    {
        return IOwnedDistributor(bonusDistributor).recipients(account);
    }

    function postponeUnlockTimestamp(uint newUnlockTimestamp) public {
        require(msg.sender == admin, "LiquidityGenerator: UNAUTHORIZED");
        require(newUnlockTimestamp > unlockTimestamp, "LiquidityGenerator: INVALID_UNLOCK_TIMESTAMP");
        uint prevUnlockTimestamp = unlockTimestamp;
        unlockTimestamp = newUnlockTimestamp;
        emit PostponeUnlockTimestamp(prevUnlockTimestamp, unlockTimestamp);
    }

    function deliverLiquidityToReservesManager() public {
        require(msg.sender == admin, "LiquidityGenerator: UNAUTHORIZED");
        require(!delivered, "LiquidityGenerator: ALREADY_DELIVERED");
        require(finalized, "LiquidityGenerator: NOT_FINALIZED");
        uint blockTimestamp = getBlockTimestamp();
        require(blockTimestamp >= unlockTimestamp, "LiquidityGenerator: STILL_LOCKED");
        uint _amountPair0 = pair0.myBalance();
        uint _amountPair1 = pair1.myBalance();
        pair0.safeTransfer(reservesManager, _amountPair0);
        pair1.safeTransfer(reservesManager, _amountPair1);
        delivered = true;
        emit Delivered(_amountPair0, _amountPair1);
    }

    function finalize() public {
        require(!finalized, "LiquidityGenerator: FINALIZED");
        uint blockTimestamp = getBlockTimestamp();
        require(blockTimestamp >= periodEnd, "LiquidityGenerator: TOO_SOON");
        uint _amountTarot = tarot.myBalance();
        uint _amountETH = address(this).balance;

        uint _amountTarot1 = _amountTarot.mul(sharesRouter1).div(totalRouterShares);
        uint _amountETH1 = _amountETH.mul(sharesRouter1).div(totalRouterShares);
        uint _amountTarot0 = _amountTarot.sub(_amountTarot1);
        uint _amountETH0 = _amountETH.sub(_amountETH1);

        tarot.safeApprove(router0, _amountTarot0);
        tarot.safeApprove(router1, _amountTarot1);
        IUniswapV2Router01(router0).addLiquidityETH{value: _amountETH0}(
            tarot,
            _amountTarot0,
            _amountTarot0,
            _amountETH0,
            address(this),
            blockTimestamp
        );
        IUniswapV2Router01(router1).addLiquidityETH{value: _amountETH1}(
            tarot,
            _amountTarot1,
            _amountTarot1,
            _amountETH1,
            address(this),
            blockTimestamp
        );
        unlockTimestamp = blockTimestamp.add(60 * 60 * 24 * 180);
        finalized = true;
        emit Finalized(_amountTarot, _amountETH);
    }

    function deposit() external payable {
        uint blockTimestamp = getBlockTimestamp();
        require(blockTimestamp >= periodBegin, "LiquidityGenerator: TOO_SOON");
        require(blockTimestamp < periodEnd, "LiquidityGenerator: TOO_LATE");
        require(msg.value >= 1e19, "LiquidityGenerator: INVALID_VALUE");
        (uint _prevSharesBonus, , ) = IOwnedDistributor(bonusDistributor).recipients(msg.sender);
        uint _newSharesBonus = _prevSharesBonus;
        if (blockTimestamp < bonusEnd) {
            _newSharesBonus = _prevSharesBonus.add(msg.value);
            IOwnedDistributor(bonusDistributor).editRecipient(msg.sender, _newSharesBonus);
        }
        (uint _prevShares, , ) = IOwnedDistributor(distributor).recipients(msg.sender);
        uint _newShares = _prevShares.add(msg.value);
        IOwnedDistributor(distributor).editRecipient(msg.sender, _newShares);
        emit Deposit(
            msg.sender,
            msg.value,
            distributorTotalShares(),
            bonusDistributorTotalShares(),
            _newShares,
            _newSharesBonus
        );
    }

    receive() external payable {
        revert("LiquidityGenerator: BAD_CALL");
    }

    function getBlockTimestamp() public view virtual returns (uint) {
        return block.timestamp;
    }
}

File 2 of 6 : IERC20.sol
pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

File 3 of 6 : IOwnedDistributor.sol
pragma solidity >=0.5.0;

interface IOwnedDistributor {
    function totalShares() external view returns (uint);

    function recipients(address)
        external
        view
        returns (
            uint shares,
            uint lastShareIndex,
            uint credit
        );

    function editRecipient(address account, uint shares) external;
}

File 4 of 6 : IUniswapV2Router01.sol
pragma solidity >=0.5.0;

interface IUniswapV2Router01 {
    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 5 of 6 : SafeMath.sol
pragma solidity =0.6.6;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

File 6 of 6 : SafeToken.sol
pragma solidity =0.6.6;

interface ERC20Interface {
    function balanceOf(address user) external view returns (uint256);
}

library SafeToken {
    function myBalance(address token) internal view returns (uint256) {
        return ERC20Interface(token).balanceOf(address(this));
    }

    function balanceOf(address token, address user) internal view returns (uint256) {
        return ERC20Interface(token).balanceOf(user);
    }

    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeApprove");
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransfer");
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransferFrom");
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, "!safeTransferETH");
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"tarot_","type":"address"},{"internalType":"address","name":"router0_","type":"address"},{"internalType":"address","name":"router1_","type":"address"},{"internalType":"address","name":"pair0_","type":"address"},{"internalType":"address","name":"pair1_","type":"address"},{"internalType":"address","name":"reservesManager_","type":"address"},{"internalType":"address","name":"distributor_","type":"address"},{"internalType":"address","name":"bonusDistributor_","type":"address"},{"internalType":"uint256","name":"periodBegin_","type":"uint256"},{"internalType":"uint256","name":"periodDuration_","type":"uint256"},{"internalType":"uint256","name":"bonusDuration_","type":"uint256"},{"internalType":"uint256","name":"sharesRouter0_","type":"uint256"},{"internalType":"uint256","name":"sharesRouter1_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountPair0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPair1","type":"uint256"}],"name":"Delivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"distributorTotalShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonusDistributorTotalShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBonusShares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountTarot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"prevUnlockTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockTimestamp","type":"uint256"}],"name":"PostponeUnlockTimestamp","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"bonusDistributorRecipients","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusDistributorTotalShares","outputs":[{"internalType":"uint256","name":"totalShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deliverLiquidityToReservesManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delivered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"distributorRecipients","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorTotalShares","outputs":[{"internalType":"uint256","name":"totalShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodBegin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newUnlockTimestamp","type":"uint256"}],"name":"postponeUnlockTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservesManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharesRouter0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharesRouter1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tarot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRouterShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6102606040526001805461ffff191690553480156200001d57600080fd5b506040516200207e3803806200207e83398181016040526101c08110156200004457600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e08801516101008901516101208a01516101408b01516101608c01516101808d01516101a0909d01519b9c9a9b999a98999798969795969495939492939192909183620000e55760405162461bcd60e51b815260040180806020018281038252602b81526020018062002053602b913960400191505060405180910390fd5b600083118015620000f65750838311155b620001335760405162461bcd60e51b815260040180806020018281038252602a81526020018062002029602a913960400191505060405180910390fd5b60608e811b6001600160601b03199081166080528e821b811660a0528d821b811660c0528c821b811660e0528b821b8116610100528a821b81166101205289821b81166101405288821b8116610160529087901b16610180526101a0859052620001aa858562000207602090811b62001a1c17901c565b6101c052620001c6858462000207602090811b62001a1c17901c565b6101e052610200829052610220819052620001ee828262000207602090811b62001a1c17901c565b6102405250620002699c50505050505050505050505050565b60008282018381101562000262576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6101a0516101c0516101e051610200516102205161024051611c5c620003cd6000398061097652806109da5280610e2f5250806107f5528061099b52806109ff525080611505525080610ee352806112a05250806108c55280610d28528061114c52508061081952806110d7525080610d51528061100d528061106c52806112285280611300525080610e5952806110a752806113845280611435528061152e52508061071f5280610779528061083d5250806104fa52806106c1528061075752508061068b52806106fd52806115a45250806104d65280610adc5280610c47525080610a825280610b6b52806115c852508061093f5280610a605280610aba5280610b1f5280610bfb5280610e0b5250806105275280610f1052806115ec5250611c5c6000f3fe6080604052600436106101a05760003560e01c80638bc85b03116100ec578063bfe109281161008a578063ea988b5911610064578063ea988b5914610462578063f05663a614610495578063f6bcd63a146104aa578063f851a440146104bf576101f2565b8063bfe1092814610430578063d0e30db014610445578063e3c9ba451461044d576101f2565b8063aa082a9d116100c6578063aa082a9d146103c8578063b04c1e02146103dd578063b3f05b97146103f2578063bbdfbfba1461041b576101f2565b80638bc85b03146103745780638be1ff3914610389578063a4fa00e0146103b3576101f2565b80634bb278f3116101595780636d5360c1116101335780636d5360c1146103205780637254233614610335578063796b89b91461034a57806384d572b41461035f576101f2565b80634bb278f3146102a5578063506ec095146102ba57806366082ffc146102cf576101f2565b806305a20149146101f757806322fc8fc31461022857806324054e4a1461023d5780632a42dd11146102545780632c995cae1461027b578063345ef94114610290576101f2565b366101f2576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a204241445f43414c4c00000000604482015290519081900360640190fd5b600080fd5b34801561020357600080fd5b5061020c6104d4565b604080516001600160a01b039092168252519081900360200190f35b34801561023457600080fd5b5061020c6104f8565b34801561024957600080fd5b5061025261051c565b005b34801561026057600080fd5b506102696107f3565b60408051918252519081900360200190f35b34801561028757600080fd5b50610269610817565b34801561029c57600080fd5b5061020c61083b565b3480156102b157600080fd5b5061025261085f565b3480156102c657600080fd5b50610269610d26565b3480156102db57600080fd5b50610302600480360360208110156102f257600080fd5b50356001600160a01b0316610d4a565b60408051938452602084019290925282820152519081900360600190f35b34801561032c57600080fd5b5061020c610e09565b34801561034157600080fd5b50610269610e2d565b34801561035657600080fd5b50610269610e51565b34801561036b57600080fd5b50610269610e55565b34801561038057600080fd5b50610269610ee1565b34801561039557600080fd5b50610252600480360360208110156103ac57600080fd5b5035610f05565b3480156103bf57600080fd5b50610269611009565b3480156103d457600080fd5b50610269611064565b3480156103e957600080fd5b5061020c61106a565b3480156103fe57600080fd5b5061040761108e565b604080519115158252519081900360200190f35b34801561042757600080fd5b50610407611097565b34801561043c57600080fd5b5061020c6110a5565b6102526110c9565b34801561045957600080fd5b50610269611503565b34801561046e57600080fd5b506103026004803603602081101561048557600080fd5b50356001600160a01b0316611527565b3480156104a157600080fd5b5061020c6115a2565b3480156104b657600080fd5b5061020c6115c6565b3480156104cb57600080fd5b5061020c6115ea565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610599576040805162461bcd60e51b815260206004820181905260248201527f4c697175696469747947656e657261746f723a20554e415554484f52495a4544604482015290519081900360640190fd5b600154610100900460ff16156105e05760405162461bcd60e51b8152600401808060200182810382526025815260200180611b736025913960400191505060405180910390fd5b60015460ff166106215760405162461bcd60e51b8152600401808060200182810382526021815260200180611c066021913960400191505060405180910390fd5b600061062b610e51565b9050600054811015610684576040805162461bcd60e51b815260206004820181905260248201527f4c697175696469747947656e657261746f723a205354494c4c5f4c4f434b4544604482015290519081900360640190fd5b60006106b87f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661160e565b905060006106ee7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661160e565b905061074a6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008463ffffffff61168a16565b6107a46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008363ffffffff61168a16565b6001805461ff001916610100179055604080518381526020810183905281517f8d84aa4c3d0f1410a0ed52701dfd802c9f0ebf00aa65c54a393d180a3f9c0cd3929181900390910190a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015460ff16156108b7576040805162461bcd60e51b815260206004820152601d60248201527f4c697175696469747947656e657261746f723a2046494e414c495a4544000000604482015290519081900360640190fd5b60006108c1610e51565b90507f0000000000000000000000000000000000000000000000000000000000000000811015610938576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a20544f4f5f534f4f4e00000000604482015290519081900360640190fd5b600061096c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661160e565b90504760006109d17f00000000000000000000000000000000000000000000000000000000000000006109c5857f000000000000000000000000000000000000000000000000000000000000000063ffffffff6117e416565b9063ffffffff61184616565b90506000610a297f00000000000000000000000000000000000000000000000000000000000000006109c5857f000000000000000000000000000000000000000000000000000000000000000063ffffffff6117e416565b90506000610a3d858463ffffffff61188816565b90506000610a51858463ffffffff61188816565b9050610aad6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008463ffffffff6118ca16565b610b076001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008663ffffffff6118ca16565b6040805163f305d71960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052604482018590526064820184905230608483015260a482018a905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f305d71991849160c480830192606092919082900301818588803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b50505050506040513d6060811015610be157600080fd5b50506040805163f305d71960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018790526064820186905230608483015260a482018a905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f305d71991869160c480830192606092919082900301818588803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b50505050506040513d6060811015610cbd57600080fd5b50610cd390508762ed4e0063ffffffff611a1c16565b6000556001805460ff191681179055604080518781526020810187905281517fb968440accd1ce5fa60b00de8bb8d8487eb2fda3c3701fb30fea3f69aa910a48929181900390910190a150505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eb820312856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060606040518083038186803b158015610dc557600080fd5b505afa158015610dd9573d6000803e3d6000fd5b505050506040513d6060811015610def57600080fd5b508051602082015160409092015190969195509350915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b4290565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633a98ef396040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb057600080fd5b505afa158015610ec4573d6000803e3d6000fd5b505050506040513d6020811015610eda57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f82576040805162461bcd60e51b815260206004820181905260248201527f4c697175696469747947656e657261746f723a20554e415554484f52495a4544604482015290519081900360640190fd5b6000548111610fc25760405162461bcd60e51b815260040180806020018281038252602c815260200180611bda602c913960400191505060405180910390fd5b6000805490829055604080518281526020810184905281517fe3d6cde4e8f25cec5cc1b915261e33581a4bf2cf7e2aa87985f471cc52fa0f81929181900390910190a15050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633a98ef396040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb057600080fd5b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015460ff1681565b600154610100900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110d3610e51565b90507f000000000000000000000000000000000000000000000000000000000000000081101561114a576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a20544f4f5f534f4f4e00000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000081106111be576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a20544f4f5f4c41544500000000604482015290519081900360640190fd5b678ac7230489e800003410156112055760405162461bcd60e51b8152600401808060200182810382526021815260200180611b986021913960400191505060405180910390fd5b604080516375c1018960e11b815233600482015290516000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163eb82031291602480820192606092909190829003018186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d606081101561129957600080fd5b50519050807f0000000000000000000000000000000000000000000000000000000000000000831015611361576112d6823463ffffffff611a1c16565b604080516304674a9360e41b81523360048201526024810183905290519192506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634674a9309160448082019260009290919082900301818387803b15801561134857600080fd5b505af115801561135c573d6000803e3d6000fd5b505050505b604080516375c1018960e11b815233600482015290516000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163eb82031291602480820192606092909190829003018186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d60608110156113f557600080fd5b50519050600061140b823463ffffffff611a1c16565b604080516304674a9360e41b81523360048201526024810183905290519192506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634674a9309160448082019260009290919082900301818387803b15801561147d57600080fd5b505af1158015611491573d6000803e3d6000fd5b50505050336001600160a01b03167ff943cf10ef4d1e3239f4716ddecdf546e8ba8ab0e41deafd9a71a99936827e45346114c9610e55565b6114d1611009565b604080519384526020840192909252828201526060820185905260808201879052519081900360a00190a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eb820312856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060606040518083038186803b158015610dc557600080fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561165857600080fd5b505afa15801561166c573d6000803e3d6000fd5b505050506040513d602081101561168257600080fd5b505192915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106117075780518252601f1990920191602091820191016116e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611769576040519150601f19603f3d011682016040523d82523d6000602084013e61176e565b606091505b509150915081801561179c57508051158061179c575080806020019051602081101561179957600080fd5b50515b6117dd576040805162461bcd60e51b815260206004820152600d60248201526c10b9b0b332aa3930b739b332b960991b604482015290519081900360640190fd5b5050505050565b6000826117f357506000611840565b8282028284828161180057fe5b041461183d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611bb96021913960400191505060405180910390fd5b90505b92915050565b600061183d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a76565b600061183d83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250611b18565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106119475780518252601f199092019160209182019101611928565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50915091508180156119dc5750805115806119dc57508080602001905160208110156119d957600080fd5b50515b6117dd576040805162461bcd60e51b815260206004820152600c60248201526b2173616665417070726f766560a01b604482015290519081900360640190fd5b60008282018381101561183d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611b025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ac7578181015183820152602001611aaf565b50505050905090810190601f168015611af45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611b0e57fe5b0495945050505050565b60008184841115611b6a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611ac7578181015183820152602001611aaf565b50505090039056fe4c697175696469747947656e657261746f723a20414c52454144595f44454c4956455245444c697175696469747947656e657261746f723a20494e56414c49445f56414c5545536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774c697175696469747947656e657261746f723a20494e56414c49445f554e4c4f434b5f54494d455354414d504c697175696469747947656e657261746f723a204e4f545f46494e414c495a4544a264697066735822122022bde6aec6e40990a7e56466ab974d13ad475b1babc2165492a741d37f9e294664736f6c634300060600334c697175696469747947656e657261746f723a20494e56414c49445f424f4e55535f4455524154494f4e4c697175696469747947656e657261746f723a20494e56414c49445f504552494f445f4455524154494f4e0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2900000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae5200000000000000000000000011d90ea9d16e1ee5879b299a819f6d618816d70f000000000000000000000000f050133847bb537c7476d054b8be6e30253fbd0500000000000000000000000063d5554b748598c191ab0cbd0e0e1c638ffebee6000000000000000000000000d4fcd1d1252bf4a3134e0e848479ad90a60979ef0000000000000000000000003303a565741d0d41d026c12259ff2d4772d3622e00000000000000000000000000000000000000000000000000000000611c1540000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000045000000000000000000000000000000000000000000000000000000000000001f

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

0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2900000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae5200000000000000000000000011d90ea9d16e1ee5879b299a819f6d618816d70f000000000000000000000000f050133847bb537c7476d054b8be6e30253fbd0500000000000000000000000063d5554b748598c191ab0cbd0e0e1c638ffebee6000000000000000000000000d4fcd1d1252bf4a3134e0e848479ad90a60979ef0000000000000000000000003303a565741d0d41d026c12259ff2d4772d3622e00000000000000000000000000000000000000000000000000000000611c1540000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000045000000000000000000000000000000000000000000000000000000000000001f

-----Decoded View---------------
Arg [0] : admin_ (address): 0x5b0390bccca1f040d8993eb6e4ce8ded93721765
Arg [1] : tarot_ (address): 0xc5e2b037d30a390e62180970b3aa4e91868764cd
Arg [2] : router0_ (address): 0xf491e7b69e4244ad4002bc14e878a34207e38c29
Arg [3] : router1_ (address): 0x16327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
Arg [4] : pair0_ (address): 0x11d90ea9d16e1ee5879b299a819f6d618816d70f
Arg [5] : pair1_ (address): 0xf050133847bb537c7476d054b8be6e30253fbd05
Arg [6] : reservesManager_ (address): 0x63d5554b748598c191ab0cbd0e0e1c638ffebee6
Arg [7] : distributor_ (address): 0xd4fcd1d1252bf4a3134e0e848479ad90a60979ef
Arg [8] : bonusDistributor_ (address): 0x3303a565741d0d41d026c12259ff2d4772d3622e
Arg [9] : periodBegin_ (uint256): 1629230400
Arg [10] : periodDuration_ (uint256): 259200
Arg [11] : bonusDuration_ (uint256): 86400
Arg [12] : sharesRouter0_ (uint256): 69
Arg [13] : sharesRouter1_ (uint256): 31

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765
Arg [1] : 000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd
Arg [2] : 000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
Arg [3] : 00000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
Arg [4] : 00000000000000000000000011d90ea9d16e1ee5879b299a819f6d618816d70f
Arg [5] : 000000000000000000000000f050133847bb537c7476d054b8be6e30253fbd05
Arg [6] : 00000000000000000000000063d5554b748598c191ab0cbd0e0e1c638ffebee6
Arg [7] : 000000000000000000000000d4fcd1d1252bf4a3134e0e848479ad90a60979ef
Arg [8] : 0000000000000000000000003303a565741d0d41d026c12259ff2d4772d3622e
Arg [9] : 00000000000000000000000000000000000000000000000000000000611c1540
Arg [10] : 000000000000000000000000000000000000000000000000000000000003f480
Arg [11] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000045
Arg [13] : 000000000000000000000000000000000000000000000000000000000000001f


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.