Contract 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x2d31a1786590cb3ab334a3110fdb14a129c8ef43a4b609c057042cdd7ba00df8Approve109743772021-09-16 20:56:383 days 5 hrs ago0x72e840eb4f24c94ea2b2cad79d307a5b20e12e58 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.000072425
0x7040c7eecc68f818a0d99ae1fbcce8aa34915fa4d8581f5ca61c2182d5ea0a4eApprove102766662021-08-23 9:54:5427 days 16 hrs ago0x008c424be1a6b8fbe2274211b83178bade2e7cb5 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xcdebb6620cde22233f4dc97ce3049fa64746581fcbf3322be0db026beb636c9aApprove101761302021-08-19 21:39:5431 days 4 hrs ago0xa5c2e3b6144cfe0cec6db646af13f1fc24f4c5d2 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x12c5f2aade91f1abb25530eed32e3675a43e4bc283ca0f89e168c9915086480aApprove98626682021-08-08 20:49:3142 days 5 hrs ago0x5bd9a2e6c03987e09a6b0813784bf183abe6f51e IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.000072425
0x6f477bfc02f414f6b291fe84f9f0e72e2b34ddbc46acc473c47a1b80b42b586fApprove97889612021-08-06 5:34:2544 days 20 hrs agoCheeseSwap: Deployer 1 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xd9eaf6ebab29f4aeb762ea07aac32c4cf3452a168fbc71dbe3037e6e47254850Approve92296212021-07-17 7:27:0464 days 18 hrs ago0x99446a1da80a697647c63735e6a01c80f74ff147 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x252b26a85468ffef343618ec0f96fcd25183e467045cdb29c75a372aa084a9f2Approve90701072021-07-11 18:29:0670 days 7 hrs ago0x5bd9a2e6c03987e09a6b0813784bf183abe6f51e IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.0000738735
0x2d32e147369d845b16a3a8a85d781e7dbb6c1fbdb30abdb20adfa32799862a18Approve90678692021-07-11 16:37:1270 days 9 hrs ago0x5bd9a2e6c03987e09a6b0813784bf183abe6f51e IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x77e474603fd3469bc9b354f7ca4d39c8b309f616eecf81444199156abe987b78Approve90163732021-07-09 21:42:1972 days 4 hrs ago0x5bd9a2e6c03987e09a6b0813784bf183abe6f51e IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.000266124
0x4174a8730e7af47e9885d8ed5a47b10fcc2c6103e5673452270853170ac822b6Approve89301132021-07-06 21:47:0875 days 4 hrs ago0x34ad53757d9489fbc43d3030325817646f1e1c38 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x130a79c3d3e6c689b5edd790782cc987218e1f94eb86497abd0ccffd8a6cded8Approve88829202021-07-05 6:06:5076 days 20 hrs ago0x19a920e83da77498a4e3b96afd0ed5927ec1030f IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xdf0ad0034f2dec06820e64e849f1fb61e05ad2f09eae62a32c3ec96540ee1324Approve88828892021-07-05 6:05:1776 days 20 hrs ago0x070e48f280e80e9364bfd4295dd9f821111c768d IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xdedf7a109aa0c25ea892efcbe42be431d5d6f3f384af82ff2eb4076b2c9bb9b7Approve88632142021-07-04 13:36:0877 days 12 hrs ago0x56f3cf50f6257ae4d8abb22f550db5136cb2f4ae IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x406125894d2dbb6fff586cfa662381c6519254dcaef87cb57bb186c443423332Approve87968382021-07-02 5:45:5979 days 20 hrs ago0x82ea3a21114b1ea14aa1decd640f865774248e64 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x65068fced87f8869fef94c268e7bc796fa6a926068a838af5b6b9100427a0559Approve86922722021-06-28 13:49:3483 days 12 hrs ago0x7fdea8b5539d044d8ea1b2fb0d30c26c8c80b44c IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xa377398ef1858da3641255eac29824fc6936007fc814c4bd9c5b3905c8bccbfeApprove82230782021-06-12 4:19:0299 days 21 hrs ago0xe295cff351dfd2bcad9b8c81f7f8447469a92410 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x56896b8382ddad8f7f3d79e178223bb43c76331c053d580903dfac7e4711b6c6Approve79766782021-06-03 14:25:14108 days 11 hrs ago0x129f068aae0b025cd315b606f58bdc313b87005a IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xe8801a4b0813dcefa347ac28ae448c471a93e9b83d6aa56d4c70ee52acb53cadApprove79762212021-06-03 14:02:23108 days 12 hrs ago0x129f068aae0b025cd315b606f58bdc313b87005a IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x94f66e4472cfbd4cc84d53ddb908ca5cc2c39089346cb132aed451e0f2d7853bApprove77716632021-05-27 10:53:54115 days 15 hrs ago0x6b67f24142d817a316499412d4aef708b75bcab3 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x724933f2ca83b0d06b5d9b78c653f0870e0678491eacae7243728cf9d906a921Approve77445222021-05-26 12:01:54116 days 14 hrs ago0x6ba34a45be26a6dfd67bfcf966d61098e992d5f0 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xd72bbdca47a94b86defe15a50efed2ed95632a68185f78aa71607867e6c7809dApprove76844172021-05-24 9:46:57118 days 16 hrs ago0x6b67f24142d817a316499412d4aef708b75bcab3 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x208f55f387631e82309e191ec563fc340ce1df43145efbfd5fca68e64d8cc9ffApprove75782682021-05-20 16:56:39122 days 9 hrs ago0xd20b976584bf506baf5cc604d1f0a1b8d07138da IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0xe5fb22077c01c72ebc9817e438fe8a902ffd5012bf7cab0e0070b72358d93f08Approve73947422021-05-14 5:35:24128 days 20 hrs ago0x3e90386f0432d0dee38e954d8140ba50322e169d IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.00022177
0x1b5b37ae9c41ef7f18c61e7f178ac6f94843e5f3177091b8e470c7a7118c91f4Approve73100972021-05-11 1:57:35132 days 10 mins ago0xe295cff351dfd2bcad9b8c81f7f8447469a92410 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.000532248
0xa34f01f7fd11044951874b0cf2464bc8f0dc05a24474119709d5ce0ce9c2331cApprove73097882021-05-11 1:40:52132 days 26 mins ago0xd49c9065c26ece23e12ed4cd7f440ef55de51cb3 IN  0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB0.000532248
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x0b2d98624d5a71bd8a97dd8cabdeece1b18661ed44aecdd0c66c9b3cab5b641954712852021-03-07 11:57:12196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c Binance: WBNB Token0 BNB
0x0b2d98624d5a71bd8a97dd8cabdeece1b18661ed44aecdd0c66c9b3cab5b641954712852021-03-07 11:57:12196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c 0x93f44521a0b6dde17e8c4bb8e85e8c215d2eef0e0 BNB
0x0b2d98624d5a71bd8a97dd8cabdeece1b18661ed44aecdd0c66c9b3cab5b641954712852021-03-07 11:57:12196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c 0x93f44521a0b6dde17e8c4bb8e85e8c215d2eef0e0 BNB
0x0b2d98624d5a71bd8a97dd8cabdeece1b18661ed44aecdd0c66c9b3cab5b641954712852021-03-07 11:57:12196 days 14 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0x0b2d98624d5a71bd8a97dd8cabdeece1b18661ed44aecdd0c66c9b3cab5b641954712852021-03-07 11:57:12196 days 14 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0xb03b09177c65e6bb0f670c1e784c46e2341f54f3032b2531410dd843a7adc01d54709512021-03-07 11:40:30196 days 14 hrs ago 0xc78f0ad92591ce4902653c5089c7358ced058721 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0xb03b09177c65e6bb0f670c1e784c46e2341f54f3032b2531410dd843a7adc01d54709512021-03-07 11:40:30196 days 14 hrs ago 0xc78f0ad92591ce4902653c5089c7358ced058721 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0x3f0aeac21f5c6977ed00379cc9407efcfc56b280f2a945d2415e3e37bbb0487854709402021-03-07 11:39:57196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c CheeseSwap: Factory0 BNB
0x3f0aeac21f5c6977ed00379cc9407efcfc56b280f2a945d2415e3e37bbb0487854709402021-03-07 11:39:57196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c Binance: WBNB Token0 BNB
0x3f0aeac21f5c6977ed00379cc9407efcfc56b280f2a945d2415e3e37bbb0487854709402021-03-07 11:39:57196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c 0x93f44521a0b6dde17e8c4bb8e85e8c215d2eef0e0 BNB
0x3f0aeac21f5c6977ed00379cc9407efcfc56b280f2a945d2415e3e37bbb0487854709402021-03-07 11:39:57196 days 14 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0x3f0aeac21f5c6977ed00379cc9407efcfc56b280f2a945d2415e3e37bbb0487854709402021-03-07 11:39:57196 days 14 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0xf702954bd46eb37a0d8f8f95c71db32d988320e1d36591572903af81506db67954709102021-03-07 11:38:27196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c Binance: WBNB Token0 BNB
0xf702954bd46eb37a0d8f8f95c71db32d988320e1d36591572903af81506db67954709102021-03-07 11:38:27196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c 0x93f44521a0b6dde17e8c4bb8e85e8c215d2eef0e0 BNB
0xf702954bd46eb37a0d8f8f95c71db32d988320e1d36591572903af81506db67954709102021-03-07 11:38:27196 days 14 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c Binance: WBNB Token0 BNB
0xf702954bd46eb37a0d8f8f95c71db32d988320e1d36591572903af81506db67954709102021-03-07 11:38:27196 days 14 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0xf702954bd46eb37a0d8f8f95c71db32d988320e1d36591572903af81506db67954709102021-03-07 11:38:27196 days 14 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0xc97158338fe99f6afbdea403839b3950da53cc9eeeeca29437e56b9e18ab3c1854708752021-03-07 11:36:42196 days 14 hrs ago 0xc78f0ad92591ce4902653c5089c7358ced058721 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0x61248cc89cebf49efb41a7104dae504e358540a0a8a833761f9abca8966c579654699742021-03-07 10:51:39196 days 15 hrs ago 0xc78f0ad92591ce4902653c5089c7358ced058721 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0xfb9a5f2b9007ed6a17b33d30ad1a8543c905194af9732108755ce4fed4e84a8454698702021-03-07 10:46:27196 days 15 hrs ago 0xc78f0ad92591ce4902653c5089c7358ced058721 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0x6c9f0a8b4742be5b936b0f15fc7209fc879d1f7a70a3f27c79e104f8f0d11a6a54695292021-03-07 10:29:24196 days 15 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c Binance: WBNB Token0 BNB
0x6c9f0a8b4742be5b936b0f15fc7209fc879d1f7a70a3f27c79e104f8f0d11a6a54695292021-03-07 10:29:24196 days 15 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c 0x93f44521a0b6dde17e8c4bb8e85e8c215d2eef0e0 BNB
0x6c9f0a8b4742be5b936b0f15fc7209fc879d1f7a70a3f27c79e104f8f0d11a6a54695292021-03-07 10:29:24196 days 15 hrs ago 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c Binance: WBNB Token0 BNB
0x6c9f0a8b4742be5b936b0f15fc7209fc879d1f7a70a3f27c79e104f8f0d11a6a54695292021-03-07 10:29:24196 days 15 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
0x6c9f0a8b4742be5b936b0f15fc7209fc879d1f7a70a3f27c79e104f8f0d11a6a54695292021-03-07 10:29:24196 days 15 hrs ago CheeseSwap: Router 0x9aa251cfabda84f750dde8a227f9240ae11e9f8c0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xc8213bba1ad62283847f388d834b876994843b90

