Contract 0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3e21e6b144fdaa26c0ba5594360fce7f5dc3fb4a8bb3ca4e35c3a23ad9c45780Approve13558872022-07-02 10:54:3694 days 5 hrs ago0xdd3f9005e5c045d7515b3beb4ff92fda1df8cd9b IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.004682601
0x048d48e2de68060b1d27bb147e4580d97618f2faf707c82f7e042647b8f680d7Approve13205972022-06-27 5:47:0699 days 10 hrs ago0x22b7daf3f356462c196bc99a471d11e1ea0b16b6 IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.004682601
0x194ab412cd6beb0315bfe62819497481cc8848701f776417d8d9f9ae772e63ddApprove10339202022-05-15 23:00:06141 days 17 hrs ago0x40b22fc7b15efcd326e4a91c47d5f51dd075b19e IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0020901
0x9ae0e8a7875f7932e7eb4756be8a6e375956a34b481b83c6f28a5590397e7747Approve9559572022-05-04 11:35:36153 days 4 hrs ago0xca8554acec8b524eef014792f3f22dcbf94c9b55 IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.004682601
0x89ec91e09957f8c705168ffc7e1e1070c2518546d3a1455d0893a7a9c1fed314Approve9185472022-04-29 0:47:18158 days 15 hrs ago0xae343baa00006e17565118d59e294007b156a112 IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.004641
0x5180940392886b4c5fc9ef0284bf6f23799accdf99dc77534fc817bea8c05578Approve9115062022-04-27 23:43:06159 days 16 hrs ago0x40b22fc7b15efcd326e4a91c47d5f51dd075b19e IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0026126
0x8a611e90945ed99a887c8706d8eb1b22f66dfb28c42cbc502c64f73cc21c412dApprove8353102022-04-17 0:57:48170 days 15 hrs ago0xf67336e671f1588d71c8f1e50a79c2715717e07a IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.004682601
0xca90cc418a63fc6d4fd8a50a7c4059f865b5deb6afe2943955941829be348c16Approve8336272022-04-16 19:09:06170 days 21 hrs ago0x5c364b003f01a857cc4d57e08cd9347e6e0568bf IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.004682601
0xe313a3c5bb973dcb02491ae2edeebaddaddd2e84b3b2234b1a89b3e28aa809dbTransfer8100282022-04-13 10:12:00174 days 6 hrs agoBeamswap: Deployer IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0038957
0x8024d1e9e6d9612ad09dac6a3134d97302cb8677e8d73e74a9e24846bf2e9d83Transfer8100252022-04-13 10:11:24174 days 6 hrs agoBeamswap: Deployer IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0028748
0x1ea93cd7bc225cebd2bc021f814822530a3a40bfda17a2b67d21578c13ecb964Transfer8054402022-04-12 18:32:54174 days 21 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0038948
0xb662ac4bdef6655c99566eb7ca83eb79c6b7602cc20a5a69fc9e418491e30801Transfer8054332022-04-12 18:31:18174 days 21 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0028748
0xa896c1ecd81b7bda57631650a91d8761cb58e7e16074e7113ca6eb5d00e005d0Transfer8054172022-04-12 18:28:00174 days 21 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0028748
0xab771194daf34ce6e18196f52be6bb8baf32ae7b16f32f94155a5355fdaab583Transfer7912822022-04-10 17:48:06176 days 22 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.003953222
0x08921acdc65d502807698d90a29097d9bb65ed08bed48c27ace639ef01bcc07aTransfer7891242022-04-10 10:22:36177 days 5 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.003953222
0xd4c8c90bae11d8e8b9bbf58cb5b531b68e847fde1899574095bd0ccb491ebb0eTransfer7826492022-04-09 12:10:42178 days 4 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0039541355
0x4262f56a0cc7613167b632959721216c0c26ebf29c053e31168dc7b6f9932916Transfer7636722022-04-06 18:53:54180 days 21 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0039541355
0x421449ac439ddd58407659d7d06bbbdf49e65f70b1c13b2aa12d0a64ce8dfa6eApprove7456642022-04-04 4:43:12183 days 11 hrs ago0x54c1530628a67c3ef537f01712b9bb517acdaec2 IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.004659534
0x56778e7b8b354b72fe0bb15210446effc50d28c208be8d8fb90bc93bc404ba64Transfer7400342022-04-03 9:16:54184 days 7 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0039541355
0x51c27cdd019a4da058e598612849b91b48f0c41a058bd5ab815208826abd7d79Approve6783162022-03-25 12:20:30193 days 4 hrs ago0xd7518b30b47a611df86b658b81efbe85f42537a9 IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.009282
0x18f057b4b8048fbd1007810ef2e64c5b2338aef396acc2c999a5ac6e355720ecApprove6741142022-03-24 21:42:42193 days 18 hrs ago0x7d12f9c94183f91bef3edf40b561c2e846ce900f IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.009282
0xde0f43e5338da275a4d78a74f60a3e1e2e55588bfc614259f5fcc0414e7148e1Transfer6702402022-03-24 8:11:48194 days 8 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.003953222
0x37de94f2757e39e1e438852086e38c89805d3768dda0ed177269e571db2298f1Approve6691452022-03-24 4:13:00194 days 12 hrs ago0x269cb65428f744c2d3c31bf47c55ed492a684973 IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.009282
0x93fa829e809b8856edc3a7da4ff1f379c66df3e2b470dfba65fa6ef45310d9d1Approve6543832022-03-22 0:56:06196 days 15 hrs ago0x018ba23dce557b42776745dbe1ac5c29a652bc10 IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.009282
0xdad040037ca3e933949610d7c502531486500ec97a0972aeefc22e0d29ef3fc8Transfer6503232022-03-21 11:02:18197 days 5 hrs ago0x412489b1876e710e616c4300a78897408abcbbfc IN  0xa35b2c07cb123ea5e1b9c7530d0812e7e03ec3c10 GLMR0.0077896
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x9ac4c88c4f2e4663eb5341f4dfa5f286055e47609c16b066f09f62f8ecd542382000862022-01-15 13:45:36262 days 2 hrs ago Beamswap: Factory  Contract Creation0 GLMR
[ Download CSV Export 
Loading

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

Contract Name:
BeamSwapPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-01-16
*/

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

// File contracts/uniswapv2/interfaces/IBeamSwapPair.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

interface IBeamSwapPair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 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 (uint256);

    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    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 (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}


// File contracts/uniswapv2/interfaces/IBeamSwapERC20.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

interface IBeamSwapERC20 {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 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 (uint256);

    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
}


// File contracts/uniswapv2/libraries/SafeMath.sol

pragma solidity =0.5.16;

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

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}


