Contract 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x94c68b8396555798021bf92b11550e2e6e987a942a0bf91753d10513921948eaCreate Pair17656892021-09-29 21:26:22434 days 6 hrs ago0xa5a29f81eee450ec189b2f8b4562af1785595d69 IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.002084904458 ETH
0xd121e1b94ebabe841941381e2b5555c7f20656a26848983573b2f24c3d8934ddCreate Pair16966392021-09-27 20:49:36436 days 7 hrs ago0xa5a29f81eee450ec189b2f8b4562af1785595d69 IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001698951407 ETH
0x51182e41d49397d81b53868e175fb0a7439d50d443732558a20a95167e4943d9Create Pair16951502021-09-27 19:39:54436 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001659898012 ETH
0x926dfe89ac82747695ec769b63c35e5736d60cb23eed40938b978c1d84c5de67Create Pair16949322021-09-27 19:26:26436 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001658293911 ETH
0x1827e053984490a9a8eb959bf6f827618cbc104b8276139f2949c456ed80350bCreate Pair16948242021-09-27 19:20:12436 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001658238972 ETH
0xd36e74a654af2125a18e859b1d4697b666be4e3174f828876fcc5f2b08c6e40aCreate Pair8488442021-09-14 19:46:51449 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001962939581 ETH
0x203e467fd331f8ef541fe014f1f74fac904a34a8f11a8e6a29a0976e441c3913Create Pair8486362021-09-14 19:43:14449 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001961935771 ETH
0x18c7746652a98523fb9c3850a7e7fa825547e2c91178f0f89968e85d44ea804cCreate Pair8485682021-09-14 19:42:39449 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001962931722 ETH
0x61cac45765f4bd683e2212fa1937ea33c938e8367f6f875709bce98a9cd75311Create Pair8485362021-09-14 19:42:39449 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001124847862 ETH
0xaea3e933c1fcc3de041254712837767db412e60119effc81bae2b1a05e13658cCreate Pair8484122021-09-14 19:40:38449 days 8 hrs ago0xe16d3664b313bd5fb8d911b467047e3cb4ed853d IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001963928388 ETH
0x69583469b93ad1f328c08cbc25c580b8e6cfd9a4541c99bf3ad5bf9454fba920Create Pair8482672021-09-14 19:39:06449 days 8 hrs ago0xe16d3664b313bd5fb8d911b467047e3cb4ed853d IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001962930293 ETH
0x5af8f0c401782ce74378a07d9c33ee95412465ac76a620e93d685dd6038ba317Create Pair8480132021-09-14 19:35:09449 days 8 hrs ago0x3b3793bfa9c1048418902c3a5563a6fa8b5d90bb IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.00196293458 ETH
0xac3953f02841b72a559d977139c71a15da180efd2956229cf33f13f19dc8db40Create Pair8479872021-09-14 19:35:09449 days 8 hrs ago0xe16d3664b313bd5fb8d911b467047e3cb4ed853d IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001962916004 ETH
0xe12a3cfc93c241fd20c3c56dbcc7904ef3b944ff40d1de62d96d8a50b7b654cdSet Fee To Sette...2771932021-09-04 21:47:55459 days 6 hrs ago0xbf7454c656bdb7c439e8d759c18ac240398fde35 IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.000835710944 ETH
0x081f06ae80f2b7624f3bbc9febb654e7fba71e4f64c35665c4993533fbfb22b2Set Fee To2771922021-09-04 21:47:55459 days 6 hrs ago0xbf7454c656bdb7c439e8d759c18ac240398fde35 IN  0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH0.001077199536 ETH
0xc01c1e64371f21b8eb1e6a789c5e08a08972a8b6c4c3993a5aac4229e521b61b0x608060402771862021-09-04 21:47:55459 days 6 hrs ago0xbf7454c656bdb7c439e8d759c18ac240398fde35 IN  Create: DXswapFactory0 ETH0.027966891359 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x24d18fa40f802434f21e6f99a71f4c68ba4d17e870f7f5c724adb1b4b069b8a2444309512022-12-07 19:53:457 hrs 57 mins ago 0x6653852d2fdc5a7be75b58e51b84c004139ce255 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x706cc6ebf412519f598e5694b4d395b8b06df6f23c7f5ae6e4091dfc0cc8fc8b444309512022-12-07 19:53:457 hrs 57 mins ago 0x391335d13e0ed556191eaec49e0866c9940d2426 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xbab7b1b3fb97d17853e052da3a12029c0f1e4abef9c028eae9079722ccf71b39444275492022-12-07 19:32:288 hrs 18 mins ago 0x3c6bd88cdd2aecf466e22d4ed86db6b8953fdb72 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xbab7b1b3fb97d17853e052da3a12029c0f1e4abef9c028eae9079722ccf71b39444275492022-12-07 19:32:288 hrs 18 mins ago 0x3c6bd88cdd2aecf466e22d4ed86db6b8953fdb72 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x7e12b844ed97dbc062eaf7e96a8d2e3891c9e83a72bb07b1f5bc23f75b7422f8444203572022-12-07 18:50:259 hrs ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x7e12b844ed97dbc062eaf7e96a8d2e3891c9e83a72bb07b1f5bc23f75b7422f8444203572022-12-07 18:50:259 hrs ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x6fa0f8649682f4f0aca02b65647a5343611da9c735aa42e8449a4f033bc7fc33444177942022-12-07 18:36:129 hrs 14 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x6fa0f8649682f4f0aca02b65647a5343611da9c735aa42e8449a4f033bc7fc33444177942022-12-07 18:36:129 hrs 14 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x08e49e59289b7416223e78b6258a6d602281a78e83eeac8f0f4ca668dac68048444127772022-12-07 18:08:119 hrs 42 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x08e49e59289b7416223e78b6258a6d602281a78e83eeac8f0f4ca668dac68048444127772022-12-07 18:08:119 hrs 42 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xe46eecd66df0225e2b69e1e99b47e50b40bce72ebdf0811e2b851d00152b0f01444108462022-12-07 17:59:059 hrs 51 mins ago 0x00000000000b69ec332f49b7c4d2b101f93c3bed 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x6d2cbbe830fe765b2d5f7570049a8e3975b5f6675e50ea8150d947675ff1592a444051492022-12-07 17:31:5710 hrs 18 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x6d2cbbe830fe765b2d5f7570049a8e3975b5f6675e50ea8150d947675ff1592a444051492022-12-07 17:31:5710 hrs 18 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x11bfc8d3725d01088c0fc280bc122aff4266c95d89aa6d115ff03e15f9d3ee79444035872022-12-07 17:24:3110 hrs 26 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x11bfc8d3725d01088c0fc280bc122aff4266c95d89aa6d115ff03e15f9d3ee79444035872022-12-07 17:24:3110 hrs 26 mins ago 0x8007f6172d80e9ae26ea8fd3316586feb3c1b6a2 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x35e165b6c24390bf2073208d1395fb941b44473e2a8f592731a2244a227fa6d2443979522022-12-07 16:58:1610 hrs 52 mins ago 0x00000000000b69ec332f49b7c4d2b101f93c3bed 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x35e8518b19194768c448663ade4684b3d4ab3bea7597f7b13d0dbc17dc458d91443831872022-12-07 15:51:1211 hrs 59 mins ago 0x00000000000b69ec332f49b7c4d2b101f93c3bed 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x11c40fd639abd7c8e59e28fc23b550685987693c9a8546b0986e09be5ca0c595443776372022-12-07 15:23:5312 hrs 26 mins ago 0x6653852d2fdc5a7be75b58e51b84c004139ce255 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x9faefadb4579b5b22a84825726e02cc41164e1df76b8e9bb958ffe25014c8260443776372022-12-07 15:23:5312 hrs 26 mins ago 0x391335d13e0ed556191eaec49e0866c9940d2426 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xfb04775e79592f7d576fe20584f975bdb8ed617d0e75327844f1b6a5a15fa541443773092022-12-07 15:22:1812 hrs 28 mins ago 0x00000000000b69ec332f49b7c4d2b101f93c3bed 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xc36f3b52b2936f0b583371531700f07c54aa879f1f4814b498232712df6de936443773092022-12-07 15:22:1812 hrs 28 mins ago 0x33601d951e464d83c3e1ef634e698d5040dc4217 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xc41cd82115fa1baedf6a30715e6909ebed4254787b64ae412cf980e3d78a8838443773082022-12-07 15:22:1812 hrs 28 mins ago 0x6653852d2fdc5a7be75b58e51b84c004139ce255 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xfc8abf2c1409bba3ac485f70c710dce8179b94bbef6fc9efeecd4dc694ce3c4f443773082022-12-07 15:22:1812 hrs 28 mins ago 0x391335d13e0ed556191eaec49e0866c9940d2426 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0x328ef0b80176aa7f601cf2716286cf0faa540ee67b9d28d47c2faac29a5570d8443771272022-12-07 15:21:2312 hrs 29 mins ago 0x33601d951e464d83c3e1ef634e698d5040dc4217 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
0xa07b7ad864e806720a9c779925f991f1c972264160eadca12d46ca15735a4b46443703152022-12-07 14:48:1913 hrs 2 mins ago 0x00000000000b69ec332f49b7c4d2b101f93c3bed 0x359f20ad0f42d75a5077e65f30274cabe6f4f01a0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DXswapFactory

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2021-09-10
*/

