Contract 0x6ED814F822D283d0c3632Be7B08A380742C01194

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa2efb10b948ed7b142d80662975b921c5af2053d33a3c7c034605c33cbb7f958Approve514199302022-11-25 7:35:219 days 18 hrs ago0xbcc4141d5264d5c886a81d151f60889ace68d11e IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.0025618
0x307a278ced729ba308e7402ffa33646c7c4be32e55299812a37f2b653ba06b43Approve514199232022-11-25 7:35:129 days 18 hrs ago0xbcc4141d5264d5c886a81d151f60889ace68d11e IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.0025618
0x8d51841d94bbfa125e1eae87897be21b3be0caca71d06ce9760d2b56d452448fApprove514198812022-11-25 7:34:139 days 18 hrs ago0xbcc4141d5264d5c886a81d151f60889ace68d11e IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.0027478
0x858f36ab28b3505afc2f875efc907f348201f2fef8b37299bc48bfa661c5eb46Approve502701292022-10-30 16:02:4435 days 9 hrs ago0xbcc4141d5264d5c886a81d151f60889ace68d11e IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.021724733799
0x4045be7a88f513a76515dcdc3deb7f70b9239ff592b099eee708674c768bf065Approve472854332022-09-19 20:44:1276 days 5 hrs ago0x47a0deaf314f1470c4f5655c6e3921f663b304ad IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000067356207
0x10e0e222e07794efb612023e91997525526e4a949a37233ff69ff85666d347b4Approve472854092022-09-19 20:43:4676 days 5 hrs ago0x47a0deaf314f1470c4f5655c6e3921f663b304ad IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000069689087
0x749a94d1f79b7f75e3e7326a6d80409d4c5d328559fb8f2097371af221631ba7Approve472850022022-09-19 20:35:3176 days 5 hrs ago0x47a0deaf314f1470c4f5655c6e3921f663b304ad IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000061966052
0x458e340e71efb251f6180100e4ea6c503ccfcb48739845d0437fbb9a3a9fbe3cApprove470412342022-09-16 9:23:3079 days 16 hrs ago0xc024ab601ba1e9986e6a22d4582257c0f93fbafc IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000089663
0x3bb9a41dd260058ae6c9eec574e505d6ec4a06d2df944cee614feef207d1f34fApprove470411582022-09-16 9:21:5979 days 16 hrs ago0xc024ab601ba1e9986e6a22d4582257c0f93fbafc IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000089663
0xe9c44d86931666bdb4ae580b2cf2a674281049b1cd3e8c7b5ad8c4a42228974bApprove470193912022-09-16 1:29:1280 days 21 mins ago0x3db70c686d37b62ab6e3470abb55a216b4c9be8a IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000090714591
0x4d29d8344be013c78c9dcfc183ef53bb95f9e9d6d81fd8ecbf1a0e8a4a60a222Approve469347402022-09-14 14:33:5681 days 11 hrs ago0xd88cff1d9f7e0e511ca50f6f169c03354b384135 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000086420652
0xf6289ea6fd9c3df341fcee810ba5c1d52f7c4f081428d6331b892528fa84c89dApprove468427352022-09-12 22:26:1283 days 3 hrs ago0x7a49983815a5f0499e590698c44adfe766e6812f IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.006925061106
0xabd43b756fe8a9f29abb79bbc910e2eed18f4aa7dfec7ecf61dea97bc8ad048aApprove448242242022-08-13 14:59:32113 days 10 hrs ago0x5bc0aa095632c76da0be9838d960da9a66fca30e IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000058225665
0x822e8caf6fc49a58cc2d720bc39e58c85987d6878ca061d4d1138e0acde380e5Approve447328422022-08-12 7:16:24114 days 18 hrs ago0x95c9b6b5d9b93bdf823526b46d0abc4c6adcdb83 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000029367104
0x10af507d3494ca2a70be631f0e71cf3c7b5a350e312046c44feb6fcc498c297dApprove447323572022-08-12 7:07:32114 days 18 hrs ago0x95c9b6b5d9b93bdf823526b46d0abc4c6adcdb83 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000061248088
0xad8bad90956cad5a261c9b01716c8ede837b9d608e415244c87ecedb8dbc75d6Approve445801202022-08-10 1:28:03117 days 23 mins ago0xe922399aaf629dea63987f2157b0ca7c44f4de90 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000183617287
0x424e6155c76b940d0a653a7e6f25c1ec24a9b2228bbe8954497f87adfb6d17d3Approve445796532022-08-10 1:16:43117 days 34 mins ago0xe922399aaf629dea63987f2157b0ca7c44f4de90 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.001696771006
0x3b90e731fae7defe607f9bf38ad185f2e56dc9abd1e033b49832a0fd5a75b691Approve441458772022-08-03 15:10:23123 days 10 hrs ago0x97a58820d89b4994d931459796db9ef508f62bd2 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000247509218
0x89fefa5daf1f271bef6c53d3e8ac8c9a6096806b2e22d6617f472c23910904d8Approve422595472022-07-07 23:07:57150 days 2 hrs ago0x3aa8177002a2ce330d4e1fd892704e907cff60d6 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.00197712
0x41b8f4b903ec435babbb675f501c868379735755a435e9d15c9bb2cedacc729cApprove417339412022-07-01 2:31:54156 days 23 hrs ago0x7a49983815a5f0499e590698c44adfe766e6812f IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000158275931
0x6e372e4ec51efafd44ec49b83d5ddcb99f4d0e31a8862f9fc4a328c7a73ceae2Approve411419312022-06-23 8:50:00164 days 17 hrs ago0xb2d3333410144d6a6a5ce7fa3af90cb01ad2b369 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.000028833007
0x975230219616d90a466fb4c49651b5daa80dd6d7511093fd2cf81ef757ce12bfApprove410115212022-06-21 14:12:56166 days 11 hrs ago0xe39919542a1802eba69e280d358b606aab53a5b7 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.005000983475
0xebeed41bf17a674caf52dcf069cda58af2821b735e9baacc9fa269530e04c713Approve409769272022-06-21 2:24:27166 days 23 hrs ago0xe39919542a1802eba69e280d358b606aab53a5b7 IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.00021479181
0xc14a717cd85afec90501cddc24a30e5a916d30083e49698cfdd547aaa163f9ddApprove406647382022-06-16 19:07:25171 days 6 hrs ago0x297c10ecccdb3dde3a73bf34784910237c4371bd IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.0345202
0xbbc67cd06f80f556dd12f319d8a1e1d64a4e84119a36804194bed191c9e72556Approve406645522022-06-16 19:03:47171 days 6 hrs ago0x297c10ecccdb3dde3a73bf34784910237c4371bd IN  0x6ed814f822d283d0c3632be7b08a380742c011940 FTM0.0345202
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x15edc3746d653e3b2ed8bf9bde3348dff28df612cc3b0a8dc2d20e7f50eacd30368851992022-04-24 21:45:45224 days 4 hrs ago SpiritSwap: 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 0xe7E90f5a767406efF87Fdad7EB07ef407922EC1D

