Contract 0x9354caB0F1083135439B23aA6c364329e578F39a

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x9cbe1994ca2376dd841c696bc536bcf38fd0fdcb7764a86278e3d42c1ebd82ba52089012021-02-26 7:32:2814 hrs 9 mins ago0x40c00e5e183e70a8cef4fe0a0692bea98bd3a84e IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0xc39448e17547cf7201904f8eddb2d1cf5c753a89b3170628bd03d52da4f742fa52088932021-02-26 7:32:0414 hrs 10 mins ago0x40c00e5e183e70a8cef4fe0a0692bea98bd3a84e IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0xab870e3f4127aa8ec2193906a5ced09f5ceef05ba9645c4beba132b16a2b84ab52088482021-02-26 7:29:4914 hrs 12 mins ago0xe72dd9676e41dba2b29144434931231decb8dafe IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0x032f2b8d3856b480564ec270d8cd6f4ea0e0daeae65e7b473da10a726128c7cd51976262021-02-25 22:06:5523 hrs 35 mins ago0x704d9651971252838682ef4a9dd1b97c97c63ccc IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0x552a11de759036a901708420cf82655a54351284d9346b934ed7a9bede49eee151976192021-02-25 22:06:3423 hrs 35 mins ago0x704d9651971252838682ef4a9dd1b97c97c63ccc IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0x2bf640d321424a9c48f7ddd593d54612fe73cf8038b4dd07b3f08c4940af1fe451976072021-02-25 22:05:5823 hrs 36 mins ago0x704d9651971252838682ef4a9dd1b97c97c63ccc IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0x6e91d3df9448ad13c370737c237184d618c88323f83ac0dcb665ac2a6680717051897662021-02-25 15:32:431 day 6 hrs ago0x22af27afa6a6cdd6942df8674ef160b46428978c IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0x68ae8fcaf53de4a2a01f0d1de821d52bd3ff6865e05b67e490b50e40d275102651754672021-02-25 3:34:581 day 18 hrs ago0x857e12fa9da51961d7d854e2b6638bf47b7c4812 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00044354
0xe78fe76430f5be2781deb61630d349e0b858d97f53e6d1a9066daff3852febea51597382021-02-24 14:26:272 days 7 hrs ago0xd95adb1ccb95e7e147096b04bbd6ba65ccef01aa IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00044354
0x239d7ec6fa125fed19ef8d32134d4af5ffe575f6b7fc3948d198f0eda190225451579652021-02-24 12:57:232 days 8 hrs ago0x30baf1e4772914bc5a6ea9c6be69e5cfa0e908fa IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0x42c230bd2b07688b6d1e6c71bfd53b27c2e44b9b000d068629145f2ed8aa2dac51518752021-02-24 7:50:182 days 13 hrs ago0xa515521f449a9d2ec1830d383b0683fc0a655422 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0004409
0x386a8e8003575859b5a7dd0ce8d2c25133985d1a1b1f770b9daa276eebb9c5e951354592021-02-23 18:08:533 days 3 hrs ago0x67c2e545bbee2d6f80ebe9429c3bf7d30ee1b0c7 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00044354
0x10e298c7e116c1e7f131219846192d8368af9b3ca0bbc64bc21607b5e8ce4cc251354182021-02-23 18:06:503 days 3 hrs ago0x67c2e545bbee2d6f80ebe9429c3bf7d30ee1b0c7 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00025154
0xc2ef81209ce5a402b0421bed8549f80f8f6a4366591313964485e8f546e5230a51354032021-02-23 18:06:053 days 3 hrs ago0x67c2e545bbee2d6f80ebe9429c3bf7d30ee1b0c7 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00044354
0x78d82f7121a57bde826efbce77a3a875da1dba2e0560c9830b5d76cdbdf1096a51088562021-02-22 19:43:324 days 1 hr ago0x2b706e5955ade3033613b33a207f0a4ecf182f1d IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0004409
0xa81e3f1240859ac1dc483d68f5a3ebf376004e9349fd0e6e6a39e4648766459c51061012021-02-22 17:25:344 days 4 hrs ago0xd6d5bbb186610d006432a1cef307a7ff792174f2 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00014485
0xd6610fc2e6f5f42534714c2e04baf514cc1980af48758f6fa267790cbf91261a51059272021-02-22 17:16:514 days 4 hrs ago0x81bf5c927fa1d118bf1923541d2656b567806939 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0002909
0xc9c3afd34925c858afd75c4990c19eb730638460ef073349d610080e5477276350993752021-02-22 11:44:134 days 9 hrs ago0xc5ef63f47f61eaef4713cee4f86f2b0ebc580e5c IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00044354
0x31f2a693c413e0d3f5459a026c87eae69115caddecc638b9c510789df33e608e50930062021-02-22 6:23:124 days 15 hrs ago0xfedd22a744c9e10b4391fe6a89d95348b72fb501 IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0004409
0x199a3df057dc871d4fa6730bb13ad5d1e3988ecdfa9d18c1dd5ad3223452b33e50915952021-02-22 5:12:334 days 16 hrs ago0x4d1783d9a025987c746399b8033abc47965be8df IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0002489
0x12249768d8aef8d79c0d9716aaf9773532078bfd511d7b91ddff695d02e8c58450915892021-02-22 5:12:154 days 16 hrs ago0x4d1783d9a025987c746399b8033abc47965be8df IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0002489
0x28d2a3d5d90e2bb6267793eac8620890f24f2bd00c1918a9adf23a43e41295a450905712021-02-22 4:20:544 days 17 hrs ago0x4d1783d9a025987c746399b8033abc47965be8df IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0004409
0xe8ecc2d0bacff014405ea761dff968408a8b5d4d8a05717ce9d085adb79633e350905512021-02-22 4:19:544 days 17 hrs ago0x4d1783d9a025987c746399b8033abc47965be8df IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00044354
0xff4d1a62ef8b99e36e13d91659f2e0983d6b8ce18f44460406ca301f607d8d2050903662021-02-22 4:10:394 days 17 hrs ago0xad3ce5e6bc9fefab88dc060fa18b2c2884cca11d IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.00044354
0xd5ceff5994e8b6b5b703c99d6bd8d18b0219ec8db661cee9e73d603987ef136050866132021-02-22 1:01:454 days 20 hrs ago0x9fa8e33ecf08f0bd7482e71a23612c77732b68cc IN  0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB0.0004745878
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x04b052e152f2cff2cc363eccf4f54c58428041411dc43415b658ad318cdd3e6752256532021-02-26 21:34:217 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Thugs: THUGS Token0 BNB
0x04b052e152f2cff2cc363eccf4f54c58428041411dc43415b658ad318cdd3e6752256532021-02-26 21:34:217 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Binance: WBNB Token0 BNB
0x04b052e152f2cff2cc363eccf4f54c58428041411dc43415b658ad318cdd3e6752256532021-02-26 21:34:217 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Binance: WBNB Token0 BNB
0x04b052e152f2cff2cc363eccf4f54c58428041411dc43415b658ad318cdd3e6752256532021-02-26 21:34:217 mins ago StreetSwap: Router 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x04b052e152f2cff2cc363eccf4f54c58428041411dc43415b658ad318cdd3e6752256532021-02-26 21:34:217 mins ago StreetSwap: Router 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0xc7cf2a61c643c9d0796efaca9f23579bf553bd0e97eae35dd3ae5f685319229952251882021-02-26 21:10:2631 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Thugs: THUGS Token0 BNB
0xc7cf2a61c643c9d0796efaca9f23579bf553bd0e97eae35dd3ae5f685319229952251882021-02-26 21:10:2631 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Binance: WBNB Token0 BNB
0xc7cf2a61c643c9d0796efaca9f23579bf553bd0e97eae35dd3ae5f685319229952251882021-02-26 21:10:2631 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Thugs: THUGS Token0 BNB
0xc7cf2a61c643c9d0796efaca9f23579bf553bd0e97eae35dd3ae5f685319229952251882021-02-26 21:10:2631 mins ago 0xe5f505e9760e6ec018ace4e4984c45bb3feade82 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0xc7cf2a61c643c9d0796efaca9f23579bf553bd0e97eae35dd3ae5f685319229952251882021-02-26 21:10:2631 mins ago 0xe5f505e9760e6ec018ace4e4984c45bb3feade82 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x1eeb4eae03080d680a58d19c35bc99d8e7451b8faf6daa541f3a22d300f5883852251882021-02-26 21:10:2631 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Thugs: THUGS Token0 BNB
0x1eeb4eae03080d680a58d19c35bc99d8e7451b8faf6daa541f3a22d300f5883852251882021-02-26 21:10:2631 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Binance: WBNB Token0 BNB
0x1eeb4eae03080d680a58d19c35bc99d8e7451b8faf6daa541f3a22d300f5883852251882021-02-26 21:10:2631 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Binance: WBNB Token0 BNB
0x1eeb4eae03080d680a58d19c35bc99d8e7451b8faf6daa541f3a22d300f5883852251882021-02-26 21:10:2631 mins ago StreetSwap: Router 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x1eeb4eae03080d680a58d19c35bc99d8e7451b8faf6daa541f3a22d300f5883852251882021-02-26 21:10:2631 mins ago StreetSwap: Router 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x72ee67dd37b63f42e4c481b1059d13f95ea49b102a866503e9026a2702a29f8352250762021-02-26 21:04:1338 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Thugs: THUGS Token0 BNB
0x72ee67dd37b63f42e4c481b1059d13f95ea49b102a866503e9026a2702a29f8352250762021-02-26 21:04:1338 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Binance: WBNB Token0 BNB
0x72ee67dd37b63f42e4c481b1059d13f95ea49b102a866503e9026a2702a29f8352250762021-02-26 21:04:1338 mins ago 0x9354cab0f1083135439b23aa6c364329e578f39a Binance: WBNB Token0 BNB
0x72ee67dd37b63f42e4c481b1059d13f95ea49b102a866503e9026a2702a29f8352250762021-02-26 21:04:1338 mins ago StreetSwap: Router 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x72ee67dd37b63f42e4c481b1059d13f95ea49b102a866503e9026a2702a29f8352250762021-02-26 21:04:1338 mins ago StreetSwap: Router 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x7f3d567408ac7343578b69371c8a77fa1b5ee9facbf20731c0f97c9cf17c25ad52250762021-02-26 21:04:1338 mins ago 0xe5f505e9760e6ec018ace4e4984c45bb3feade82 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0xe7905f774ba47d8a871f0df3335cedac7201ceac2d9ed72f854abddc58c9c18e52250762021-02-26 21:04:1338 mins ago 0xe5f505e9760e6ec018ace4e4984c45bb3feade82 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x0bc608344a2de3324ec732ccd91cb60c8488e2d5cb7e3cfedfe7c3cfa840c6c452250762021-02-26 21:04:1338 mins ago 0xe5f505e9760e6ec018ace4e4984c45bb3feade82 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0xf57c8b2689576370080146b99b53a3b3f0e7fb5966c26bcc1fb3380b8d9277f652250762021-02-26 21:04:1338 mins ago 0xe5f505e9760e6ec018ace4e4984c45bb3feade82 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
0x29849ce34ec5f39aafededb5cd353e2d678308cc38d488ace50c740cfccdf6fb52250762021-02-26 21:04:1338 mins ago 0xe5f505e9760e6ec018ace4e4984c45bb3feade82 0x9354cab0f1083135439b23aa6c364329e578f39a0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ThugswapPair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

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