// Sources flattened with hardhat v2.6.4 https://hardhat.org

// File contracts/interfaces/IDXswapFactory.sol

pragma solidity >=0.5.0;

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

    function INIT_CODE_PAIR_HASH() external pure returns (bytes32);
    function feeTo() external view returns (address);
    function protocolFeeDenominator() external view returns (uint8);
    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;
    function setProtocolFee(uint8 _protocolFee) external;
    function setSwapFee(address pair, uint32 swapFee) external;
}


// File contracts/interfaces/IDXswapPair.sol

pragma solidity >=0.5.0;

interface IDXswapPair {
    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 swapFee() external view returns (uint32);

    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;
    function setSwapFee(uint32) external;
}


// File contracts/interfaces/IDXswapERC20.sol

pragma solidity >=0.5.0;

interface IDXswapERC20 {
    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 contracts/libraries/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 contracts/DXswapERC20.sol

pragma solidity =0.5.16;


contract DXswapERC20 is IDXswapERC20 {
    using SafeMath for uint;

    string public constant name = 'DXswap';
    string public constant symbol = 'DXS';
    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, 'DXswapERC20: 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, 'DXswapERC20: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}


// File contracts/libraries/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 contracts/libraries/UQ112x112.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 contracts/interfaces/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 contracts/interfaces/IDXswapCallee.sol

pragma solidity >=0.5.0;

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


// File contracts/DXswapPair.sol

pragma solidity =0.5.16;







contract DXswapPair is IDXswapPair, DXswapERC20 {
    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
    uint32 public swapFee = 25; // uses 0.25% fee as default
    
    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'DXswapPair: 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))), 'DXswapPair: 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, 'DXswapPair: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }
    
    // called by the factory to set the swapFee
    function setSwapFee(uint32 _swapFee) external {
        require(msg.sender == factory, 'DXswapPair: FORBIDDEN'); // sufficient check
        require(_swapFee <= 1000, 'DXswapPair: FORBIDDEN_FEE'); // fee percentage check
        swapFee = _swapFee;
    }

    // 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), 'DXswapPair: 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/ (protocolFeeDenominator + ~1) share of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IDXswapFactory(factory).feeTo();
        uint8 protocolFeeDenominator = IDXswapFactory(factory).protocolFeeDenominator();
        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(protocolFeeDenominator).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, 'DXswapPair: 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, 'DXswapPair: 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, 'DXswapPair: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'DXswapPair: 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, 'DXswapPair: 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) IDXswapCallee(to).DXswapCall(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, 'DXswapPair: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
          uint balance0Adjusted = balance0.mul(10000).sub(amount0In.mul(swapFee));
          uint balance1Adjusted = balance1.mul(10000).sub(amount1In.mul(swapFee));
          require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'DXswapPair: 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 contracts/DXswapFactory.sol

pragma solidity =0.5.16;


contract DXswapFactory is IDXswapFactory {
    address public feeTo;
    address public feeToSetter;
    uint8 public protocolFeeDenominator = 9; // uses ~10% of each swap fee
    bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked(type(DXswapPair).creationCode));

    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 createPair(address tokenA, address tokenB) external returns (address pair) {
        require(tokenA != tokenB, 'DXswapFactory: IDENTICAL_ADDRESSES');
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'DXswapFactory: ZERO_ADDRESS');
        require(getPair[token0][token1] == address(0), 'DXswapFactory: PAIR_EXISTS'); // single check is sufficient
        bytes memory bytecode = type(DXswapPair).creationCode;
        bytes32 salt = keccak256(abi.encodePacked(token0, token1));
        assembly {
            pair := create2(0, add(bytecode, 32), mload(bytecode), salt)
        }
        IDXswapPair(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, 'DXswapFactory: FORBIDDEN');
        feeTo = _feeTo;
    }