Contract Name:
CheeseSwapPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-11-09
*/

// SPDX-License-Identifier: MIT


pragma solidity =0.5.16;

interface ICheeseSwapFactory {
    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;
}


interface ICheeseSwapPair {
    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;
}

interface ICheeseSwapERC20 {
    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;
}

// 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');
    }
}

contract CheeseSwapERC20 is ICheeseSwapERC20 {
    using SafeMath for uint;

    string public constant name = 'CheeseSwap LPs';
    string public constant symbol = 'Cheese-LP';
    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, 'CheeseSwap: 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, 'CheeseSwap: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

// 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;
        }
    }
}

// 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);
    }
}

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);
}

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

contract CheeseSwapPair is ICheeseSwapPair, CheeseSwapERC20 {
    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, 'CheeseSwap: 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))), 'CheeseSwap: 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, 'CheeseSwap: 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), 'CheeseSwap: 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 = ICheeseSwapFactory(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(3).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, 'CheeseSwap: 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, 'CheeseSwap: 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, 'CheeseSwap: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'CheeseSwap: 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, 'CheeseSwap: 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) ICheeseSwapCallee(to).cheeseswapCall(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, 'CheeseSwap: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(2));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(2));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'CheeseSwap: 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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b5060405146908060526123a08239604080519182900360520182208282018252600e83526d43686565736553776170204c507360901b6020938401528151808301835260018152603160f81b908401528151808401919091527f458b5fc8b30b49d2788ac023f71abeb89b3b1f6688e846b2fdb87c0da0d8a01b818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612297806101096000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b01565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b2b565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b55565b604080519115158252519081900360200190f35b610339610b6c565b604080516001600160a01b039092168252519081900360200190f35b61035d610b7b565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b81565b61035d610c1b565b6103b5610c3f565b6040805160ff9092168252519081900360200190f35b61035d610c44565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c4a565b61035d610ccf565b61035d610cd5565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cdb565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fdc565b61035d610fee565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610ff4565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611006565b6040805192835260208301919091528051918290030190f35b6102446113ad565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113d2565b61035d6113df565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113e5565b610339611551565b610339611560565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561156f565b61035d600480360360408110156105a357600080fd5b506001600160a01b0381358116916020013516611772565b61023a61178f565b600c5460011461060f576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c55841515806106225750600084115b61065d5760405162461bcd60e51b81526004018080602001828103825260268152602001806121f66026913960400191505060405180910390fd5b600080610668610b2b565b5091509150816001600160701b03168710801561068d5750806001600160701b031686105b6106c85760405162461bcd60e51b815260040180806020018281038252602281526020018061221c6022913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107065750806001600160a01b0316896001600160a01b031614155b610750576040805162461bcd60e51b8152602060048201526016602482015275436865657365537761703a20494e56414c49445f544f60501b604482015290519081900360640190fd5b8a1561076157610761828a8d6118f2565b891561077257610772818a8c6118f2565b861561082d57886001600160a01b03166358930f9c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081457600080fd5b505af1158015610828573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087357600080fd5b505afa158015610887573d6000803e3d6000fd5b505050506040513d602081101561089d57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d602081101561091357600080fd5b5051925060009150506001600160701b0385168a90038311610936576000610945565b89856001600160701b03160383035b9050600089856001600160701b0316038311610962576000610971565b89856001600160701b03160383035b905060008211806109825750600081115b6109bd5760405162461bcd60e51b815260040180806020018281038252602581526020018061223e6025913960400191505060405180910390fd5b60006109f16109d384600263ffffffff611a8c16565b6109e5876103e863ffffffff611a8c16565b9063ffffffff611aef16565b90506000610a096109d384600263ffffffff611a8c16565b9050610a3a620f4240610a2e6001600160701b038b8116908b1663ffffffff611a8c16565b9063ffffffff611a8c16565b610a4a838363ffffffff611a8c16565b1015610a8d576040805162461bcd60e51b815260206004820152600d60248201526c436865657365537761703a204b60981b604482015290519081900360640190fd5b5050610a9b84848888611b3f565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600e81526020016d43686565736553776170204c507360901b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b62338484611d05565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c06576001600160a01b0384166000908152600260209081526040808320338452909152902054610be1908363ffffffff611aef16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c11848484611d67565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610ca1576040805162461bcd60e51b815260206004820152601560248201527421b432b2b9b2a9bbb0b81d102327a92124a22222a760591b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d29576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c81905580610d39610b2b565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e0a57600080fd5b505afa158015610e1e573d6000803e3d6000fd5b505050506040513d6020811015610e3457600080fd5b505190506000610e53836001600160701b03871663ffffffff611aef16565b90506000610e70836001600160701b03871663ffffffff611aef16565b90506000610e7e8787611e21565b60005490915080610ebb57610ea76103e86109e5610ea2878763ffffffff611a8c16565b611f7f565b9850610eb660006103e8611fd1565b610f0a565b610f076001600160701b038916610ed8868463ffffffff611a8c16565b81610edf57fe5b046001600160701b038916610efa868563ffffffff611a8c16565b81610f0157fe5b04612067565b98505b60008911610f495760405162461bcd60e51b81526004018080602001828103825260298152602001806121cd6029913960400191505060405180910390fd5b610f538a8a611fd1565b610f5f86868a8a611b3f565b8115610f8f57600854610f8b906001600160701b0380821691600160701b90041663ffffffff611a8c16565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611055576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c81905580611065610b2b565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561113957600080fd5b505afa15801561114d573d6000803e3d6000fd5b505050506040513d602081101561116357600080fd5b5051306000908152600160205260408120549192506111828888611e21565b60005490915080611199848763ffffffff611a8c16565b816111a057fe5b049a50806111b4848663ffffffff611a8c16565b816111bb57fe5b04995060008b1180156111ce575060008a115b6112095760405162461bcd60e51b81526004018080602001828103825260298152602001806121a46029913960400191505060405180910390fd5b611213308461207f565b61121e878d8d6118f2565b611229868d8c6118f2565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d602081101561129957600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112e557600080fd5b505afa1580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b5051935061131f85858b8b611b3f565b811561134f5760085461134b906001600160701b0380821691600160701b90041663ffffffff611a8c16565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600981526020016804368656573652d4c560bc1b81525081565b6000610b62338484611d67565b6103e881565b600c54600114611431576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114e092859287926114db926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156114a357600080fd5b505afa1580156114b7573d6000803e3d6000fd5b505050506040513d60208110156114cd57600080fd5b50519063ffffffff611aef16565b6118f2565b600854604080516370a0823160e01b8152306004820152905161154792849287926114db92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156114a357600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115ba576040805162461bcd60e51b815260206004820152601360248201527210da19595cd954ddd85c0e8811561412549151606a1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061170b5750886001600160a01b0316816001600160a01b0316145b61175c576040805162461bcd60e51b815260206004820152601d60248201527f436865657365537761703a20494e56414c49445f5349474e4154555245000000604482015290519081900360640190fd5b611767898989611d05565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117db576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118eb926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182c57600080fd5b505afa158015611840573d6000803e3d6000fd5b505050506040513d602081101561185657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050506040513d60208110156118cd57600080fd5b50516008546001600160701b0380821691600160701b900416611b3f565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b6020831061199f5780518252601f199092019160209182019101611980565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a01576040519150601f19603f3d011682016040523d82523d6000602084013e611a06565b606091505b5091509150818015611a34575080511580611a345750808060200190516020811015611a3157600080fd5b50515b611a85576040805162461bcd60e51b815260206004820152601b60248201527f436865657365537761703a205452414e534645525f4641494c45440000000000604482015290519081900360640190fd5b5050505050565b6000811580611aa757505080820282828281611aa457fe5b04145b610b66576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b66576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b5d57506001600160701b038311155b611ba5576040805162461bcd60e51b8152602060048201526014602482015273436865657365537761703a204f564552464c4f5760601b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bd557506001600160701b03841615155b8015611be957506001600160701b03831615155b15611c5a578063ffffffff16611c1785611c028661211d565b6001600160e01b03169063ffffffff61212f16565b600980546001600160e01b03929092169290920201905563ffffffff8116611c4284611c028761211d565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d90908263ffffffff611aef16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611dc5908263ffffffff61215416565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7257600080fd5b505afa158015611e86573d6000803e3d6000fd5b505050506040513d6020811015611e9c57600080fd5b5051600b546001600160a01b038216158015945091925090611f6b578015611f66576000611edf610ea26001600160701b0388811690881663ffffffff611a8c16565b90506000611eec83611f7f565b905080821115611f63576000611f1a611f0b848463ffffffff611aef16565b6000549063ffffffff611a8c16565b90506000611f3f83611f3386600363ffffffff611a8c16565b9063ffffffff61215416565b90506000818381611f4c57fe5b0490508015611f5f57611f5f8782611fd1565b5050505b50505b611f77565b8015611f77576000600b555b505092915050565b60006003821115611fc2575080600160028204015b81811015611fbc57809150600281828581611fab57fe5b040181611fb457fe5b049050611f94565b50611fcc565b8115611fcc575060015b919050565b600054611fe4908263ffffffff61215416565b60009081556001600160a01b03831681526001602052604090205461200f908263ffffffff61215416565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106120765781612078565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546120a8908263ffffffff611aef16565b6001600160a01b038316600090815260016020526040812091909155546120d5908263ffffffff611aef16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161214c57fe5b049392505050565b80820182811015610b66576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe436865657365537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544436865657365537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544436865657365537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54436865657365537761703a20494e53554646494349454e545f4c4951554944495459436865657365537761703a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a723158207412320f4cb3b32872c7002da5362f60f725d28331630297c8630a1106d3e8a064736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