Contract Name:
PancakePair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-10-02
*/

/**
 *Submitted for verification at FtmScan.com on 2021-04-20
*/

/**
 *Submitted for verification at FtmScan.com on 2020-09-19
*/

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;

    function locked() external view returns (bool);
    function setLocked(bool) 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 = 'Spirit LPs';
    string public constant symbol = 'SPIRIT-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, 'Pancake: 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, 'Pancake: 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, 'Pancake: 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))), 'Pancake: 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, 'Pancake: 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), 'Pancake: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = 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(5).add(rootKLast);
                    uint liquidity = numerator / denominator;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
           _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'Pancake: 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, 'Pancake: 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, 'Pancake: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Pancake: 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, 'Pancake: 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, 'Pancake: 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), 'Pancake: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

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

Contract Security Audit

Contract ABI

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

60806040526001600c5534801561001557600080fd5b5060405146908060526123628239604080519182900360520182208282018252600a835269537069726974204c507360b01b6020938401528151808301835260018152603160f81b908401528151808401919091527f12dc4b9d23cac02671870eb5c48f2276ff76c2eecd5057842d000e7dd01f04e6818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b0319163317905561225d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b0e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b34565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b5e565b604080519115158252519081900360200190f35b610339610b75565b604080516001600160a01b039092168252519081900360200190f35b61035d610b84565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b8a565b61035d610c24565b6103b5610c48565b6040805160ff9092168252519081900360200190f35b61035d610c4d565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c53565b61035d610cd5565b61035d610cdb565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ce1565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fdf565b61035d610ff1565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610ff7565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611009565b6040805192835260208301919091528051918290030190f35b6102446113ad565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113d2565b61035d6113df565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113e5565b61033961154e565b61033961155d565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561156c565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661176c565b61023a611789565b600c5460011461060c576040805162461bcd60e51b815260206004820152600f60248201526e14185b98d85ad94e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c558415158061061f5750600084115b61065a5760405162461bcd60e51b81526004018080602001828103825260238152602001806121e06023913960400191505060405180910390fd5b600080610665610b34565b5091509150816001600160701b03168710801561068a5750806001600160701b031686105b6106db576040805162461bcd60e51b815260206004820152601f60248201527f50616e63616b653a20494e53554646494349454e545f4c495155494449545900604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107195750806001600160a01b0316896001600160a01b031614155b610760576040805162461bcd60e51b815260206004820152601360248201527250616e63616b653a20494e56414c49445f544f60681b604482015290519081900360640190fd5b8a1561077157610771828a8d6118e9565b891561078257610782818a8c6118e9565b861561083d57886001600160a01b03166384800812338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561082457600080fd5b505af1158015610838573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d60208110156108ad57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f957600080fd5b505afa15801561090d573d6000803e3d6000fd5b505050506040513d602081101561092357600080fd5b5051925060009150506001600160701b0385168a90038311610946576000610955565b89856001600160701b03160383035b9050600089856001600160701b0316038311610972576000610981565b89856001600160701b03160383035b905060008211806109925750600081115b6109cd5760405162461bcd60e51b81526004018080602001828103825260228152602001806121986022913960400191505060405180910390fd5b6000610a016109e384600363ffffffff611a8316565b6109f5876103e863ffffffff611a8316565b9063ffffffff611ae616565b90506000610a196109e384600363ffffffff611a8316565b9050610a4a620f4240610a3e6001600160701b038b8116908b1663ffffffff611a8316565b9063ffffffff611a8316565b610a5a838363ffffffff611a8316565b1015610a9a576040805162461bcd60e51b815260206004820152600a60248201526950616e63616b653a204b60b01b604482015290519081900360640190fd5b5050610aa884848888611b36565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a815260200169537069726974204c507360b01b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b6b338484611cf9565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c0f576001600160a01b0384166000908152600260209081526040808320338452909152902054610bea908363ffffffff611ae616565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c1a848484611d5b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610ca7576040805162461bcd60e51b81526020600482015260126024820152712830b731b0b5b29d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d2c576040805162461bcd60e51b815260206004820152600f60248201526e14185b98d85ad94e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c81905580610d3c610b34565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d9057600080fd5b505afa158015610da4573d6000803e3d6000fd5b505050506040513d6020811015610dba57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e0d57600080fd5b505afa158015610e21573d6000803e3d6000fd5b505050506040513d6020811015610e3757600080fd5b505190506000610e56836001600160701b03871663ffffffff611ae616565b90506000610e73836001600160701b03871663ffffffff611ae616565b90506000610e818787611e15565b60005490915080610ebe57610eaa6103e86109f5610ea5878763ffffffff611a8316565b611f73565b9850610eb960006103e8611fc5565b610f0d565b610f0a6001600160701b038916610edb868463ffffffff611a8316565b81610ee257fe5b046001600160701b038916610efd868563ffffffff611a8316565b81610f0457fe5b0461205b565b98505b60008911610f4c5760405162461bcd60e51b81526004018080602001828103825260268152602001806122036026913960400191505060405180910390fd5b610f568a8a611fc5565b610f6286868a8a611b36565b8115610f9257600854610f8e906001600160701b0380821691600160701b90041663ffffffff611a8316565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611055576040805162461bcd60e51b815260206004820152600f60248201526e14185b98d85ad94e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c81905580611065610b34565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561113957600080fd5b505afa15801561114d573d6000803e3d6000fd5b505050506040513d602081101561116357600080fd5b5051306000908152600160205260408120549192506111828888611e15565b60005490915080611199848763ffffffff611a8316565b816111a057fe5b049a50806111b4848663ffffffff611a8316565b816111bb57fe5b04995060008b1180156111ce575060008a115b6112095760405162461bcd60e51b81526004018080602001828103825260268152602001806121ba6026913960400191505060405180910390fd5b6112133084612073565b61121e878d8d6118e9565b611229868d8c6118e9565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d602081101561129957600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112e557600080fd5b505afa1580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b5051935061131f85858b8b611b36565b811561134f5760085461134b906001600160701b0380821691600160701b90041663ffffffff611a8316565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600981526020016805350495249542d4c560bc1b81525081565b6000610b6b338484611d5b565b6103e881565b600c5460011461142e576040805162461bcd60e51b815260206004820152600f60248201526e14185b98d85ad94e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114dd92859287926114d8926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156114a057600080fd5b505afa1580156114b4573d6000803e3d6000fd5b505050506040513d60208110156114ca57600080fd5b50519063ffffffff611ae616565b6118e9565b600854604080516370a0823160e01b8152306004820152905161154492849287926114d892600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156114a057600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115b4576040805162461bcd60e51b815260206004820152601060248201526f14185b98d85ad94e881156141254915160821b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116cf573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117055750886001600160a01b0316816001600160a01b0316145b611756576040805162461bcd60e51b815260206004820152601a60248201527f50616e63616b653a20494e56414c49445f5349474e4154555245000000000000604482015290519081900360640190fd5b611761898989611cf9565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117d2576040805162461bcd60e51b815260206004820152600f60248201526e14185b98d85ad94e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118e2926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182357600080fd5b505afa158015611837573d6000803e3d6000fd5b505050506040513d602081101561184d57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561189a57600080fd5b505afa1580156118ae573d6000803e3d6000fd5b505050506040513d60208110156118c457600080fd5b50516008546001600160701b0380821691600160701b900416611b36565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119965780518252601f199092019160209182019101611977565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119f8576040519150601f19603f3d011682016040523d82523d6000602084013e6119fd565b606091505b5091509150818015611a2b575080511580611a2b5750808060200190516020811015611a2857600080fd5b50515b611a7c576040805162461bcd60e51b815260206004820152601860248201527f50616e63616b653a205452414e534645525f4641494c45440000000000000000604482015290519081900360640190fd5b5050505050565b6000811580611a9e57505080820282828281611a9b57fe5b04145b610b6f576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b6f576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b5457506001600160701b038311155b611b99576040805162461bcd60e51b815260206004820152601160248201527050616e63616b653a204f564552464c4f5760781b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bc957506001600160701b03841615155b8015611bdd57506001600160701b03831615155b15611c4e578063ffffffff16611c0b85611bf686612111565b6001600160e01b03169063ffffffff61212316565b600980546001600160e01b03929092169290920201905563ffffffff8116611c3684611bf687612111565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d84908263ffffffff611ae616565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611db9908263ffffffff61214816565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6657600080fd5b505afa158015611e7a573d6000803e3d6000fd5b505050506040513d6020811015611e9057600080fd5b5051600b546001600160a01b038216158015945091925090611f5f578015611f5a576000611ed3610ea56001600160701b0388811690881663ffffffff611a8316565b90506000611ee083611f73565b905080821115611f57576000611f0e611eff848463ffffffff611ae616565b6000549063ffffffff611a8316565b90506000611f3383611f2786600563ffffffff611a8316565b9063ffffffff61214816565b90506000818381611f4057fe5b0490508015611f5357611f538782611fc5565b5050505b50505b611f6b565b8015611f6b576000600b555b505092915050565b60006003821115611fb6575080600160028204015b81811015611fb057809150600281828581611f9f57fe5b040181611fa857fe5b049050611f88565b50611fc0565b8115611fc0575060015b919050565b600054611fd8908263ffffffff61214816565b60009081556001600160a01b038316815260016020526040902054612003908263ffffffff61214816565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061206a578161206c565b825b9392505050565b6001600160a01b03821660009081526001602052604090205461209c908263ffffffff611ae616565b6001600160a01b038316600090815260016020526040812091909155546120c9908263ffffffff611ae616565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161214057fe5b049392505050565b80820182811015610b6f576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe50616e63616b653a20494e53554646494349454e545f494e5055545f414d4f554e5450616e63616b653a20494e53554646494349454e545f4c49515549444954595f4255524e454450616e63616b653a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b653a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820205942e5fc0d6fa8a2d4b43ceac04d52e3229319213f78166c4992900ba1770564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

