Contract 0x645c3f33b357b5e67d546a10715c90c562556090 2

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe2f7f7149f61dbeaf1dae2684b80d46f301ce4be0ae7f2efdd4992a4a23eea97Approve111493312021-09-22 23:27:5435 mins ago0xc81b0366a12a6a945401363eb952507c435378e5 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x387cd8c687a6ead29b85497befd13f57a8c8ebbe6f0b46af231c0b0e2ac9ea75Approve111477112021-09-22 22:05:251 hr 57 mins ago0xae0fce84eca1a29c1faf2f7c5ea4a5d036661b07 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000125765
0x704019b59ecb41d1b036e266e5531fd3423baa5ac4f2e8b321ec08259a71bb31Approve111436552021-09-22 18:40:545 hrs 22 mins ago0xe1c0f725b1d32dd92acc258c8c6bcd18ee4beb2b IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x12406137708ca784dcf465616b2960a85659f18426cd6d2dd346494b5ad463c0Approve111433062021-09-22 18:23:255 hrs 39 mins ago0xe7bda1ae557f2da2dfe116667c2f0c42775ccee1 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x12016b4f97a6f44ba1ade69bdd5a717ee38532976da6693556d0919cf2864000Approve111431972021-09-22 18:17:585 hrs 45 mins ago0xcf8d1dfa22da298373e73f20d33a4bb68e66e578 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0xf5ff6864ff1b518ecbe45caa7541b596f755369ac1175378b92dc492016e1e8bApprove111418292021-09-22 17:08:406 hrs 54 mins ago0x8f3cfac1b94e739a2aa4cac730890de84440c6fa IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x7593d2af72dac2029380de851f7a03371a4ffd3fea7608fe1be72409a9df95ecApprove111412962021-09-22 16:41:587 hrs 21 mins ago0x50976434ab3b2412a47db730e461c679740ce77e IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x92f6f31cb1f0bec7562e2642740f27f27c022a18043617da45a9c9bf38d14746Approve111393902021-09-22 15:05:148 hrs 58 mins ago0xc674ffad8082aa238f15cd5a91ab1fd68afeceae IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x9d8c9c2e87a50137882923142e40d2bf3cbfab77657211ef8f84f72f0e4e8d6eApprove111377492021-09-22 13:43:0410 hrs 20 mins ago0xd08b2145f3f7882efe28ae4e9752cd3d79a102e8 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x1e0c68279efa3316361cd9901beb9d3c49396dfeded5570a24d10828bdfa8d04Approve111374902021-09-22 13:30:0710 hrs 33 mins ago0xa1473037646bda8943b24447c26355bc8b6b90ab IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x0ac5a3dc9dbf5f886ddf226d38cb494063e9a7935ff6d7b9bd37104510be83d3Approve111346782021-09-22 11:09:2412 hrs 53 mins ago0x252d85d9ff3e6fc222fd43a5aec67e6df4bf23cd IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x7acd738f5ade9555a68286fc153e948ca7c89f3c293678785d061f01af962f5aApprove111312822021-09-22 8:18:4515 hrs 44 mins ago0x9d26a04c6ddc6c2b77918c2c86f0b26d971a4d46 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x1c961c9365d9ff7b2b5bfc5ed7d193e8a446f49f5b74a6fc7e3957bd890cc6c0Approve111311502021-09-22 8:12:0915 hrs 51 mins ago0xe37a2d681c2d0643bef03af3d63e078f33465261 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x988e3b07a677def6d10288b4614776450e98f570b408bc629ff88944fc5f626dApprove111302262021-09-22 7:25:5016 hrs 37 mins ago0xe71f1bab4dbd656c8d6ad7f7a9c897da1a83b7ee IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x5881d708c1e2c7167d245e5ab1b721684a64f44dcf01fddc08fb9e22a60acc36Approve111296302021-09-22 6:55:5317 hrs 7 mins ago0xc1556c88c256dbb0d37795ded43e18b1d5afdeef IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0xe2227276ed1ddef603b260cacc4fdf245a886d1070d5ffee0bada0944cc68315Approve111292612021-09-22 6:36:5417 hrs 26 mins ago0xb1dbb3d3c479a0ab2bb87c4663366f45186c03e1 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0xcaf0c027246076f809b0df286b37f29802622298c1a675e74766f6e3223c939aApprove111288022021-09-22 6:13:5717 hrs 49 mins ago0x1ab89de00f039d9de0e17cd1f1a5e7372c475ac3 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x416935f20db3c530d293231fadad5388ab3c3fe1812880dc2832be674199ea9bApprove111284572021-09-22 5:56:4218 hrs 6 mins ago0xf53ec4b6b89720fc347d512d07635a07785e1892 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x28230c8af2d62df3d3e048ccfa1e12921475fd6dc1d3e1f9e3a2f8fc0cbb4d34Approve111284092021-09-22 5:54:1818 hrs 9 mins ago0x5eb6eefe3b7b85183922f7dcd255ff1ecb94acdf IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0xcd5b665753865616a31a96700b5481ce931980701b300c3e3d3f769fa25732caApprove111284042021-09-22 5:54:0318 hrs 9 mins ago0x78b9bce42cabb6f3699557e543f927077278db4c IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x371cf70b2b287a0108faf4cf8c2658f3d4c3a6cfa1b50110654fe554437f5b4aApprove111279252021-09-22 5:29:2218 hrs 33 mins ago0xea9150f6d4f3c3934c500586401c7b9c05a90967 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x3aaea0d537287f42921bef549d846cbfc01671060cb071a90e588ffcf81e308aApprove111271572021-09-22 4:50:5819 hrs 12 mins ago0x9e93a00524eba4c537a6ed42f2a9cc5e12d5d1f4 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0xbe319536c64cb4c3f7af31da40df566ac3692bf155dacd9064e93995e3ddf8efApprove111233232021-09-22 1:38:1322 hrs 25 mins ago0xc1ad5792f184d794ab9fdcea403075971a7e41fd IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0x4a2717af0b75f2d6540abc40ff92a8b035d69ccd21b816c225eed8a05d1654d5Approve111208652021-09-21 23:33:191 day 30 mins ago0xe5da796fbcfefc99db744276b484d8b9fc107f12 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
0xcaeea23232fad88edfca5b3fb12ec9704588b937b6751d955f242b833b2fde0bApprove111187842021-09-21 21:47:291 day 2 hrs ago0x1e1c3278400ff12b0596b118a8a601ba59e10084 IN  0x645c3f33b357b5e67d546a10715c90c5625560900 BNB0.000221765
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x28a6c69c3e69ab03211863d8dd0f71a36df737998a0ce3a73c81ca3bd14d7c2c69636492021-04-28 16:51:05147 days 7 hrs ago 0x4cbaf01d645a233d11cd5a19939387a94d7f2f02  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Pair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 13 : UniswapV2ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import '../../vendors/interfaces/IUniswapV2ERC20.sol';
import "../../vendors/libraries/SafeMath.sol";

