Contract 0xa862527505c072acd513af86fa7bf864b821a301

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfa56f4ecbab055e191d67f9533d4dff9cfc7327c332da6f738006c0db96f2e71Approve339836272022-03-21 3:21:06187 days 16 hrs ago0x17b3e926265d83bc75902b129e8a882a9319bbb5 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.003706111
0x4600d77a8c360f00f5f2e978a5974cbc78759b64d82384fcecc1007ecf536a7aApprove288593722022-01-23 22:50:10243 days 20 hrs ago0xfd25110d6dd08fd0f5f389f75a31945e827e7747 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.007396623
0x0962317a41caab8ed7bd4ada2880b0b1149bc03bfcfdcab2a305f54b2ac85f3dApprove283912242022-01-19 0:38:15248 days 18 hrs ago0x02da6e2cbcc167182f7e3fcc9ec05d916de78f3e IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.021808116652
0xdb7f6626f13349d6d3f8eb1f07eccdd8ed779cd4c727c32f8ab60c2321cb2c76Approve283819792022-01-18 22:28:27248 days 20 hrs ago0x6d26249e21d2897914635582601e943f85b41858 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.024970663302
0xac52d97cbc17b00fe20e4f06493ceed5381d088cd7f5b81d1dca92da37a6944eApprove283524182022-01-18 14:58:00249 days 4 hrs ago0xff8af00483ef6f31e5a04f48e204b1eb5f3ce45e IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.017513837774
0xd0823075721cd182680481769592ef0efd077e410fbc6e5ca9bd4fe406f84e60Approve282199682022-01-17 8:04:21250 days 11 hrs ago0x17b3e926265d83bc75902b129e8a882a9319bbb5 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.018192520505
0x8749b3bca3c585f9a31c8e52f93615c6ba09610c8738c9a23b65ed1cfca69b10Approve281642572022-01-16 18:57:52251 days 24 mins ago0xf4993e44c40eb11b683d36d9360cd953f941b1bc IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.014597837269
0xf318417f019ada527dc0c3c7592b97a4f46706a1da5be2d940df41ca3426625fApprove281375802022-01-16 12:44:09251 days 6 hrs ago0xe9e37286ac7b8a645f59f5a312ddaa734a300fcf IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.022705557747
0x411f2f48367656502b51a56db844aa9a8f8c05247c994fa4e5e1bd22fd40a7a2Approve281308302022-01-16 11:08:05251 days 8 hrs ago0x840745933bb29d67ebd6c756692b84a70efdfd76 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.019683453603
0x3ca23fbd867323ac5e28955c9e5ed7924660c8fd1e32b5c7d60ae315d51a1bb3Approve281241452022-01-16 9:27:48251 days 9 hrs ago0xa1b947eca94cf9c0d1a32aeafa21a538488ce3ec IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.017327205013
0x8b32d5049c2c92c2a69d8ba6181a57535685076e210139d584881f1dcd8d8823Approve281214732022-01-16 8:50:54251 days 10 hrs ago0x10dfed8f2e52a569939a9e7f015b92e6c9d0bea4 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.017488449545
0x5a0c2443f33493a28b8691a9739f81d292870d073c63ac548a76f08f66212f66Approve280671912022-01-15 19:59:15251 days 23 hrs ago0x34e63550284a4918b9a2e4999b5532d4458b78cd IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.006451039212
0xeea0d349198f29b5ca043a016ede9f049a392095d39320e5f29b1a9c72796631Approve280671722022-01-15 19:59:01251 days 23 hrs ago0x34e63550284a4918b9a2e4999b5532d4458b78cd IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.010881996876
0x34da1bbd9ac8a2f4d98df6fe8c4abfb545f5f557f0c6154f01a5b8c82ccef5a8Approve280618812022-01-15 18:39:24252 days 42 mins ago0x2f01ce939528296d84f932370b1227362f1efac8 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.013071323393
0x6c8bf37102260e5190a133ae2014b4bbf828619d6de4c5a14302c90b404d71baApprove280582902022-01-15 17:49:11252 days 1 hr ago0xb5db726d26fd26a3b0423fade22658378bbe7c47 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.012227204677
0x8f67d0e2a234a0eaf3a3ec87261f23ac598738abbcea96179eb70907be3445a0Approve280557832022-01-15 17:14:02252 days 2 hrs ago0x34e63550284a4918b9a2e4999b5532d4458b78cd IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.011833061727
0x5fd0f21ef821e16798efb06b44af279fafe515b7f221c898bab18f67739ad1c3Approve280333932022-01-15 11:57:45252 days 7 hrs ago0x77640a11e0cc9a1f3283c1a09d341d47819d2a1a IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.00755426683
0xbc0d1a94fde046ed3b0b50e3d05685323e2a57d15e5ef5d3e55825845f4a86a4Approve280323142022-01-15 11:43:14252 days 7 hrs ago0x7f0ad9148b2303edb77a6944c968f823fe31f096 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.007387061121
0x19b8bcba32ca83517a9c4d5ba68e833fb910ded2bfa41122f7e51e78569541f5Approve280313982022-01-15 11:31:32252 days 7 hrs ago0x123902d39d2b5006de993f8d2d829148c40bd2f3 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.008516544602
0x1c76058306263826084f0871ebc83ca0ed8b4b39d25b0c04b15874e18ffc2b6fApprove280308312022-01-15 11:23:49252 days 7 hrs ago0x02da6e2cbcc167182f7e3fcc9ec05d916de78f3e IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.002989767593
0x5104599d42b4ab4452c9e67ab22d1542bd9ab3b21356d7a31a16800d97bce44cApprove280265612022-01-15 10:24:08252 days 8 hrs ago0xec08eff77496601be56c11028a516366dbf03f13 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.010059336
0xdeb1d75230b886194a699e2e0f148b6f8e0eb965e8b0136077ce9e54b6850c20Approve280146622022-01-15 7:41:46252 days 11 hrs ago0x02da6e2cbcc167182f7e3fcc9ec05d916de78f3e IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.006478819827
0x3b271b955cb13df12152bc41ca063b092fcea2634036877a93ee8df494a6a552Approve280140162022-01-15 7:33:06252 days 11 hrs ago0x1f8377ee512ff3d17af9db29425cb36abecd02b8 IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.007701247115
0xab55c4715e31c78e8ec32ad5e4ee766ffab217ae75f581b351da2c63742f4515Approve279986682022-01-15 3:47:10252 days 15 hrs ago0x02da6e2cbcc167182f7e3fcc9ec05d916de78f3e IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.002747988685
0x09cb0283bf99e455b8270592e67197d2159008768bc23ac4a4ae843bf802ed55Approve279970982022-01-15 3:26:29252 days 15 hrs ago0x02da6e2cbcc167182f7e3fcc9ec05d916de78f3e IN  0xa862527505c072acd513af86fa7bf864b821a3010 FTM0.007654156473
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xd806749edbe5afda6ba0b9025e5561966232496c3a9760c2cfb25b25af9dd57c278349742022-01-13 12:17:31254 days 7 hrs ago Degen Haus: Factory  Contract Creation0 FTM
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x1758d21f2915583f49cc2b3e583df3e55f0dd2c0