// File: contracts/swap/libraries/SafeMath.sol

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity =0.6.12;

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

library SafeMathThugswap {
    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/swap/ThugswapBEP20.sol

pragma solidity =0.6.12;


contract ThugswapBEP20 {
    using SafeMathThugswap for uint;

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

// File: contracts/swap/libraries/Math.sol

pragma solidity =0.6.12;

// a library for performing various math operations

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

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

// File: contracts/swap/libraries/UQ112x112.sol

pragma solidity =0.6.12;

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

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

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

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

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

// File: contracts/swap/interfaces/IBEP20.sol

pragma solidity >=0.5.0;

interface IBEP20Thugswap {
    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/swap/interfaces/IThugswapFactory.sol

pragma solidity >=0.5.0;

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

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

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

// File: contracts/swap/interfaces/IThugswapCallee.sol

pragma solidity >=0.5.0;

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

// File: contracts/swap/ThugswapPair.sol

pragma solidity =0.6.12;







contract ThugswapPair is ThugswapBEP20 {
    using SafeMathThugswap  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, 'Thugswap: 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))), 'Thugswap: 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, 'Thugswap: 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), 'Thugswap: 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/4th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IThugswapFactory(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 = IBEP20Thugswap(token0).balanceOf(address(this));
        uint balance1 = IBEP20Thugswap(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, 'Thugswap: 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 = IBEP20Thugswap(_token0).balanceOf(address(this));
        uint balance1 = IBEP20Thugswap(_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, 'Thugswap: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IBEP20Thugswap(_token0).balanceOf(address(this));
        balance1 = IBEP20Thugswap(_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, 'Thugswap: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Thugswap: 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, 'Thugswap: 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) IThugswapCallee(to).ThugswapCall(msg.sender, amount0Out, amount1Out, data);
        balance0 = IBEP20Thugswap(_token0).balanceOf(address(this));
        balance1 = IBEP20Thugswap(_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, 'Thugswap: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'Thugswap: 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, IBEP20Thugswap(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IBEP20Thugswap(_token1).balanceOf(address(this)).sub(reserve1));
    }

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

Contract ABI

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

60806040526001600c5534801561001557600080fd5b5060408051808201825260128152710546875677377617020537472656574204c560741b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f6a63a9232232e5a6bf3bbcb1673e41f9e34693c1c85b93b2d6e56565d43b1353818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556121be806101106000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610ade565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b0c565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b36565b604080519115158252519081900360200190f35b610339610b4d565b604080516001600160a01b039092168252519081900360200190f35b61035d610b5c565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b62565b61035d610bf6565b6103b5610c1a565b6040805160ff9092168252519081900360200190f35b61035d610c1f565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c25565b61035d610ca8565b61035d610cae565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cb4565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610f8f565b61035d610fa1565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610fa7565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316610fb9565b6040805192835260208301919091528051918290030190f35b61024461134c565b61031d600480360360408110156104e857600080fd5b506001600160a01b03813516906020013561136b565b61035d611378565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b031661137e565b6103396114ef565b6103396114fe565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561150d565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661170e565b61023a61172b565b600c5460011461060d576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55841515806106205750600084115b61065b5760405162461bcd60e51b81526004018080602001828103825260248152602001806121176024913960400191505060405180910390fd5b600080610666610b0c565b5091509150816001600160701b03168710801561068b5750806001600160701b031686105b6106dc576040805162461bcd60e51b815260206004820181905260248201527f54687567737761703a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b60065460075460009182916001600160a01b0391821691908116908916821480159061071a5750806001600160a01b0316896001600160a01b031614155b610762576040805162461bcd60e51b815260206004820152601460248201527354687567737761703a20494e56414c49445f544f60601b604482015290519081900360640190fd5b8a1561077357610773828a8d61188c565b891561078457610784818a8c61188c565b861561083657886001600160a01b031663cce38761338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087c57600080fd5b505afa158015610890573d6000803e3d6000fd5b505050506040513d60208110156108a657600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f257600080fd5b505afa158015610906573d6000803e3d6000fd5b505050506040513d602081101561091c57600080fd5b5051925060009150506001600160701b0385168a9003831161093f57600061094e565b89856001600160701b03160383035b9050600089856001600160701b031603831161096b57600061097a565b89856001600160701b03160383035b9050600082118061098b5750600081115b6109c65760405162461bcd60e51b81526004018080602001828103825260238152602001806120f46023913960400191505060405180910390fd5b60006109e86109d6846003611a26565b6109e2876103e8611a26565b90611a89565b905060006109fa6109d6846003611a26565b9050610a1f620f4240610a196001600160701b038b8116908b16611a26565b90611a26565b610a298383611a26565b1015610a6a576040805162461bcd60e51b815260206004820152600b60248201526a54687567737761703a204b60a81b604482015290519081900360640190fd5b5050610a7884848888611ad9565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b604051806040016040528060128152602001710546875677377617020537472656574204c560741b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b43338484611c97565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610be1576001600160a01b0384166000908152600260209081526040808320338452909152902054610bbc9083611a89565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bec848484611cf9565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c7a576040805162461bcd60e51b81526020600482015260136024820152722a343ab3b9bbb0b81d102327a92124a22222a760691b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d00576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580610d10610b0c565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d6457600080fd5b505afa158015610d78573d6000803e3d6000fd5b505050506040513d6020811015610d8e57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d6020811015610e0b57600080fd5b505190506000610e24836001600160701b038716611a89565b90506000610e3b836001600160701b038716611a89565b90506000610e498787611da7565b60005490915080610e8057610e6c6103e86109e2610e678787611a26565b611ee7565b9850610e7b60006103e8611f39565b610ec3565b610ec06001600160701b038916610e978684611a26565b81610e9e57fe5b046001600160701b038916610eb38685611a26565b81610eba57fe5b04611fc3565b98505b60008911610f025760405162461bcd60e51b81526004018080602001828103825260278152602001806121626027913960400191505060405180910390fd5b610f0c8a8a611f39565b610f1886868a8a611ad9565b8115610f4257600854610f3e906001600160701b0380821691600160701b900416611a26565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611006576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580611016610b0c565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561107257600080fd5b505afa158015611086573d6000803e3d6000fd5b505050506040513d602081101561109c57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110ea57600080fd5b505afa1580156110fe573d6000803e3d6000fd5b505050506040513d602081101561111457600080fd5b5051306000908152600160205260408120549192506111338888611da7565b600054909150806111448487611a26565b8161114b57fe5b049a50806111598486611a26565b8161116057fe5b04995060008b118015611173575060008a115b6111ae5760405162461bcd60e51b815260040180806020018281038252602781526020018061213b6027913960400191505060405180910390fd5b6111b83084611fdb565b6111c3878d8d61188c565b6111ce868d8c61188c565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d602081101561123e57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561128a57600080fd5b505afa15801561129e573d6000803e3d6000fd5b505050506040513d60208110156112b457600080fd5b505193506112c485858b8b611ad9565b81156112ee576008546112ea906001600160701b0380821691600160701b900416611a26565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060038152602001620544c560ec1b81525081565b6000610b43338484611cf9565b6103e881565b600c546001146113c8576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611471928592879261146c926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561143a57600080fd5b505afa15801561144e573d6000803e3d6000fd5b505050506040513d602081101561146457600080fd5b505190611a89565b61188c565b6114e5818461146c6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561143a57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611556576040805162461bcd60e51b8152602060048201526011602482015270151a1d59dcddd85c0e8811561412549151607a1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611671573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116a75750886001600160a01b0316816001600160a01b0316145b6116f8576040805162461bcd60e51b815260206004820152601b60248201527f54687567737761703a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b611703898989611c97565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611775576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611885926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117c657600080fd5b505afa1580156117da573d6000803e3d6000fd5b505050506040513d60208110156117f057600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561183d57600080fd5b505afa158015611851573d6000803e3d6000fd5b505050506040513d602081101561186757600080fd5b50516008546001600160701b0380821691600160701b900416611ad9565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119395780518252601f19909201916020918201910161191a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461199b576040519150601f19603f3d011682016040523d82523d6000602084013e6119a0565b606091505b50915091508180156119ce5750805115806119ce57508080602001905160208110156119cb57600080fd5b50515b611a1f576040805162461bcd60e51b815260206004820152601960248201527f54687567737761703a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b5050505050565b6000811580611a4157505080820282828281611a3e57fe5b04145b610b47576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b47576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611af757506001600160701b038311155b611b3d576040805162461bcd60e51b815260206004820152601260248201527154687567737761703a204f564552464c4f5760701b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b6d57506001600160701b03841615155b8015611b8157506001600160701b03831615155b15611bec578063ffffffff16611ba985611b9a8661206d565b6001600160e01b03169061207f565b600980546001600160e01b03929092169290920201905563ffffffff8116611bd484611b9a8761206d565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d1c9082611a89565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611d4b90826120a4565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611df857600080fd5b505afa158015611e0c573d6000803e3d6000fd5b505050506040513d6020811015611e2257600080fd5b5051600b546001600160a01b038216158015945091925090611ed3578015611ece576000611e5f610e676001600160701b03888116908816611a26565b90506000611e6c83611ee7565b905080821115611ecb576000611e8e611e858484611a89565b60005490611a26565b90506000611ea783611ea1866003611a26565b906120a4565b90506000818381611eb457fe5b0490508015611ec757611ec78782611f39565b5050505b50505b611edf565b8015611edf576000600b555b505092915050565b60006003821115611f2a575080600160028204015b81811015611f2457809150600281828581611f1357fe5b040181611f1c57fe5b049050611efc565b50611f34565b8115611f34575060015b919050565b600054611f4690826120a4565b60009081556001600160a01b038316815260016020526040902054611f6b90826120a4565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310611fd25781611fd4565b825b9392505050565b6001600160a01b038216600090815260016020526040902054611ffe9082611a89565b6001600160a01b038316600090815260016020526040812091909155546120259082611a89565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161209c57fe5b049392505050565b80820182811015610b47576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe54687567737761703a20494e53554646494349454e545f494e5055545f414d4f554e5454687567737761703a20494e53554646494349454e545f4f55545055545f414d4f554e5454687567737761703a20494e53554646494349454e545f4c49515549444954595f4255524e454454687567737761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220957517fdaeb94c5dd2a5d1f649c9ad22f73d96868bb4c198004c1923e14d545f64736f6c634300060c0033

Deployed ByteCode Sourcemap

7444:9759:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14680:1898;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14680:1898:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14680:1898:0;;-1:-1:-1;14680:1898:0;-1:-1:-1;14680:1898:0;:::i;:::-;;833:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8454:231;;;:::i;:::-;;;;-1:-1:-1;;;;;8454:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2887:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2887:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7744:21;;;:::i;:::-;;;;-1:-1:-1;;;;;7744:21:0;;;;;;;;;;;;;;976:24;;;:::i;:::-;;;;;;;;;;;;;;;;3189:301;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3189:301:0;;;;;;;;;;;;;;;;;:::i;1268:108::-;;;:::i;934:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1125:31;;;:::i;9513:209::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9513:209:0;;;;;;;;;;:::i;8095:32::-;;;:::i;8134:::-;;;:::i;11704:1255::-;;;;;;;;;;;;;;;;-1:-1:-1;11704:1255:0;-1:-1:-1;;;;;11704:1255:0;;:::i;1007:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1007:41:0;-1:-1:-1;;;;;1007:41:0;;:::i;8173:17::-;;;:::i;1383:38::-;;;;;;;;;;;;;;;;-1:-1:-1;1383:38:0;-1:-1:-1;;;;;1383:38:0;;:::i;13071:1497::-;;;;;;;;;;;;;;;;-1:-1:-1;13071:1497:0;-1:-1:-1;;;;;13071:1497:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;890:37;;;:::i;3042:139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3042:139:0;;;;;;;;:::i;7565:46::-;;;:::i;16627:350::-;;;;;;;;;;;;;;;;-1:-1:-1;16627:350:0;-1:-1:-1;;;;;16627:350:0;;:::i;7715:22::-;;;:::i;7772:21::-;;;:::i;3498:672::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3498:672:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1055:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1055:61:0;;;;;;;;;;:::i;17026:174::-;;;:::i;14680:1898::-;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;14794:14;;;;:32:::1;;;14825:1;14812:10;:14;14794:32;14786:81;;;;-1:-1:-1::0;;;14786:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14879:17;14898::::0;14920:13:::1;:11;:13::i;:::-;14878:55;;;;;14980:9;-1:-1:-1::0;;;;;14967:22:0::1;:10;:22;:48;;;;;15006:9;-1:-1:-1::0;;;;;14993:22:0::1;:10;:22;14967:48;14959:93;;;::::0;;-1:-1:-1;;;14959:93:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15197:6;::::0;15232::::1;::::0;15065:13:::1;::::0;;;-1:-1:-1;;;;;15197:6:0;;::::1;::::0;15232;;::::1;::::0;15257:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;15280:7;-1:-1:-1::0;;;;;15274:13:0::1;:2;-1:-1:-1::0;;;;;15274:13:0::1;;;15257:30;15249:63;;;::::0;;-1:-1:-1;;;15249:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15249:63:0;;;;;;;;;;;;;::::1;;15327:14:::0;;15323:58:::1;;15343:38;15357:7;15366:2;15370:10;15343:13;:38::i;:::-;15430:14:::0;;15426:58:::1;;15446:38;15460:7;15469:2;15473:10;15446:13;:38::i;:::-;15533:15:::0;;15529:95:::1;;15566:2;-1:-1:-1::0;;;;;15550:32:0::1;;15583:10;15595;15607;15619:4;;15550:74;;;;;;;;;;;;;-1:-1:-1::0;;;;;15550:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15529:95;15646:48;::::0;;-1:-1:-1;;;15646:48:0;;15688:4:::1;15646:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;15646:33:0;::::1;::::0;::::1;::::0;:48;;;;;::::1;::::0;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15646:48:0;15716::::1;::::0;;-1:-1:-1;;;15716:48:0;;15758:4:::1;15716:48;::::0;::::1;::::0;;;15646;;-1:-1:-1;;;;;;15716:33:0;::::1;::::0;::::1;::::0;:48;;;;;15646::::1;::::0;15716;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15716:48:0;;-1:-1:-1;15786:14:0::1;::::0;-1:-1:-1;;;;;;;15814:22:0;::::1;::::0;;::::1;15803:33:::0;::::1;:75;;15877:1;15803:75;;;15863:10;15851:9;-1:-1:-1::0;;;;;15851:22:0::1;;15839:8;:35;15803:75;15786:92;;15889:14;15929:10;15917:9;-1:-1:-1::0;;;;;15917:22:0::1;;15906:8;:33;:75;;15980:1;15906:75;;;15966:10;15954:9;-1:-1:-1::0;;;;;15954:22:0::1;;15942:8;:35;15906:75;15889:92;;16012:1;16000:9;:13;:30;;;;16029:1;16017:9;:13;16000:30;15992:78;;;;-1:-1:-1::0;;;15992:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16156:21;16180:40;16203:16;:9:::0;16217:1:::1;16203:13;:16::i;:::-;16180:18;:8:::0;16193:4:::1;16180:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;16156:64:::0;-1:-1:-1;16231:21:0::1;16255:40;16278:16;:9:::0;16292:1:::1;16278:13;:16::i;16255:40::-;16231:64:::0;-1:-1:-1;16356:43:0::1;16391:7;16356:30;-1:-1:-1::0;;;;;16356:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;16314:38;:16:::0;16335;16314:20:::1;:38::i;:::-;:85;;16306:109;;;::::0;;-1:-1:-1;;;16306:109:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16306:109:0;;;;;;;;;;;;;::::1;;8414:1;;16439:49;16447:8;16457;16467:9;16478;16439:7;:49::i;:::-;16504:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16504:66:0;::::1;::::0;16509:10:::1;::::0;16504:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8437:1:0;8426:8;:12;-1:-1:-1;;;;;;;;;14680:1898:0:o;833:50::-;;;;;;;;;;;;;;-1:-1:-1;;;833:50:0;;;;:::o;8454:231::-;8587:8;;-1:-1:-1;;;;;8587:8:0;;;;-1:-1:-1;;;8618:8:0;;;;;;-1:-1:-1;;;8659:18:0;;;;;8454:231::o;2887:147::-;2951:4;2968:36;2977:10;2989:7;2998:5;2968:8;:36::i;:::-;-1:-1:-1;3022:4:0;2887:147;;;;;:::o;7744:21::-;;;-1:-1:-1;;;;;7744:21:0;;:::o;976:24::-;;;;:::o;3189:301::-;-1:-1:-1;;;;;3288:15:0;;3267:4;3288:15;;;:9;:15;;;;;;;;3304:10;3288:27;;;;;;;;-1:-1:-1;;3288:39:0;3284:140;;-1:-1:-1;;;;;3374:15:0;;;;;;:9;:15;;;;;;;;3390:10;3374:27;;;;;;;;:38;;3406:5;3374:31;:38::i;:::-;-1:-1:-1;;;;;3344:15:0;;;;;;:9;:15;;;;;;;;3360:10;3344:27;;;;;;;:68;3284:140;3434:26;3444:4;3450:2;3454:5;3434:9;:26::i;:::-;-1:-1:-1;3478:4:0;3189:301;;;;;:::o;1268:108::-;1310:66;1268:108;:::o;934:35::-;967:2;934:35;:::o;1125:31::-;;;;:::o;9513:209::-;9609:7;;-1:-1:-1;;;;;9609:7:0;9595:10;:21;9587:53;;;;;-1:-1:-1;;;9587:53:0;;;;;;;;;;;;-1:-1:-1;;;9587:53:0;;;;;;;;;;;;;;;9671:6;:16;;-1:-1:-1;;;;;9671:16:0;;;-1:-1:-1;;;;;;9671:16:0;;;;;;;9698:6;:16;;;;;;;;;;;9513:209::o;8095:32::-;;;;:::o;8134:::-;;;;:::o;11704:1255::-;11753:14;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;;;8402:1;11822:13:::1;:11;:13::i;:::-;-1:-1:-1::0;11892:6:0::1;::::0;11877:47:::1;::::0;;-1:-1:-1;;;11877:47:0;;11918:4:::1;11877:47;::::0;::::1;::::0;;;11780:55;;-1:-1:-1;11780:55:0;;-1:-1:-1;11861:13:0::1;::::0;-1:-1:-1;;;;;11892:6:0;;::::1;::::0;11877:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;11892:6;11877:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11877:47:0;11966:6:::1;::::0;11951:47:::1;::::0;;-1:-1:-1;;;11951:47:0;;11992:4:::1;11951:47;::::0;::::1;::::0;;;11877;;-1:-1:-1;11935:13:0::1;::::0;-1:-1:-1;;;;;11966:6:0;;::::1;::::0;11951:32:::1;::::0;:47;;;;;11877::::1;::::0;11951;;;;;;;;11966:6;11951:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11951:47:0;;-1:-1:-1;12009:12:0::1;12024:23;:8:::0;-1:-1:-1;;;;;12024:23:0;::::1;:12;:23::i;:::-;12009:38:::0;-1:-1:-1;12058:12:0::1;12073:23;:8:::0;-1:-1:-1;;;;;12073:23:0;::::1;:12;:23::i;:::-;12058:38;;12109:10;12122:30;12131:9;12142;12122:8;:30::i;:::-;12163:17;12183:11:::0;12109:43;;-1:-1:-1;12287:17:0;12283:352:::1;;12333:54;7606:5;12333:31;12343:20;:7:::0;12355;12343:11:::1;:20::i;:::-;12333:9;:31::i;:54::-;12321:66;;12401:36;12415:1;7606:5;12401;:36::i;:::-;12283:352;;;12537:86;-1:-1:-1::0;;;;;12546:37:0;::::1;:25;:7:::0;12558:12;12546:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;12585:37:0;::::1;:25;:7:::0;12597:12;12585:11:::1;:25::i;:::-;:37;;;;;;12537:8;:86::i;:::-;12525:98;;12283:352;12665:1;12653:9;:13;12645:65;;;;-1:-1:-1::0;;;12645:65:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12721:20;12727:2;12731:9;12721:5;:20::i;:::-;12754:49;12762:8;12772;12782:9;12793;12754:7;:49::i;:::-;12818:5;12814:47;;;12852:8;::::0;12833:28:::1;::::0;-1:-1:-1;;;;;12838:8:0;;::::1;::::0;-1:-1:-1;;;12852:8:0;::::1;;12833:18;:28::i;:::-;12825:5;:36:::0;12814:47:::1;12917:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;12922:10:::1;::::0;12917:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8437:1:0;8426:8;:12;-1:-1:-1;11704:1255:0;;;-1:-1:-1;;;;;;11704:1255:0:o;1007:41::-;;;;;;;;;;;;;:::o;8173:17::-;;;;:::o;1383:38::-;;;;;;;;;;;;;:::o;13071:1497::-;13120:12;13134;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;;;8402:1;13201:13:::1;:11;:13::i;:::-;-1:-1:-1::0;13258:6:0::1;::::0;13339::::1;::::0;13418:48:::1;::::0;;-1:-1:-1;;;13418:48:0;;13460:4:::1;13418:48;::::0;::::1;::::0;;;13159:55;;-1:-1:-1;13159:55:0;;-1:-1:-1;;;;;;13258:6:0;;::::1;::::0;13339;::::1;::::0;13240:15:::1;::::0;13258:6;;13418:33:::1;::::0;:48;;;;;::::1;::::0;;;;;;;;13258:6;13418:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13418:48:0;13493::::1;::::0;;-1:-1:-1;;;13493:48:0;;13535:4:::1;13493:48;::::0;::::1;::::0;;;13418;;-1:-1:-1;13477:13:0::1;::::0;-1:-1:-1;;;;;13493:33:0;::::1;::::0;::::1;::::0;:48;;;;;13418::::1;::::0;13493;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13493:48:0;13587:4:::1;13552:14;13569:24:::0;;;:9:::1;13493:48;13569:24:::0;;;;;13493:48;;-1:-1:-1;13619:30:0::1;13628:9:::0;13639;13619:8:::1;:30::i;:::-;13660:17;13680:11:::0;13606:43;;-1:-1:-1;13680:11:0;13790:23:::1;:9:::0;13804:8;13790:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;13923:12:0;13897:23:::1;:9:::0;13911:8;13897:13:::1;:23::i;:::-;:38;;;;;;13887:48;;14012:1;14002:7;:11;:26;;;;;14027:1;14017:7;:11;14002:26;13994:78;;;;-1:-1:-1::0;;;13994:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14083:31;14097:4;14104:9;14083:5;:31::i;:::-;14125:35;14139:7;14148:2;14152:7;14125:13;:35::i;:::-;14171;14185:7;14194:2;14198:7;14171:13;:35::i;:::-;14228:48;::::0;;-1:-1:-1;;;14228:48:0;;14270:4:::1;14228:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;14228:33:0;::::1;::::0;::::1;::::0;:48;;;;;::::1;::::0;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14228:48:0;14298::::1;::::0;;-1:-1:-1;;;14298:48:0;;14340:4:::1;14298:48;::::0;::::1;::::0;;;14228;;-1:-1:-1;;;;;;14298:33:0;::::1;::::0;::::1;::::0;:48;;;;;14228::::1;::::0;14298;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14298:48:0;;-1:-1:-1;14359:49:0::1;14367:8:::0;14298:48;14387:9;14398;14359:7:::1;:49::i;:::-;14423:5;14419:47;;;14457:8;::::0;14438:28:::1;::::0;-1:-1:-1;;;;;14443:8:0;;::::1;::::0;-1:-1:-1;;;14457:8:0;::::1;;14438:18;:28::i;:::-;14430:5;:36:::0;14419:47:::1;14522:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;14522:38:0;::::1;::::0;14527:10:::1;::::0;14522:38:::1;::::0;;;;;;;;;::::1;8414:1;;;;;;;;;8437::::0;8426:8;:12;;;;13071:1497;;;:::o;890:37::-;;;;;;;;;;;;;;-1:-1:-1;;;890:37:0;;;;:::o;3042:139::-;3102:4;3119:32;3129:10;3141:2;3145:5;3119:9;:32::i;7565:46::-;7606:5;7565:46;:::o;16627:350::-;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;16696:6:::1;::::0;16746::::1;::::0;16858:8:::1;::::0;16805:48:::1;::::0;;-1:-1:-1;;;16805:48:0;;16847:4:::1;16805:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;16696:6:0;;::::1;::::0;16746;;::::1;::::0;16778:90:::1;::::0;16696:6;;16801:2;;16805:62:::1;::::0;-1:-1:-1;;;;;16858:8:0::1;::::0;16696:6;;16805:33:::1;::::0;:48;;;;;::::1;::::0;;;;;;;;;16696:6;16805:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16805:48:0;;:52:::1;:62::i;:::-;16778:13;:90::i;:::-;16879;16893:7;16902:2;16906:62;16959:8;;;;;;;;;-1:-1:-1::0;;;;;16959:8:0::1;-1:-1:-1::0;;;;;16906:62:0::1;16921:7;-1:-1:-1::0;;;;;16906:33:0::1;;16948:4;16906:48;;;;;;;;;;;;;-1:-1:-1::0;;;;;16906:48:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;16879:90;-1:-1:-1::0;;8437:1:0;8426:8;:12;-1:-1:-1;16627:350:0:o;7715:22::-;;;-1:-1:-1;;;;;7715:22:0;;:::o;7772:21::-;;;-1:-1:-1;;;;;7772:21:0;;:::o;3498:672::-;3644:15;3632:8;:27;;3624:57;;;;;-1:-1:-1;;;3624:57:0;;;;;;;;;;;;-1:-1:-1;;;3624:57:0;;;;;;;;;;;;;;;3797:16;;-1:-1:-1;;;;;3893:13:0;;;3692:14;3893:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3842:77;;1310:66;3842:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3832:88;;;;;;-1:-1:-1;;;3733:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3709:237;;;;;;;;;3984:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3692:14;;3893:15;3984:26;;;;;-1:-1:-1;;3984:26:0;;;;;;;;;;3893:15;3984:26;;;;;;;;;;;;;;;-1:-1:-1;;3984:26:0;;-1:-1:-1;;3984:26:0;;;-1:-1:-1;;;;;;;4029:30:0;;;;;;:59;;;4083:5;-1:-1:-1;;;;;4063:25:0;:16;-1:-1:-1;;;;;4063:25:0;;4029:59;4021:99;;;;;-1:-1:-1;;;4021:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4131:31;4140:5;4147:7;4156:5;4131:8;:31::i;:::-;3498:672;;;;;;;;;:::o;1055:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17026:174::-;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;17090:6:::1;::::0;17075:47:::1;::::0;;-1:-1:-1;;;17075:47:0;;17116:4:::1;17075:47;::::0;::::1;::::0;;;17067:125:::1;::::0;-1:-1:-1;;;;;17090:6:0::1;::::0;17075:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;17090:6;17075:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17075:47:0;17139:6:::1;::::0;17124:47:::1;::::0;;-1:-1:-1;;;17124:47:0;;17165:4:::1;17124:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;17139:6:0;;::::1;::::0;17124:32:::1;::::0;:47;;;;;17075::::1;::::0;17124;;;;;;;;17139:6;17124:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17124:47:0;17173:8:::1;::::0;-1:-1:-1;;;;;17173:8:0;;::::1;::::0;-1:-1:-1;;;17183:8:0;::::1;;17067:7;:125::i;:::-;8437:1:::0;8426:8;:12;17026:174::o;8693:286::-;7670:34;;;;;;;;;;;;;;;;;8821:43;;-1:-1:-1;;;;;8821:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8821:43:0;-1:-1:-1;;;8821:43:0;;;8810:55;;;;8775:12;;8789:17;;8810:10;;;8821:43;8810:55;;;8821:43;8810:55;;8821:43;8810:55;;;;;;;;;;-1:-1:-1;;8810:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8774:91;;;;8884:7;:57;;;;-1:-1:-1;8896:11:0;;:16;;:44;;;8927:4;8916:24;;;;;;;;;;;;;;;-1:-1:-1;8916:24:0;8896:44;8876:95;;;;;-1:-1:-1;;;8876:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8693:286;;;;;:::o;539:142::-;591:6;618;;;:30;;-1:-1:-1;;633:5:0;;;647:1;642;633:5;642:1;628:15;;;;;:20;618:30;610:63;;;;;-1:-1:-1;;;610:63:0;;;;;;;;;;;;-1:-1:-1;;;610:63:0;;;;;;;;;;;;;;402:129;486:5;;;481:16;;;;473:50;;;;;-1:-1:-1;;;473:50:0;;;;;;;;;;;;-1:-1:-1;;;473:50:0;;;;;;;;;;;;;;9807:859;-1:-1:-1;;;;;9919:23:0;;;;;:50;;-1:-1:-1;;;;;;9946:23:0;;;9919:50;9911:81;;;;;-1:-1:-1;;;9911:81:0;;;;;;;;;;;;-1:-1:-1;;;9911:81:0;;;;;;;;;;;;;;;10107:18;;10034:23;:15;:23;;;-1:-1:-1;;;10107:18:0;;;;10090:35;;;10163:15;;;;;;:33;;-1:-1:-1;;;;;;10182:14:0;;;;10163:33;:51;;;;-1:-1:-1;;;;;;10200:14:0;;;;10163:51;10159:336;;;10369:11;10316:64;;10321:44;10355:9;10321:27;10338:9;10321:16;:27::i;:::-;-1:-1:-1;;;;;10321:33:0;;;:44::i;:::-;10292:20;:88;;-1:-1:-1;;;;;10316:50:0;;;;:64;;;;10292:88;;;10419:64;;;10424:44;10458:9;10424:27;10441:9;10424:16;:27::i;:44::-;10395:20;:88;;-1:-1:-1;;;;;10419:50:0;;;;:64;;;;10395:88;;;10159:336;10505:8;:28;;-1:-1:-1;;10505:28:0;-1:-1:-1;;;;;10505:28:0;;;;;;;-1:-1:-1;;;;10544:28:0;-1:-1:-1;;;10544:28:0;;;;;;;;;-1:-1:-1;;;;;10583:35:0;-1:-1:-1;;;10583:35:0;;;;;;;;;10634:24;;;10639:8;;;10634:24;;10649:8;;;;;;;10634:24;;;;;;;;;;;;;;;;;9807:859;;;;;;:::o;2482:169::-;-1:-1:-1;;;;;2563:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2612:31;;;;;;;;;;;;;;;;;2482:169;;;:::o;2659:220::-;-1:-1:-1;;;;;2753:15:0;;;;;;:9;:15;;;;;;:26;;2773:5;2753:19;:26::i;:::-;-1:-1:-1;;;;;2735:15:0;;;;;;;:9;:15;;;;;;:44;;;;2806:13;;;;;;;:24;;2824:5;2806:17;:24::i;:::-;-1:-1:-1;;;;;2790:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2846:25;;;;;;;2790:13;;2846:25;;;;;;;;;;;;;2659:220;;;:::o;10756:836::-;10829:10;10852:13;10885:7;;;;;;;;;-1:-1:-1;;;;;10885:7:0;-1:-1:-1;;;;;10868:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10868:33:0;10964:5;;-1:-1:-1;;;;;10920:19:0;;;;;;-1:-1:-1;10868:33:0;;-1:-1:-1;10964:5:0;10995:590;;11025:11;;11021:494;;11057:10;11070:41;11080:30;-1:-1:-1;;;;;11080:15:0;;;;:30;;:19;:30::i;11070:41::-;11057:54;;11130:14;11147:17;11157:6;11147:9;:17::i;:::-;11130:34;;11195:9;11187:5;:17;11183:317;;;11229:14;11246:37;11262:20;:5;11272:9;11262;:20::i;:::-;11246:11;;;:15;:37::i;:::-;11229:54;-1:-1:-1;11306:16:0;11325:27;11342:9;11325:12;:5;11335:1;11325:9;:12::i;:::-;:16;;:27::i;:::-;11306:46;;11375:14;11404:11;11392:9;:23;;;;;;;-1:-1:-1;11442:13:0;;11438:42;;11457:23;11463:5;11470:9;11457:5;:23::i;:::-;11183:317;;;;11021:494;;;10995:590;;;11536:11;;11532:53;;11572:1;11564:5;:9;11532:53;10756:836;;;;;;:::o;4540:303::-;4585:6;4612:1;4608;:5;4604:232;;;-1:-1:-1;4634:1:0;4667;4663;4659:5;;:9;4683:92;4694:1;4690;:5;4683:92;;;4720:1;4716:5;;4758:1;4753;4749;4745;:5;;;;;;:9;4744:15;;;;;;4740:19;;4683:92;;;4604:232;;;;4796:6;;4792:44;;-1:-1:-1;4823:1:0;4792:44;4540:303;;;:::o;2056:201::-;2129:11;;:22;;2145:5;2129:15;:22::i;:::-;2115:11;:36;;;-1:-1:-1;;;;;2178:13:0;;;;:9;:13;;;;;;:24;;2196:5;2178:17;:24::i;:::-;-1:-1:-1;;;;;2162:13:0;;;;;;:9;:13;;;;;;;;:40;;;;2218:31;;;;;;;2162:13;;;;2218:31;;;;;;;;;;2056:201;;:::o;4326:96::-;4378:6;4405:1;4401;:5;:13;;4413:1;4401:13;;;4409:1;4401:13;4397:17;4326:96;-1:-1:-1;;;4326:96:0:o;2265:209::-;-1:-1:-1;;;;;2344:15:0;;;;;;:9;:15;;;;;;:26;;2364:5;2344:19;:26::i;:::-;-1:-1:-1;;;;;2326:15:0;;;;;;:9;:15;;;;;:44;;;;2395:11;:22;;2411:5;2395:15;:22::i;:::-;2381:11;:36;;;2433:33;;;;;;;;-1:-1:-1;;;;;2433:33:0;;;;;;;;;;;;;2265:209;;:::o;5195:120::-;-1:-1:-1;;;;;5271:10:0;-1:-1:-1;;;5271:17:0;;5195:120::o;5386:108::-;5446:9;-1:-1:-1;;;;;5476:10:0;;-1:-1:-1;;;;;5472:14:0;;5476:10;5472:14;;;;;;5386:108;-1:-1:-1;;;5386:108:0:o;266:128::-;350:5;;;345:16;;;;337:49;;;;;-1:-1:-1;;;337:49:0;;;;;;;;;;;;-1:-1:-1;;;337:49:0;;;;;;;;;;;;;

Swarm Source

ipfs://957517fdaeb94c5dd2a5d1f649c9ad22f73d96868bb4c198004c1923e14d545f
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.