Contract 0x9Ad32bf5DaFe152Cbe027398219611DB4E8753B3 2

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x672f2ce2c7db2cc7a18a76e2c86af293f7aa3e793fb042105950ff67121ed526Create Pair99581802021-08-12 6:38:35111 days 23 mins ago0x8905c50651e629f89f5fc3d8a58ddf6c7f137771 IN  0x9ad32bf5dafe152cbe027398219611db4e8753b30 BNB0.010062415
0x7e769f1bd1c8937ed8801715f1c273a4427a3226e493559bfb4790ad8411ddefCreate Pair99467032021-08-11 20:49:08111 days 10 hrs ago0x8905c50651e629f89f5fc3d8a58ddf6c7f137771 IN  0x9ad32bf5dafe152cbe027398219611db4e8753b30 BNB0.010062465
0xf9bd9a29a47bf047dd4ddd9ef7cd1aaba78a48286fdfb48f3b75dd9184555434Set Fee To69035982021-04-26 14:25:06218 days 16 hrs ago0x3bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951 IN  0x9ad32bf5dafe152cbe027398219611db4e8753b30 BNB0.000142165
0xdd297edf15bc655b61248da1f4542f45b332b1e2c652350b726b964495876d55Set Fee To51099052021-02-22 20:35:59281 days 10 hrs ago0x3bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951 IN  0x9ad32bf5dafe152cbe027398219611db4e8753b30 BNB0.00028421
0x5d88ddf1b07ebc72d14fcdfb33a1727074945ee4f43a2b25f4c29a483d50ca4eSet Fee To50802212021-02-21 19:39:47282 days 11 hrs ago0x3bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951 IN  0x9ad32bf5dafe152cbe027398219611db4e8753b30 BNB0.00043433
0xe7a52b92c9ede7d55f30b02a64963bf473b73e1de511d49886e35a114a85f65b0x6080604049989662021-02-18 21:31:54285 days 9 hrs ago0x3bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951 IN  Contract Creation0 BNB0.02438324
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x44462e3cfb92de450ec929758cabcf84782c701d7f6c3d55a936695b05bcea5d121271932021-10-27 5:31:2335 days 1 hr ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xb1bbfa85f42e5bd788dba666a384268fbbee05464a8ec713897a4965166814ce116521112021-10-10 12:56:5251 days 18 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x672f2ce2c7db2cc7a18a76e2c86af293f7aa3e793fb042105950ff67121ed52699581802021-08-12 6:38:35111 days 23 mins ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x7e769f1bd1c8937ed8801715f1c273a4427a3226e493559bfb4790ad8411ddef99467032021-08-11 20:49:08111 days 10 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x09996e912b5279eeae8c90c52b44e3ee4d72cc70881585d051b089f79882439699420222021-08-11 16:16:15111 days 14 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xaac4ba2138316e7cc82eff98a441a17debe8a6d5348202d1d92def5cc02ac35099084412021-08-10 12:04:53112 days 18 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x9874760ba05fa30364596753d2a8a707a940db394853f4ec6bb3f7d6d1a293d696191362021-07-31 2:51:06123 days 4 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xb6fba525e922b37cd803a0e89affa4c69161dac889dd7137d95a4bc0ccd8109695528622021-07-28 17:27:25125 days 13 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x8e390215f753c38a55def1eb439e6260406ef87e2c7e5f411e56addbdb1e4f4d88241502021-07-03 4:49:12151 days 2 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xa89711af8365798e6b9e204767915ac3a3d1a44fde3563ed6e655d92a27579d382980722021-06-14 19:23:25169 days 11 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x476c4739bfdc62f71ac4a980ec594090138efe337fe3dc13dd7325f08e71da4181566822021-06-09 20:47:08174 days 10 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x1608685bbe6e78d425542e0266f1839e6c69726ff862d98efafb997e33ded40f80166102021-06-04 23:47:29179 days 7 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xa10ce7ef34a809bb6596f255aea8f0be0f7477cb4667c94eeeaad862ba2ea03478863352021-05-31 10:51:16183 days 20 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xd4870b80097e11ac3d42a44a471d33144609622880cc2c05052b8e2a0c4f9a1273616722021-05-13 1:36:29202 days 5 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x87695886fa6c4942ed25a9c3ecd1e71cd17bf9111e549d629949fe6285779e8172158152021-05-07 14:04:53207 days 16 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x166f3c40a0b0ef22a914712c6d9f61419df75c01503373f6c7b8d540ab58e01771946702021-05-06 20:11:54208 days 10 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x7df0f1b52d9c1e2c06c770e9d455bfc33cc96211e4d7689c1b09da5070c1e21171124282021-05-03 22:15:35211 days 8 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x8230101e843998faea166adda855e1f0b22898fb7e9262b1ec672a3c6083495670845462021-05-02 22:42:18212 days 8 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x5916e9a08056904835699ce18432d1091a05b2af56ff44b2766a43d783d9928870840232021-05-02 22:16:09212 days 8 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xf7ff4f6c33b5ee277a2b2c92cf9248218fe6b534fdb2f8c785f2222f21494f4870264112021-04-30 21:52:23214 days 9 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x975b3b4d882acf9d4e539801ba557d6b961e23acbdc749ab7ddb8cd1a519fbee69926052021-04-29 17:06:53215 days 13 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xd692ab7b89cace596f2f60a3658170d8acae5b6741d145338919d5f08d5ccb4369450172021-04-28 1:15:48217 days 5 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0xb14d24ab98294e2f72cc191af00bd00bcd1bb1e658205207c57ce56feb2b3cf169334352021-04-27 15:33:24217 days 15 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x58cbb5025ff546848a9358c89b212a4a0ee24f85ead8779eefcf11d8fcfd6ab869214652021-04-27 5:25:02218 days 1 hr ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
0x87dce8fa3487c3ae6632cc3b72bee81164564a764359c3b60ff73fdd0cc76ffb69203112021-04-27 4:27:20218 days 2 hrs ago 0x9ad32bf5dafe152cbe027398219611db4e8753b3  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Factory

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-02-21
*/