contract UniswapV2ERC20 is IUniswapV2ERC20 {
    using SafeMath for uint;

    string public override constant name = 'PACT LP Token';
    string public override constant symbol = 'PACTLP';
    uint8 public override constant decimals = 18;
    uint public override totalSupply;
    mapping (address => uint) public override balanceOf;
    mapping (address => mapping(address => uint)) public override allowance;

    bytes32 public override DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public override nonces;

    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    constructor() public {
        uint chainId;
        assembly {
            chainId := chainid()
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external override returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external override returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {
        require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

File 2 of 13 : UniswapV2Pair.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import './UniswapV2ERC20.sol';
import '../../vendors/interfaces/IERC20.sol';
import '../../vendors/interfaces/IPactSwapFactory.sol';
import '../../vendors/interfaces/IUniswapV2Callee.sol';
import '../../vendors/interfaces/IUniswapV2Pair.sol';
import '../../vendors/libraries/Math.sol';
import '../../vendors/libraries/UQ112x112.sol';
import "../../vendors/libraries/SafeMath.sol";

contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 {
    using SafeMath  for uint;
    using UQ112x112 for uint224;

    uint public constant override MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public override factory;
    address public override token0;
    address public override token1;

    uint112 private reserve0;           // uses single storage slot, accessible via getReserves
    uint112 private reserve1;           // uses single storage slot, accessible via getReserves
    uint32  private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint public override price0CumulativeLast;
    uint public override price1CumulativeLast;
    uint public override kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'UniswapV2: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function getReserves() public view override returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');
    }

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    constructor() public {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external override {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address incentivesPool = IPactSwapFactory(factory).incentivesPool();
        feeOn = incentivesPool != address(0);
        uint _kLast = kLast; // gas savings

        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint denominator = rootK.mul(5).add(rootKLast);
                    uint liquidity = numerator / denominator;
                    // fee hardcoded as 0.3% in UniswapV2Library.getAmountOut/getAmountIn
                    // liquidity holders - 0.25%
                    // incentivesPool - 0.05%
                    if (liquidity > 0) _mint(incentivesPool, liquidity / 6);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock override returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
            _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Mint(msg.sender, amount0, amount1);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external lock override returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20(_token0).balanceOf(address(this));
        uint balance1 = IERC20(_token1).balanceOf(address(this));
        uint liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_token1).balanceOf(address(this));

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external override lock {
        require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');

        uint balance0;
        uint balance1;
        { // scope for _token{0,1}, avoids stack too deep errors
        address _token0 = token0;
        address _token1 = token1;
        require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');
        if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens
        if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
        if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external override lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

    // force reserves to match balances
    function sync() external override lock {
        _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}

File 3 of 13 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

interface IERC20 {
    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 (uint);

    function balanceOf(address tokenOwner) external view returns (uint balance);
    function allowance(address tokenOwner, address spender) external view returns (uint remaining);
    function approve(address spender, uint tokens) external returns (bool success);
    function transfer(address to, uint tokens) external returns (bool success);
    function transferFrom(address from, address to, uint tokens) external returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}

File 4 of 13 : IGovernanceOwnable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;


interface IGovernanceOwnable {
    event GovernanceSetTransferred(address indexed previousGovernance, address indexed newGovernance);

    function governance() external view returns (address);
    function setGovernance(address newGovernance) external;
}

File 5 of 13 : IPactSwapFactory.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "./IUniswapV2Factory.sol";
import "./IGovernanceOwnable.sol";
import "./IWithIncentivesPool.sol";

interface IPactSwapFactory is IUniswapV2Factory, IWithIncentivesPool, IGovernanceOwnable {
}

File 6 of 13 : IUniswapV2Callee.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IUniswapV2Callee {
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
}

File 7 of 13 : IUniswapV2ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "./IERC20.sol";

interface IUniswapV2ERC20 is IERC20 {
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}

File 8 of 13 : IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

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

File 9 of 13 : IUniswapV2Pair.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "./IUniswapV2ERC20.sol";

interface IUniswapV2Pair is IUniswapV2ERC20 {
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

File 10 of 13 : IWithIncentivesPool.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IWithIncentivesPool {
    event IncentivesPoolSetTransferred(address indexed previousIncentivesPool, address indexed newIncentivesPool);
    function incentivesPool() external view returns (address);
    function setIncentivesPool(address newIncentivesPool) external;
}

File 11 of 13 : Math.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

// a library for performing various math operations

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

File 12 of 13 : SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return add(a, b, "SafeMath: Add Overflow");
    }
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);// "SafeMath: Add Overflow"

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: Underflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;// "SafeMath: Underflow"

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return mul(a, b, "SafeMath: Mul Overflow");
    }
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);// "SafeMath: Mul Overflow"

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: division by zero");
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

File 13 of 13 : UQ112x112.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))

// range: [0, 2**112 - 1]
// resolution: 1 / 2**112

library UQ112x112 {
    uint224 constant Q112 = 2**112;

    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
        z = uint224(y) * Q112; // never overflows
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
        z = x / uint224(y);
    }
}

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