// File contracts/uniswapv2/BeamSwapERC20.sol

pragma solidity =0.5.16;
contract BeamSwapERC20 is IBeamSwapERC20 {
    using SafeMath for uint256;

    string public constant name = 'BeamSwap LPs';
    string public constant symbol = 'BEAM-LP';
    uint8 public constant decimals = 18;
    uint256  public totalSupply;
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) 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 => uint256) public nonces;

    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

    constructor() public {
        uint256 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, uint256 value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint256 value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint256 value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint256 value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint256 value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) external returns (bool) {
        if (allowance[from][msg.sender] != uint256(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'BeamSwap: 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, 'BeamSwap: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}


// File contracts/uniswapv2/libraries/Math.sol

pragma solidity =0.5.16;

// a library for performing various math operations

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

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


// File contracts/uniswapv2/libraries/UQ112x112.sol

pragma solidity =0.5.16;

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

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

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

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

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


// File contracts/uniswapv2/interfaces/IERC20.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}


// File contracts/uniswapv2/interfaces/IBeamSwapFactory.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

interface IBeamSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    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(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);

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

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


// File contracts/uniswapv2/interfaces/IBeamSwapCallee.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

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


// File contracts/uniswapv2/BeamSwapPair.sol

pragma solidity =0.5.16;
contract BeamSwapPair is IBeamSwapPair, BeamSwapERC20 {
    using SafeMath for uint256;
    using UQ112x112 for uint224;

    uint256 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

    uint256 public price0CumulativeLast;
    uint256 public price1CumulativeLast;
    uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint256 private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, "BeamSwap: 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,
        uint256 value
    ) private {
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(SELECTOR, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "BeamSwap: TRANSFER_FAILED"
        );
    }

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 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, "BeamSwap: FORBIDDEN"); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(
        uint256 balance0,
        uint256 balance1,
        uint112 _reserve0,
        uint112 _reserve1
    ) private {
        require(
            balance0 <= uint112(-1) && balance1 <= uint112(-1),
            "BeamSwap: 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 +=
                uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) *
                timeElapsed;
            price1CumulativeLast +=
                uint256(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 = IBeamSwapFactory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint256 _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint256 rootK = Math.sqrt(uint256(_reserve0).mul(_reserve1));
                uint256 rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint256 numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint256 denominator = (rootK.mul(1307692308) / 1000000000).add(rootKLast);
                    uint256 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 (uint256 liquidity) {
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        uint256 balance0 = IERC20(token0).balanceOf(address(this));
        uint256 balance1 = IERC20(token1).balanceOf(address(this));
        uint256 amount0 = balance0.sub(_reserve0);
        uint256 amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint256 _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, "BeamSwap: INSUFFICIENT_LIQUIDITY_MINTED");
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint256(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 (uint256 amount0, uint256 amount1)
    {
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        uint256 balance0 = IERC20(_token0).balanceOf(address(this));
        uint256 balance1 = IERC20(_token1).balanceOf(address(this));
        uint256 liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint256 _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,
            "BeamSwap: 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 = uint256(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(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external lock {
        require(
            amount0Out > 0 || amount1Out > 0,
            "BeamSwap: INSUFFICIENT_OUTPUT_AMOUNT"
        );
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        require(
            amount0Out < _reserve0 && amount1Out < _reserve1,
            "BeamSwap: INSUFFICIENT_LIQUIDITY"
        );

        uint256 balance0;
        uint256 balance1;
        {
            // scope for _token{0,1}, avoids stack too deep errors
            address _token0 = token0;
            address _token1 = token1;
            require(to != _token0 && to != _token1, "BeamSwap: 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)
                IBeamSwapCallee(to).BeamSwapCall(
                    msg.sender,
                    amount0Out,
                    amount1Out,
                    data
                );
            balance0 = IERC20(_token0).balanceOf(address(this));
            balance1 = IERC20(_token1).balanceOf(address(this));
        }
        uint256 amount0In = balance0 > _reserve0 - amount0Out
            ? balance0 - (_reserve0 - amount0Out)
            : 0;
        uint256 amount1In = balance1 > _reserve1 - amount1Out
            ? balance1 - (_reserve1 - amount1Out)
            : 0;
        require(
            amount0In > 0 || amount1In > 0,
            "BeamSwap: INSUFFICIENT_INPUT_AMOUNT"
        );
        {
            // scope for reserve{0,1}Adjusted, avoids stack too deep errors
            uint256 balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
            uint256 balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
            require(
                balance0Adjusted.mul(balance1Adjusted) >=
                    uint256(_reserve0).mul(_reserve1).mul(1000**2),
                "Beamswap: 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 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"}]

60806040526001600c5534801561001557600080fd5b5060405146908060526124698239604080519182900360520182208282018252600c83526b4265616d53776170204c507360a01b6020938401528151808301835260018152603160f81b908401528151808401919091527f914f5ad80ee1d74e754de1523211b4460f7bd73d18055968f8c3d80d847e90b1818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612362806101076000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610544578063d505accf1461054c578063dd62ed3e1461059d578063fff6cae9146105cb576101b9565b8063ba9a7a561461050e578063bc25cf7714610516578063c45a01551461053c576101b9565b80637ecebe00116100d35780637ecebe001461047557806389afcb441461049b57806395d89b41146104da578063a9059cbb146104e2576101b9565b80636a6278421461042157806370a08231146104475780637464fc3d1461046d576101b9565b806323b872dd116101665780633644e515116101405780633644e515146103db578063485cc955146103e35780635909c0d5146104115780635a3d549314610419576101b9565b806323b872dd1461037f57806330adf81f146103b5578063313ce567146103bd576101b9565b8063095ea7b311610197578063095ea7b3146103015780630dfe16811461034157806318160ddd14610365576101b9565b8063022c0d9f146101be57806306fdde031461024c5780630902f1ac146102c9575b600080fd5b61024a600480360360808110156101d457600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561020b57600080fd5b82018360208201111561021d57600080fd5b8035906020019184600183028401116401000000008311171561023f57600080fd5b5090925090506105d3565b005b610254610b3c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d1610b75565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61032d6004803603604081101561031757600080fd5b506001600160a01b038135169060200135610b9f565b604080519115158252519081900360200190f35b610349610bb6565b604080516001600160a01b039092168252519081900360200190f35b61036d610bc5565b60408051918252519081900360200190f35b61032d6004803603606081101561039557600080fd5b506001600160a01b03813581169160208101359091169060400135610bcb565b61036d610c65565b6103c5610c89565b6040805160ff9092168252519081900360200190f35b61036d610c8e565b61024a600480360360408110156103f957600080fd5b506001600160a01b0381358116916020013516610c94565b61036d610d39565b61036d610d3f565b61036d6004803603602081101561043757600080fd5b50356001600160a01b0316610d45565b61036d6004803603602081101561045d57600080fd5b50356001600160a01b0316611044565b61036d611056565b61036d6004803603602081101561048b57600080fd5b50356001600160a01b031661105c565b6104c1600480360360208110156104b157600080fd5b50356001600160a01b031661106e565b6040805192835260208301919091528051918290030190f35b610254611413565b61032d600480360360408110156104f857600080fd5b506001600160a01b03813516906020013561144c565b61036d611459565b61024a6004803603602081101561052c57600080fd5b50356001600160a01b031661145f565b6103496115c9565b6103496115d8565b61024a600480360360e081101561056257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356115e7565b61036d600480360360408110156105b357600080fd5b506001600160a01b038135811691602001351661180f565b61024a61182c565b600c5460011461061d576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55841515806106305750600084115b61066b5760405162461bcd60e51b815260040180806020018281038252602481526020018061230a6024913960400191505060405180910390fd5b600080610676610b75565b5091509150816001600160701b03168710801561069b5750806001600160701b031686105b6106ec576040805162461bcd60e51b815260206004820181905260248201527f4265616d537761703a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b60065460075460009182916001600160a01b0391821691908116908916821480159061072a5750806001600160a01b0316896001600160a01b031614155b61077b576040805162461bcd60e51b815260206004820152601460248201527f4265616d537761703a20494e56414c49445f544f000000000000000000000000604482015290519081900360640190fd5b8a1561078c5761078c828a8d61198d565b891561079d5761079d818a8c61198d565b861561085857886001600160a01b03166399f9fa51338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083f57600080fd5b505af1158015610853573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b5051925060009150506001600160701b0385168a90038311610961576000610970565b89856001600160701b03160383035b9050600089856001600160701b031603831161098d57600061099c565b89856001600160701b03160383035b905060008211806109ad5750600081115b6109e85760405162461bcd60e51b81526004018080602001828103825260238152602001806122e76023913960400191505060405180910390fd5b6000610a1c6109fe84600363ffffffff611b4016565b610a10876103e863ffffffff611b4016565b9063ffffffff611bac16565b90506000610a346109fe84600363ffffffff611b4016565b9050610a65620f4240610a596001600160701b038b8116908b1663ffffffff611b4016565b9063ffffffff611b4016565b610a75838363ffffffff611b4016565b1015610ac8576040805162461bcd60e51b815260206004820152600b60248201527f4265616d737761703a204b000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ad684848888611c04565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600c81526020017f4265616d53776170204c5073000000000000000000000000000000000000000081525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610bac338484611de1565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c50576001600160a01b0384166000908152600260209081526040808320338452909152902054610c2b908363ffffffff611bac16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c5b848484611e43565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610cf3576040805162461bcd60e51b815260206004820152601360248201527f4265616d537761703a20464f5242494444454e00000000000000000000000000604482015290519081900360640190fd5b600680546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d91576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580610da1610b75565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610df557600080fd5b505afa158015610e09573d6000803e3d6000fd5b505050506040513d6020811015610e1f57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d6020811015610e9c57600080fd5b505190506000610ebb836001600160701b03871663ffffffff611bac16565b90506000610ed8836001600160701b03871663ffffffff611bac16565b90506000610ee68787611efd565b60005490915080610f2357610f0f6103e8610a10610f0a878763ffffffff611b4016565b61206b565b9850610f1e60006103e86120bd565b610f72565b610f6f6001600160701b038916610f40868463ffffffff611b4016565b81610f4757fe5b046001600160701b038916610f62868563ffffffff611b4016565b81610f6957fe5b04612153565b98505b60008911610fb15760405162461bcd60e51b81526004018080602001828103825260278152602001806122996027913960400191505060405180910390fd5b610fbb8a8a6120bd565b610fc786868a8a611c04565b8115610ff757600854610ff3906001600160701b0380821691600160701b90041663ffffffff611b4016565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146110bb576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c819055806110cb610b75565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561112757600080fd5b505afa15801561113b573d6000803e3d6000fd5b505050506040513d602081101561115157600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561119f57600080fd5b505afa1580156111b3573d6000803e3d6000fd5b505050506040513d60208110156111c957600080fd5b5051306000908152600160205260408120549192506111e88888611efd565b600054909150806111ff848763ffffffff611b4016565b8161120657fe5b049a508061121a848663ffffffff611b4016565b8161122157fe5b04995060008b118015611234575060008a115b61126f5760405162461bcd60e51b81526004018080602001828103825260278152602001806122c06027913960400191505060405180910390fd5b611279308461216b565b611284878d8d61198d565b61128f868d8c61198d565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156112d557600080fd5b505afa1580156112e9573d6000803e3d6000fd5b505050506040513d60208110156112ff57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561134b57600080fd5b505afa15801561135f573d6000803e3d6000fd5b505050506040513d602081101561137557600080fd5b5051935061138585858b8b611c04565b81156113b5576008546113b1906001600160701b0380821691600160701b90041663ffffffff611b4016565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600781526020017f4245414d2d4c500000000000000000000000000000000000000000000000000081525081565b6000610bac338484611e43565b6103e881565b600c546001146114a9576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926115589285928792611553926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561151b57600080fd5b505afa15801561152f573d6000803e3d6000fd5b505050506040513d602081101561154557600080fd5b50519063ffffffff611bac16565b61198d565b600854604080516370a0823160e01b815230600482015290516115bf928492879261155392600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561151b57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b4284101561163c576040805162461bcd60e51b815260206004820152601160248201527f4265616d537761703a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611772573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117a85750886001600160a01b0316816001600160a01b0316145b6117f9576040805162461bcd60e51b815260206004820152601b60248201527f4265616d537761703a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b611804898989611de1565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611876576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611986926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156118c757600080fd5b505afa1580156118db573d6000803e3d6000fd5b505050506040513d60208110156118f157600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561193e57600080fd5b505afa158015611952573d6000803e3d6000fd5b505050506040513d602081101561196857600080fd5b50516008546001600160701b0380821691600160701b900416611c04565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b03167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b60208310611a535780518252601f199092019160209182019101611a34565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ab5576040519150601f19603f3d011682016040523d82523d6000602084013e611aba565b606091505b5091509150818015611ae8575080511580611ae85750808060200190516020811015611ae557600080fd5b50515b611b39576040805162461bcd60e51b815260206004820152601960248201527f4265616d537761703a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b5050505050565b6000811580611b5b57505080820282828281611b5857fe5b04145b610bb0576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610bb0576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6001600160701b038411801590611c2257506001600160701b038311155b611c73576040805162461bcd60e51b815260206004820152601260248201527f4265616d537761703a204f564552464c4f570000000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611ca357506001600160701b03841615155b8015611cb757506001600160701b03831615155b15611d28578063ffffffff16611ce585611cd086612209565b6001600160e01b03169063ffffffff61221b16565b600980546001600160e01b03929092169290920201905563ffffffff8116611d1084611cd087612209565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff16600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611e6c908263ffffffff611bac16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611ea1908263ffffffff61224016565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4e57600080fd5b505afa158015611f62573d6000803e3d6000fd5b505050506040513d6020811015611f7857600080fd5b5051600b546001600160a01b038216158015945091925090612057578015612052576000611fbb610f0a6001600160701b0388811690881663ffffffff611b4016565b90506000611fc88361206b565b90508082111561204f576000611ff6611fe7848463ffffffff611bac16565b6000549063ffffffff611b4016565b9050600061202b83633b9aca0061201787634df1cd1463ffffffff611b4016565b8161201e57fe5b049063ffffffff61224016565b9050600081838161203857fe5b049050801561204b5761204b87826120bd565b5050505b50505b612063565b8015612063576000600b555b505092915050565b600060038211156120ae575080600160028204015b818110156120a85780915060028182858161209757fe5b0401816120a057fe5b049050612080565b506120b8565b81156120b8575060015b919050565b6000546120d0908263ffffffff61224016565b60009081556001600160a01b0383168152600160205260409020546120fb908263ffffffff61224016565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106121625781612164565b825b9392505050565b6001600160a01b038216600090815260016020526040902054612194908263ffffffff611bac16565b6001600160a01b038316600090815260016020526040812091909155546121c1908263ffffffff611bac16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161223857fe5b049392505050565b80820182811015610bb0576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4265616d537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444265616d537761703a20494e53554646494349454e545f4c49515549444954595f4255524e45444265616d537761703a20494e53554646494349454e545f494e5055545f414d4f554e544265616d537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a7231582013c88bfc04366e18194b3df75486edef14c097529764cab7c9dc21622f431afd64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

11623:10908:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11623:10908:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19399:2376;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19399:2376:0;;;;;;;;-1:-1:-1;;;;;19399:2376:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19399:2376:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19399:2376: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;19399:2376:0;;-1:-1:-1;19399:2376:0;-1:-1:-1;19399:2376:0;:::i;:::-;;4817:44;;;:::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;4817:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12645:313;;;:::i;:::-;;;;-1:-1:-1;;;;;12645:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6900:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6900:150:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11944:21;;;:::i;:::-;;;;-1:-1:-1;;;;;11944:21:0;;;;;;;;;;;;;;4958:27;;;:::i;:::-;;;;;;;;;;;;;;;;7208:307;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7208:307:0;;;;;;;;;;;;;;;;;:::i;5259:108::-;;;:::i;4916:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5116:31;;;:::i;13951:209::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13951:209:0;;;;;;;;;;:::i;12274:35::-;;;:::i;12316:::-;;;:::i;16370:1311::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16370:1311:0;-1:-1:-1;;;;;16370:1311:0;;:::i;4992:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4992:44:0;-1:-1:-1;;;;;4992:44:0;;:::i;12358:20::-;;;:::i;5374:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5374:41:0;-1:-1:-1;;;;;5374:41:0;;:::i;17793:1494::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17793:1494:0;-1:-1:-1;;;;;17793:1494:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4868:41;;;:::i;7058:142::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7058:142:0;;;;;;;;:::i;11753:49::-;;;:::i;21824:434::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21824:434:0;-1:-1:-1;;;;;21824:434:0;;:::i;11915:22::-;;;:::i;11972:21::-;;;:::i;7523:678::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7523:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5043:64::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5043:64:0;;;;;;;;;;:::i;22307:221::-;;;:::i;19399:2376::-;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;19576:14;;;;:32;;;19607:1;19594:10;:14;19576:32;19554:118;;;;-1:-1:-1;;;19554:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19684:17;19703;19726:13;:11;:13::i;:::-;19683:56;;;;;19800:9;-1:-1:-1;;;;;19787:22:0;:10;:22;:48;;;;;19826:9;-1:-1:-1;;;;;19813:22:0;:10;:22;19787:48;19765:130;;;;;-1:-1:-1;;;19765:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20063:6;;20102;;19908:16;;;;-1:-1:-1;;;;;20063:6:0;;;;20102;;;;20131:13;;;;;;;:30;;;20154:7;-1:-1:-1;;;;;20148:13:0;:2;-1:-1:-1;;;;;20148:13:0;;;20131:30;20123:63;;;;;-1:-1:-1;;;20123:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20205:14;;20201:58;;20221:38;20235:7;20244:2;20248:10;20221:13;:38::i;:::-;20312:14;;20308:58;;20328:38;20342:7;20351:2;20355:10;20328:13;:38::i;:::-;20419:15;;20415:215;;20469:2;-1:-1:-1;;;;;20453:32:0;;20508:10;20541;20574;20607:4;;20453:177;;;;;;;;;;;;;-1:-1:-1;;;;;20453:177:0;-1:-1:-1;;;;;20453:177: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;;20453:177:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20453:177:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20453:177:0;;;;20415:215;20656:40;;;-1:-1:-1;;;20656:40:0;;20690:4;20656:40;;;;;;-1:-1:-1;;;;;20656:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20656:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20656:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20656:40:0;20722;;;-1:-1:-1;;;20722:40:0;;20756:4;20722:40;;;;;;20656;;-1:-1:-1;;;;;;20722:25:0;;;;;:40;;;;;20656;;20722;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20722:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20722:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20722:40:0;;-1:-1:-1;20784:17:0;;-1:-1:-1;;;;;;;20815:22:0;;;;;20804:33;;:101;;20904:1;20804:101;;;20877:10;20865:9;-1:-1:-1;;;;;20865:22:0;;20853:8;:35;20804:101;20784:121;;20916:17;20959:10;20947:9;-1:-1:-1;;;;;20947:22:0;;20936:8;:33;:101;;21036:1;20936:101;;;21009:10;20997:9;-1:-1:-1;;;;;20997:22:0;;20985:8;:35;20936:101;20916:121;;21082:1;21070:9;:13;:30;;;;21099:1;21087:9;:13;21070:30;21048:115;;;;-1:-1:-1;;;21048:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21266:24;21293:40;21316:16;:9;21330:1;21316:16;:13;:16;:::i;:::-;21293:18;:8;21306:4;21293:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;21266:67;-1:-1:-1;21348:24:0;21375:40;21398:16;:9;21412:1;21398:16;:13;:16;:::i;21375:40::-;21348:67;-1:-1:-1;21519:46:0;21557:7;21519:33;-1:-1:-1;;;;;21519:18:0;;;;:33;;;:22;:33;:::i;:::-;:37;:46;:37;:46;:::i;:::-;21456:38;:16;21477;21456:38;:20;:38;:::i;:::-;:109;;21430:182;;;;;-1:-1:-1;;;21430:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12605:1;;21636:49;21644:8;21654;21664:9;21675;21636:7;:49::i;:::-;21701:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21701:66:0;;;21706:10;;21701:66;;;;;;;;;-1:-1:-1;;12628:1:0;12617:8;:12;-1:-1:-1;;;;;;;;;19399:2376:0:o;4817:44::-;;;;;;;;;;;;;;;;;;;:::o;12645:313::-;12860:8;;-1:-1:-1;;;;;12860:8:0;;;;-1:-1:-1;;;12891:8:0;;;;;;-1:-1:-1;;;12932:18:0;;;;;12645:313::o;6900:150::-;6967:4;6984:36;6993:10;7005:7;7014:5;6984:8;:36::i;:::-;-1:-1:-1;7038:4:0;6900:150;;;;;:::o;11944:21::-;;;-1:-1:-1;;;;;11944:21:0;;:::o;4958:27::-;;;;:::o;7208:307::-;-1:-1:-1;;;;;7310:15:0;;7289:4;7310:15;;;:9;:15;;;;;;;;7326:10;7310:27;;;;;;;;-1:-1:-1;;7310:42:0;7306:143;;-1:-1:-1;;;;;7399:15:0;;;;;;:9;:15;;;;;;;;7415:10;7399:27;;;;;;;;:38;;7431:5;7399:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7369:15:0;;;;;;:9;:15;;;;;;;;7385:10;7369:27;;;;;;;:68;7306:143;7459:26;7469:4;7475:2;7479:5;7459:9;:26::i;:::-;-1:-1:-1;7503:4:0;7208:307;;;;;:::o;5259:108::-;5301:66;5259:108;:::o;4916:35::-;4949:2;4916:35;:::o;5116:31::-;;;;:::o;13951:209::-;14047:7;;-1:-1:-1;;;;;14047:7:0;14033:10;:21;14025:53;;;;;-1:-1:-1;;;14025:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14109:6;:16;;-1:-1:-1;;;;;14109:16:0;;;;;;;;;;;14136:6;:16;;;;;;;;;;;13951:209::o;12274:35::-;;;;:::o;12316:::-;;;;:::o;16370:1311::-;16419:17;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;;;12593:1;16492:13;:11;:13::i;:::-;-1:-1:-1;16557:6:0;;16550:39;;;-1:-1:-1;;;16550:39:0;;16583:4;16550:39;;;;;;16449:56;;-1:-1:-1;16449:56:0;;-1:-1:-1;16531:16:0;;-1:-1:-1;;;;;16557:6:0;;;;16550:24;;:39;;;;;;;;;;;;;;16557:6;16550:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16550:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16550:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16550:39:0;16626:6;;16619:39;;;-1:-1:-1;;;16619:39:0;;16652:4;16619:39;;;;;;16550;;-1:-1:-1;16600:16:0;;-1:-1:-1;;;;;16626:6:0;;;;16619:24;;:39;;;;;16550;;16619;;;;;;;;16626:6;16619:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16619:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16619:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16619:39:0;;-1:-1:-1;16669:15:0;16687:23;:8;-1:-1:-1;;;;;16687:23:0;;;:12;:23;:::i;:::-;16669:41;-1:-1:-1;16721:15:0;16739:23;:8;-1:-1:-1;;;;;16739:23:0;;;:12;:23;:::i;:::-;16721:41;;16775:10;16788:30;16797:9;16808;16788:8;:30::i;:::-;16829:20;16852:11;16775:43;;-1:-1:-1;16956:17:0;16952:402;;17002:54;11797:5;17002:31;17012:20;:7;17024;17012:20;:11;:20;:::i;:::-;17002:9;:31::i;:54::-;16990:66;;17071:36;17085:1;11797:5;17071;:36::i;:::-;16952:402;;;17207:135;-1:-1:-1;;;;;17234:37:0;;:25;:7;17246:12;17234:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;17290:37:0;;:25;:7;17302:12;17290:25;:11;:25;:::i;:::-;:37;;;;;;17207:8;:135::i;:::-;17195:147;;16952:402;17384:1;17372:9;:13;17364:65;;;;-1:-1:-1;;;17364:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17440:20;17446:2;17450:9;17440:5;:20::i;:::-;17473:49;17481:8;17491;17501:9;17512;17473:7;:49::i;:::-;17537:5;17533:50;;;17574:8;;17552:31;;-1:-1:-1;;;;;17560:8:0;;;;-1:-1:-1;;;17574:8:0;;;17552:31;:21;:31;:::i;:::-;17544:5;:39;17533:50;17639:34;;;;;;;;;;;;;;17644:10;;17639:34;;;;;;;;-1:-1:-1;;12628:1:0;12617:8;:12;-1:-1:-1;16370:1311:0;;;-1:-1:-1;;;;;;16370:1311:0:o;4992:44::-;;;;;;;;;;;;;:::o;12358:20::-;;;;:::o;5374:41::-;;;;;;;;;;;;;:::o;17793:1494::-;17869:15;17886;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;;;12593:1;17962:13;:11;:13::i;:::-;-1:-1:-1;18019:6:0;;18069;;18120:40;;;-1:-1:-1;;;18120:40:0;;18154:4;18120:40;;;;;;17919:56;;-1:-1:-1;17919:56:0;;-1:-1:-1;;;;;;18019:6:0;;;;18069;;;18001:15;;18019:6;;18120:25;;:40;;;;;;;;;;;;;;18019:6;18120:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18120:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18120:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18120:40:0;18190;;;-1:-1:-1;;;18190:40:0;;18224:4;18190:40;;;;;;18120;;-1:-1:-1;18171:16:0;;-1:-1:-1;;;;;18190:25:0;;;;;:40;;;;;18120;;18190;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18190:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18190:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18190:40:0;18279:4;18241:17;18261:24;;;:9;18190:40;18261:24;;;;;18190:40;;-1:-1:-1;18311:30:0;18320:9;18331;18311:8;:30::i;:::-;18352:20;18375:11;18298:43;;-1:-1:-1;18375:11:0;18485:23;:9;18499:8;18485:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;18618:12:0;18592:23;:9;18606:8;18592:23;:13;:23;:::i;:::-;:38;;;;;;18582:48;;18721:1;18711:7;:11;:26;;;;;18736:1;18726:7;:11;18711:26;18689:115;;;;-1:-1:-1;;;18689:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18815:31;18829:4;18836:9;18815:5;:31::i;:::-;18857:35;18871:7;18880:2;18884:7;18857:13;:35::i;:::-;18903;18917:7;18926:2;18930:7;18903:13;:35::i;:::-;18960:40;;;-1:-1:-1;;;18960:40:0;;18994:4;18960:40;;;;;;-1:-1:-1;;;;;18960:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18960:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18960:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18960:40:0;19022;;;-1:-1:-1;;;19022:40:0;;19056:4;19022:40;;;;;;18960;;-1:-1:-1;;;;;;19022:25:0;;;;;:40;;;;;18960;;19022;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19022:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19022:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19022:40:0;;-1:-1:-1;19075:49:0;19083:8;19022:40;19103:9;19114;19075:7;:49::i;:::-;19139:5;19135:50;;;19176:8;;19154:31;;-1:-1:-1;;;;;19162:8:0;;;;-1:-1:-1;;;19176:8:0;;;19154:31;:21;:31;:::i;:::-;19146:5;:39;19135:50;19241:38;;;;;;;;;;;;;;-1:-1:-1;;;;;19241:38:0;;;19246:10;;19241:38;;;;;;;;;;;12605:1;;;;;;;;;12628;12617:8;:12;;;;17793:1494;;;:::o;4868:41::-;;;;;;;;;;;;;;;;;;;:::o;7058:142::-;7121:4;7138:32;7148:10;7160:2;7164:5;7138:9;:32::i;11753:49::-;11797:5;11753:49;:::o;21824:434::-;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;21893:6;;21943;;22087:8;;22042:40;;;-1:-1:-1;;;22042:40:0;;22076:4;22042:40;;;;;;-1:-1:-1;;;;;21893:6:0;;;;21943;;;;21975:132;;21893:6;;22025:2;;22042:54;;-1:-1:-1;;;;;22087:8:0;;21893:6;;22042:25;;:40;;;;;;;;;;;;;;;21893:6;22042:40;;;5:2:-1;;;;30:1;27;20:12;5:2;22042:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22042:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22042:40:0;;:54;:44;:54;:::i;:::-;21975:13;:132::i;:::-;22230:8;;22185:40;;;-1:-1:-1;;;22185:40:0;;22219:4;22185:40;;;;;;22118:132;;22146:7;;22168:2;;22185:54;;-1:-1:-1;;;22230:8:0;;-1:-1:-1;;;;;22230:8:0;;-1:-1:-1;;;;;22185:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;22118:132:0;-1:-1:-1;;12628:1:0;12617:8;:12;-1:-1:-1;21824:434:0:o;11915:22::-;;;-1:-1:-1;;;;;11915:22:0;;:::o;11972:21::-;;;-1:-1:-1;;;;;11972:21:0;;:::o;7523:678::-;7675:15;7663:8;:27;;7655:57;;;;;-1:-1:-1;;;7655:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7828:16;;-1:-1:-1;;;;;7924:13:0;;;7723:14;7924:13;;;:6;:13;;;;;;;;:15;;;;;;;;;7873:77;;5301:66;7873:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7873:77:0;;;;;7863:88;;;;;;7764:202;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7764:202:0;;;;;;7740:237;;;;;;;;;8015:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7723:14;;7924:15;8015:26;;;;;-1:-1:-1;;8015:26:0;;;;;;;;;;7924:15;8015:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8015:26:0;;-1:-1:-1;;8015:26:0;;;-1:-1:-1;;;;;;;8060:30:0;;;;;;:59;;;8114:5;-1:-1:-1;;;;;8094:25:0;:16;-1:-1:-1;;;;;8094:25:0;;8060:59;8052:99;;;;;-1:-1:-1;;;8052:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8162:31;8171:5;8178:7;8187:5;8162:8;:31::i;:::-;7523:678;;;;;;;;;:::o;5043:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;22307:221::-;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;22377:6;;22370:39;;;-1:-1:-1;;;22370:39:0;;22403:4;22370:39;;;;;;22348:172;;-1:-1:-1;;;;;22377:6:0;;22370:24;;:39;;;;;;;;;;;;;;22377:6;22370:39;;;5:2:-1;;;;30:1;27;20:12;5:2;22370:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22370:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22370:39:0;22431:6;;22424:39;;;-1:-1:-1;;;22424:39:0;;22457:4;22424:39;;;;;;-1:-1:-1;;;;;22431:6:0;;;;22424:24;;:39;;;;;22370;;22424;;;;;;;;22431:6;22424:39;;;5:2:-1;;;;30:1;27;20:12;5:2;22424:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22424:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22424:39:0;22478:8;;-1:-1:-1;;;;;22478:8:0;;;;-1:-1:-1;;;22501:8:0;;;22348:7;:172::i;:::-;12628:1;12617:8;:12;22307:221::o;12966:384::-;11870:34;;;;;;;;;;;;;;;;;13145:43;;-1:-1:-1;;;;;13145:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13145:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;13145:43:0;179:29:-1;160:49;;13120:79:0;;;;13085:12;;13099:17;;13120:10;;;13145:43;13120:79;;;25:18:-1;13120:79: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;;;13120:79: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;;13084:115:0;;;;13232:7;:57;;;;-1:-1:-1;13244:11:0;;:16;;:44;;;13275:4;13264:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13264:24:0;13244:44;13210:132;;;;;-1:-1:-1;;;13210:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12966:384;;;;;:::o;4508:142::-;4560:6;4587;;;:30;;-1:-1:-1;;4602:5:0;;;4616:1;4611;4602:5;4611:1;4597:15;;;;;:20;4587:30;4579:63;;;;;-1:-1:-1;;;4579:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4371:129;4455:5;;;4450:16;;;;4442:50;;;;;-1:-1:-1;;;4442:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14245:1019;-1:-1:-1;;;;;14420:23:0;;;;;:50;;-1:-1:-1;;;;;;14447:23:0;;;14420:50;14398:118;;;;;-1:-1:-1;;;14398:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14631:18;;14558:23;:15;:23;;;-1:-1:-1;;;14631:18:0;;;;14614:35;;;14687:15;;;;;;:33;;-1:-1:-1;;;;;;14706:14:0;;;;14687:33;:51;;;;-1:-1:-1;;;;;;14724:14:0;;;;14687:51;14683:410;;;14930:11;14857:84;;14865:44;14899:9;14865:27;14882:9;14865:16;:27::i;:::-;-1:-1:-1;;;;;14865:33:0;;:44;:33;:44;:::i;:::-;14816:20;:125;;-1:-1:-1;;;;;14857:53:0;;;;:84;;;;14816:125;;;14997:84;;;15005:44;15039:9;15005:27;15022:9;15005:16;:27::i;:44::-;14956:20;:125;;-1:-1:-1;;;;;14997:53:0;;;;:84;;;;14956:125;;;14683:410;15103:8;:28;;-1:-1:-1;;15103:28:0;-1:-1:-1;;;;;15103:28:0;;;;;;;15142;;-1:-1:-1;;;15142:28:0;;;;;;;;;-1:-1:-1;;;;;15181:35:0;-1:-1:-1;;;15181:35:0;;;;;;;;;15232:24;;;15237:8;;;15232:24;;15247:8;;;;;;;15232:24;;;;;;;;;;;;;;;;;14245:1019;;;;;;:::o;6489:172::-;-1:-1:-1;;;;;6573:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6622:31;;;;;;;;;;;;;;;;;6489:172;;;:::o;6669:223::-;-1:-1:-1;;;;;6766:15:0;;;;;;:9;:15;;;;;;:26;;6786:5;6766:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6748:15:0;;;;;;;:9;:15;;;;;;:44;;;;6819:13;;;;;;;:24;;6837:5;6819:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6803:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;6859:25;;;;;;;6803:13;;6859:25;;;;;;;;;;;;;6669:223;;;:::o;15354:904::-;15445:10;15473:13;15506:7;;;;;;;;;-1:-1:-1;;;;;15506:7:0;-1:-1:-1;;;;;15489:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15489:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15489:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15489:33:0;15588:5;;-1:-1:-1;;;;;15541:19:0;;;;;;-1:-1:-1;15489:33:0;;-1:-1:-1;15588:5:0;15619:632;;15649:11;;15645:536;;15681:13;15697:44;15707:33;-1:-1:-1;;;;;15707:18:0;;;;:33;;;:22;:33;:::i;15697:44::-;15681:60;;15760:17;15780;15790:6;15780:9;:17::i;:::-;15760:37;;15828:9;15820:5;:17;15816:350;;;15862:17;15882:37;15898:20;:5;15908:9;15898:20;:9;:20;:::i;:::-;15882:11;;;:37;:15;:37;:::i;:::-;15862:57;-1:-1:-1;15942:19:0;15964:51;16005:9;15989:10;15965:21;:5;15975:10;15965:21;:9;:21;:::i;:::-;:34;;;;;;;15964:51;:40;:51;:::i;:::-;15942:73;;16038:17;16070:11;16058:9;:23;;;;;;;-1:-1:-1;16108:13:0;;16104:42;;16123:23;16129:5;16136:9;16123:5;:23::i;:::-;15816:350;;;;15645:536;;;15619:632;;;16202:11;;16198:53;;16238:1;16230:5;:9;16198:53;15354:904;;;;;;:::o;8577:303::-;8622:6;8649:1;8645;:5;8641:232;;;-1:-1:-1;8671:1:0;8704;8700;8696:5;;:9;8720:92;8731:1;8727;:5;8720:92;;;8757:1;8753:5;;8795:1;8790;8786;8782;:5;;;;;;:9;8781:15;;;;;;8777:19;;8720:92;;;8641:232;;;;8833:6;;8829:44;;-1:-1:-1;8860:1:0;8829:44;8577:303;;;:::o;6057:204::-;6133:11;;:22;;6149:5;6133:22;:15;:22;:::i;:::-;6119:11;:36;;;-1:-1:-1;;;;;6182:13:0;;;;:9;:13;;;;;;:24;;6200:5;6182:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6166:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6222:31;;;;;;;6166:13;;;;6222:31;;;;;;;;;;6057:204;;:::o;8363:96::-;8415:6;8442:1;8438;:5;:13;;8450:1;8438:13;;;8446:1;8438:13;8434:17;8363:96;-1:-1:-1;;;8363:96:0:o;6269:212::-;-1:-1:-1;;;;;6351:15:0;;;;;;:9;:15;;;;;;:26;;6371:5;6351:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6333:15:0;;;;;;:9;:15;;;;;:44;;;;6402:11;:22;;6418:5;6402:22;:15;:22;:::i;:::-;6388:11;:36;;;6440:33;;;;;;;;-1:-1:-1;;;;;6440:33:0;;;;;;;;;;;;;6269:212;;:::o;9238:120::-;-1:-1:-1;;;;;9314:10:0;-1:-1:-1;;;9314:17:0;;9238:120::o;9429:108::-;9489:9;-1:-1:-1;;;;;9519:10:0;;-1:-1:-1;;;;;9515:14:0;;9519:10;9515:14;;;;;;9429:108;-1:-1:-1;;;9429:108:0:o;4235:128::-;4319:5;;;4314:16;;;;4306:49;;;;;-1:-1:-1;;;4306:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

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