    function setFeeToSetter(address _feeToSetter) external {
        require(msg.sender == feeToSetter, 'DXswapFactory: FORBIDDEN');
        feeToSetter = _feeToSetter;
    }
    
    function setProtocolFee(uint8 _protocolFeeDenominator) external {
        require(msg.sender == feeToSetter, 'DXswapFactory: FORBIDDEN');
        require(_protocolFeeDenominator > 0, 'DXswapFactory: FORBIDDEN_FEE');
        protocolFeeDenominator = _protocolFeeDenominator;
    }
    
    function setSwapFee(address _pair, uint32 _swapFee) external {
        require(msg.sender == feeToSetter, 'DXswapFactory: FORBIDDEN');
        IDXswapPair(_pair).setSwapFee(_swapFee);
    }
}

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":[],"name":"INIT_CODE_PAIR_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"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":"protocolFeeDenominator","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","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"},{"constant":false,"inputs":[{"internalType":"uint8","name":"_protocolFeeDenominator","type":"uint8"}],"name":"setProtocolFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint32","name":"_swapFee","type":"uint32"}],"name":"setSwapFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526001805460ff60a01b1916600960a01b17905534801561002357600080fd5b50604051612f9c380380612f9c8339818101604052602081101561004657600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055612f26806100766000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80635855a25a116100715780635855a25a1461015c5780639e68ceb814610164578063a2e74af614610196578063c9c65396146101bc578063e6a43905146101ea578063f46901ed14610218576100b4565b8063017e7e58146100b9578063094b7415146100dd5780631e3dd18b146100e55780632ff7042a146101025780634e91f81114610120578063574f2ba314610142575b600080fd5b6100c161023e565b604080516001600160a01b039092168252519081900360200190f35b6100c161024d565b6100c1600480360360208110156100fb57600080fd5b503561025c565b61010a610283565b6040805160ff9092168252519081900360200190f35b6101406004803603602081101561013657600080fd5b503560ff16610293565b005b61014a610365565b60408051918252519081900360200190f35b61014a61036b565b6101406004803603604081101561017a57600080fd5b5080356001600160a01b0316906020013563ffffffff166103fe565b610140600480360360208110156101ac57600080fd5b50356001600160a01b03166104c1565b6100c1600480360360408110156101d257600080fd5b506001600160a01b038135811691602001351661053d565b6100c16004803603604081101561020057600080fd5b506001600160a01b038135811691602001351661085f565b6101406004803603602081101561022e57600080fd5b50356001600160a01b0316610885565b6000546001600160a01b031681565b6001546001600160a01b031681565b6003818154811061026957fe5b6000918252602090912001546001600160a01b0316905081565b600154600160a01b900460ff1681565b6001546001600160a01b031633146102ed576040805162461bcd60e51b8152602060048201526018602482015277222c39bbb0b82330b1ba37b93c9d102327a92124a22222a760411b604482015290519081900360640190fd5b60008160ff1611610345576040805162461bcd60e51b815260206004820152601c60248201527f445873776170466163746f72793a20464f5242494444454e5f46454500000000604482015290519081900360640190fd5b6001805460ff909216600160a01b0260ff60a01b19909216919091179055565b60035490565b60405161037a60208201610901565b6020820181038252601f19601f820116604052506040516020018082805190602001908083835b602083106103c05780518252601f1990920191602091820191016103a1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b6001546001600160a01b03163314610458576040805162461bcd60e51b8152602060048201526018602482015277222c39bbb0b82330b1ba37b93c9d102327a92124a22222a760411b604482015290519081900360640190fd5b6040805163d6d788c360e01b815263ffffffff8316600482015290516001600160a01b0384169163d6d788c391602480830192600092919082900301818387803b1580156104a557600080fd5b505af11580156104b9573d6000803e3d6000fd5b505050505050565b6001546001600160a01b0316331461051b576040805162461bcd60e51b8152602060048201526018602482015277222c39bbb0b82330b1ba37b93c9d102327a92124a22222a760411b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000816001600160a01b0316836001600160a01b031614156105905760405162461bcd60e51b8152600401808060200182810382526022815260200180612ed06022913960400191505060405180910390fd5b600080836001600160a01b0316856001600160a01b0316106105b35783856105b6565b84845b90925090506001600160a01b038216610616576040805162461bcd60e51b815260206004820152601b60248201527f445873776170466163746f72793a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b6001600160a01b03828116600090815260026020908152604080832085851684529091529020541615610690576040805162461bcd60e51b815260206004820152601a60248201527f445873776170466163746f72793a20504149525f455849535453000000000000604482015290519081900360640190fd5b6060604051806020016106a290610901565b6020820181038252601f19601f8201166040525090506000838360405160200180836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f56040805163485cc95560e01b81526001600160a01b038781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561077557600080fd5b505af1158015610789573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526002602081815260408084208987168086529083528185208054978d166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b6001546001600160a01b031633146108df576040805162461bcd60e51b8152602060048201526018602482015277222c39bbb0b82330b1ba37b93c9d102327a92124a22222a760411b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6125c18061090f8339019056fe6080604052600c805463ffffffff191660191790556001600d5534801561002557600080fd5b50604051469080605261256f8239604080519182900360520182208282018252600683526504458737761760d41b6020938401528151808301835260018152603160f81b908401528151808401919091527f3649d708a7abf9e212d0a587955ead4123223014b2e46201dfb587457cbd4591818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b0319163317905561245e806101116000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636a62784211610104578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610583578063d6d788c3146105d4578063dd62ed3e146105f7578063fff6cae914610625576101cf565b8063ba9a7a5614610545578063bc25cf771461054d578063c45a015514610573578063d21220a71461057b576101cf565b80637ecebe00116100de5780637ecebe00146104ac57806389afcb44146104d257806395d89b4114610511578063a9059cbb14610519576101cf565b80636a6278421461045857806370a082311461047e5780637464fc3d146104a4576101cf565b806330adf81f11610171578063485cc9551161014b578063485cc955146103f957806354cf2aeb146104275780635909c0d5146104485780635a3d549314610450576101cf565b806330adf81f146103cb578063313ce567146103d35780633644e515146103f1576101cf565b8063095ea7b3116101ad578063095ea7b3146103175780630dfe16811461035757806318160ddd1461037b57806323b872dd14610395576101cf565b8063022c0d9f146101d457806306fdde03146102625780630902f1ac146102df575b600080fd5b610260600480360360808110156101ea57600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561022157600080fd5b82018360208201111561023357600080fd5b8035906020019184600183028401116401000000008311171561025557600080fd5b50909250905061062d565b005b61026a610b7f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a457818101518382015260200161028c565b50505050905090810190601f1680156102d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e7610ba1565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103436004803603604081101561032d57600080fd5b506001600160a01b038135169060200135610bcb565b604080519115158252519081900360200190f35b61035f610be2565b604080516001600160a01b039092168252519081900360200190f35b610383610bf1565b60408051918252519081900360200190f35b610343600480360360608110156103ab57600080fd5b506001600160a01b03813581169160208101359091169060400135610bf7565b610383610c91565b6103db610cb5565b6040805160ff9092168252519081900360200190f35b610383610cba565b6102606004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610cc0565b61042f610d45565b6040805163ffffffff9092168252519081900360200190f35b610383610d51565b610383610d57565b6103836004803603602081101561046e57600080fd5b50356001600160a01b0316610d5d565b6103836004803603602081101561049457600080fd5b50356001600160a01b031661105e565b610383611070565b610383600480360360208110156104c257600080fd5b50356001600160a01b0316611076565b6104f8600480360360208110156104e857600080fd5b50356001600160a01b0316611088565b6040805192835260208301919091528051918290030190f35b61026a61142f565b6103436004803603604081101561052f57600080fd5b506001600160a01b03813516906020013561144e565b61038361145b565b6102606004803603602081101561056357600080fd5b50356001600160a01b0316611461565b61035f6115cd565b61035f6115dc565b610260600480360360e081101561059957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356115eb565b610260600480360360208110156105ea57600080fd5b503563ffffffff166117ef565b6103836004803603604081101561060d57600080fd5b506001600160a01b03813581169160200135166118bf565b6102606118dc565b600d54600114610679576040805162461bcd60e51b815260206004820152601260248201527111161cddd85c14185a5c8e881313d0d2d15160721b604482015290519081900360640190fd5b6000600d558415158061068c5750600084115b6106c75760405162461bcd60e51b81526004018080602001828103825260268152602001806123b66026913960400191505060405180910390fd5b6000806106d2610ba1565b5091509150816001600160701b0316871080156106f75750806001600160701b031686105b6107325760405162461bcd60e51b81526004018080602001828103825260228152602001806123946022913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107705750806001600160a01b0316896001600160a01b031614155b6107ba576040805162461bcd60e51b8152602060048201526016602482015275445873776170506169723a20494e56414c49445f544f60501b604482015290519081900360640190fd5b8a156107cb576107cb828a8d611a3f565b89156107dc576107dc818a8c611a3f565b861561089757886001600160a01b03166378b94ae6338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561087e57600080fd5b505af1158015610892573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108dd57600080fd5b505afa1580156108f1573d6000803e3d6000fd5b505050506040513d602081101561090757600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561095357600080fd5b505afa158015610967573d6000803e3d6000fd5b505050506040513d602081101561097d57600080fd5b5051925060009150506001600160701b0385168a900383116109a05760006109af565b89856001600160701b03160383035b9050600089856001600160701b03160383116109cc5760006109db565b89856001600160701b03160383035b905060008211806109ec5750600081115b610a275760405162461bcd60e51b81526004018080602001828103825260258152602001806123dc6025913960400191505060405180910390fd5b600c54600090610a6490610a4690859063ffffffff90811690611bd916565b610a588761271063ffffffff611bd916565b9063ffffffff611c3c16565b600c54909150600090610a8690610a4690859063ffffffff90811690611bd916565b9050610ab86305f5e100610aac6001600160701b038b8116908b1663ffffffff611bd916565b9063ffffffff611bd916565b610ac8838363ffffffff611bd916565b1015610b0b576040805162461bcd60e51b815260206004820152600d60248201526c445873776170506169723a204b60981b604482015290519081900360640190fd5b5050610b1984848888611c8c565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d55505050505050505050565b6040518060400160405280600681526020016504458737761760d41b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610bd8338484611e52565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c7c576001600160a01b0384166000908152600260209081526040808320338452909152902054610c57908363ffffffff611c3c16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c87848484611eb4565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610d17576040805162461bcd60e51b8152602060048201526015602482015274222c39bbb0b82830b4b91d102327a92124a22222a760591b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b600c5463ffffffff1681565b60095481565b600a5481565b6000600d54600114610dab576040805162461bcd60e51b815260206004820152601260248201527111161cddd85c14185a5c8e881313d0d2d15160721b604482015290519081900360640190fd5b6000600d81905580610dbb610ba1565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d6020811015610e3957600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e8c57600080fd5b505afa158015610ea0573d6000803e3d6000fd5b505050506040513d6020811015610eb657600080fd5b505190506000610ed5836001600160701b03871663ffffffff611c3c16565b90506000610ef2836001600160701b03871663ffffffff611c3c16565b90506000610f008787611f6e565b60005490915080610f3d57610f296103e8610a58610f24878763ffffffff611bd916565b612146565b9850610f3860006103e8612198565b610f8c565b610f896001600160701b038916610f5a868463ffffffff611bd916565b81610f6157fe5b046001600160701b038916610f7c868563ffffffff611bd916565b81610f8357fe5b0461222e565b98505b60008911610fcb5760405162461bcd60e51b815260040180806020018281038252602981526020018061236b6029913960400191505060405180910390fd5b610fd58a8a612198565b610fe186868a8a611c8c565b81156110115760085461100d906001600160701b0380821691600160701b90041663ffffffff611bd916565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600d546001146110d7576040805162461bcd60e51b815260206004820152601260248201527111161cddd85c14185a5c8e881313d0d2d15160721b604482015290519081900360640190fd5b6000600d819055806110e7610ba1565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561114357600080fd5b505afa158015611157573d6000803e3d6000fd5b505050506040513d602081101561116d57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156111bb57600080fd5b505afa1580156111cf573d6000803e3d6000fd5b505050506040513d60208110156111e557600080fd5b5051306000908152600160205260408120549192506112048888611f6e565b6000549091508061121b848763ffffffff611bd916565b8161122257fe5b049a5080611236848663ffffffff611bd916565b8161123d57fe5b04995060008b118015611250575060008a115b61128b5760405162461bcd60e51b81526004018080602001828103825260298152602001806124016029913960400191505060405180910390fd5b6112953084612246565b6112a0878d8d611a3f565b6112ab868d8c611a3f565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156112f157600080fd5b505afa158015611305573d6000803e3d6000fd5b505050506040513d602081101561131b57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d602081101561139157600080fd5b505193506113a185858b8b611c8c565b81156113d1576008546113cd906001600160701b0380821691600160701b90041663ffffffff611bd916565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600d81905550915091565b6040518060400160405280600381526020016244585360e81b81525081565b6000610bd8338484611eb4565b6103e881565b600d546001146114ad576040805162461bcd60e51b815260206004820152601260248201527111161cddd85c14185a5c8e881313d0d2d15160721b604482015290519081900360640190fd5b6000600d55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b03948516949093169261155c9285928792611557926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561151f57600080fd5b505afa158015611533573d6000803e3d6000fd5b505050506040513d602081101561154957600080fd5b50519063ffffffff611c3c16565b611a3f565b600854604080516370a0823160e01b815230600482015290516115c3928492879261155792600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561151f57600080fd5b50506001600d5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611637576040805162461bcd60e51b815260206004820152601460248201527311161cddd85c115490cc8c0e881156141254915160621b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611752573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117885750886001600160a01b0316816001600160a01b0316145b6117d9576040805162461bcd60e51b815260206004820152601e60248201527f44587377617045524332303a20494e56414c49445f5349474e41545552450000604482015290519081900360640190fd5b6117e4898989611e52565b505050505050505050565b6005546001600160a01b03163314611846576040805162461bcd60e51b8152602060048201526015602482015274222c39bbb0b82830b4b91d102327a92124a22222a760591b604482015290519081900360640190fd5b6103e88163ffffffff1611156118a3576040805162461bcd60e51b815260206004820152601960248201527f445873776170506169723a20464f5242494444454e5f46454500000000000000604482015290519081900360640190fd5b600c805463ffffffff191663ffffffff92909216919091179055565b600260209081526000928352604080842090915290825290205481565b600d54600114611928576040805162461bcd60e51b815260206004820152601260248201527111161cddd85c14185a5c8e881313d0d2d15160721b604482015290519081900360640190fd5b6000600d55600654604080516370a0823160e01b81523060048201529051611a38926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561197957600080fd5b505afa15801561198d573d6000803e3d6000fd5b505050506040513d60208110156119a357600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119f057600080fd5b505afa158015611a04573d6000803e3d6000fd5b505050506040513d6020811015611a1a57600080fd5b50516008546001600160701b0380821691600160701b900416611c8c565b6001600d55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611aec5780518252601f199092019160209182019101611acd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b4e576040519150601f19603f3d011682016040523d82523d6000602084013e611b53565b606091505b5091509150818015611b81575080511580611b815750808060200190516020811015611b7e57600080fd5b50515b611bd2576040805162461bcd60e51b815260206004820152601b60248201527f445873776170506169723a205452414e534645525f4641494c45440000000000604482015290519081900360640190fd5b5050505050565b6000811580611bf457505080820282828281611bf157fe5b04145b610bdc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610bdc576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611caa57506001600160701b038311155b611cf2576040805162461bcd60e51b8152602060048201526014602482015273445873776170506169723a204f564552464c4f5760601b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611d2257506001600160701b03841615155b8015611d3657506001600160701b03831615155b15611da7578063ffffffff16611d6485611d4f866122e4565b6001600160e01b03169063ffffffff6122f616565b600980546001600160e01b03929092169290920201905563ffffffff8116611d8f84611d4f876122e4565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611edd908263ffffffff611c3c16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611f12908263ffffffff61231b16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbf57600080fd5b505afa158015611fd3573d6000803e3d6000fd5b505050506040513d6020811015611fe957600080fd5b5051600554604080516317fb821560e11b815290519293506000926001600160a01b0390921691632ff7042a91600480820192602092909190829003018186803b15801561203657600080fd5b505afa15801561204a573d6000803e3d6000fd5b505050506040513d602081101561206057600080fd5b5051600b546001600160a01b03841615801595509192509061213157801561212c5760006120a3610f246001600160701b0389811690891663ffffffff611bd916565b905060006120b083612146565b9050808211156121295760006120de6120cf848463ffffffff611c3c16565b6000549063ffffffff611bd916565b90506000612105836120f98660ff8a1663ffffffff611bd916565b9063ffffffff61231b16565b9050600081838161211257fe5b0490508015612125576121258882612198565b5050505b50505b61213d565b801561213d576000600b555b50505092915050565b60006003821115612189575080600160028204015b818110156121835780915060028182858161217257fe5b04018161217b57fe5b04905061215b565b50612193565b8115612193575060015b919050565b6000546121ab908263ffffffff61231b16565b60009081556001600160a01b0383168152600160205260409020546121d6908263ffffffff61231b16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061223d578161223f565b825b9392505050565b6001600160a01b03821660009081526001602052604090205461226f908263ffffffff611c3c16565b6001600160a01b0383166000908152600160205260408120919091555461229c908263ffffffff611c3c16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161231357fe5b049392505050565b80820182811015610bdc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe445873776170506169723a20494e53554646494349454e545f4c49515549444954595f4d494e544544445873776170506169723a20494e53554646494349454e545f4c4951554944495459445873776170506169723a20494e53554646494349454e545f4f55545055545f414d4f554e54445873776170506169723a20494e53554646494349454e545f494e5055545f414d4f554e54445873776170506169723a20494e53554646494349454e545f4c49515549444954595f4255524e4544a265627a7a72315820bc9e52c622a7f378a026ee16432d9bbc35cc0db3d76cfafd5d67631f595a9b1864736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429445873776170466163746f72793a204944454e544943414c5f414444524553534553a265627a7a72315820c6fa710efa4f71df9b005295f714d02cccf70f7f9c7bc282fca1f7f11487da9064736f6c63430005100032000000000000000000000000bf7454c656bdb7c439e8d759c18ac240398fde35

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