10420:9704:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10420:9704:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17635:1896;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17635:1896:0;;;;;;;;-1:-1:-1;;;;;17635:1896:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;17635:1896:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17635:1896:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;17635:1896:0;;-1:-1:-1;17635:1896:0;-1:-1:-1;17635:1896:0;:::i;:::-;;4953:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4953:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11445:231;;;:::i;:::-;;;;-1:-1:-1;;;;;11445:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7007:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7007:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10733:21;;;:::i;:::-;;;;-1:-1:-1;;;;;10733:21:0;;;;;;;;;;;;;;5098:24;;;:::i;:::-;;;;;;;;;;;;;;;;7309:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7309:301:0;;;;;;;;;;;;;;;;;:::i;5390:108::-;;;:::i;5056:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5247:31;;;:::i;12506:211::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12506:211:0;;;;;;;;;;:::i;11084:32::-;;;:::i;11123:::-;;;:::i;14703:1241::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14703:1241:0;-1:-1:-1;;;;;14703:1241:0;;:::i;5129:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5129:41:0;-1:-1:-1;;;;;5129:41:0;;:::i;11162:17::-;;;:::i;5505:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5505:38:0;-1:-1:-1;;;;;5505:38:0;;:::i;16056:1467::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16056:1467:0;-1:-1:-1;;;;;16056:1467:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5006:43;;;:::i;7162:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7162:139:0;;;;;;;;:::i;10554:46::-;;;:::i;19580:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19580:334:0;-1:-1:-1;;;;;19580:334:0;;:::i;10704:22::-;;;:::i;10761:21::-;;;:::i;7618:676::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7618:676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5177:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5177:61:0;;;;;;;;;;:::i;19963:158::-;;;:::i;17635:1896::-;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;17749:14;;;;:32;;;17780:1;17767:10;:14;17749:32;17741:83;;;;-1:-1:-1;;;17741:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17836:17;17855;17877:13;:11;:13::i;:::-;17835:55;;;;;17937:9;-1:-1:-1;;;;;17924:22:0;:10;:22;:48;;;;;17963:9;-1:-1:-1;;;;;17950:22:0;:10;:22;17924:48;17916:95;;;;-1:-1:-1;;;17916:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18156:6;;18191;;18024:13;;;;-1:-1:-1;;;;;18156:6:0;;;;18191;;;;18216:13;;;;;;;:30;;;18239:7;-1:-1:-1;;;;;18233:13:0;:2;-1:-1:-1;;;;;18233:13:0;;;18216:30;18208:65;;;;;-1:-1:-1;;;18208:65:0;;;;;;;;;;;;-1:-1:-1;;;18208:65:0;;;;;;;;;;;;;;;18288:14;;18284:58;;18304:38;18318:7;18327:2;18331:10;18304:13;:38::i;:::-;18391:14;;18387:58;;18407:38;18421:7;18430:2;18434:10;18407:13;:38::i;:::-;18494:15;;18490:99;;18529:2;-1:-1:-1;;;;;18511:36:0;;18548:10;18560;18572;18584:4;;18511:78;;;;;;;;;;;;;-1:-1:-1;;;;;18511:78:0;-1:-1:-1;;;;;18511:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18511:78:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18511:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18511:78:0;;;;18490:99;18611:40;;;-1:-1:-1;;;18611:40:0;;18645:4;18611:40;;;;;;-1:-1:-1;;;;;18611:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18611:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18611:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18611:40:0;18673;;;-1:-1:-1;;;18673:40:0;;18707:4;18673:40;;;;;;18611;;-1:-1:-1;;;;;;18673:25:0;;;;;:40;;;;;18611;;18673;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18673:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18673:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18673:40:0;;-1:-1:-1;18735:14:0;;-1:-1:-1;;;;;;;18763:22:0;;;;;18752:33;;:75;;18826:1;18752:75;;;18812:10;18800:9;-1:-1:-1;;;;;18800:22:0;;18788:8;:35;18752:75;18735:92;;18838:14;18878:10;18866:9;-1:-1:-1;;;;;18866:22:0;;18855:8;:33;:75;;18929:1;18855:75;;;18915:10;18903:9;-1:-1:-1;;;;;18903:22:0;;18891:8;:35;18855:75;18838:92;;18961:1;18949:9;:13;:30;;;;18978:1;18966:9;:13;18949:30;18941:80;;;;-1:-1:-1;;;18941:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19107:21;19131:40;19154:16;:9;19168:1;19154:16;:13;:16;:::i;:::-;19131:18;:8;19144:4;19131:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;19107:64;-1:-1:-1;19182:21:0;19206:40;19229:16;:9;19243:1;19229:16;:13;:16;:::i;19206:40::-;19182:64;-1:-1:-1;19307:43:0;19342:7;19307:30;-1:-1:-1;;;;;19307:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:43;:34;:43;:::i;:::-;19265:38;:16;19286;19265:38;:20;:38;:::i;:::-;:85;;19257:111;;;;;-1:-1:-1;;;19257:111:0;;;;;;;;;;;;-1:-1:-1;;;19257:111:0;;;;;;;;;;;;;;;11405:1;;19392:49;19400:8;19410;19420:9;19431;19392:7;:49::i;:::-;19457:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19457:66:0;;;19462:10;;19457:66;;;;;;;;;-1:-1:-1;;11428:1:0;11417:8;:12;-1:-1:-1;;;;;;;;;17635:1896:0:o;4953:46::-;;;;;;;;;;;;;;-1:-1:-1;;;4953:46:0;;;;:::o;11445:231::-;11578:8;;-1:-1:-1;;;;;11578:8:0;;;;-1:-1:-1;;;11609:8:0;;;;;;-1:-1:-1;;;11650:18:0;;;;;11445:231::o;7007:147::-;7071:4;7088:36;7097:10;7109:7;7118:5;7088:8;:36::i;:::-;-1:-1:-1;7142:4:0;7007:147;;;;;:::o;10733:21::-;;;-1:-1:-1;;;;;10733:21:0;;:::o;5098:24::-;;;;:::o;7309:301::-;-1:-1:-1;;;;;7408:15:0;;7387:4;7408:15;;;:9;:15;;;;;;;;7424:10;7408:27;;;;;;;;-1:-1:-1;;7408:39:0;7404:140;;-1:-1:-1;;;;;7494:15:0;;;;;;:9;:15;;;;;;;;7510:10;7494:27;;;;;;;;:38;;7526:5;7494:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7464:15:0;;;;;;:9;:15;;;;;;;;7480:10;7464:27;;;;;;;:68;7404:140;7554:26;7564:4;7570:2;7574:5;7554:9;:26::i;:::-;-1:-1:-1;7598:4:0;7309:301;;;;;:::o;5390:108::-;5432:66;5390:108;:::o;5056:35::-;5089:2;5056:35;:::o;5247:31::-;;;;:::o;12506:211::-;12602:7;;-1:-1:-1;;;;;12602:7:0;12588:10;:21;12580:55;;;;;-1:-1:-1;;;12580:55:0;;;;;;;;;;;;-1:-1:-1;;;12580:55:0;;;;;;;;;;;;;;;12666:6;:16;;-1:-1:-1;;;;;12666:16:0;;;-1:-1:-1;;;;;;12666:16:0;;;;;;;12693:6;:16;;;;;;;;;;;12506:211::o;11084:32::-;;;;:::o;11123:::-;;;;:::o;14703:1241::-;14752:14;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;;;11393:1;14821:13;:11;:13::i;:::-;-1:-1:-1;14883:6:0;;14876:39;;;-1:-1:-1;;;14876:39:0;;14909:4;14876:39;;;;;;14779:55;;-1:-1:-1;14779:55:0;;-1:-1:-1;14860:13:0;;-1:-1:-1;;;;;14883:6:0;;;;14876:24;;:39;;;;;;;;;;;;;;14883:6;14876:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14876:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14876:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14876:39:0;14949:6;;14942:39;;;-1:-1:-1;;;14942:39:0;;14975:4;14942:39;;;;;;14876;;-1:-1:-1;14926:13:0;;-1:-1:-1;;;;;14949:6:0;;;;14942:24;;:39;;;;;14876;;14942;;;;;;;;14949:6;14942:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14942:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14942:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14942:39:0;;-1:-1:-1;14992:12:0;15007:23;:8;-1:-1:-1;;;;;15007:23:0;;;:12;:23;:::i;:::-;14992:38;-1:-1:-1;15041:12:0;15056:23;:8;-1:-1:-1;;;;;15056:23:0;;;:12;:23;:::i;:::-;15041:38;;15092:10;15105:30;15114:9;15125;15105:8;:30::i;:::-;15146:17;15166:11;15092:43;;-1:-1:-1;15270:17:0;15266:352;;15316:54;10595:5;15316:31;15326:20;:7;15338;15326:20;:11;:20;:::i;:::-;15316:9;:31::i;:54::-;15304:66;;15384:36;15398:1;10595:5;15384;:36::i;:::-;15266:352;;;15520:86;-1:-1:-1;;;;;15529:37:0;;:25;:7;15541:12;15529:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;15568:37:0;;:25;:7;15580:12;15568:25;:11;:25;:::i;:::-;:37;;;;;;15520:8;:86::i;:::-;15508:98;;15266:352;15648:1;15636:9;:13;15628:67;;;;-1:-1:-1;;;15628:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15706:20;15712:2;15716:9;15706:5;:20::i;:::-;15739:49;15747:8;15757;15767:9;15778;15739:7;:49::i;:::-;15803:5;15799:47;;;15837:8;;15818:28;;-1:-1:-1;;;;;15823:8:0;;;;-1:-1:-1;;;15837:8:0;;;15818:28;:18;:28;:::i;:::-;15810:5;:36;15799:47;15902:34;;;;;;;;;;;;;;15907:10;;15902:34;;;;;;;;-1:-1:-1;;11428:1:0;11417:8;:12;-1:-1:-1;14703:1241:0;;;-1:-1:-1;;;;;;14703:1241:0:o;5129:41::-;;;;;;;;;;;;;:::o;11162:17::-;;;;:::o;5505:38::-;;;;;;;;;;;;;:::o;16056:1467::-;16105:12;16119;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;;;11393:1;16186:13;:11;:13::i;:::-;-1:-1:-1;16243:6:0;;16324;;16403:40;;;-1:-1:-1;;;16403:40:0;;16437:4;16403:40;;;;;;16144:55;;-1:-1:-1;16144:55:0;;-1:-1:-1;;;;;;16243:6:0;;;;16324;;;16225:15;;16243:6;;16403:25;;:40;;;;;;;;;;;;;;16243:6;16403:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16403:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16403:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16403:40:0;16470;;;-1:-1:-1;;;16470:40:0;;16504:4;16470:40;;;;;;16403;;-1:-1:-1;16454:13:0;;-1:-1:-1;;;;;16470:25:0;;;;;:40;;;;;16403;;16470;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16470:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16470:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16470:40:0;16556:4;16521:14;16538:24;;;:9;16470:40;16538:24;;;;;16470:40;;-1:-1:-1;16588:30:0;16597:9;16608;16588:8;:30::i;:::-;16629:17;16649:11;16575:43;;-1:-1:-1;16649:11:0;16759:23;:9;16773:8;16759:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;16892:12:0;16866:23;:9;16880:8;16866:23;:13;:23;:::i;:::-;:38;;;;;;16856:48;;16981:1;16971:7;:11;:26;;;;;16996:1;16986:7;:11;16971:26;16963:80;;;;-1:-1:-1;;;16963:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17054:31;17068:4;17075:9;17054:5;:31::i;:::-;17096:35;17110:7;17119:2;17123:7;17096:13;:35::i;:::-;17142;17156:7;17165:2;17169:7;17142:13;:35::i;:::-;17199:40;;;-1:-1:-1;;;17199:40:0;;17233:4;17199:40;;;;;;-1:-1:-1;;;;;17199:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17199:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17199:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17199:40:0;17261;;;-1:-1:-1;;;17261:40:0;;17295:4;17261:40;;;;;;17199;;-1:-1:-1;;;;;;17261:25:0;;;;;:40;;;;;17199;;17261;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17261:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17261:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17261:40:0;;-1:-1:-1;17314:49:0;17322:8;17261:40;17342:9;17353;17314:7;:49::i;:::-;17378:5;17374:47;;;17412:8;;17393:28;;-1:-1:-1;;;;;17398:8:0;;;;-1:-1:-1;;;17412:8:0;;;17393:28;:18;:28;:::i;:::-;17385:5;:36;17374:47;17477:38;;;;;;;;;;;;;;-1:-1:-1;;;;;17477:38:0;;;17482:10;;17477:38;;;;;;;;;;;11405:1;;;;;;;;;11428;11417:8;:12;;;;16056:1467;;;:::o;5006:43::-;;;;;;;;;;;;;;-1:-1:-1;;;5006:43:0;;;;:::o;7162:139::-;7222:4;7239:32;7249:10;7261:2;7265:5;7239:9;:32::i;10554:46::-;10595:5;10554:46;:::o;19580:334::-;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;19649:6;;19699;;19803:8;;19758:40;;;-1:-1:-1;;;19758:40:0;;19792:4;19758:40;;;;;;-1:-1:-1;;;;;19649:6:0;;;;19699;;;;19731:82;;19649:6;;19754:2;;19758:54;;-1:-1:-1;;;;;19803:8:0;;19649:6;;19758:25;;:40;;;;;;;;;;;;;;;19649:6;19758:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19758:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19758:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19758:40:0;;:54;:44;:54;:::i;:::-;19731:13;:82::i;:::-;19896:8;;19851:40;;;-1:-1:-1;;;19851:40:0;;19885:4;19851:40;;;;;;19824:82;;19838:7;;19847:2;;19851:54;;-1:-1:-1;;;19896:8:0;;-1:-1:-1;;;;;19896:8:0;;-1:-1:-1;;;;;19851:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;19824:82:0;-1:-1:-1;;11428:1:0;11417:8;:12;-1:-1:-1;19580:334:0:o;10704:22::-;;;-1:-1:-1;;;;;10704:22:0;;:::o;10761:21::-;;;-1:-1:-1;;;;;10761:21:0;;:::o;7618:676::-;7764:15;7752:8;:27;;7744:59;;;;;-1:-1:-1;;;7744:59:0;;;;;;;;;;;;-1:-1:-1;;;7744:59:0;;;;;;;;;;;;;;;7919:16;;-1:-1:-1;;;;;8015:13:0;;;7814:14;8015:13;;;:6;:13;;;;;;;;:15;;;;;;;;;7964:77;;5432:66;7964:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7964:77:0;;;;;7954:88;;;;;;-1:-1:-1;;;7855:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7855:202:0;;;;;;7831:237;;;;;;;;;8106:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7814:14;;8015:15;8106:26;;;;;-1:-1:-1;;8106:26:0;;;;;;;;;;8015:15;8106:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8106:26:0;;-1:-1:-1;;8106:26:0;;;-1:-1:-1;;;;;;;8151:30:0;;;;;;:59;;;8205:5;-1:-1:-1;;;;;8185:25:0;:16;-1:-1:-1;;;;;8185:25:0;;8151:59;8143:101;;;;;-1:-1:-1;;;8143:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8255:31;8264:5;8271:7;8280:5;8255:8;:31::i;:::-;7618:676;;;;;;;;;:::o;5177:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;19963:158::-;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;20019:6;;20012:39;;;-1:-1:-1;;;20012:39:0;;20045:4;20012:39;;;;;;20004:109;;-1:-1:-1;;;;;20019:6:0;;20012:24;;:39;;;;;;;;;;;;;;20019:6;20012:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20012:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20012:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20012:39:0;20060:6;;20053:39;;;-1:-1:-1;;;20053:39:0;;20086:4;20053:39;;;;;;-1:-1:-1;;;;;20060:6:0;;;;20053:24;;:39;;;;;20012;;20053;;;;;;;;20060:6;20053:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20053:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20053:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20053:39:0;20094:8;;-1:-1:-1;;;;;20094:8:0;;;;-1:-1:-1;;;20104:8:0;;;20004:7;:109::i;:::-;11428:1;11417:8;:12;19963:158::o;11684:288::-;10659:34;;;;;;;;;;;;;;;;;11812:43;;-1:-1:-1;;;;;11812:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11812:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11801:55:0;;;;11766:12;;11780:17;;11801:10;;;11812:43;11801:55;;;25:18:-1;11801:55:0;;25:18:-1;36:153;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;;;11801:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11765:91:0;;;;11875:7;:57;;;;-1:-1:-1;11887:11:0;;:16;;:44;;;11918:4;11907:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11907:24:0;11887:44;11867:97;;;;;-1:-1:-1;;;11867:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11684:288;;;;;:::o;4720:142::-;4772:6;4799;;;:30;;-1:-1:-1;;4814:5:0;;;4828:1;4823;4814:5;4823:1;4809:15;;;;;:20;4799:30;4791:63;;;;;-1:-1:-1;;;4791:63:0;;;;;;;;;;;;-1:-1:-1;;;4791:63:0;;;;;;;;;;;;;;4583:129;4667:5;;;4662:16;;;;4654:50;;;;;-1:-1:-1;;;4654:50:0;;;;;;;;;;;;-1:-1:-1;;;4654:50:0;;;;;;;;;;;;;;12802:861;-1:-1:-1;;;;;12914:23:0;;;;;:50;;-1:-1:-1;;;;;;12941:23:0;;;12914:50;12906:83;;;;;-1:-1:-1;;;12906:83:0;;;;;;;;;;;;-1:-1:-1;;;12906:83:0;;;;;;;;;;;;;;;13104:18;;13031:23;:15;:23;;;-1:-1:-1;;;13104:18:0;;;;13087:35;;;13160:15;;;;;;:33;;-1:-1:-1;;;;;;13179:14:0;;;;13160:33;:51;;;;-1:-1:-1;;;;;;13197:14:0;;;;13160:51;13156:336;;;13366:11;13313:64;;13318:44;13352:9;13318:27;13335:9;13318:16;:27::i;:::-;-1:-1:-1;;;;;13318:33:0;;:44;:33;:44;:::i;:::-;13289:20;:88;;-1:-1:-1;;;;;13313:50:0;;;;:64;;;;13289:88;;;13416:64;;;13421:44;13455:9;13421:27;13438:9;13421:16;:27::i;:44::-;13392:20;:88;;-1:-1:-1;;;;;13416:50:0;;;;:64;;;;13392:88;;;13156:336;13502:8;:28;;-1:-1:-1;;13502:28:0;-1:-1:-1;;;;;13502:28:0;;;;;;;-1:-1:-1;;;;13541:28:0;-1:-1:-1;;;13541:28:0;;;;;;;;;-1:-1:-1;;;;;13580:35:0;-1:-1:-1;;;13580:35:0;;;;;;;;;13631:24;;;13636:8;;;13631:24;;13646:8;;;;;;;13631:24;;;;;;;;;;;;;;;;;12802:861;;;;;;:::o;6602:169::-;-1:-1:-1;;;;;6683:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6732:31;;;;;;;;;;;;;;;;;6602:169;;;:::o;6779:220::-;-1:-1:-1;;;;;6873:15:0;;;;;;:9;:15;;;;;;:26;;6893:5;6873:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6855:15:0;;;;;;;:9;:15;;;;;;:44;;;;6926:13;;;;;;;:24;;6944:5;6926:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6910:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;6966:25;;;;;;;6910:13;;6966:25;;;;;;;;;;;;;6779:220;;;:::o;13753:838::-;13826:10;13849:13;13884:7;;;;;;;;;-1:-1:-1;;;;;13884:7:0;-1:-1:-1;;;;;13865:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13865:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13865:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13865:35:0;13963:5;;-1:-1:-1;;;;;13919:19:0;;;;;;-1:-1:-1;13865:35:0;;-1:-1:-1;13963:5:0;13994:590;;14024:11;;14020:494;;14056:10;14069:41;14079:30;-1:-1:-1;;;;;14079:15:0;;;;:30;;;:19;:30;:::i;14069:41::-;14056:54;;14129:14;14146:17;14156:6;14146:9;:17::i;:::-;14129:34;;14194:9;14186:5;:17;14182:317;;;14228:14;14245:37;14261:20;:5;14271:9;14261:20;:9;:20;:::i;:::-;14245:11;;;:37;:15;:37;:::i;:::-;14228:54;-1:-1:-1;14305:16:0;14324:27;14341:9;14324:12;:5;14334:1;14324:12;:9;:12;:::i;:::-;:16;:27;:16;:27;:::i;:::-;14305:46;;14374:14;14403:11;14391:9;:23;;;;;;;-1:-1:-1;14441:13:0;;14437:42;;14456:23;14462:5;14469:9;14456:5;:23::i;:::-;14182:317;;;;14020:494;;;13994:590;;;14535:11;;14531:53;;14571:1;14563:5;:9;14531:53;13753:838;;;;;;:::o;8588:303::-;8633:6;8660:1;8656;:5;8652:232;;;-1:-1:-1;8682:1:0;8715;8711;8707:5;;:9;8731:92;8742:1;8738;:5;8731:92;;;8768:1;8764:5;;8806:1;8801;8797;8793;:5;;;;;;:9;8792:15;;;;;;8788:19;;8731:92;;;8652:232;;;;8844:6;;8840:44;;-1:-1:-1;8871:1:0;8840:44;8588:303;;;:::o;6176:201::-;6249:11;;:22;;6265:5;6249:22;:15;:22;:::i;:::-;6235:11;:36;;;-1:-1:-1;;;;;6298:13:0;;;;:9;:13;;;;;;:24;;6316:5;6298:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6282:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6338:31;;;;;;;6282:13;;;;6338:31;;;;;;;;;;6176:201;;:::o;8374:96::-;8426:6;8453:1;8449;:5;:13;;8461:1;8449:13;;;8457:1;8449:13;8445:17;8374:96;-1:-1:-1;;;8374:96:0:o;6385:209::-;-1:-1:-1;;;;;6464:15:0;;;;;;:9;:15;;;;;;:26;;6484:5;6464:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6446:15:0;;;;;;:9;:15;;;;;:44;;;;6515:11;:22;;6531:5;6515:22;:15;:22;:::i;:::-;6501:11;:36;;;6553:33;;;;;;;;-1:-1:-1;;;;;6553:33:0;;;;;;;;;;;;;6385:209;;:::o;9160:120::-;-1:-1:-1;;;;;9236:10:0;-1:-1:-1;;;9236:17:0;;9160:120::o;9351:108::-;9411:9;-1:-1:-1;;;;;9441:10:0;;-1:-1:-1;;;;;9437:14:0;;9441:10;9437:14;;;;;;9351:108;-1:-1:-1;;;9351:108:0:o;4447:128::-;4531:5;;;4526:16;;;;4518:49;;;;;-1:-1:-1;;;4518:49:0;;;;;;;;;;;;-1:-1:-1;;;4518:49:0;;;;;;;;;;;;;

Swarm Source

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