Contract Name:
PancakePair

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 FtmScan.com on 2022-01-06
*/

pragma solidity =0.5.16;


interface IPancakeFactory {
    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 IPancakePair {
    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 IPancakeERC20 {
    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 PancakeERC20 is IPancakeERC20 {
    using SafeMath for uint;

    string public constant name = 'Degen Haus LP';
    string public constant symbol = 'HAUS-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, 'DegenHaus: 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, 'DegenHaus: 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 IPancakeCallee {
    function pancakeCall(address sender, uint amount0, uint amount1, bytes calldata data) external;
}

contract PancakePair is IPancakePair, PancakeERC20 {
    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, 'DegenHaus: 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))), 'DegenHaus: 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, 'DegenHaus: 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), 'DegenHaus: 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/4 of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IPancakeFactory(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(2).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, 'DegenHaus: 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, 'DegenHaus: 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, 'DegenHaus: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'DegenHaus: 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, 'DegenHaus: 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) IPancakeCallee(to).pancakeCall(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, 'DegenHaus: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = (balance0.mul(10000).sub(amount0In.mul(10)));
        uint balance1Adjusted = (balance1.mul(10000).sub(amount1In.mul(10)));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'DegenHaus: 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 DegenHausFactory is IPancakeFactory {
    bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked(type(PancakePair).creationCode));

    address public feeTo;
    address public feeToSetter;

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

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

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

    function allPairsLength() external view returns (uint) {
        return allPairs.length;
    }

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

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

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

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"}]

60806040526001600c5534801561001557600080fd5b50604051469080605261238e8239604080519182900360520182208282018252600d83526c0446567656e2048617573204c5609c1b6020938401528151808301835260018152603160f81b908401528151808401919091527f0ab3abe6736ab3d02ea50577ad35d360d98968b123ada1dd46a0b108fb1f73a6818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612286806101086000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610aff565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b28565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b52565b604080519115158252519081900360200190f35b610339610b69565b604080516001600160a01b039092168252519081900360200190f35b61035d610b78565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b7e565b61035d610c18565b6103b5610c3c565b6040805160ff9092168252519081900360200190f35b61035d610c41565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c47565b61035d610ccb565b61035d610cd1565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cd7565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fd7565b61035d610fe9565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610fef565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611001565b6040805192835260208301919091528051918290030190f35b6102446113a7565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113ca565b61035d6113d7565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113dd565b610339611548565b610339611557565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611566565b61035d600480360360408110156105a357600080fd5b506001600160a01b0381358116916020013516611768565b61023a611785565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270111959d95b92185d5cce881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b815260040180806020018281038252602581526020018061222d6025913960400191505060405180910390fd5b600080610667610b28565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b81526004018080602001828103825260218152602001806121e46021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274446567656e486175733a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d6118e7565b891561077057610770818a8c6118e7565b861561082b57886001600160a01b03166384800812338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d602081101561089b57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051925060009150506001600160701b0385168a90038311610934576000610943565b89856001600160701b03160383035b9050600089856001600160701b031603831161096057600061096f565b89856001600160701b03160383035b905060008211806109805750600081115b6109bb5760405162461bcd60e51b81526004018080602001828103825260248152602001806121986024913960400191505060405180910390fd5b60006109ef6109d184600a63ffffffff611a8116565b6109e38761271063ffffffff611a8116565b9063ffffffff611ae416565b90506000610a076109d184600a63ffffffff611a8116565b9050610a396305f5e100610a2d6001600160701b038b8116908b1663ffffffff611a8116565b9063ffffffff611a8116565b610a49838363ffffffff611a8116565b1015610a8b576040805162461bcd60e51b815260206004820152600c60248201526b446567656e486175733a204b60a01b604482015290519081900360640190fd5b5050610a9984848888611b34565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600d81526020016c0446567656e2048617573204c5609c1b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b5f338484611cf9565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c03576001600160a01b0384166000908152600260209081526040808320338452909152902054610bde908363ffffffff611ae416565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c0e848484611d5b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c9d576040805162461bcd60e51b81526020600482015260146024820152732232b3b2b72430bab99d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d24576040805162461bcd60e51b8152602060048201526011602482015270111959d95b92185d5cce881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610d34610b28565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d6020811015610db257600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e0557600080fd5b505afa158015610e19573d6000803e3d6000fd5b505050506040513d6020811015610e2f57600080fd5b505190506000610e4e836001600160701b03871663ffffffff611ae416565b90506000610e6b836001600160701b03871663ffffffff611ae416565b90506000610e798787611e15565b60005490915080610eb657610ea26103e86109e3610e9d878763ffffffff611a8116565b611f73565b9850610eb160006103e8611fc5565b610f05565b610f026001600160701b038916610ed3868463ffffffff611a8116565b81610eda57fe5b046001600160701b038916610ef5868563ffffffff611a8116565b81610efc57fe5b0461205b565b98505b60008911610f445760405162461bcd60e51b81526004018080602001828103825260288152602001806121bc6028913960400191505060405180910390fd5b610f4e8a8a611fc5565b610f5a86868a8a611b34565b8115610f8a57600854610f86906001600160701b0380821691600160701b90041663ffffffff611a8116565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461104f576040805162461bcd60e51b8152602060048201526011602482015270111959d95b92185d5cce881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c8190558061105f610b28565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d60208110156110e557600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d602081101561115d57600080fd5b50513060009081526001602052604081205491925061117c8888611e15565b60005490915080611193848763ffffffff611a8116565b8161119a57fe5b049a50806111ae848663ffffffff611a8116565b816111b557fe5b04995060008b1180156111c8575060008a115b6112035760405162461bcd60e51b81526004018080602001828103825260288152602001806122056028913960400191505060405180910390fd5b61120d3084612073565b611218878d8d6118e7565b611223868d8c6118e7565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561126957600080fd5b505afa15801561127d573d6000803e3d6000fd5b505050506040513d602081101561129357600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d602081101561130957600080fd5b5051935061131985858b8b611b34565b811561134957600854611345906001600160701b0380821691600160701b90041663ffffffff611a8116565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060078152602001660484155532d4c560cc1b81525081565b6000610b5f338484611d5b565b6103e881565b600c54600114611428576040805162461bcd60e51b8152602060048201526011602482015270111959d95b92185d5cce881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114d792859287926114d2926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561149a57600080fd5b505afa1580156114ae573d6000803e3d6000fd5b505050506040513d60208110156114c457600080fd5b50519063ffffffff611ae416565b6118e7565b600854604080516370a0823160e01b8152306004820152905161153e92849287926114d292600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561149a57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115b0576040805162461bcd60e51b8152602060048201526012602482015271111959d95b92185d5cce881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116cb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117015750886001600160a01b0316816001600160a01b0316145b611752576040805162461bcd60e51b815260206004820152601c60248201527f446567656e486175733a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61175d898989611cf9565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117d0576040805162461bcd60e51b8152602060048201526011602482015270111959d95b92185d5cce881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118e0926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182157600080fd5b505afa158015611835573d6000803e3d6000fd5b505050506040513d602081101561184b57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561189857600080fd5b505afa1580156118ac573d6000803e3d6000fd5b505050506040513d60208110156118c257600080fd5b50516008546001600160701b0380821691600160701b900416611b34565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119945780518252601f199092019160209182019101611975565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119f6576040519150601f19603f3d011682016040523d82523d6000602084013e6119fb565b606091505b5091509150818015611a29575080511580611a295750808060200190516020811015611a2657600080fd5b50515b611a7a576040805162461bcd60e51b815260206004820152601a60248201527f446567656e486175733a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611a9c57505080820282828281611a9957fe5b04145b610b63576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b63576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b5257506001600160701b038311155b611b99576040805162461bcd60e51b8152602060048201526013602482015272446567656e486175733a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bc957506001600160701b03841615155b8015611bdd57506001600160701b03831615155b15611c4e578063ffffffff16611c0b85611bf686612111565b6001600160e01b03169063ffffffff61212316565b600980546001600160e01b03929092169290920201905563ffffffff8116611c3684611bf687612111565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d84908263ffffffff611ae416565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611db9908263ffffffff61214816565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6657600080fd5b505afa158015611e7a573d6000803e3d6000fd5b505050506040513d6020811015611e9057600080fd5b5051600b546001600160a01b038216158015945091925090611f5f578015611f5a576000611ed3610e9d6001600160701b0388811690881663ffffffff611a8116565b90506000611ee083611f73565b905080821115611f57576000611f0e611eff848463ffffffff611ae416565b6000549063ffffffff611a8116565b90506000611f3383611f2786600263ffffffff611a8116565b9063ffffffff61214816565b90506000818381611f4057fe5b0490508015611f5357611f538782611fc5565b5050505b50505b611f6b565b8015611f6b576000600b555b505092915050565b60006003821115611fb6575080600160028204015b81811015611fb057809150600281828581611f9f57fe5b040181611fa857fe5b049050611f88565b50611fc0565b8115611fc0575060015b919050565b600054611fd8908263ffffffff61214816565b60009081556001600160a01b038316815260016020526040902054612003908263ffffffff61214816565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061206a578161206c565b825b9392505050565b6001600160a01b03821660009081526001602052604090205461209c908263ffffffff611ae416565b6001600160a01b038316600090815260016020526040812091909155546120c9908263ffffffff611ae416565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161214057fe5b049392505050565b80820182811015610b63576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe446567656e486175733a20494e53554646494349454e545f494e5055545f414d4f554e54446567656e486175733a20494e53554646494349454e545f4c49515549444954595f4d494e544544446567656e486175733a20494e53554646494349454e545f4c4951554944495459446567656e486175733a20494e53554646494349454e545f4c49515549444954595f4255524e4544446567656e486175733a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a72315820452290a8b9a0a4f78ed56651ec9ac49463002f8971062259bfaca3966695f0f564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

10357:9682:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10357:9682:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17552:1894;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17552:1894:0;;;;;;;;;;;;-1:-1:-1;;;;;17552:1894:0;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;17552:1894:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17552:1894: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;17552:1894:0;;-1:-1:-1;17552:1894:0;-1:-1:-1;17552:1894:0;:::i;:::-;;4901:45;;;:::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;4901:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11372:231;;;:::i;:::-;;;;-1:-1:-1;;;;;11372:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6952:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6952:147:0;;-1:-1:-1;;;;;6952:147:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10661:21;;;:::i;:::-;;;;-1:-1:-1;;;;;10661:21:0;;;;;;;;;;;;;;5043:24;;;:::i;:::-;;;;;;;;;;;;;;;;7254:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7254:301:0;;;;;;;;;;;;;;;;;:::i;5335:108::-;;;:::i;5001:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5192:31;;;:::i;12432:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12432:210:0;;;;;;;;;;:::i;11012:32::-;;;:::i;11051:::-;;;:::i;14622:1240::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14622:1240:0;-1:-1:-1;;;;;14622:1240:0;;:::i;5074:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5074:41:0;-1:-1:-1;;;;;5074:41:0;;:::i;11090:17::-;;;:::i;5450:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5450:38:0;-1:-1:-1;;;;;5450:38:0;;:::i;15974:1466::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15974:1466:0;-1:-1:-1;;;;;15974:1466:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4953:41;;;:::i;7107:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7107:139:0;;-1:-1:-1;;;;;7107:139:0;;;;;;:::i;10482:46::-;;;:::i;19495:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19495:334:0;-1:-1:-1;;;;;19495:334:0;;:::i;10632:22::-;;;:::i;10689:21::-;;;:::i;7563:674::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7563:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7563:674:0;;;;;;;;:::i;5122:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5122:61:0;;;;;;;;;;:::i;19878:158::-;;;:::i;17552:1894::-;11263:8;;11275:1;11263:13;11255:43;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;;;;11320:1;11309:8;:12;17666:14;;;;:32;;;17697:1;17684:10;:14;17666:32;17658:82;;;;-1:-1:-1;;;17658:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17752:17;17771;17793:13;:11;:13::i;:::-;-1:-1:-1;17751:55:0;;-1:-1:-1;17751:55:0;-1:-1:-1;;;;;;17840:22:0;;;;:48;;;;-1:-1:-1;;;;;;17866:22:0;;;;17840:48;17832:94;;;;-1:-1:-1;;;17832:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18071:6;;18106;;17939:13;;;;-1:-1:-1;;;;;18071:6:0;;;;18106;;;;18131:13;;;;;;;:30;;-1:-1:-1;;;;;;18148:13:0;;;;;;;;18131:30;18123:64;;;;;-1:-1:-1;;;18123:64:0;;;;;;;;;;;;-1:-1:-1;;;18123:64:0;;;;;;;;;;;;;;;18202:14;;18198:58;;18218:38;18232:7;18241:2;18245:10;18218:13;:38::i;:::-;18305:14;;18301:58;;18321:38;18335:7;18344:2;18348:10;18321:13;:38::i;:::-;18408:15;;18404:93;;18440:2;-1:-1:-1;;;;;18425:30:0;;18456:10;18468;18480;18492:4;;18425:72;;;;;;;;;;;;;-1:-1:-1;;;;;18425:72:0;-1:-1:-1;;;;;18425:72: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;;18425:72:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18425:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18425:72:0;;;;18404:93;18519:40;;;-1:-1:-1;;;18519:40:0;;18553:4;18519:40;;;;;;-1:-1:-1;;;;;18519:25:0;;;-1:-1:-1;;18519:40:0;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18519:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18519:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18519:40:0;18581;;;-1:-1:-1;;;18581:40:0;;18615:4;18581:40;;;;;;18519;;-1:-1:-1;;;;;;18581:25:0;;;-1:-1:-1;;18581:40:0;;;;;18519;;18581;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18581:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18581:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18581:40:0;;-1:-1:-1;18643:14:0;;-1:-1:-1;;;;;;;18671:22:0;;;;;18660:33;;:75;;18734:1;18660:75;;;-1:-1:-1;;;;;18708:22:0;;;;;18696:35;;18660:75;18643:92;-1:-1:-1;18746:14:0;-1:-1:-1;;;;;18774:22:0;;;;;18763:33;;:75;;18837:1;18763:75;;;-1:-1:-1;;;;;18811:22:0;;;;;18799:35;;18763:75;18746:92;;18869:1;18857:9;:13;:30;;;;18886:1;18874:9;:13;18857:30;18849:79;;;;-1:-1:-1;;;18849:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19014:21;19039:42;19063:17;:9;19077:2;19063:17;:13;:17;:::i;:::-;19039:19;:8;19052:5;19039:19;:12;:19;:::i;:::-;:23;:42;:23;:42;:::i;:::-;19014:68;-1:-1:-1;19093:21:0;19118:42;19142:17;:9;19156:2;19142:17;:13;:17;:::i;19118:42::-;19093:68;-1:-1:-1;19222:44:0;19257:8;19222:30;-1:-1:-1;;;;;19222:15:0;;;;:30;;:19;:30::i;:::-;:34;:44;:34;:44;:::i;:::-;19180:38;:16;19201;19180:38;:20;:38;:::i;:::-;:86;;19172:111;;;;;-1:-1:-1;;;19172:111:0;;;;;;;;;;;;-1:-1:-1;;;19172:111:0;;;;;;;;;;;;;;;11332:1;;19307:49;19315:8;19325;19335:9;19346;19307:7;:49::i;:::-;19372:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19372:66:0;;;19377:10;;19372:66;;;;;;;;;-1:-1:-1;;11355:1:0;11344:8;:12;-1:-1:-1;;;;;;;;;17552:1894:0:o;4901:45::-;;;;;;;;;;;;;-1:-1:-1;;;4901:45:0;;;;;:::o;11372:231::-;11505:8;;-1:-1:-1;;;;;11505:8:0;;;;-1:-1:-1;;;11536:8:0;;;;;;-1:-1:-1;;;11577:18:0;;;;;11372:231::o;6952:147::-;7016:4;7033:36;7042:10;7054:7;7063:5;7033:8;:36::i;:::-;-1:-1:-1;7087:4:0;6952:147;;;;;:::o;10661:21::-;;;-1:-1:-1;;;;;10661:21:0;;:::o;5043:24::-;;;;:::o;7254:301::-;-1:-1:-1;;;;;7353:15:0;;7332:4;7353:15;;;:9;:15;;;;;;;;7369:10;7353:27;;;;;;;;-1:-1:-1;;7353:39:0;7349:140;;-1:-1:-1;;;;;7439:15:0;;;;;;:9;:15;;;;;;;;7455:10;7439:27;;;;;;;;:38;;7471:5;7439:31;:38::i;:::-;-1:-1:-1;;;;;7409:15:0;;;;;;:9;:15;;;;;;;;7425:10;7409:27;;;;;;;:68;7349:140;7499:26;7509:4;7515:2;7519:5;7499:9;:26::i;:::-;-1:-1:-1;7543:4:0;7254:301;;;;;:::o;5335:108::-;5377:66;5335:108;:::o;5001:35::-;5034:2;5001:35;:::o;5192:31::-;;;;:::o;12432:210::-;12528:7;;-1:-1:-1;;;;;12528:7:0;12514:10;:21;12506:54;;;;;-1:-1:-1;;;12506:54:0;;;;;;;;;;;;-1:-1:-1;;;12506:54:0;;;;;;;;;;;;;;;12591:6;:16;;-1:-1:-1;;;;;12591:16:0;;;-1:-1:-1;;;;;;12591:16:0;;;;;;;12618:6;:16;;;;;;;;;;;12432:210::o;11012:32::-;;;;:::o;11051:::-;;;;:::o;14622:1240::-;14671:14;11263:8;;11275:1;11263:13;11255:43;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;;;;11320:1;11309:8;:12;;;11320:1;14740:13;:11;:13::i;:::-;-1:-1:-1;14802:6:0;;14795:39;;;-1:-1:-1;;;14795:39:0;;14828:4;14795:39;;;;;;14698:55;;-1:-1:-1;14698:55:0;;-1:-1:-1;;;;;;;;14802:6:0;;;;-1:-1:-1;;14795:39:0;;;;;;;;;;;;;;14802:6;14795:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14795:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14795:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14795:39:0;14868:6;;14861:39;;;-1:-1:-1;;;14861:39:0;;14894:4;14861:39;;;;;;14795;;-1:-1:-1;;;;;;;;14868:6:0;;;;-1:-1:-1;;14861:39:0;;;;;14795;;14861;;;;;;;;14868:6;14861:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14861:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14861:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14861:39:0;;-1:-1:-1;14911:12:0;14926:23;:8;-1:-1:-1;;;;;14926:23:0;;:12;:23::i;:::-;14911:38;-1:-1:-1;14960:12:0;14975:23;:8;-1:-1:-1;;;;;14975:23:0;;:12;:23::i;:::-;14960:38;;15011:10;15024:30;15033:9;15044;15024:8;:30::i;:::-;15065:17;15085:11;15011:43;;-1:-1:-1;15189:17:0;15185:352;;15235:54;10523:5;15235:31;15245:20;:7;15257;15245:20;:11;:20;:::i;:::-;15235:9;:31::i;:54::-;15223:66;;15303:36;15317:1;10523:5;15303;:36::i;:::-;15185:352;;;15439:86;-1:-1:-1;;;;;15448:37:0;;:25;:7;15460:12;15448:11;:25::i;:::-;:37;;;;;;-1:-1:-1;;;;;15487:37:0;;:25;:7;15499:12;15487:11;:25::i;:::-;:37;;;;;;15439:8;:86::i;:::-;15427:98;;15185:352;15567:1;15555:9;:13;15547:66;;;;-1:-1:-1;;;15547:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15624:20;15630:2;15634:9;15624:5;:20::i;:::-;15657:49;15665:8;15675;15685:9;15696;15657:7;:49::i;:::-;15721:5;15717:47;;;15755:8;;15736:28;;-1:-1:-1;;;;;15741:8:0;;;;-1:-1:-1;;;15755:8:0;;;15736:18;:28::i;:::-;15728:5;:36;15717:47;15820:34;;;;;;;;;;;;;;15825:10;;15820:34;;;;;;;;-1:-1:-1;;11355:1:0;11344:8;:12;-1:-1:-1;14622:1240:0;;;-1:-1:-1;;;;;;14622:1240:0:o;5074:41::-;;;;;;;;;;;;;:::o;11090:17::-;;;;:::o;5450:38::-;;;;;;;;;;;;;:::o;15974:1466::-;16023:12;16037;11263:8;;11275:1;11263:13;11255:43;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;;;;11320:1;11309:8;:12;;;11320:1;16104:13;:11;:13::i;:::-;-1:-1:-1;16161:6:0;;16242;;16321:40;;;-1:-1:-1;;;16321:40:0;;16355:4;16321:40;;;;;;16062:55;;-1:-1:-1;16062:55:0;;-1:-1:-1;;;;;;16161:6:0;;;;16242;;;-1:-1:-1;;16161:6:0;;-1:-1:-1;;16321:40:0;;;;;;;;;;;;;;16161:6;16321:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16321:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16321:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16321:40:0;16388;;;-1:-1:-1;;;16388:40:0;;16422:4;16388:40;;;;;;16321;;-1:-1:-1;;;;;;;;16388:25:0;;;-1:-1:-1;;16388:40:0;;;;;16321;;16388;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16388:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16388:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16388:40:0;16474:4;16439:14;16456:24;;;:9;16388:40;16456:24;;;;;16388:40;;-1:-1:-1;16506:30:0;16515:9;16526;16506:8;:30::i;:::-;16547:17;16567:11;16493:43;;-1:-1:-1;16567:11:0;16677:23;:9;16691:8;16677:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;16810:12:0;16784:23;:9;16798:8;16784:23;:13;:23;:::i;:::-;:38;;;;;;16774:48;;16899:1;16889:7;:11;:26;;;;;16914:1;16904:7;:11;16889:26;16881:79;;;;-1:-1:-1;;;16881:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16971:31;16985:4;16992:9;16971:5;:31::i;:::-;17013:35;17027:7;17036:2;17040:7;17013:13;:35::i;:::-;17059;17073:7;17082:2;17086:7;17059:13;:35::i;:::-;17116:40;;;-1:-1:-1;;;17116:40:0;;17150:4;17116:40;;;;;;-1:-1:-1;;;;;17116:25:0;;;-1:-1:-1;;17116:40:0;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17116:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17116:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17116:40:0;17178;;;-1:-1:-1;;;17178:40:0;;17212:4;17178:40;;;;;;17116;;-1:-1:-1;;;;;;17178:25:0;;;-1:-1:-1;;17178:40:0;;;;;17116;;17178;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17178:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17178:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17178:40:0;;-1:-1:-1;17231:49:0;17239:8;17178:40;17259:9;17270;17231:7;:49::i;:::-;17295:5;17291:47;;;17329:8;;17310:28;;-1:-1:-1;;;;;17315:8:0;;;;-1:-1:-1;;;17329:8:0;;;17310:18;:28::i;:::-;17302:5;:36;17291:47;17394:38;;;;;;;;;;;;;;-1:-1:-1;;;;;17394:38:0;;;17399:10;;17394:38;;;;;;;;;;;11332:1;;;;;;;;;11355;11344:8;:12;;;;15974:1466;;;:::o;4953:41::-;;;;;;;;;;;;;-1:-1:-1;;;4953:41:0;;;;;:::o;7107:139::-;7167:4;7184:32;7194:10;7206:2;7210:5;7184:9;:32::i;10482:46::-;10523:5;10482:46;:::o;19495:334::-;11263:8;;11275:1;11263:13;11255:43;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;;;;11320:1;11309:8;:12;19564:6;;19614;;19718:8;;19673:40;;;-1:-1:-1;;;19673:40:0;;19707:4;19673:40;;;;;;-1:-1:-1;;;;;19564:6:0;;;;19614;;;;19646:82;;19564:6;;19669:2;;19673:54;;-1:-1:-1;;;;;19718:8:0;;19564:6;;-1:-1:-1;;19673:40:0;;;;;;;;;;;;;;;19564:6;19673:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19673:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19673:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19673:40:0;;:54;:44;:54;:::i;:::-;19646:13;:82::i;:::-;19811:8;;19766:40;;;-1:-1:-1;;;19766:40:0;;19800:4;19766:40;;;;;;19739:82;;19753:7;;19762:2;;19766:54;;-1:-1:-1;;;19811:8:0;;-1:-1:-1;;;;;19811:8:0;;-1:-1:-1;;;;;19766:25:0;;;-1:-1:-1;;19766:40:0;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;19739:82:0;-1:-1:-1;;11355:1:0;11344:8;:12;-1:-1:-1;19495:334:0:o;10632:22::-;;;-1:-1:-1;;;;;10632:22:0;;:::o;10689:21::-;;;-1:-1:-1;;;;;10689:21:0;;:::o;7563:674::-;7709:15;7697:8;:27;;7689:58;;;;;-1:-1:-1;;;7689:58:0;;;;;;;;;;;;-1:-1:-1;;;7689:58:0;;;;;;;;;;;;;;;7863:16;;-1:-1:-1;;;;;7959:13:0;;;7758:14;7959:13;;;:6;:13;;;;;;;;:15;;-1:-1:-1;7959:15:0;;;;;;7908:77;;5377:66;7908:77;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7908:77:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7908:77:0;;;;;7898:88;;;;;;-1:-1:-1;;;7799:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7799:202:0;;;;;;7775:237;;;;;;;;;8050:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7758:14;;-1:-1:-1;8050:26:0;;;;;-1:-1:-1;;8050:26:0;;;;;;;;;;-1:-1:-1;8050:26:0;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8050:26:0;;-1:-1:-1;;8050:26:0;;;-1:-1:-1;;;;;;;8095:30:0;;;;;;:59;;-1:-1:-1;;;;;;8129:25:0;;;;;;;8095:59;8087:100;;;;;-1:-1:-1;;;8087:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8198:31;8207:5;8214:7;8223:5;8198:8;:31::i;:::-;7563:674;;;;;;;;;:::o;5122:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;19878:158::-;11263:8;;11275:1;11263:13;11255:43;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;-1:-1:-1;;;11255:43:0;;;;;;;;;;;;;;;11320:1;11309:8;:12;19934:6;;19927:39;;;-1:-1:-1;;;19927:39:0;;19960:4;19927:39;;;;;;19919:109;;-1:-1:-1;;;;;19934:6:0;;-1:-1:-1;;19927:39:0;;;;;;;;;;;;;;19934:6;19927:39;;;5:2:-1;;;;30:1;27;20:12;5:2;19927:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19927:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19927:39:0;19975:6;;19968:39;;;-1:-1:-1;;;19968:39:0;;20001:4;19968:39;;;;;;-1:-1:-1;;;;;19975:6:0;;;;-1:-1:-1;;19968:39:0;;;;;19927;;19968;;;;;;;;19975:6;19968:39;;;5:2:-1;;;;30:1;27;20:12;5:2;19968:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19968:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19968:39:0;20009:8;;-1:-1:-1;;;;;20009:8:0;;;;-1:-1:-1;;;20019:8:0;;;19919:7;:109::i;:::-;11355:1;11344:8;:12;19878:158::o;11611:287::-;10587:34;;;;;;;;;;;;;;;;;11739:43;;-1:-1:-1;;;;;11739:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11739:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11728:55:0;;;;-1:-1:-1;;11707:17:0;;11728:10;;;11739:43;11728:55;;;25:18:-1;11728: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;;;11728: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;;11692:91:0;;;;11802:7;:57;;;;-1:-1:-1;11814:11:0;;:16;;:44;;;11845:4;11834:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11834:24:0;11814:44;11794:96;;;;;-1:-1:-1;;;11794:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11611:287;;;;;:::o;4674:142::-;4726:6;4753;;;:30;;-1:-1:-1;;4768:5:0;;;4782:1;4777;4768:5;4777:1;4763:15;;;;;:20;4753:30;4745:63;;;;;-1:-1:-1;;;4745:63:0;;;;;;;;;;;;-1:-1:-1;;;4745:63:0;;;;;;;;;;;;;;4537:129;4621:5;;;4616:16;;;;4608:50;;;;;-1:-1:-1;;;4608:50:0;;;;;;;;;;;;-1:-1:-1;;;4608:50:0;;;;;;;;;;;;;;12727:860;-1:-1:-1;;;;;12839:23:0;;;;;:50;;-1:-1:-1;;;;;;12866:23:0;;;12839:50;12831:82;;;;;-1:-1:-1;;;12831:82:0;;;;;;;;;;;;-1:-1:-1;;;12831:82:0;;;;;;;;;;;;;;;13028:18;;12955:23;:15;:23;;;-1:-1:-1;;;13028:18:0;;;;13011:35;;;13084:15;;;;;;:33;;-1:-1:-1;;;;;;13103:14:0;;;;13084:33;:51;;;;-1:-1:-1;;;;;;13121:14:0;;;;13084:51;13080:336;;;13290:11;13237:64;;13242:44;13276:9;13242:27;13259:9;13242:16;:27::i;:::-;-1:-1:-1;;;;;13242:33:0;;;:44::i;:::-;13213:20;:88;;-1:-1:-1;;;;;13237:50:0;;;;:64;;;;13213:88;;;13340:64;;;13345:44;13379:9;13345:27;13362:9;13345:16;:27::i;:44::-;13316:20;:88;;-1:-1:-1;;;;;13340:50:0;;;;:64;;;;13316:88;;;13080:336;13426:8;:28;;-1:-1:-1;;13426:28:0;-1:-1:-1;;;;;13426:28:0;;;;;;;-1:-1:-1;;;;13465:28:0;-1:-1:-1;;;13465:28:0;;;;;;;;;-1:-1:-1;;;;;13504:35:0;-1:-1:-1;;;13504:35:0;;;;;;;;;13555:24;;;13560:8;;;13555:24;;13570:8;;;;;;;13555:24;;;;;;;;;;;;;;;;;12727:860;;;;;;:::o;6547:169::-;-1:-1:-1;;;;;6628:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6677:31;;;;;;;;;;;;;;;;;6547:169;;;:::o;6724:220::-;-1:-1:-1;;;;;6818:15:0;;;;;;-1:-1:-1;6818:15:0;;;;;;:26;;6838:5;6818:19;:26::i;:::-;-1:-1:-1;;;;;6800:15:0;;;;;;;-1:-1:-1;6800:15:0;;;;;;:44;;;;6871:13;;;;;;;:24;;6889:5;6871:17;:24::i;:::-;-1:-1:-1;;;;;6855:13:0;;;;;;;-1:-1:-1;6855:13:0;;;;;;;;;:40;;;;6911:25;;;;;;;6855:13;;6911:25;;;;;;;;;;;;;6724:220;;;:::o;13675:835::-;13803:7;;13787:32;;;-1:-1:-1;;;13787:32:0;;;;13748:10;;;;-1:-1:-1;;;;;13803:7:0;;;;13787:30;;:32;;;;;;;;;;;;;;;13803:7;13787:32;;;5:2:-1;;;;30:1;27;20:12;5:2;13787:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13787:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13787:32:0;13882:5;;-1:-1:-1;;;;;13838:19:0;;;;;;-1:-1:-1;13787:32:0;;-1:-1:-1;13882:5:0;13913:590;;13943:11;;13939:494;;13975:10;13988:41;13998:30;-1:-1:-1;;;;;13998:15:0;;;;:30;;:19;:30::i;13988:41::-;13975:54;;14048:14;14065:17;14075:6;14065:9;:17::i;:::-;14048:34;;14113:9;14105:5;:17;14101:317;;;14147:14;14164:37;14180:20;:5;14190:9;14180:20;:9;:20;:::i;:::-;14164:11;;;:37;:15;:37;:::i;:::-;14147:54;-1:-1:-1;14224:16:0;14243:27;14260:9;14243:12;:5;14253:1;14243:12;:9;:12;:::i;:::-;:16;:27;:16;:27;:::i;:::-;14224:46;;14293:14;14322:11;14310:9;:23;;;;;;;-1:-1:-1;14360:13:0;;14356:42;;14375:23;14381:5;14388:9;14375:5;:23::i;:::-;14101:317;;;;13939:494;;;13913:590;;;14454:11;;14450:53;;14490:1;14482:5;:9;14450:53;13675:835;;;;;;:::o;8531:303::-;8576:6;8603:1;8599;:5;8595:232;;;-1:-1:-1;8625:1:0;8658;8654;8650:5;;:9;8674:92;8685:1;8681;:5;8674:92;;;8711:1;8707:5;;8749:1;8744;8740;8736;:5;;;;;;:9;8735:15;;;;;;8731:19;;8674:92;;;8595:232;;;;8787:6;;8783:44;;-1:-1:-1;8814:1:0;8783:44;8531:303;;;:::o;6121:201::-;6194:11;;:22;;6210:5;6194:22;:15;:22;:::i;:::-;6180:11;:36;;;-1:-1:-1;;;;;6243:13:0;;;;-1:-1:-1;6243:13:0;;;;;;:24;;6261:5;6243:17;:24::i;:::-;-1:-1:-1;;;;;6227:13:0;;;;;;-1:-1:-1;6227:13:0;;;;;;;;:40;;;;6283:31;;;;;;;6227:13;;;;6283:31;;;;;;;;;;6121:201;;:::o;8317:96::-;8369:6;8396:1;8392;:5;:13;;8404:1;8392:13;;;8400:1;8392:13;8388:17;8317:96;-1:-1:-1;;;8317:96:0:o;6330:209::-;-1:-1:-1;;;;;6409:15:0;;;;;;-1:-1:-1;6409:15:0;;;;;;:26;;6429:5;6409:19;:26::i;:::-;-1:-1:-1;;;;;6391:15:0;;;;;;-1:-1:-1;6391:15:0;;;;;:44;;;;6460:11;:22;;6476:5;6460:15;:22::i;:::-;6446:11;:36;;;6498:33;;;;;;;;-1:-1:-1;;;;;6498:33:0;;;;;;;;;;;;;6330:209;;:::o;9103:120::-;-1:-1:-1;;;;;9179:10:0;-1:-1:-1;;;9179:17:0;;9103:120::o;9294:108::-;9354:9;-1:-1:-1;;;;;9384:10:0;;-1:-1:-1;;;;;9380:14:0;;9384:10;9380:14;;;;;;9294:108;-1:-1:-1;;;9294:108:0:o;4401:128::-;4485:5;;;4480:16;;;;4472:49;;;;;-1:-1:-1;;;4472:49:0;;;;;;;;;;;;-1:-1:-1;;;4472:49:0;;;;;;;;;;;;;

Swarm Source

bzzr://452290a8b9a0a4f78ed56651ec9ac49463002f8971062259bfaca3966695f0f5
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.