000000000000000000000000bf7454c656bdb7c439e8d759c18ac240398fde35

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf7454c656bdb7c439e8d759c18ac240398fde35


Deployed ByteCode Sourcemap

21807:2501:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21807:2501:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21855:20;;;:::i;:::-;;;;-1:-1:-1;;;;;21855:20:0;;;;;;;;;;;;;;21882:26;;;:::i;22173:25::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22173:25:0;;:::i;21915:39::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23818:283;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23818:283:0;;;;:::i;:::-;;22395:96;;;:::i;:::-;;;;;;;;;;;;;;;;21991:104;;;:::i;24113:192::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24113:192:0;;-1:-1:-1;;;;;24113:192:0;;;;;;;;:::i;23633:173::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23633:173:0;-1:-1:-1;;;;;23633:173:0;;:::i;22499:969::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22499:969:0;;;;;;;;;;:::i;22104:62::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22104:62:0;;;;;;;;;;:::i;23476:149::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23476:149:0;-1:-1:-1;;;;;23476:149:0;;:::i;21855:20::-;;;-1:-1:-1;;;;;21855:20:0;;:::o;21882:26::-;;;-1:-1:-1;;;;;21882:26:0;;:::o;22173:25::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22173:25:0;;-1:-1:-1;22173:25:0;:::o;21915:39::-;;;-1:-1:-1;;;21915:39:0;;;;;:::o;23818:283::-;23915:11;;-1:-1:-1;;;;;23915:11:0;23901:10;:25;23893:62;;;;;-1:-1:-1;;;23893:62:0;;;;;;;;;;;;-1:-1:-1;;;23893:62:0;;;;;;;;;;;;;;;24000:1;23974:23;:27;;;23966:68;;;;;-1:-1:-1;;;23966:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24045:22;:48;;;;;;-1:-1:-1;;;24045:48:0;-1:-1:-1;;;;24045:48:0;;;;;;;;;23818:283::o;22395:96::-;22468:8;:15;22395:96;:::o;21991:104::-;22064:29;;;;;;;:::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;22064:29:0;22047:47;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;22047:47:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;22047:47:0;;;22037:58;;;;;;21991:104;:::o;24113:192::-;24207:11;;-1:-1:-1;;;;;24207:11:0;24193:10;:25;24185:62;;;;;-1:-1:-1;;;24185:62:0;;;;;;;;;;;;-1:-1:-1;;;24185:62:0;;;;;;;;;;;;;;;24258:39;;;-1:-1:-1;;;24258:39:0;;;;;;;;;;;-1:-1:-1;;;;;24258:29:0;;;;;:39;;;;;-1:-1:-1;;24258:39:0;;;;;;;-1:-1:-1;24258:29:0;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;24258:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24258:39:0;;;;24113:192;;:::o;23633:173::-;23721:11;;-1:-1:-1;;;;;23721:11:0;23707:10;:25;23699:62;;;;;-1:-1:-1;;;23699:62:0;;;;;;;;;;;;-1:-1:-1;;;23699:62:0;;;;;;;;;;;;;;;23772:11;:26;;-1:-1:-1;;;;;;23772:26:0;-1:-1:-1;;;;;23772:26:0;;;;;;;;;;23633:173::o;22499:969::-;22569:12;22612:6;-1:-1:-1;;;;;22602:16:0;:6;-1:-1:-1;;;;;22602:16:0;;;22594:63;;;;-1:-1:-1;;;22594:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22669:14;22685;22712:6;-1:-1:-1;;;;;22703:15:0;:6;-1:-1:-1;;;;;22703:15:0;;:53;;22741:6;22749;22703:53;;;22722:6;22730;22703:53;22668:88;;-1:-1:-1;22668:88:0;-1:-1:-1;;;;;;22775:20:0;;22767:60;;;;;-1:-1:-1;;;22767:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22846:15:0;;;22881:1;22846:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;22838:76;;;;;-1:-1:-1;;;22838:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22955:21;22979:29;;;;;;;;:::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;22979:29:0;22955:53;;23019:12;23061:6;23069;23044:32;;;;;;-1:-1:-1;;;;;23044:32:0;-1:-1:-1;;;;;23044:32:0;;;;;;;;-1:-1:-1;;;;;23044:32:0;-1:-1:-1;;;;;23044:32:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;23044:32:0;;;23034:43;;;;;;23019:58;;23167:4;23156:8;23150:15;23145:2;23135:8;23131:17;23128:1;23120:52;23193:44;;;-1:-1:-1;;;23193:44:0;;-1:-1:-1;;;;;23193:44:0;;;;;;;;;;;;;;;;23112:60;;-1:-1:-1;23193:28:0;;;;;;:44;;;;;-1:-1:-1;;23193:44:0;;;;;;;;-1:-1:-1;23193:28:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;23193:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;23248:15:0;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;-1:-1:-1;;;;;;23248:30:0;;;;;;;;23289:15;;;;;;:23;;;;;;;;:30;;;;;;;;23375:8;27:10:-1;;-1:-1;23:18;;45:23;;23375:19:0;;;;;;;;;;;;;;;;;;23444:15;;23410:50;;;;;;;;;;;;;;;;;;;;;;22499:969;;;;;;;;:::o;22104:62::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22104:62:0;;:::o;23476:149::-;23552:11;;-1:-1:-1;;;;;23552:11:0;23538:10;:25;23530:62;;;;;-1:-1:-1;;;23530:62:0;;;;;;;;;;;;-1:-1:-1;;;23530:62:0;;;;;;;;;;;;;;;23603:5;:14;;-1:-1:-1;;;;;;23603:14:0;-1:-1:-1;;;;;23603:14:0;;;;;;;;;;23476:149::o;21807:2501::-;;;;;;;;:::o

Metadata Hash

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