// File: browser/IUniswapV2Callee.sol

pragma solidity >=0.5.0;

interface IUniswapV2Callee {
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
}
// File: browser/IERC20.sol

pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}
// File: browser/UQ112x122.sol

pragma solidity =0.5.16;

// 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);
    }
}
// File: browser/Math.sol

pragma solidity =0.5.16;

// 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: browser/SafeMath.sol

pragma solidity =0.5.16;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}
// File: browser/IUniswapV2ERC20.sol

pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    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: browser/UniswapV2ERC20.sol

pragma solidity =0.5.16;



contract UniswapV2ERC20 is IUniswapV2ERC20 {
    using SafeMath for uint;

    string public constant name = 'Pandaswap V2';
    string public constant symbol = 'PNDA-V2';
    uint8 public constant decimals = 18;
    uint  public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

    bytes32 public DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public 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 returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

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

    function transferFrom(address from, address to, uint value) external 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 {
        require(deadline >= block.timestamp, 'PandaSwapv2: 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, 'PandaSwapv2: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}
// File: browser/IUniswapV2Pair.sol

pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    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;

    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: browser/UniswapV2Pair.sol

pragma solidity =0.5.16;

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

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

    address public factory;
    address public token0;
    address public 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 price0CumulativeLast;
    uint public price1CumulativeLast;
    uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

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

    function getReserves() public view 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))), 'PandaSwapv2: 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 {
        require(msg.sender == factory, 'PandaSwapv2: 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), 'PandaSwapv2: 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 feeTo = IUniswapV2Factory(factory).feeTo();
        feeOn = feeTo != 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;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } 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 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, 'PandaSwapv2: 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 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, 'PandaSwapv2: 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 lock {
        require(amount0Out > 0 || amount1Out > 0, 'PandaSwapv2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'PandaSwapv2: 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, 'PandaSwapv2: 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), 'PandaSwapv2: 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 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 lock {
        _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}
// File: browser/IUniswapV2Factory.sol

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
// File: browser/UniswapV2Factory.sol

pragma solidity =0.5.16;



contract UniswapV2Factory is IUniswapV2Factory {
    address public feeTo;
    address public feeToSetter;

    mapping(address => mapping(address => address)) public getPair;
    address[] public allPairs;

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

    constructor(address _feeToSetter) public {
        feeToSetter = _feeToSetter;
    }

    function allPairsLength() external view returns (uint) {
        return allPairs.length;
    }
    
    function pairCodeHash() external pure returns (bytes32) {
        return keccak256(type(UniswapV2Pair).creationCode);
    }

    function createPair(address tokenA, address tokenB) external returns (address pair) {
        require(tokenA != tokenB, 'PandaSwapv2: IDENTICAL_ADDRESSES');
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'PandaSwapv2: ZERO_ADDRESS');
        require(getPair[token0][token1] == address(0), 'PandaSwapv2: PAIR_EXISTS'); // single check is sufficient
        bytes memory bytecode = type(UniswapV2Pair).creationCode;
        bytes32 salt = keccak256(abi.encodePacked(token0, token1));
        assembly {
            pair := create2(0, add(bytecode, 32), mload(bytecode), salt)
        }
        IUniswapV2Pair(pair).initialize(token0, token1);
        getPair[token0][token1] = pair;
        getPair[token1][token0] = pair; // populate mapping in the reverse direction
        allPairs.push(pair);
        emit PairCreated(token0, token1, pair, allPairs.length);
    }

    function setFeeTo(address _feeTo) external {
        require(msg.sender == feeToSetter, 'PandaSwapv2: FORBIDDEN');
        feeTo = _feeTo;
    }

    function setFeeToSetter(address _feeToSetter) external {
        require(msg.sender == feeToSetter, 'PandaSwapv2: FORBIDDEN');
        feeToSetter = _feeToSetter;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pairCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051612b20380380612b208339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055612abd806100636000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80639aab9248116100665780639aab9248146100fb578063a2e74af614610103578063c9c653961461012b578063e6a4390514610159578063f46901ed1461018757610093565b8063017e7e5814610098578063094b7415146100bc5780631e3dd18b146100c4578063574f2ba3146100e1575b600080fd5b6100a06101ad565b604080516001600160a01b039092168252519081900360200190f35b6100a06101bc565b6100a0600480360360208110156100da57600080fd5b50356101cb565b6100e96101f2565b60408051918252519081900360200190f35b6100e96101f8565b6101296004803603602081101561011957600080fd5b50356001600160a01b031661022a565b005b6100a06004803603604081101561014157600080fd5b506001600160a01b03813581169160200135166102a4565b6100a06004803603604081101561016f57600080fd5b506001600160a01b03813581169160200135166105dc565b6101296004803603602081101561019d57600080fd5b50356001600160a01b0316610602565b6000546001600160a01b031681565b6001546001600160a01b031681565b600381815481106101d857fe5b6000918252602090912001546001600160a01b0316905081565b60035490565b60006040518060200161020a9061067c565b6020820181038252601f19601f8201166040525080519060200120905090565b6001546001600160a01b03163314610282576040805162461bcd60e51b81526020600482015260166024820152752830b73230a9bbb0b83b191d102327a92124a22222a760511b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000816001600160a01b0316836001600160a01b0316141561030d576040805162461bcd60e51b815260206004820181905260248201527f50616e64615377617076323a204944454e544943414c5f414444524553534553604482015290519081900360640190fd5b600080836001600160a01b0316856001600160a01b031610610330578385610333565b84845b90925090506001600160a01b038216610393576040805162461bcd60e51b815260206004820152601960248201527f50616e64615377617076323a205a45524f5f4144445245535300000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526002602090815260408083208585168452909152902054161561040d576040805162461bcd60e51b815260206004820152601860248201527f50616e64615377617076323a20504149525f4558495354530000000000000000604482015290519081900360640190fd5b60606040518060200161041f9061067c565b6020820181038252601f19601f8201166040525090506000838360405160200180836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f56040805163485cc95560e01b81526001600160a01b038781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b1580156104f257600080fd5b505af1158015610506573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526002602081815260408084208987168086529083528185208054978d166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b6001546001600160a01b0316331461065a576040805162461bcd60e51b81526020600482015260166024820152752830b73230a9bbb0b83b191d102327a92124a22222a760511b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6123ff8061068a8339019056fe60806040526001600c5534801561001557600080fd5b5060405146908060526123ad8239604080519182900360520182208282018252600c83526b2830b73230b9bbb0b8102b1960a11b6020938401528151808301835260018152603160f81b908401528151808401919091527f029014aa538a015788d36d52d46cb9e10ea71d09ec12b0b3cb12bf571596ca76818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b031916331790556122a6806101076000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b0a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b32565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b5c565b604080519115158252519081900360200190f35b610339610b73565b604080516001600160a01b039092168252519081900360200190f35b61035d610b82565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b88565b61035d610c22565b6103b5610c46565b6040805160ff9092168252519081900360200190f35b61035d610c4b565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c51565b61035d610cd7565b61035d610cdd565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ce3565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fe5565b61035d610ff7565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610ffd565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b031661100f565b6040805192835260208301919091528051918290030190f35b6102446113b7565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113da565b61035d6113e7565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113ed565b61033961155a565b610339611569565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611578565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661177c565b61023a611799565b600c54600114610610576040805162461bcd60e51b815260206004820152601360248201527214185b991854ddd85c1d8c8e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600c55841515806106235750600084115b61065e5760405162461bcd60e51b81526004018080602001828103825260278152602001806121b06027913960400191505060405180910390fd5b600080610669610b32565b5091509150816001600160701b03168710801561068e5750806001600160701b031686105b6106c95760405162461bcd60e51b81526004018080602001828103825260238152602001806122256023913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107075750806001600160a01b0316896001600160a01b031614155b610758576040805162461bcd60e51b815260206004820152601760248201527f50616e64615377617076323a20494e56414c49445f544f000000000000000000604482015290519081900360640190fd5b8a1561076957610769828a8d6118fd565b891561077a5761077a818a8c6118fd565b861561083557886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081c57600080fd5b505af1158015610830573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087b57600080fd5b505afa15801561088f573d6000803e3d6000fd5b505050506040513d60208110156108a557600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f157600080fd5b505afa158015610905573d6000803e3d6000fd5b505050506040513d602081101561091b57600080fd5b5051925060009150506001600160701b0385168a9003831161093e57600061094d565b89856001600160701b03160383035b9050600089856001600160701b031603831161096a576000610979565b89856001600160701b03160383035b9050600082118061098a5750600081115b6109c55760405162461bcd60e51b81526004018080602001828103825260248152602001806121d76024913960400191505060405180910390fd5b60006109f96109db84600363ffffffff611a9716565b6109ed876103e863ffffffff611a9716565b9063ffffffff611afa16565b90506000610a116109db84600363ffffffff611a9716565b9050610a42620f4240610a366001600160701b038b8116908b1663ffffffff611a9716565b9063ffffffff611a9716565b610a52838363ffffffff611a9716565b1015610a96576040805162461bcd60e51b815260206004820152600e60248201526d50616e64615377617076323a204b60901b604482015290519081900360640190fd5b5050610aa484848888611b4a565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600c81526020016b2830b73230b9bbb0b8102b1960a11b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b69338484611d11565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c0d576001600160a01b0384166000908152600260209081526040808320338452909152902054610be8908363ffffffff611afa16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c18848484611d73565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610ca9576040805162461bcd60e51b81526020600482015260166024820152752830b73230a9bbb0b83b191d102327a92124a22222a760511b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d32576040805162461bcd60e51b815260206004820152601360248201527214185b991854ddd85c1d8c8e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600c81905580610d42610b32565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d9657600080fd5b505afa158015610daa573d6000803e3d6000fd5b505050506040513d6020811015610dc057600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e1357600080fd5b505afa158015610e27573d6000803e3d6000fd5b505050506040513d6020811015610e3d57600080fd5b505190506000610e5c836001600160701b03871663ffffffff611afa16565b90506000610e79836001600160701b03871663ffffffff611afa16565b90506000610e878787611e2d565b60005490915080610ec457610eb06103e86109ed610eab878763ffffffff611a9716565b611f8b565b9850610ebf60006103e8611fdd565b610f13565b610f106001600160701b038916610ee1868463ffffffff611a9716565b81610ee857fe5b046001600160701b038916610f03868563ffffffff611a9716565b81610f0a57fe5b04612073565b98505b60008911610f525760405162461bcd60e51b815260040180806020018281038252602a8152602001806121fb602a913960400191505060405180910390fd5b610f5c8a8a611fdd565b610f6886868a8a611b4a565b8115610f9857600854610f94906001600160701b0380821691600160701b90041663ffffffff611a9716565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461105f576040805162461bcd60e51b815260206004820152601360248201527214185b991854ddd85c1d8c8e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600c8190558061106f610b32565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110cb57600080fd5b505afa1580156110df573d6000803e3d6000fd5b505050506040513d60208110156110f557600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561114357600080fd5b505afa158015611157573d6000803e3d6000fd5b505050506040513d602081101561116d57600080fd5b50513060009081526001602052604081205491925061118c8888611e2d565b600054909150806111a3848763ffffffff611a9716565b816111aa57fe5b049a50806111be848663ffffffff611a9716565b816111c557fe5b04995060008b1180156111d8575060008a115b6112135760405162461bcd60e51b815260040180806020018281038252602a815260200180612248602a913960400191505060405180910390fd5b61121d308461208b565b611228878d8d6118fd565b611233868d8c6118fd565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561127957600080fd5b505afa15801561128d573d6000803e3d6000fd5b505050506040513d60208110156112a357600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112ef57600080fd5b505afa158015611303573d6000803e3d6000fd5b505050506040513d602081101561131957600080fd5b5051935061132985858b8b611b4a565b811561135957600854611355906001600160701b0380821691600160701b90041663ffffffff611a9716565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060078152602001662827222096ab1960c91b81525081565b6000610b69338484611d73565b6103e881565b600c5460011461143a576040805162461bcd60e51b815260206004820152601360248201527214185b991854ddd85c1d8c8e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114e992859287926114e4926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156114ac57600080fd5b505afa1580156114c0573d6000803e3d6000fd5b505050506040513d60208110156114d657600080fd5b50519063ffffffff611afa16565b6118fd565b600854604080516370a0823160e01b8152306004820152905161155092849287926114e492600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156114ac57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115c4576040805162461bcd60e51b815260206004820152601460248201527314185b991854ddd85c1d8c8e881156141254915160621b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116df573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117155750886001600160a01b0316816001600160a01b0316145b611766576040805162461bcd60e51b815260206004820152601e60248201527f50616e64615377617076323a20494e56414c49445f5349474e41545552450000604482015290519081900360640190fd5b611771898989611d11565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117e6576040805162461bcd60e51b815260206004820152601360248201527214185b991854ddd85c1d8c8e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118f6926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561183757600080fd5b505afa15801561184b573d6000803e3d6000fd5b505050506040513d602081101561186157600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156118ae57600080fd5b505afa1580156118c2573d6000803e3d6000fd5b505050506040513d60208110156118d857600080fd5b50516008546001600160701b0380821691600160701b900416611b4a565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119aa5780518252601f19909201916020918201910161198b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a0c576040519150601f19603f3d011682016040523d82523d6000602084013e611a11565b606091505b5091509150818015611a3f575080511580611a3f5750808060200190516020811015611a3c57600080fd5b50515b611a90576040805162461bcd60e51b815260206004820152601c60248201527f50616e64615377617076323a205452414e534645525f4641494c454400000000604482015290519081900360640190fd5b5050505050565b6000811580611ab257505080820282828281611aaf57fe5b04145b610b6d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b6d576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b6857506001600160701b038311155b611bb1576040805162461bcd60e51b815260206004820152601560248201527450616e64615377617076323a204f564552464c4f5760581b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611be157506001600160701b03841615155b8015611bf557506001600160701b03831615155b15611c66578063ffffffff16611c2385611c0e86612129565b6001600160e01b03169063ffffffff61213b16565b600980546001600160e01b03929092169290920201905563ffffffff8116611c4e84611c0e87612129565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d9c908263ffffffff611afa16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611dd1908263ffffffff61216016565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7e57600080fd5b505afa158015611e92573d6000803e3d6000fd5b505050506040513d6020811015611ea857600080fd5b5051600b546001600160a01b038216158015945091925090611f77578015611f72576000611eeb610eab6001600160701b0388811690881663ffffffff611a9716565b90506000611ef883611f8b565b905080821115611f6f576000611f26611f17848463ffffffff611afa16565b6000549063ffffffff611a9716565b90506000611f4b83611f3f86600563ffffffff611a9716565b9063ffffffff61216016565b90506000818381611f5857fe5b0490508015611f6b57611f6b8782611fdd565b5050505b50505b611f83565b8015611f83576000600b555b505092915050565b60006003821115611fce575080600160028204015b81811015611fc857809150600281828581611fb757fe5b040181611fc057fe5b049050611fa0565b50611fd8565b8115611fd8575060015b919050565b600054611ff0908263ffffffff61216016565b60009081556001600160a01b03831681526001602052604090205461201b908263ffffffff61216016565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106120825781612084565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546120b4908263ffffffff611afa16565b6001600160a01b038316600090815260016020526040812091909155546120e1908263ffffffff611afa16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161215857fe5b049392505050565b80820182811015610b6d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe50616e64615377617076323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e5450616e64615377617076323a20494e53554646494349454e545f4c49515549444954595f4d494e54454450616e64615377617076323a20494e53554646494349454e545f4c495155494449545950616e64615377617076323a20494e53554646494349454e545f4c49515549444954595f4255524e4544a265627a7a7231582081fb23a5be1d1fb2af8951bcc3c1367d0403d17c006f1d036894eff1f7ad090b64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a72315820a77c94d1189c23994e3869f48c48db09b4451ec11817a5fc0dcc971b3bfb308364736f6c634300051000320000000000000000000000003bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951

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

0000000000000000000000003bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951

-----Decoded View---------------
Arg [0] : _feeToSetter (address): 0x3bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003bc3c8af8cfe3dfc9ba1a57c7c3b653e3f6d6951


Deployed ByteCode Sourcemap

20766:1954:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20766:1954:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20820:20;;;:::i;:::-;;;;-1:-1:-1;;;;;20820:20:0;;;;;;;;;;;;;;20847:26;;;:::i;20951:25::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20951:25:0;;:::i;21173:96::-;;;:::i;:::-;;;;;;;;;;;;;;;;21281:125;;;:::i;22546:171::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22546:171:0;-1:-1:-1;;;;;22546:171:0;;:::i;:::-;;21414:969;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21414:969:0;;;;;;;;;;:::i;20882:62::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20882:62:0;;;;;;;;;;:::i;22391:147::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22391:147:0;-1:-1:-1;;;;;22391:147:0;;:::i;20820:20::-;;;-1:-1:-1;;;;;20820:20:0;;:::o;20847:26::-;;;-1:-1:-1;;;;;20847:26:0;;:::o;20951:25::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20951:25:0;;-1:-1:-1;20951:25:0;:::o;21173:96::-;21246:8;:15;21173:96;:::o;21281:125::-;21328:7;21365:32;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;21365:32:0;21355:43;;;;;;21348:50;;21281:125;:::o;22546:171::-;22634:11;;-1:-1:-1;;;;;22634:11:0;22620:10;:25;22612:60;;;;;-1:-1:-1;;;22612:60:0;;;;;;;;;;;;-1:-1:-1;;;22612:60:0;;;;;;;;;;;;;;;22683:11;:26;;-1:-1:-1;;;;;;22683:26:0;-1:-1:-1;;;;;22683:26:0;;;;;;;;;;22546:171::o;21414:969::-;21484:12;21527:6;-1:-1:-1;;;;;21517:16:0;:6;-1:-1:-1;;;;;21517:16:0;;;21509:61;;;;;-1:-1:-1;;;21509:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21582:14;21598;21625:6;-1:-1:-1;;;;;21616:15:0;:6;-1:-1:-1;;;;;21616:15:0;;:53;;21654:6;21662;21616:53;;;21635:6;21643;21616:53;21581:88;;-1:-1:-1;21581:88:0;-1:-1:-1;;;;;;21688:20:0;;21680:58;;;;;-1:-1:-1;;;21680:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21757:15:0;;;21792:1;21757:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;21749:74;;;;;-1:-1:-1;;;21749:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21864:21;21888:32;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;21888:32:0;21864:56;;21931:12;21973:6;21981;21956:32;;;;;;-1:-1:-1;;;;;21956:32:0;-1:-1:-1;;;;;21956:32:0;;;;;;;;-1:-1:-1;;;;;21956:32:0;-1:-1:-1;;;;;21956:32:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;21956:32:0;;;21946:43;;;;;;21931:58;;22079:4;22068:8;22062:15;22057:2;22047:8;22043:17;22040:1;22032:52;22105:47;;;-1:-1:-1;;;22105:47:0;;-1:-1:-1;;;;;22105:47:0;;;;;;;;;;;;;;;;22024:60;;-1:-1:-1;22105:31:0;;;;;;:47;;;;;-1:-1:-1;;22105:47:0;;;;;;;;-1:-1:-1;22105:31:0;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;22105:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;22163:15:0;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;-1:-1:-1;;;;;;22163:30:0;;;;;;;;22204:15;;;;;;:23;;;;;;;;:30;;;;;;;;22290:8;27:10:-1;;-1:-1;23:18;;45:23;;22290:19:0;;;;;;;;;;;;;;;;;;22359:15;;22325:50;;;;;;;;;;;;;;;;;;;;;;21414:969;;;;;;;;:::o;20882:62::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20882:62:0;;:::o;22391:147::-;22467:11;;-1:-1:-1;;;;;22467:11:0;22453:10;:25;22445:60;;;;;-1:-1:-1;;;22445:60:0;;;;;;;;;;;;-1:-1:-1;;;22445:60:0;;;;;;;;;;;;;;;22516:5;:14;;-1:-1:-1;;;;;;22516:14:0;-1:-1:-1;;;;;22516:14:0;;;;;;;;;;22391:147::o;20766:1954::-;;;;;;;;:::o

Swarm Source

bzzr://a77c94d1189c23994e3869f48c48db09b4451ec11817a5fc0dcc971b3bfb3083
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.