Contract 0x23A1c4025Aa5Dc7f876530bEb76346b99d50C3AA

 

Contract Overview

Mocktail Finance: MOK Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x9b282ea97f10654d274f36d7b708f9413d29abfbdd0baba33873a4a2541fcc7172143102021-05-07 12:48:0315 hrs 15 mins ago0x6be62276df942bb4d111cfee718505d11fbb4b68 IN  Mocktail Finance: MOK Token0 BNB0.000138745
0xce2cac4e5e1cc7cb4ff3a5eeaac2a68c3c732502ced2816bba04ad0c7755a63672139972021-05-07 12:32:0415 hrs 31 mins ago0xa441eaebb68cc6c45b0f9fd93f5b049ab24be81f IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x88fba0dd1dbfca0917682234eeb050ae98637ec868e41c5689c5b9b5dcdc754872128272021-05-07 11:26:2616 hrs 37 mins ago0xc065af41c29011196eb8767351817b6bc65eb354 IN  Mocktail Finance: MOK Token0 BNB0.000138865
0x5babc6e6b40723513cb96efd7bbbf3ff7c869b20fdc8c4be5ccec40d5f08c01f72107912021-05-07 9:44:1718 hrs 19 mins ago0x9fe5a7545aa384f6977fa56e74fb0a55b56a704d IN  Mocktail Finance: MOK Token0 BNB0.000072615
0xf90e0d350e44aa6709fd7b7d21b87719dff07e8ac4c147706b1b2374ad56a24672097412021-05-07 8:51:3519 hrs 12 mins ago0x03130f545315ae875cc44eeba38050c8eefccce5 IN  Mocktail Finance: MOK Token0 BNB0.000180685
0x48302dea2407345f09240d762bfbf0e16636c678d25e435c3ed0a297fed5d1f071954572021-05-06 20:51:231 day 7 hrs ago0x542a1caa532d7c762e83c998b005e74a0ae97883 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x6e4431ffddea027a6c0f1b03b6c420ae7869f79adb6f24cbeaf51bffa8452c0571945682021-05-06 20:06:141 day 7 hrs ago0x75ae3c6e0a1539d4e3053ea3a024ac89e5b99d33 IN  Mocktail Finance: MOK Token0 BNB0.000180685
0xebcee454b82ca2660727a4881eb4d60dfa3316f0777c61c4e78e57e88b6b786871942832021-05-06 19:50:451 day 8 hrs ago0x34180792bbc07733e675f7e02de5a19e92a3460f IN  Mocktail Finance: MOK Token0 BNB0.000138685
0xd671b84ef7fe69179c57bc0614c9b12cf4a55be451952e3ed53b44fd63a38ae271771512021-05-06 4:58:381 day 23 hrs ago0x13a23497d053e4c0316bea41019539ae6abcf58c IN  Mocktail Finance: MOK Token0 BNB0.000255685
0xd6f9b71e99ea0599f9973482025891485b5ef671be6a6783e5b0a79e8131cd7071598922021-05-05 14:06:242 days 13 hrs ago0xaf62b1a5edc5f0f0ba3f69ac8f38948245c9efa2 IN  Mocktail Finance: MOK Token0 BNB0.00026658
0xc6e1e30a05c4be54d72f79715eb7969c88cf003d4679810ece6f77c8039fff1c71555682021-05-05 10:28:412 days 17 hrs ago0xaf78be6c83a34e7969f496a322ddbc0dbc4e2917 IN  Mocktail Finance: MOK Token0 BNB0.000180805
0x5b7e252959d6058d485d534d1b5b1856f2bbe73dead7d55de66784162e53d25771188422021-05-04 3:38:564 days 24 mins ago0xaf8d9bb8644530db68a2cc2dfbc205fbce67d400 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x5b75b3b9a5c5c727b22d88dc8c46f61e419790d85a9018ef733bcb2b4136895870974142021-05-03 9:30:254 days 18 hrs ago0xc198e2c86c2bc2ca86dace36e97d788f582733b3 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x308da287553850ca18540daec4a262f2393602c61d58b093dac0f1baf01f30bf70956822021-05-03 8:02:064 days 20 hrs ago0x38a78ce12dc83ea7e0be0388fdfb66657dacc704 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x75a77678e6e62cce3e78d88f9e45f19aae3ceab7d547f4872483d3b9325bc05170835432021-05-02 21:52:085 days 6 hrs ago0x4f1614a0514ac498a0e254afbae2b8853a4fc6e3 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0xb65d7f5da35c1bf59cbf95c6b012133aa1e690f9ed776f4ee2579ef8bb665a1270754322021-05-02 14:57:085 days 13 hrs ago0x52c96b6cb43db723fcbcafe21baf07e7385a0e99 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0xbb844348d3584148bc984ffc5b66e453dcd9380c6ed9641cfeda7dba21d2596b70740042021-05-02 13:45:205 days 14 hrs ago0xc1ab3ecae698e3e63b106ef68834293bfd05cad6 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x8c89995222929831999a450141ac5f7a2d40da0e24dfae63ad4824843f21ec8970737052021-05-02 13:30:225 days 14 hrs ago0x34180792bbc07733e675f7e02de5a19e92a3460f IN  Mocktail Finance: MOK Token0 BNB0.000180685
0xc0a300622f8d575b2207420ec21b67e01a054e4e689685005ff894be48d20e4c70691842021-05-02 9:43:125 days 18 hrs ago0x34180792bbc07733e675f7e02de5a19e92a3460f IN  Mocktail Finance: MOK Token0 BNB0.000180685
0xdd43283d4f41d42a0eee5beaacc99f6ac273407aeee3f8e1633a169149b18d8370593102021-05-02 1:28:256 days 2 hrs ago0xf645a8121202cd81314d5c7c72ebd6f51ee83abf IN  Mocktail Finance: MOK Token0 BNB0.000180685
0x3cd91ec2f5ba9c60f9f6960c2a0935a54108e5b41fbbfed6c23887d7321e337370576202021-05-02 0:03:336 days 4 hrs ago0xbaa0732e83029da77b8ad135a4b79e85e00a266e IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x6d59c66d581fefd9a8055e567c9892ae0763060f73f2e1a03335dc1397f0b97470550132021-05-01 21:51:566 days 6 hrs ago0x92b9396bfcaaf0641bc11db47b3e8b8255cda0b9 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0xe14cff006112e066d112b658d92bc6406488d69e2f36a80bd6303576d91b3a9f70497462021-05-01 17:26:066 days 10 hrs ago0x3d36cd374e8763403af29ba3d38053f86f07b526 IN  Mocktail Finance: MOK Token0 BNB0.00022215
0x49653f932af960b2076b9d2bc0803fb38e469ed0abc216f8fd0b26d2ba519de670464572021-05-01 14:38:186 days 13 hrs ago0x7d2484200ebb74504dfa772d38af03dcc99bf8bf IN  Mocktail Finance: MOK Token0 BNB0.000216894
0x23fc79874c045433d21df78d82c2c0d4cc420d6d5eae156b8d41683370e5670e70462772021-05-01 14:29:186 days 13 hrs ago0xe4f86260b30c78c33354ec3c1535cfa442f4ecfb IN  Mocktail Finance: MOK Token0 BNB0.000216894
[ Download CSV Export 

OVERVIEW

MocktailSwap Finance is an AMM protocol that incorporates multi-strategy yield optimizing on Binance Smart Chain (BSC) with low fees/slippage that also provides aggregation through vault compounding, lending and yield generation for maximum returns.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MOKToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-03-28
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

contract Context {
    constructor() internal {}
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), 'Ownable: caller is not the owner');
        _;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

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

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

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, 'Address: insufficient balance');

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}('');
        require(success, 'Address: unable to send value, recipient may have reverted');
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, 'Address: low-level call failed');
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, 'Address: insufficient balance for call');
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'Address: call to non-contract');

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract BEP20 is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external override view returns (address) {
        return owner();
    }

    /**
     * @dev Returns the token name.
     */
    function name() public override view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the token decimals.
     */
    function decimals() public override view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Returns the token symbol.
     */
    function symbol() public override view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {BEP20-totalSupply}.
     */
    function totalSupply() public override view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {BEP20-balanceOf}.
     */
    function balanceOf(address account) public override view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {BEP20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {BEP20-allowance}.
     */
    function allowance(address owner, address spender) public override view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {BEP20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {BEP20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, 'BEP20: transfer amount exceeds allowance')
        );
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {BEP20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {BEP20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, 'BEP20: decreased allowance below zero')
        );
        return true;
    }

    /**
     * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing
     * the total supply.
     *
     * Requirements
     *
     * - `msg.sender` must be the token owner
     */
    function mint(uint256 amount) public onlyOwner returns (bool) {
        _mint(_msgSender(), amount);
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), 'BEP20: transfer from the zero address');
        require(recipient != address(0), 'BEP20: transfer to the zero address');

        _balances[sender] = _balances[sender].sub(amount, 'BEP20: transfer amount exceeds balance');
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), 'BEP20: mint to the zero address');

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), 'BEP20: burn from the zero address');

        _balances[account] = _balances[account].sub(amount, 'BEP20: burn amount exceeds balance');
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        require(owner != address(0), 'BEP20: approve from the zero address');
        require(spender != address(0), 'BEP20: approve to the zero address');

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(amount, 'BEP20: burn amount exceeds allowance')
        );
    }
}