10587:9653:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10587:9653:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17772:1875;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17772:1875:0;;;;;;;;-1:-1:-1;;;;;17772:1875:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;17772:1875:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17772:1875: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;17772:1875:0;;-1:-1:-1;17772:1875:0;-1:-1:-1;17772:1875:0;:::i;:::-;;5136:42;;;:::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;5136:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11600:231;;;:::i;:::-;;;;-1:-1:-1;;;;;11600:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7186:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7186:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10891:21;;;:::i;:::-;;;;-1:-1:-1;;;;;10891:21:0;;;;;;;;;;;;;;5277:24;;;:::i;:::-;;;;;;;;;;;;;;;;7488:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7488:301:0;;;;;;;;;;;;;;;;;:::i;5569:108::-;;;:::i;5235:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5426:31;;;:::i;12658:208::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12658:208:0;;;;;;;;;;:::i;11242:32::-;;;:::i;11281:::-;;;:::i;14846:1238::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14846:1238:0;-1:-1:-1;;;;;14846:1238:0;;:::i;5308:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5308:41:0;-1:-1:-1;;;;;5308:41:0;;:::i;11320:17::-;;;:::i;5684:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5684:38:0;-1:-1:-1;;;;;5684:38:0;;:::i;16196:1464::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16196:1464:0;-1:-1:-1;;;;;16196:1464:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5185:43;;;:::i;7341:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7341:139:0;;;;;;;;:::i;10712:46::-;;;:::i;19696:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19696:334:0;-1:-1:-1;;;;;19696:334:0;;:::i;10862:22::-;;;:::i;10919:21::-;;;:::i;7797:670::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7797:670:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5356:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5356:61:0;;;;;;;;;;:::i;20079:158::-;;;:::i;17772:1875::-;11493:8;;11505:1;11493:13;11485:41;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;;;;11548:1;11537:8;:12;17886:14;;;;:32;;;17917:1;17904:10;:14;17886:32;17878:80;;;;-1:-1:-1;;;17878:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17970:17;17989;18011:13;:11;:13::i;:::-;17969:55;;;;;18071:9;-1:-1:-1;;;;;18058:22:0;:10;:22;:48;;;;;18097:9;-1:-1:-1;;;;;18084:22:0;:10;:22;18058:48;18050:92;;;;;-1:-1:-1;;;18050:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18287:6;;18322;;18155:13;;;;-1:-1:-1;;;;;18287:6:0;;;;18322;;;;18347:13;;;;;;;:30;;;18370:7;-1:-1:-1;;;;;18364:13:0;:2;-1:-1:-1;;;;;18364:13:0;;;18347:30;18339:62;;;;;-1:-1:-1;;;18339:62:0;;;;;;;;;;;;-1:-1:-1;;;18339:62:0;;;;;;;;;;;;;;;18416:14;;18412:58;;18432:38;18446:7;18455:2;18459:10;18432:13;:38::i;:::-;18519:14;;18515:58;;18535:38;18549:7;18558:2;18562:10;18535:13;:38::i;:::-;18622:15;;18618:93;;18654:2;-1:-1:-1;;;;;18639:30:0;;18670:10;18682;18694;18706:4;;18639:72;;;;;;;;;;;;;-1:-1:-1;;;;;18639:72:0;-1:-1:-1;;;;;18639: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;;18639:72:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18639:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18639:72:0;;;;18618:93;18733:40;;;-1:-1:-1;;;18733:40:0;;18767:4;18733:40;;;;;;-1:-1:-1;;;;;18733:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18733:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18733:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18733:40:0;18795;;;-1:-1:-1;;;18795:40:0;;18829:4;18795:40;;;;;;18733;;-1:-1:-1;;;;;;18795:25:0;;;;;:40;;;;;18733;;18795;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18795:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18795:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18795:40:0;;-1:-1:-1;18857:14:0;;-1:-1:-1;;;;;;;18885:22:0;;;;;18874:33;;:75;;18948:1;18874:75;;;18934:10;18922:9;-1:-1:-1;;;;;18922:22:0;;18910:8;:35;18874:75;18857:92;;18960:14;19000:10;18988:9;-1:-1:-1;;;;;18988:22:0;;18977:8;:33;:75;;19051:1;18977:75;;;19037:10;19025:9;-1:-1:-1;;;;;19025:22:0;;19013:8;:35;18977:75;18960:92;;19083:1;19071:9;:13;:30;;;;19100:1;19088:9;:13;19071:30;19063:77;;;;-1:-1:-1;;;19063:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19226:21;19250:40;19273:16;:9;19287:1;19273:16;:13;:16;:::i;:::-;19250:18;:8;19263:4;19250:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;19226:64;-1:-1:-1;19301:21:0;19325:40;19348:16;:9;19362:1;19348:16;:13;:16;:::i;19325:40::-;19301:64;-1:-1:-1;19426:43:0;19461:7;19426:30;-1:-1:-1;;;;;19426:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:43;:34;:43;:::i;:::-;19384:38;:16;19405;19384:38;:20;:38;:::i;:::-;:85;;19376:108;;;;;-1:-1:-1;;;19376:108:0;;;;;;;;;;;;-1:-1:-1;;;19376:108:0;;;;;;;;;;;;;;;11560:1;;19508:49;19516:8;19526;19536:9;19547;19508:7;:49::i;:::-;19573:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19573:66:0;;;19578:10;;19573:66;;;;;;;;;-1:-1:-1;;11583:1:0;11572:8;:12;-1:-1:-1;;;;;;;;;17772:1875:0:o;5136:42::-;;;;;;;;;;;;;;-1:-1:-1;;;5136:42:0;;;;:::o;11600:231::-;11733:8;;-1:-1:-1;;;;;11733:8:0;;;;-1:-1:-1;;;11764:8:0;;;;;;-1:-1:-1;;;11805:18:0;;;;;11600:231::o;7186:147::-;7250:4;7267:36;7276:10;7288:7;7297:5;7267:8;:36::i;:::-;-1:-1:-1;7321:4:0;7186:147;;;;;:::o;10891:21::-;;;-1:-1:-1;;;;;10891:21:0;;:::o;5277:24::-;;;;:::o;7488:301::-;-1:-1:-1;;;;;7587:15:0;;7566:4;7587:15;;;:9;:15;;;;;;;;7603:10;7587:27;;;;;;;;-1:-1:-1;;7587:39:0;7583:140;;-1:-1:-1;;;;;7673:15:0;;;;;;:9;:15;;;;;;;;7689:10;7673:27;;;;;;;;:38;;7705:5;7673:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7643:15:0;;;;;;:9;:15;;;;;;;;7659:10;7643:27;;;;;;;:68;7583:140;7733:26;7743:4;7749:2;7753:5;7733:9;:26::i;:::-;-1:-1:-1;7777:4:0;7488:301;;;;;:::o;5569:108::-;5611:66;5569:108;:::o;5235:35::-;5268:2;5235:35;:::o;5426:31::-;;;;:::o;12658:208::-;12754:7;;-1:-1:-1;;;;;12754:7:0;12740:10;:21;12732:52;;;;;-1:-1:-1;;;12732:52:0;;;;;;;;;;;;-1:-1:-1;;;12732:52:0;;;;;;;;;;;;;;;12815:6;:16;;-1:-1:-1;;;;;12815:16:0;;;-1:-1:-1;;;;;;12815:16:0;;;;;;;12842:6;:16;;;;;;;;;;;12658:208::o;11242:32::-;;;;:::o;11281:::-;;;;:::o;14846:1238::-;14895:14;11493:8;;11505:1;11493:13;11485:41;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;;;;11548:1;11537:8;:12;;;11548:1;14964:13;:11;:13::i;:::-;-1:-1:-1;15026:6:0;;15019:39;;;-1:-1:-1;;;15019:39:0;;15052:4;15019:39;;;;;;14922:55;;-1:-1:-1;14922:55:0;;-1:-1:-1;15003:13:0;;-1:-1:-1;;;;;15026:6:0;;;;15019:24;;:39;;;;;;;;;;;;;;15026:6;15019:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15019:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15019:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15019:39:0;15092:6;;15085:39;;;-1:-1:-1;;;15085:39:0;;15118:4;15085:39;;;;;;15019;;-1:-1:-1;15069:13:0;;-1:-1:-1;;;;;15092:6:0;;;;15085:24;;:39;;;;;15019;;15085;;;;;;;;15092:6;15085:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15085:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15085:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15085:39:0;;-1:-1:-1;15135:12:0;15150:23;:8;-1:-1:-1;;;;;15150:23:0;;;:12;:23;:::i;:::-;15135:38;-1:-1:-1;15184:12:0;15199:23;:8;-1:-1:-1;;;;;15199:23:0;;;:12;:23;:::i;:::-;15184:38;;15235:10;15248:30;15257:9;15268;15248:8;:30::i;:::-;15289:17;15309:11;15235:43;;-1:-1:-1;15413:17:0;15409:352;;15459:54;10753:5;15459:31;15469:20;:7;15481;15469:20;:11;:20;:::i;:::-;15459:9;:31::i;:54::-;15447:66;;15527:36;15541:1;10753:5;15527;:36::i;:::-;15409:352;;;15663:86;-1:-1:-1;;;;;15672:37:0;;:25;:7;15684:12;15672:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;15711:37:0;;:25;:7;15723:12;15711:25;:11;:25;:::i;:::-;:37;;;;;;15663:8;:86::i;:::-;15651:98;;15409:352;15791:1;15779:9;:13;15771:64;;;;-1:-1:-1;;;15771:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15846:20;15852:2;15856:9;15846:5;:20::i;:::-;15879:49;15887:8;15897;15907:9;15918;15879:7;:49::i;:::-;15943:5;15939:47;;;15977:8;;15958:28;;-1:-1:-1;;;;;15963:8:0;;;;-1:-1:-1;;;15977:8:0;;;15958:28;:18;:28;:::i;:::-;15950:5;:36;15939:47;16042:34;;;;;;;;;;;;;;16047:10;;16042:34;;;;;;;;-1:-1:-1;;11583:1:0;11572:8;:12;-1:-1:-1;14846:1238:0;;;-1:-1:-1;;;;;;14846:1238:0:o;5308:41::-;;;;;;;;;;;;;:::o;11320:17::-;;;;:::o;5684:38::-;;;;;;;;;;;;;:::o;16196:1464::-;16245:12;16259;11493:8;;11505:1;11493:13;11485:41;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;;;;11548:1;11537:8;:12;;;11548:1;16326:13;:11;:13::i;:::-;-1:-1:-1;16383:6:0;;16464;;16543:40;;;-1:-1:-1;;;16543:40:0;;16577:4;16543:40;;;;;;16284:55;;-1:-1:-1;16284:55:0;;-1:-1:-1;;;;;;16383:6:0;;;;16464;;;16365:15;;16383:6;;16543:25;;:40;;;;;;;;;;;;;;16383:6;16543:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16543:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16543:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16543:40:0;16610;;;-1:-1:-1;;;16610:40:0;;16644:4;16610:40;;;;;;16543;;-1:-1:-1;16594:13:0;;-1:-1:-1;;;;;16610:25:0;;;;;:40;;;;;16543;;16610;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16610:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16610:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16610:40:0;16696:4;16661:14;16678:24;;;:9;16610:40;16678:24;;;;;16610:40;;-1:-1:-1;16728:30:0;16737:9;16748;16728:8;:30::i;:::-;16769:17;16789:11;16715:43;;-1:-1:-1;16789:11:0;16899:23;:9;16913:8;16899:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;17032:12:0;17006:23;:9;17020:8;17006:23;:13;:23;:::i;:::-;:38;;;;;;16996:48;;17121:1;17111:7;:11;:26;;;;;17136:1;17126:7;:11;17111:26;17103:77;;;;-1:-1:-1;;;17103:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17191:31;17205:4;17212:9;17191:5;:31::i;:::-;17233:35;17247:7;17256:2;17260:7;17233:13;:35::i;:::-;17279;17293:7;17302:2;17306:7;17279:13;:35::i;:::-;17336:40;;;-1:-1:-1;;;17336:40:0;;17370:4;17336:40;;;;;;-1:-1:-1;;;;;17336:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17336:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17336:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17336:40:0;17398;;;-1:-1:-1;;;17398:40:0;;17432:4;17398:40;;;;;;17336;;-1:-1:-1;;;;;;17398:25:0;;;;;:40;;;;;17336;;17398;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17398:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17398:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17398:40:0;;-1:-1:-1;17451:49:0;17459:8;17398:40;17479:9;17490;17451:7;:49::i;:::-;17515:5;17511:47;;;17549:8;;17530:28;;-1:-1:-1;;;;;17535:8:0;;;;-1:-1:-1;;;17549:8:0;;;17530:28;:18;:28;:::i;:::-;17522:5;:36;17511:47;17614:38;;;;;;;;;;;;;;-1:-1:-1;;;;;17614:38:0;;;17619:10;;17614:38;;;;;;;;;;;11560:1;;;;;;;;;11583;11572:8;:12;;;;16196:1464;;;:::o;5185:43::-;;;;;;;;;;;;;;-1:-1:-1;;;5185:43:0;;;;:::o;7341:139::-;7401:4;7418:32;7428:10;7440:2;7444:5;7418:9;:32::i;10712:46::-;10753:5;10712:46;:::o;19696:334::-;11493:8;;11505:1;11493:13;11485:41;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;;;;11548:1;11537:8;:12;19765:6;;19815;;19919:8;;19874:40;;;-1:-1:-1;;;19874:40:0;;19908:4;19874:40;;;;;;-1:-1:-1;;;;;19765:6:0;;;;19815;;;;19847:82;;19765:6;;19870:2;;19874:54;;-1:-1:-1;;;;;19919:8:0;;19765:6;;19874:25;;:40;;;;;;;;;;;;;;;19765:6;19874:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19874:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19874:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19874:40:0;;:54;:44;:54;:::i;:::-;19847:13;:82::i;:::-;20012:8;;19967:40;;;-1:-1:-1;;;19967:40:0;;20001:4;19967:40;;;;;;19940:82;;19954:7;;19963:2;;19967:54;;-1:-1:-1;;;20012:8:0;;-1:-1:-1;;;;;20012:8:0;;-1:-1:-1;;;;;19967:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;19940:82:0;-1:-1:-1;;11583:1:0;11572:8;:12;-1:-1:-1;19696:334:0:o;10862:22::-;;;-1:-1:-1;;;;;10862:22:0;;:::o;10919:21::-;;;-1:-1:-1;;;;;10919:21:0;;:::o;7797:670::-;7943:15;7931:8;:27;;7923:56;;;;;-1:-1:-1;;;7923:56:0;;;;;;;;;;;;-1:-1:-1;;;7923:56:0;;;;;;;;;;;;;;;8095:16;;-1:-1:-1;;;;;8191:13:0;;;7990:14;8191:13;;;:6;:13;;;;;;;;:15;;;;;;;;;8140:77;;5611:66;8140:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8140:77:0;;;;;8130:88;;;;;;-1:-1:-1;;;8031:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8031:202:0;;;;;;8007:237;;;;;;;;;8282:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7990:14;;8191:15;8282:26;;;;;-1:-1:-1;;8282:26:0;;;;;;;;;;8191:15;8282:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8282:26:0;;-1:-1:-1;;8282:26:0;;;-1:-1:-1;;;;;;;8327:30:0;;;;;;:59;;;8381:5;-1:-1:-1;;;;;8361:25:0;:16;-1:-1:-1;;;;;8361:25:0;;8327:59;8319:98;;;;;-1:-1:-1;;;8319:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8428:31;8437:5;8444:7;8453:5;8428:8;:31::i;:::-;7797:670;;;;;;;;;:::o;5356:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20079:158::-;11493:8;;11505:1;11493:13;11485:41;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;-1:-1:-1;;;11485:41:0;;;;;;;;;;;;;;;11548:1;11537:8;:12;20135:6;;20128:39;;;-1:-1:-1;;;20128:39:0;;20161:4;20128:39;;;;;;20120:109;;-1:-1:-1;;;;;20135:6:0;;20128:24;;:39;;;;;;;;;;;;;;20135:6;20128:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20128:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20128:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20128:39:0;20176:6;;20169:39;;;-1:-1:-1;;;20169:39:0;;20202:4;20169:39;;;;;;-1:-1:-1;;;;;20176:6:0;;;;20169:24;;:39;;;;;20128;;20169;;;;;;;;20176:6;20169:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20169:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20169:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20169:39:0;20210:8;;-1:-1:-1;;;;;20210:8:0;;;;-1:-1:-1;;;20220:8:0;;;20120:7;:109::i;:::-;11583:1;11572:8;:12;20079:158::o;11839:285::-;10817:34;;;;;;;;;;;;;;;;;11967:43;;-1:-1:-1;;;;;11967:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11967:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11956:55:0;;;;11921:12;;11935:17;;11956:10;;;11967:43;11956:55;;;25:18:-1;11956: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;;;11956: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;;11920:91:0;;;;12030:7;:57;;;;-1:-1:-1;12042:11:0;;:16;;:44;;;12073:4;12062:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12062:24:0;12042:44;12022:94;;;;;-1:-1:-1;;;12022:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11839:285;;;;;:::o;4909:142::-;4961:6;4988;;;:30;;-1:-1:-1;;5003:5:0;;;5017:1;5012;5003:5;5012:1;4998:15;;;;;:20;4988:30;4980:63;;;;;-1:-1:-1;;;4980:63:0;;;;;;;;;;;;-1:-1:-1;;;4980:63:0;;;;;;;;;;;;;;4772:129;4856:5;;;4851:16;;;;4843:50;;;;;-1:-1:-1;;;4843:50:0;;;;;;;;;;;;-1:-1:-1;;;4843:50:0;;;;;;;;;;;;;;12951:858;-1:-1:-1;;;;;13063:23:0;;;;;:50;;-1:-1:-1;;;;;;13090:23:0;;;13063:50;13055:80;;;;;-1:-1:-1;;;13055:80:0;;;;;;;;;;;;-1:-1:-1;;;13055:80:0;;;;;;;;;;;;;;;13250:18;;13177:23;:15;:23;;;-1:-1:-1;;;13250:18:0;;;;13233:35;;;13306:15;;;;;;:33;;-1:-1:-1;;;;;;13325:14:0;;;;13306:33;:51;;;;-1:-1:-1;;;;;;13343:14:0;;;;13306:51;13302:336;;;13512:11;13459:64;;13464:44;13498:9;13464:27;13481:9;13464:16;:27::i;:::-;-1:-1:-1;;;;;13464:33:0;;:44;:33;:44;:::i;:::-;13435:20;:88;;-1:-1:-1;;;;;13459:50:0;;;;:64;;;;13435:88;;;13562:64;;;13567:44;13601:9;13567:27;13584:9;13567:16;:27::i;:44::-;13538:20;:88;;-1:-1:-1;;;;;13562:50:0;;;;:64;;;;13538:88;;;13302:336;13648:8;:28;;-1:-1:-1;;13648:28:0;-1:-1:-1;;;;;13648:28:0;;;;;;;-1:-1:-1;;;;13687:28:0;-1:-1:-1;;;13687:28:0;;;;;;;;;-1:-1:-1;;;;;13726:35:0;-1:-1:-1;;;13726:35:0;;;;;;;;;13777:24;;;13782:8;;;13777:24;;13792:8;;;;;;;13777:24;;;;;;;;;;;;;;;;;12951:858;;;;;;:::o;6781:169::-;-1:-1:-1;;;;;6862:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6911:31;;;;;;;;;;;;;;;;;6781:169;;;:::o;6958:220::-;-1:-1:-1;;;;;7052:15:0;;;;;;:9;:15;;;;;;:26;;7072:5;7052:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;7034:15:0;;;;;;;:9;:15;;;;;;:44;;;;7105:13;;;;;;;:24;;7123:5;7105:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;7089:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;7145:25;;;;;;;7089:13;;7145:25;;;;;;;;;;;;;6958:220;;;:::o;13899:835::-;13972:10;13995:13;14027:7;;;;;;;;;-1:-1:-1;;;;;14027:7:0;-1:-1:-1;;;;;14011:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14011:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14011:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14011:32:0;14106:5;;-1:-1:-1;;;;;14062:19:0;;;;;;-1:-1:-1;14011:32:0;;-1:-1:-1;14106:5:0;14137:590;;14167:11;;14163:494;;14199:10;14212:41;14222:30;-1:-1:-1;;;;;14222:15:0;;;;:30;;;:19;:30;:::i;14212:41::-;14199:54;;14272:14;14289:17;14299:6;14289:9;:17::i;:::-;14272:34;;14337:9;14329:5;:17;14325:317;;;14371:14;14388:37;14404:20;:5;14414:9;14404:20;:9;:20;:::i;:::-;14388:11;;;:37;:15;:37;:::i;:::-;14371:54;-1:-1:-1;14448:16:0;14467:27;14484:9;14467:12;:5;14477:1;14467:12;:9;:12;:::i;:::-;:16;:27;:16;:27;:::i;:::-;14448:46;;14517:14;14546:11;14534:9;:23;;;;;;;-1:-1:-1;14584:13:0;;14580:42;;14599:23;14605:5;14612:9;14599:5;:23::i;:::-;14325:317;;;;14163:494;;;14137:590;;;14678:11;;14674:53;;14714:1;14706:5;:9;14674:53;13899:835;;;;;;:::o;8761:303::-;8806:6;8833:1;8829;:5;8825:232;;;-1:-1:-1;8855:1:0;8888;8884;8880:5;;:9;8904:92;8915:1;8911;:5;8904:92;;;8941:1;8937:5;;8979:1;8974;8970;8966;:5;;;;;;:9;8965:15;;;;;;8961:19;;8904:92;;;8825:232;;;;9017:6;;9013:44;;-1:-1:-1;9044:1:0;9013:44;8761:303;;;:::o;6355:201::-;6428:11;;:22;;6444:5;6428:22;:15;:22;:::i;:::-;6414:11;:36;;;-1:-1:-1;;;;;6477:13:0;;;;:9;:13;;;;;;:24;;6495:5;6477:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6461:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6517:31;;;;;;;6461:13;;;;6517:31;;;;;;;;;;6355:201;;:::o;8547:96::-;8599:6;8626:1;8622;:5;:13;;8634:1;8622:13;;;8630:1;8622:13;8618:17;8547:96;-1:-1:-1;;;8547:96:0:o;6564:209::-;-1:-1:-1;;;;;6643:15:0;;;;;;:9;:15;;;;;;:26;;6663:5;6643:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6625:15:0;;;;;;:9;:15;;;;;:44;;;;6694:11;:22;;6710:5;6694:22;:15;:22;:::i;:::-;6680:11;:36;;;6732:33;;;;;;;;-1:-1:-1;;;;;6732:33:0;;;;;;;;;;;;;6564:209;;:::o;9333:120::-;-1:-1:-1;;;;;9409:10:0;-1:-1:-1;;;9409:17:0;;9333:120::o;9524:108::-;9584:9;-1:-1:-1;;;;;9614:10:0;;-1:-1:-1;;;;;9610:14:0;;9614:10;9610:14;;;;;;9524:108;-1:-1:-1;;;9524:108:0:o;4636:128::-;4720:5;;;4715:16;;;;4707:49;;;;;-1:-1:-1;;;4707:49:0;;;;;;;;;;;;-1:-1:-1;;;4707:49:0;;;;;;;;;;;;;

Swarm Source

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