Contract Security Audit

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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"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"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252600d81526c2820a1aa102628102a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f95dd139a244bb6a5844d03e9e9b5d94e2248ca7f052b07d777cdb98fa8ebd3fb818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556122dd8061010b6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610af4565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b1e565b604080519115158252519081900360200190f35b610339610b34565b604080516001600160a01b039092168252519081900360200190f35b61035d610b43565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b49565b61035d610bde565b6103b5610c02565b6040805160ff9092168252519081900360200190f35b61035d610c07565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c0d565b61035d610c91565b61035d610c97565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610c9d565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610f79565b61035d610f8b565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610f91565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316610fa3565b6040805192835260208301919091528051918290030190f35b610244611337565b61031d600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611359565b61035d611366565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b031661136c565b6103396114de565b6103396114ed565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356114fc565b61035d600480360360408110156105a357600080fd5b506001600160a01b03813581169160200135166116fe565b61023a61171b565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b81526004018080602001828103825260258152602001806121ee6025913960400191505060405180910390fd5b600080610667610af4565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b81526004018080602001828103825260218152602001806122376021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d61187d565b891561077057610770818a8c61187d565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806122136024913960400191505060405180910390fd5b60006109d46109c2846003611a17565b6109ce876103e8611a17565b90611a52565b905060006109e66109c2846003611a17565b9050610a0b620f4240610a056001600160701b038b8116908b16611a17565b90611a17565b610a158383611a17565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611a8a565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600d81526020016c2820a1aa102628102a37b5b2b760991b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b2b338484611c49565b50600192915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bc8576001600160a01b0384166000908152600260209081526040808320338452909152902054610ba39083611a52565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bd3848484611cab565b5060015b9392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c63576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cea576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610cfa610af4565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d4e57600080fd5b505afa158015610d62573d6000803e3d6000fd5b505050506040513d6020811015610d7857600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dcb57600080fd5b505afa158015610ddf573d6000803e3d6000fd5b505050506040513d6020811015610df557600080fd5b505190506000610e0e836001600160701b038716611a52565b90506000610e25836001600160701b038716611a52565b90506000610e338787611d59565b60005490915080610e6a57610e566103e86109ce610e518787611a17565b611e9c565b9850610e6560006103e8611eee565b610ead565b610eaa6001600160701b038916610e818684611a17565b81610e8857fe5b046001600160701b038916610e9d8685611a17565b81610ea457fe5b04611f78565b98505b60008911610eec5760405162461bcd60e51b81526004018080602001828103825260288152602001806122806028913960400191505060405180910390fd5b610ef68a8a611eee565b610f0286868a8a611a8a565b8115610f2c57600854610f28906001600160701b0380821691600160701b900416611a17565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114610ff1576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580611001610af4565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d602081101561108757600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d60208110156110ff57600080fd5b50513060009081526001602052604081205491925061111e8888611d59565b6000549091508061112f8487611a17565b8161113657fe5b049a50806111448486611a17565b8161114b57fe5b04995060008b11801561115e575060008a115b6111995760405162461bcd60e51b81526004018080602001828103825260288152602001806122586028913960400191505060405180910390fd5b6111a33084611f8e565b6111ae878d8d61187d565b6111b9868d8c61187d565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156111ff57600080fd5b505afa158015611213573d6000803e3d6000fd5b505050506040513d602081101561122957600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d602081101561129f57600080fd5b505193506112af85858b8b611a8a565b81156112d9576008546112d5906001600160701b0380821691600160701b900416611a17565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060068152602001650504143544c560d41b81525081565b6000610b2b338484611cab565b6103e881565b600c546001146113b7576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611460928592879261145b926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561142957600080fd5b505afa15801561143d573d6000803e3d6000fd5b505050506040513d602081101561145357600080fd5b505190611a52565b61187d565b6114d4818461145b6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561142957600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611546576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611661573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116975750886001600160a01b0316816001600160a01b0316145b6116e8576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b6116f3898989611c49565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611766576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611876926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d60208110156117e157600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561182e57600080fd5b505afa158015611842573d6000803e3d6000fd5b505050506040513d602081101561185857600080fd5b50516008546001600160701b0380821691600160701b900416611a8a565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b6020831061192a5780518252601f19909201916020918201910161190b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461198c576040519150601f19603f3d011682016040523d82523d6000602084013e611991565b606091505b50915091508180156119bf5750805115806119bf57508080602001905160208110156119bc57600080fd5b50515b611a10576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000610bd7838360405180604001604052806016815260200175536166654d6174683a204d756c204f766572666c6f7760501b815250612020565b6000610bd7838360405180604001604052806013815260200172536166654d6174683a20556e646572666c6f7760681b8152506120d1565b6001600160701b038411801590611aa857506001600160701b038311155b611aef576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b1f57506001600160701b03841615155b8015611b3357506001600160701b03831615155b15611b9e578063ffffffff16611b5b85611b4c8661212b565b6001600160e01b03169061213d565b600980546001600160e01b03929092169290920201905563ffffffff8116611b8684611b4c8761212b565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611cce9082611a52565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611cfd9082612162565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663f39833246040518163ffffffff1660e01b815260040160206040518083038186803b158015611daa57600080fd5b505afa158015611dbe573d6000803e3d6000fd5b505050506040513d6020811015611dd457600080fd5b5051600b546001600160a01b038216158015945091925090611e88578015611e83576000611e11610e516001600160701b03888116908816611a17565b90506000611e1e83611e9c565b905080821115611e80576000611e40611e378484611a52565b60005490611a17565b90506000611e5983611e53866005611a17565b90612162565b90506000818381611e6657fe5b0490508015611e7c57611e7c8760068304611eee565b5050505b50505b611e94565b8015611e94576000600b555b505092915050565b60006003821115611edf575080600160028204015b81811015611ed957809150600281828581611ec857fe5b040181611ed157fe5b049050611eb1565b50611ee9565b8115611ee9575060015b919050565b600054611efb9082612162565b60009081556001600160a01b038316815260016020526040902054611f209082612162565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310611f875781610bd7565b5090919050565b6001600160a01b038216600090815260016020526040902054611fb19082611a52565b6001600160a01b03831660009081526001602052604081209190915554611fd89082611a52565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b60008361202f57506000610bd7565b8383028385828161203c57fe5b041483906120c85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561208d578181015183820152602001612075565b50505050905090810190601f1680156120ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50949350505050565b600081848411156121235760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561208d578181015183820152602001612075565b505050900390565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161215a57fe5b049392505050565b6000610bd7838360405180604001604052806016815260200175536166654d6174683a20416464204f766572666c6f7760501b815250600083830182858210156120c85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561208d57818101518382015260200161207556fe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220abd718dfcb8a44ba9c43cd099c68c631319739a75f59ffa8e68097d02a1f28a364736f6c634300060c0033

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