contract MOKToken is BEP20('Mocktail', 'MOK') {
    function mint(address _to, uint256 _amount) public onlyOwner {
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }
    
    function burn(address _from, uint256 _amount) public onlyOwner {
        _burn(_from, _amount);
    }
    mapping (address => address) internal _delegates;
    struct Checkpoint {
        uint32 fromBlock;
        uint256 votes;
    }
    
    uint256 public _alloc;
    
    constructor(uint256 alloc) public {
        _alloc = alloc;
    }
    
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
    mapping (address => uint32) public numCheckpoints;
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");
    mapping (address => uint) public nonces;
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);
    function delegates(address delegator)
    external
    view
    returns (address)
    {
        return _delegates[delegator];
    }

    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    function delegateBySig(
        address delegatee,
        uint nonce,
        uint expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
    external
    {
        bytes32 domainSeparator = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name())),
                getChainId(),
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                DELEGATION_TYPEHASH,
                delegatee,
                nonce,
                expiry
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                domainSeparator,
                structHash
            )
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "MOK::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "MOK::delegateBySig: invalid nonce");
        require(now <= expiry, "MOK::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }
    
    function getCurrentVotes(address account)
    external
    view
    returns (uint256)
    {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    function getPriorVotes(address account, uint blockNumber)
    external
    view
    returns (uint256)
    {
        require(blockNumber < block.number, "MOK::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }
        
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee)
    internal
    {
        address currentDelegate = _delegates[delegator];
        uint256 delegatorBalance = balanceOf(delegator);
        _delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decrease old representative
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint256 srcRepNew = srcRepOld.sub(amount);
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                // increase new representative
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint256 dstRepNew = dstRepOld.add(amount);
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(
        address delegatee,
        uint32 nCheckpoints,
        uint256 oldVotes,
        uint256 newVotes
    )
    internal
    {
        uint32 blockNumber = safe32(block.number, "MOK::_writeCheckpoint: block number exceeds 32 bits");

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"alloc","type":"uint256"}],"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_alloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001f3038038062001f30833981810160405260208110156200003757600080fd5b50516040805180820182526008815267135bd8dadd185a5b60c21b602082810191909152825180840190935260038352624d4f4b60e81b908301529060006200007f6200010d565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000de90600490602085019062000111565b508051620000f490600590602084019062000111565b50506006805460ff1916601217905550600855620001ad565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015457805160ff191683800117855562000184565b8280016001018555821562000184579182015b828111156200018457825182559160200191906001019062000167565b506200019292915062000196565b5090565b5b8082111562000192576000815560010162000197565b611d7380620001bd6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063782d6fe111610104578063a457c2d7116100a2578063dd62ed3e11610071578063dd62ed3e146105b6578063e7a324dc146105e4578063f1127ed8146105ec578063f2fde38b1461063e576101cf565b8063a457c2d7146104f1578063a9059cbb1461051d578063b4b5ea5714610549578063c3cda5201461056f576101cf565b80638da5cb5b116100de5780638da5cb5b1461049857806395d89b41146104a05780639dc29fac146104a8578063a0712d68146104d4576101cf565b8063782d6fe11461043e5780637ecebe001461046a578063893d20e814610490576101cf565b806340c10f19116101715780636fcfff451161014b5780636fcfff45146103c957806370a0823114610408578063715018a61461042e5780637462bffe14610436576101cf565b806340c10f1914610333578063587cde1e146103615780635c19a95c146103a3576101cf565b806320606b70116101ad57806320606b70146102ab57806323b872dd146102b3578063313ce567146102e95780633950935114610307576101cf565b806306fdde03146101d4578063095ea7b31461025157806318160ddd14610291575b600080fd5b6101dc610664565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561026757600080fd5b506001600160a01b0381351690602001356106fa565b604080519115158252519081900360200190f35b610299610718565b60408051918252519081900360200190f35b61029961071e565b61027d600480360360608110156102c957600080fd5b506001600160a01b03813581169160208101359091169060400135610742565b6102f16107c9565b6040805160ff9092168252519081900360200190f35b61027d6004803603604081101561031d57600080fd5b506001600160a01b0381351690602001356107d2565b61035f6004803603604081101561034957600080fd5b506001600160a01b038135169060200135610820565b005b6103876004803603602081101561037757600080fd5b50356001600160a01b03166108ab565b604080516001600160a01b039092168252519081900360200190f35b61035f600480360360208110156103b957600080fd5b50356001600160a01b03166108c9565b6103ef600480360360208110156103df57600080fd5b50356001600160a01b03166108d6565b6040805163ffffffff9092168252519081900360200190f35b6102996004803603602081101561041e57600080fd5b50356001600160a01b03166108ee565b61035f610909565b6102996109ab565b6102996004803603604081101561045457600080fd5b506001600160a01b0381351690602001356109b1565b6102996004803603602081101561048057600080fd5b50356001600160a01b0316610bb9565b610387610bcb565b610387610bda565b6101dc610be9565b61035f600480360360408110156104be57600080fd5b506001600160a01b038135169060200135610c4a565b61027d600480360360208110156104ea57600080fd5b5035610cac565b61027d6004803603604081101561050757600080fd5b506001600160a01b038135169060200135610d1f565b61027d6004803603604081101561053357600080fd5b506001600160a01b038135169060200135610d87565b6102996004803603602081101561055f57600080fd5b50356001600160a01b0316610d9b565b61035f600480360360c081101561058557600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610dff565b610299600480360360408110156105cc57600080fd5b506001600160a01b0381358116916020013516611072565b61029961109d565b61061e6004803603604081101561060257600080fd5b5080356001600160a01b0316906020013563ffffffff166110c1565b6040805163ffffffff909316835260208301919091528051918290030190f35b61035f6004803603602081101561065457600080fd5b50356001600160a01b03166110ee565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106f05780601f106106c5576101008083540402835291602001916106f0565b820191906000526020600020905b8154815290600101906020018083116106d357829003601f168201915b5050505050905090565b600061070e61070761114f565b8484611153565b5060015b92915050565b60035490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600061074f84848461123f565b6107bf8461075b61114f565b6107ba85604051806060016040528060288152602001611b84602891396001600160a01b038a1660009081526002602052604081209061079961114f565b6001600160a01b031681526020810191909152604001600020549190611391565b611153565b5060019392505050565b60065460ff1690565b600061070e6107df61114f565b846107ba85600260006107f061114f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611428565b61082861114f565b6000546001600160a01b03908116911614610878576040805162461bcd60e51b81526020600482018190526024820152600080516020611bd1833981519152604482015290519081900360640190fd5b6108828282611482565b6001600160a01b038083166000908152600760205260408120546108a7921683611568565b5050565b6001600160a01b039081166000908152600760205260409020541690565b6108d333826116aa565b50565b600a6020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526001602052604090205490565b61091161114f565b6000546001600160a01b03908116911614610961576040805162461bcd60e51b81526020600482018190526024820152600080516020611bd1833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60085481565b60004382106109f15760405162461bcd60e51b8152600401808060200182810382526026815260200180611cf66026913960400191505060405180910390fd5b6001600160a01b0383166000908152600a602052604090205463ffffffff1680610a1f576000915050610712565b6001600160a01b038416600090815260096020908152604080832063ffffffff600019860181168552925290912054168310610a8e576001600160a01b03841660009081526009602090815260408083206000199490940163ffffffff16835292905220600101549050610712565b6001600160a01b038416600090815260096020908152604080832083805290915290205463ffffffff16831015610ac9576000915050610712565b600060001982015b8163ffffffff168163ffffffff161115610b8257600282820363ffffffff16048103610afb611ad8565b506001600160a01b038716600090815260096020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610b5d576020015194506107129350505050565b805163ffffffff16871115610b7457819350610b7b565b6001820392505b5050610ad1565b506001600160a01b038516600090815260096020908152604080832063ffffffff9094168352929052206001015491505092915050565b600b6020526000908152604090205481565b6000610bd5610bda565b905090565b6000546001600160a01b031690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106f05780601f106106c5576101008083540402835291602001916106f0565b610c5261114f565b6000546001600160a01b03908116911614610ca2576040805162461bcd60e51b81526020600482018190526024820152600080516020611bd1833981519152604482015290519081900360640190fd5b6108a7828261173f565b6000610cb661114f565b6000546001600160a01b03908116911614610d06576040805162461bcd60e51b81526020600482018190526024820152600080516020611bd1833981519152604482015290519081900360640190fd5b610d17610d1161114f565b83611482565b506001919050565b600061070e610d2c61114f565b846107ba85604051806060016040528060258152602001611c6d6025913960026000610d5661114f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611391565b600061070e610d9461114f565b848461123f565b6001600160a01b0381166000908152600a602052604081205463ffffffff1680610dc6576000610df8565b6001600160a01b038316600090815260096020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610e2a610664565b80519060200120610e3961182f565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa158015610f6c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610fbe5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b5f6025913960400191505060405180910390fd5b6001600160a01b0381166000908152600b60205260409020805460018101909155891461101c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611cb36021913960400191505060405180910390fd5b8742111561105b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611bac6025913960400191505060405180910390fd5b611065818b6116aa565b505050505b505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60096020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6110f661114f565b6000546001600160a01b03908116911614611146576040805162461bcd60e51b81526020600482018190526024820152600080516020611bd1833981519152604482015290519081900360640190fd5b6108d381611833565b3390565b6001600160a01b0383166111985760405162461bcd60e51b8152600401808060200182810382526024815260200180611b156024913960400191505060405180910390fd5b6001600160a01b0382166111dd5760405162461bcd60e51b8152600401808060200182810382526022815260200180611d1c6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166112845760405162461bcd60e51b8152600401808060200182810382526025815260200180611af06025913960400191505060405180910390fd5b6001600160a01b0382166112c95760405162461bcd60e51b8152600401808060200182810382526023815260200180611c4a6023913960400191505060405180910390fd5b61130681604051806060016040528060268152602001611c24602691396001600160a01b0386166000908152600160205260409020549190611391565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546113359082611428565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114205760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113e55781810151838201526020016113cd565b50505050905090810190601f1680156114125780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610df8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0382166114dd576040805162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6003546114ea9082611428565b6003556001600160a01b0382166000908152600160205260409020546115109082611428565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b816001600160a01b0316836001600160a01b03161415801561158a5750600081115b156116a5576001600160a01b0383161561161c576001600160a01b0383166000908152600a602052604081205463ffffffff1690816115ca5760006115fc565b6001600160a01b038516600090815260096020908152604080832063ffffffff60001987011684529091529020600101545b9050600061160a82856118d3565b905061161886848484611915565b5050505b6001600160a01b038216156116a5576001600160a01b0382166000908152600a602052604081205463ffffffff169081611657576000611689565b6001600160a01b038416600090815260096020908152604080832063ffffffff60001987011684529091529020600101545b905060006116978285611428565b905061106a85848484611915565b505050565b6001600160a01b03808316600090815260076020526040812054909116906116d1846108ee565b6001600160a01b0385811660008181526007602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611739828483611568565b50505050565b6001600160a01b0382166117845760405162461bcd60e51b8152600401808060200182810382526021815260200180611c926021913960400191505060405180910390fd5b6117c181604051806060016040528060228152602001611cd4602291396001600160a01b0385166000908152600160205260409020549190611391565b6001600160a01b0383166000908152600160205260409020556003546117e790826118d3565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b4690565b6001600160a01b0381166118785760405162461bcd60e51b8152600401808060200182810382526026815260200180611b396026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610df883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611391565b600061193943604051806060016040528060338152602001611bf160339139611a7a565b905060008463ffffffff1611801561198257506001600160a01b038516600090815260096020908152604080832063ffffffff6000198901811685529252909120548282169116145b156119bf576001600160a01b038516600090815260096020908152604080832063ffffffff60001989011684529091529020600101829055611a30565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600984528681208b8616825284528681209551865490861663ffffffff199182161787559251600196870155908152600a9092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000816401000000008410611ad05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113e55781810151838201526020016113cd565b509192915050565b60408051808201909152600080825260208201529056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d4f4b3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726542455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654d4f4b3a3a64656c656761746542795369673a207369676e617475726520657870697265644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724d4f4b3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747342455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e2066726f6d20746865207a65726f20616464726573734d4f4b3a3a64656c656761746542795369673a20696e76616c6964206e6f6e636542455032303a206275726e20616d6f756e7420657863656564732062616c616e63654d4f4b3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656442455032303a20617070726f766520746f20746865207a65726f2061646472657373a26469706673582212205a887d5ebc959b72fc92844f960cb7536987ea32b74043a0a5689eed8057fa3364736f6c634300060c00330000000000000000000000000000000000000000000000000000000000000064

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000064

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000064


Deployed ByteCode Sourcemap

22673:6478:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15007:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16494:161;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16494:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15483:100;;;:::i;:::-;;;;;;;;;;;;;;;;23399:122;;;:::i;17126:397::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17126:397:0;;;;;;;;;;;;;;;;;:::i;15166:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17931:210;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17931:210:0;;;;;;;;:::i;22726:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22726:162:0;;;;;;;;:::i;:::-;;23909:137;;;;;;;;;;;;;;;;-1:-1:-1;23909:137:0;-1:-1:-1;;;;;23909:137:0;;:::i;:::-;;;;-1:-1:-1;;;;;23909:137:0;;;;;;;;;;;;;;24054:104;;;;;;;;;;;;;;;;-1:-1:-1;24054:104:0;-1:-1:-1;;;;;24054:104:0;;:::i;23343:49::-;;;;;;;;;;;;;;;;-1:-1:-1;23343:49:0;-1:-1:-1;;;;;23343:49:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;15645:119;;;;;;;;;;;;;;;;-1:-1:-1;15645:119:0;-1:-1:-1;;;;;15645:119:0;;:::i;866:140::-;;;:::i;23153:21::-;;;:::i;25600:1159::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25600:1159:0;;;;;;;;:::i;23652:39::-;;;;;;;;;;;;;;;;-1:-1:-1;23652:39:0;-1:-1:-1;;;;;23652:39:0;;:::i;14850:94::-;;;:::i;656:79::-;;;:::i;15323:96::-;;;:::i;22900:103::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22900:103:0;;;;;;;;:::i;19172:130::-;;;;;;;;;;;;;;;;-1:-1:-1;19172:130:0;;:::i;18643:311::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18643:311:0;;;;;;;;:::i;15976:167::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15976:167:0;;;;;;;;:::i;25349:243::-;;;;;;;;;;;;;;;;-1:-1:-1;25349:243:0;-1:-1:-1;;;;;25349:243:0;;:::i;24166:1171::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24166:1171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16205:143::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16205:143:0;;;;;;;;;;:::i;23528:117::-;;;:::i;23266:70::-;;;;;;;;;;;;;;;;-1:-1:-1;23266:70:0;;-1:-1:-1;;;;;23266:70:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;1012:109;;;;;;;;;;;;;;;;-1:-1:-1;1012:109:0;-1:-1:-1;;;;;1012:109:0;;:::i;15007:92::-;15086:5;15079:12;;;;;;;;-1:-1:-1;;15079:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15053:13;;15079:12;;15086:5;;15079:12;;15086:5;15079:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15007:92;:::o;16494:161::-;16569:4;16586:39;16595:12;:10;:12::i;:::-;16609:7;16618:6;16586:8;:39::i;:::-;-1:-1:-1;16643:4:0;16494:161;;;;;:::o;15483:100::-;15563:12;;15483:100;:::o;23399:122::-;23441:80;23399:122;:::o;17126:397::-;17258:4;17275:36;17285:6;17293:9;17304:6;17275:9;:36::i;:::-;17322:171;17345:6;17366:12;:10;:12::i;:::-;17393:89;17431:6;17393:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17393:19:0;;;;;;:11;:19;;;;;;17413:12;:10;:12::i;:::-;-1:-1:-1;;;;;17393:33:0;;;;;;;;;;;;-1:-1:-1;17393:33:0;;;:89;:37;:89::i;:::-;17322:8;:171::i;:::-;-1:-1:-1;17511:4:0;17126:397;;;;;:::o;15166:92::-;15241:9;;;;15166:92;:::o;17931:210::-;18011:4;18028:83;18037:12;:10;:12::i;:::-;18051:7;18060:50;18099:10;18060:11;:25;18072:12;:10;:12::i;:::-;-1:-1:-1;;;;;18060:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18060:25:0;;;:34;;;;;;;;;;;:38;:50::i;22726:162::-;791:12;:10;:12::i;:::-;781:6;;-1:-1:-1;;;;;781:6:0;;;:22;;;773:67;;;;;-1:-1:-1;;;773:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;773:67:0;;;;;;;;;;;;;;;22798:19:::1;22804:3;22809:7;22798:5;:19::i;:::-;-1:-1:-1::0;;;;;22855:15:0;;::::1;22851:1;22855:15:::0;;;:10:::1;:15;::::0;;;;;22828:52:::1;::::0;22855:15:::1;22872:7:::0;22828:14:::1;:52::i;:::-;22726:162:::0;;:::o;23909:137::-;-1:-1:-1;;;;;24017:21:0;;;23985:7;24017:21;;;:10;:21;;;;;;;;23909:137::o;24054:104::-;24118:32;24128:10;24140:9;24118;:32::i;:::-;24054:104;:::o;23343:49::-;;;;;;;;;;;;;;;:::o;15645:119::-;-1:-1:-1;;;;;15738:18:0;15711:7;15738:18;;;:9;:18;;;;;;;15645:119::o;866:140::-;791:12;:10;:12::i;:::-;781:6;;-1:-1:-1;;;;;781:6:0;;;:22;;;773:67;;;;;-1:-1:-1;;;773:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;773:67:0;;;;;;;;;;;;;;;965:1:::1;949:6:::0;;928:40:::1;::::0;-1:-1:-1;;;;;949:6:0;;::::1;::::0;928:40:::1;::::0;965:1;;928:40:::1;996:1;979:19:::0;;-1:-1:-1;;;;;;979:19:0::1;::::0;;866:140::o;23153:21::-;;;;:::o;25600:1159::-;25696:7;25743:12;25729:11;:26;25721:77;;;;-1:-1:-1;;;25721:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25833:23:0;;25811:19;25833:23;;;:14;:23;;;;;;;;25871:17;25867:58;;25912:1;25905:8;;;;;25867:58;-1:-1:-1;;;;;25941:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;25962:16:0;;25941:38;;;;;;;;;:48;;:63;-1:-1:-1;25937:147:0;;-1:-1:-1;;;;;26028:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;26049:16:0;;;;26028:38;;;;;;;;26064:1;26028:44;;;-1:-1:-1;26021:51:0;;25937:147;-1:-1:-1;;;;;26108:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;26104:88:0;;;26179:1;26172:8;;;;;26104:88;26204:12;-1:-1:-1;;26246:16:0;;26273:428;26288:5;26280:13;;:5;:13;;;26273:428;;;26352:1;26335:13;;;26334:19;;;26326:27;;26395:20;;:::i;:::-;-1:-1:-1;;;;;;26418:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;26395:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26465:27;;26461:229;;;26520:8;;;;-1:-1:-1;26513:15:0;;-1:-1:-1;;;;26513:15:0;26461:229;26554:12;;:26;;;-1:-1:-1;26550:140:0;;;26609:6;26601:14;;26550:140;;;26673:1;26664:6;:10;26656:18;;26550:140;26273:428;;;;;-1:-1:-1;;;;;;26718:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;25600:1159:0;;;;:::o;23652:39::-;;;;;;;;;;;;;:::o;14850:94::-;14902:7;14929;:5;:7::i;:::-;14922:14;;14850:94;:::o;656:79::-;694:7;721:6;-1:-1:-1;;;;;721:6:0;656:79;:::o;15323:96::-;15404:7;15397:14;;;;;;;;-1:-1:-1;;15397:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15371:13;;15397:14;;15404:7;;15397:14;;15404:7;15397:14;;;;;;;;;;;;;;;;;;;;;;;;22900:103;791:12;:10;:12::i;:::-;781:6;;-1:-1:-1;;;;;781:6:0;;;:22;;;773:67;;;;;-1:-1:-1;;;773:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;773:67:0;;;;;;;;;;;;;;;22974:21:::1;22980:5;22987:7;22974:5;:21::i;19172:130::-:0;19228:4;791:12;:10;:12::i;:::-;781:6;;-1:-1:-1;;;;;781:6:0;;;:22;;;773:67;;;;;-1:-1:-1;;;773:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;773:67:0;;;;;;;;;;;;;;;19245:27:::1;19251:12;:10;:12::i;:::-;19265:6;19245:5;:27::i;:::-;-1:-1:-1::0;19290:4:0::1;19172:130:::0;;;:::o;18643:311::-;18728:4;18745:179;18768:12;:10;:12::i;:::-;18795:7;18817:96;18856:15;18817:96;;;;;;;;;;;;;;;;;:11;:25;18829:12;:10;:12::i;:::-;-1:-1:-1;;;;;18817:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18817:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;15976:167::-;16054:4;16071:42;16081:12;:10;:12::i;:::-;16095:9;16106:6;16071:9;:42::i;25349:243::-;-1:-1:-1;;;;;25476:23:0;;25429:7;25476:23;;;:14;:23;;;;;;;;25517:16;:67;;25583:1;25517:67;;;-1:-1:-1;;;;;25536:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;25557:16:0;;25536:38;;;;;;;;25572:1;25536:44;;25517:67;25510:74;25349:243;-1:-1:-1;;;25349:243:0:o;24166:1171::-;24355:23;23441:80;24484:6;:4;:6::i;:::-;24468:24;;;;;;24511:12;:10;:12::i;:::-;24405:165;;;;;;;;;;;;;;;;;;;;;;;;;24550:4;24405:165;;;;;;;;;;;;;;;;;;;;;;;24381:200;;;;;;23574:71;24639:140;;;;-1:-1:-1;;;;;24639:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24615:175;;;;;;-1:-1:-1;;;24844:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24820:158;;;;;;;;;-1:-1:-1;25011:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24381:200;;-1:-1:-1;24615:175:0;;24820:158;;-1:-1:-1;;25011:26:0;;;;;;;-1:-1:-1;;25011:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25011:26:0;;-1:-1:-1;;25011:26:0;;;-1:-1:-1;;;;;;;25056:23:0;;25048:73;;;;-1:-1:-1;;;25048:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25149:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;25140:28;;25132:74;;;;-1:-1:-1;;;25132:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25232:6;25225:3;:13;;25217:63;;;;-1:-1:-1;;;25217:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25298:31;25308:9;25319;25298;:31::i;:::-;25291:38;;;;24166:1171;;;;;;;:::o;16205:143::-;-1:-1:-1;;;;;16313:18:0;;;16286:7;16313:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16205:143::o;23528:117::-;23574:71;23528:117;:::o;23266:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1012:109::-;791:12;:10;:12::i;:::-;781:6;;-1:-1:-1;;;;;781:6:0;;;:22;;;773:67;;;;;-1:-1:-1;;;773:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;773:67:0;;;;;;;;;;;;;;;1085:28:::1;1104:8;1085:18;:28::i;115:98::-:0;195:10;115:98;:::o;22006:372::-;-1:-1:-1;;;;;22134:19:0;;22126:68;;;;-1:-1:-1;;;22126:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22213:21:0;;22205:68;;;;-1:-1:-1;;;22205:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22286:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22338:32;;;;;;;;;;;;;;;;;22006:372;;;:::o;19792:505::-;-1:-1:-1;;;;;19924:20:0;;19916:70;;;;-1:-1:-1;;;19916:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20005:23:0;;19997:71;;;;-1:-1:-1;;;19997:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20101;20123:6;20101:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20101:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;20081:17:0;;;;;;;:9;:17;;;;;;:91;;;;20206:20;;;;;;;:32;;20231:6;20206:24;:32::i;:::-;-1:-1:-1;;;;;20183:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;20254:35;;;;;;;20183:20;;20254:35;;;;;;;;;;;;;19792:505;;;:::o;3477:226::-;3597:7;3633:12;3625:6;;;;3617:29;;;;-1:-1:-1;;;3617:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3669:5:0;;;3477:226::o;2574:181::-;2632:7;2664:5;;;2688:6;;;;2680:46;;;;;-1:-1:-1;;;2680:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20578:308;-1:-1:-1;;;;;20654:21:0;;20646:65;;;;;-1:-1:-1;;;20646:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20739:12;;:24;;20756:6;20739:16;:24::i;:::-;20724:12;:39;-1:-1:-1;;;;;20795:18:0;;;;;;:9;:18;;;;;;:30;;20818:6;20795:22;:30::i;:::-;-1:-1:-1;;;;;20774:18:0;;;;;;:9;:18;;;;;;;;:51;;;;20841:37;;;;;;;20774:18;;;;20841:37;;;;;;;;;;20578:308;;:::o;27164:947::-;27270:6;-1:-1:-1;;;;;27260:16:0;:6;-1:-1:-1;;;;;27260:16:0;;;:30;;;;;27289:1;27280:6;:10;27260:30;27256:848;;;-1:-1:-1;;;;;27311:20:0;;;27307:385;;-1:-1:-1;;;;;27419:22:0;;27400:16;27419:22;;;:14;:22;;;;;;;;;27480:13;:60;;27539:1;27480:60;;;-1:-1:-1;;;;;27496:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;27516:13:0;;27496:34;;;;;;;;27528:1;27496:40;;27480:60;27460:80;-1:-1:-1;27559:17:0;27579:21;27460:80;27593:6;27579:13;:21::i;:::-;27559:41;;27619:57;27636:6;27644:9;27655;27666;27619:16;:57::i;:::-;27307:385;;;;-1:-1:-1;;;;;27712:20:0;;;27708:385;;-1:-1:-1;;;;;27820:22:0;;27801:16;27820:22;;;:14;:22;;;;;;;;;27881:13;:60;;27940:1;27881:60;;;-1:-1:-1;;;;;27897:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;27917:13:0;;27897:34;;;;;;;;27929:1;27897:40;;27881:60;27861:80;-1:-1:-1;27960:17:0;27980:21;27861:80;27994:6;27980:13;:21::i;:::-;27960:41;;28020:57;28037:6;28045:9;28056;28067;28020:16;:57::i;27708:385::-;27164:947;;;:::o;26767:389::-;-1:-1:-1;;;;;26880:21:0;;;26854:23;26880:21;;;:10;:21;;;;;;;;;;26939:20;26891:9;26939;:20::i;:::-;-1:-1:-1;;;;;26970:21:0;;;;;;;:10;:21;;;;;;:33;;-1:-1:-1;;;;;;26970:33:0;;;;;;;;;;27021:54;;26912:47;;-1:-1:-1;26970:33:0;27021:54;;;;;;26970:21;27021:54;27088:60;27103:15;27120:9;27131:16;27088:14;:60::i;:::-;26767:389;;;;:::o;21218:348::-;-1:-1:-1;;;;;21294:21:0;;21286:67;;;;-1:-1:-1;;;21286:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21387:68;21410:6;21387:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21387:18:0;;;;;;:9;:18;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;21366:18:0;;;;;;:9;:18;;;;;:89;21481:12;;:24;;21498:6;21481:16;:24::i;:::-;21466:12;:39;21521:37;;;;;;;;21547:1;;-1:-1:-1;;;;;21521:37:0;;;;;;;;;;;;21218:348;;:::o;28995:153::-;29105:9;28995:153;:::o;1127:229::-;-1:-1:-1;;;;;1201:22:0;;1193:73;;;;-1:-1:-1;;;1193:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1303:6;;;1282:38;;-1:-1:-1;;;;;1282:38:0;;;;1303:6;;;1282:38;;;1331:6;:17;;-1:-1:-1;;;;;;1331:17:0;-1:-1:-1;;;;;1331:17:0;;;;;;;;;;1127:229::o;3038:136::-;3096:7;3123:43;3127:1;3130;3123:43;;;;;;;;;;;;;;;;;:3;:43::i;28119:699::-;28294:18;28315:75;28322:12;28315:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;28294:96;;28422:1;28407:12;:16;;;:85;;;;-1:-1:-1;;;;;;28427:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;28450:16:0;;28427:40;;;;;;;;;:50;:65;;;:50;;:65;28407:85;28403:339;;;-1:-1:-1;;;;;28509:22:0;;;;;;:11;:22;;;;;;;;:40;-1:-1:-1;;28532:16:0;;28509:40;;;;;;;;28547:1;28509:46;:57;;;28403:339;;;28638:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28599:22:0;;-1:-1:-1;28599:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;-1:-1:-1;;28599:72:0;;;;;;;;;;;;;28686:25;;;:14;:25;;;;;;:44;;28714:16;;;28686:44;;;;;;;;;;28403:339;28759:51;;;;;;;;;;;;;;-1:-1:-1;;;;;28759:51:0;;;;;;;;;;;28119:699;;;;;:::o;28826:161::-;28901:6;28939:12;28932:5;28928:9;;28920:32;;;;-1:-1:-1;;;28920:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28977:1:0;;28826:161;-1:-1:-1;;28826:161:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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