ETH Price: $2,501.38 (-0.60%)

Token

BabyQOM (BQOM)
 

Overview

Max Total Supply

1,000,000,000 BQOM

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,800,000 BQOM

Value
$0.00
0x4ec77164b5a7306b26b085d188770a6231e4c6c8
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BabyQOM

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-26
*/

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/utils/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol

// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol

// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


pragma solidity ^0.8.7;



interface IUniswapV2Factory {
     function createPair(address tokenA, address tokenB) external returns (address pair);
 }
 
 interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
     function factory() external pure returns (address);
     function WETH() external pure returns (address);
     function addLiquidityETH(
         address token,
         uint amountTokenDesired,
         uint amountTokenMin,
         uint amountETHMin,
         address to,
         uint deadline
     ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidityETH(
      address token,
      uint liquidity,
      uint amountTokenMin,
      uint amountETHMin,
      address to,
      uint deadline
    ) external returns (uint amountToken, uint amountETH);     
 }


interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}


contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IUniswapV2Router02 router;
    IERC20 public RewardToken; 

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 50000000 * (10 ** 18);

    uint256 currentIndex;
    bool initialized;

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router, address _reflectionToken, address token) {
        router = IUniswapV2Router02(_router);
        RewardToken = IERC20(_reflectionToken);
        _token = token;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}


contract BabyQOM is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    IDividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

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

    uint256 private _totalSupply;
    
    string private _name;
    string private _symbol;


    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    bool public restrictWhales = true;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public reflectionFee;
    uint256 public lpFee;
    uint256 public devFee;

    uint256 public totalFee;

    IUniswapV2Router02 public router;
    address public pair;
    address public tokenOwner;
    address payable public devWallet;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public _walletMax;
    uint256 public swapThreshold;
    
    constructor(uint256 initialSupply, address reflectionToken, address routerAddress) {
        tokenOwner = msg.sender;
        _name = "BabyQOM";
        _symbol = "BQOM";
        _totalSupply += initialSupply;
        _balances[tokenOwner] += initialSupply;        

        _walletMax = initialSupply / 100 * 2;
        swapThreshold = initialSupply / 100 * 1;

        router = IUniswapV2Router02(routerAddress);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        dividendDistributor = new DividendDistributor(routerAddress, reflectionToken, address(this));

        isFeeExempt[address(this)] = true;
        isFeeExempt[tokenOwner] = true;

        isLimitExempt[address(this)] = true;
        isLimitExempt[address(dividendDistributor)] = true;
        isLimitExempt[pair] = true;
        isLimitExempt[DEAD] = true;
        isLimitExempt[ZERO] = true; 

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true; 

        reflectionFee = 6;
        lpFee = 2;
        devFee = 4;

        totalFee = devFee.add(lpFee).add(reflectionFee);

        devWallet = payable(tokenOwner);

    }

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(tokenOwner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    

    //Owner functions
    function changeFees(uint256 initialReflectionFee, uint256 initialLpFee, uint256 initialDevFee) external onlyOwner {

        reflectionFee = initialReflectionFee;
        lpFee = initialLpFee;
        devFee = initialDevFee;

        totalFee = devFee.add(lpFee).add(reflectionFee);
        require(totalFee <= 12, "Too high fee");
    } 

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external onlyOwner {
        restrictWhales = newValue;
    }

    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        dividendDistributor.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     *
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        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 {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + 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 {IERC20-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 virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }


        if(!isLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax, "wallet");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}


        emit Transfer(sender, recipient, finalAmount);
        return true;
    }    

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }    

    /** @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:
     *
     * - `account` cannot be the zero address.
     */



    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This 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 virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = amount.mul(totalFee).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(lpFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 devBalance = amountETH.mul(devFee).div(totalFee);

        uint256 amountEthLiquidity = amountETH.mul(lpFee).div(totalFee).div(2);
        uint256 amountEthReflection = amountETH.sub(devBalance).sub(amountEthLiquidity);


        if(amountETH > 0){
            devWallet.transfer(devBalance);
            try dividendDistributor.deposit{value: amountEthReflection}() {} catch {}

            if(amountToLiquify > 0){
                router.addLiquidityETH{value: amountEthLiquidity}(
                    address(this),
                    amountToLiquify,
                    0,
                    0,
                    DEAD,
                    block.timestamp
                );
            }
        }
    
    }

    receive() external payable { }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"reflectionToken","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"}],"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":"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":"_walletMax","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":"uint256","name":"initialReflectionFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialDevFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","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":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526207a120600155600780546001600160a01b03191661dead179055600880546001600160a81b031916600160a01b1790556013805460ff60a81b1916600160a81b1790553480156200005557600080fd5b506040516200349f3803806200349f833981016040819052620000789162000611565b601280546001600160a01b031916331790556040805180820190915260078082526642616279514f4d60c81b6020909201918252620000ba9160059162000522565b506040805180820190915260048082526342514f4d60e01b6020909201918252620000e89160069162000522565b508260046000828254620000fd919062000652565b90915550506012546001600160a01b0316600090815260026020526040812080548592906200012e90849062000652565b909155506200014190506064846200066d565b6200014e90600262000690565b6014556200015e6064846200066d565b6200016b90600162000690565b601555601080546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620001c357600080fd5b505afa158015620001d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fe9190620005f3565b6001600160a01b031663c9c65396601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025b57600080fd5b505afa15801562000270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002969190620005f3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002de57600080fd5b505af1158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003199190620005f3565b601180546001600160a01b0319166001600160a01b03928316179055306000818152600360209081526040808320601054909516835293905282902060001990559051829184916200036b90620005b1565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620003a8573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392831617815530808252600960209081526040808420805460ff199081166001908117909255601254871686528286208054821683179055848652600a8452828620805482168317905585548716865282862080548216831790556011805488168752838720805483168417905560078054891688528488208054841685179055600880548a1689528589208054851686179055915489168852600b86528488208054841685179055958752838720805483168417905594548716865282862080548216831790559354909516845290922080549091169092179091556006600c8190556002600d8190556004600e819055620004df93620004cb92906200050d811b62000e1c17901c565b6200050d60201b62000e1c1790919060201c565b600f555050601254601380546001600160a01b0319166001600160a01b039092169190911790555062000705565b60006200051b828462000652565b9392505050565b8280546200053090620006b2565b90600052602060002090601f0160209004810192826200055457600085556200059f565b82601f106200056f57805160ff19168380011785556200059f565b828001600101855582156200059f579182015b828111156200059f57825182559160200191906001019062000582565b50620005ad929150620005bf565b5090565b610fdd80620024c283390190565b5b80821115620005ad5760008155600101620005c0565b80516001600160a01b0381168114620005ee57600080fd5b919050565b6000602082840312156200060657600080fd5b6200051b82620005d6565b6000806000606084860312156200062757600080fd5b835192506200063960208501620005d6565b91506200064960408501620005d6565b90509250925092565b60008219821115620006685762000668620006ef565b500190565b6000826200068b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620006ad57620006ad620006ef565b500290565b600181811c90821680620006c757607f821691505b60208210811415620006e957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b611dad80620007156000396000f3fe6080604052600436106102535760003560e01c806370a0823111610138578063a457c2d7116100b0578063bad3ea6a1161007f578063dd62ed3e11610064578063dd62ed3e146106a5578063e66b1d1e146106eb578063f887ea401461070b57600080fd5b8063bad3ea6a14610665578063bb542ef01461068557600080fd5b8063a457c2d7146105d5578063a8aa1b31146105f5578063a9059cbb14610615578063b0c150af1461063557600080fd5b806383ad79941161010757806395d89b41116100ec57806395d89b4114610580578063a3a2e89e14610595578063a3e67610146105b557600080fd5b806383ad7994146105325780638ea5220f1461054857600080fd5b806370a08231146104a65780637a319590146104dc5780637db1342c146104fc578063807c2d9c1461051c57600080fd5b8063313ce567116101cb5780634355855a1161019a5780634a74bb021161017f5780634a74bb02146104595780636827e7641461047a578063704ce43e1461049057600080fd5b80634355855a1461040857806344de2e4c1461043857600080fd5b8063313ce5671461037c57806339509351146103985780633dab5269146103b85780633f4218e0146103d857600080fd5b80631df4ccfc1161022257806323b872dd1161020757806323b872dd146103275780632b112e49146103475780632d48e8961461035c57600080fd5b80631df4ccfc146102ef5780631f53ac021461030557600080fd5b80630445b6671461025f57806306fdde0314610288578063095ea7b3146102aa57806318160ddd146102da57600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027560155481565b6040519081526020015b60405180910390f35b34801561029457600080fd5b5061029d61072b565b60405161027f9190611bc2565b3480156102b657600080fd5b506102ca6102c5366004611aca565b6107bd565b604051901515815260200161027f565b3480156102e657600080fd5b50600454610275565b3480156102fb57600080fd5b50610275600f5481565b34801561031157600080fd5b506103256103203660046119e1565b6107d5565b005b34801561033357600080fd5b506102ca610342366004611a54565b610863565b34801561035357600080fd5b5061027561088a565b34801561036857600080fd5b50610325610377366004611b46565b6108dc565b34801561038857600080fd5b506040516009815260200161027f565b3480156103a457600080fd5b506102ca6103b3366004611aca565b6109b8565b3480156103c457600080fd5b506103256103d3366004611b11565b6109f7565b3480156103e457600080fd5b506102ca6103f33660046119e1565b60096020526000908152604090205460ff1681565b34801561041457600080fd5b506102ca6104233660046119e1565b600b6020526000908152604090205460ff1681565b34801561044457600080fd5b506008546102ca90600160a01b900460ff1681565b34801561046557600080fd5b506013546102ca90600160a81b900460ff1681565b34801561048657600080fd5b50610275600e5481565b34801561049c57600080fd5b50610275600d5481565b3480156104b257600080fd5b506102756104c13660046119e1565b6001600160a01b031660009081526002602052604090205490565b3480156104e857600080fd5b506103256104f7366004611b68565b610a8e565b34801561050857600080fd5b50610325610517366004611b2d565b610b65565b34801561052857600080fd5b5061027560145481565b34801561053e57600080fd5b50610275600c5481565b34801561055457600080fd5b50601354610568906001600160a01b031681565b6040516001600160a01b03909116815260200161027f565b34801561058c57600080fd5b5061029d610bc4565b3480156105a157600080fd5b506103256105b0366004611a95565b610bd3565b3480156105c157600080fd5b50601254610568906001600160a01b031681565b3480156105e157600080fd5b506102ca6105f0366004611aca565b610c58565b34801561060157600080fd5b50601154610568906001600160a01b031681565b34801561062157600080fd5b506102ca610630366004611aca565b610d0d565b34801561064157600080fd5b506102ca6106503660046119e1565b600a6020526000908152604090205460ff1681565b34801561067157600080fd5b50600054610568906001600160a01b031681565b34801561069157600080fd5b506103256106a03660046119e1565b610d1b565b3480156106b157600080fd5b506102756106c0366004611a1b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106f757600080fd5b50610325610706366004611af6565b610da4565b34801561071757600080fd5b50601054610568906001600160a01b031681565b60606005805461073a90611cf8565b80601f016020809104026020016040519081016040528092919081815260200182805461076690611cf8565b80156107b35780601f10610788576101008083540402835291602001916107b3565b820191906000526020600020905b81548152906001019060200180831161079657829003601f168201915b5050505050905090565b6000336107cb818585610e28565b5060019392505050565b6012546001600160a01b031633146108345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600033610871858285610f80565b61087c858585611012565b5060019150505b9392505050565b6008546001600160a01b03166000908152600260205260408120546108d7906007546001600160a01b03166000908152600260205260409020546108d19060045490611436565b90611436565b905090565b6012546001600160a01b031633146109365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b6000546040517f2d48e89600000000000000000000000000000000000000000000000000000000815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091906107cb90829086906109f2908790611c88565b610e28565b6012546001600160a01b03163314610a515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b60138054921515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217909155601555565b6012546001600160a01b03163314610ae85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b600c839055600d829055600e819055610b0b83610b058385610e1c565b90610e1c565b600f819055600c1015610b605760405162461bcd60e51b815260206004820152600c60248201527f546f6f2068696768206665650000000000000000000000000000000000000000604482015260640161082b565b505050565b6012546001600160a01b03163314610bbf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b601455565b60606006805461073a90611cf8565b6012546001600160a01b03163314610c2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919083811015610cf55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161082b565b610d028286868403610e28565b506001949350505050565b600033610d02818585611012565b6012546001600160a01b03163314610d755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6012546001600160a01b03163314610dfe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b60088054911515600160a01b0260ff60a01b19909216919091179055565b60006108838284611c88565b6001600160a01b038316610ea35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161082b565b6001600160a01b038216610f1f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161082b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260036020908152604080832093861683529290522054600019811461100c5781811015610fff5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161082b565b61100c8484848403610e28565b50505050565b601354600090600160a01b900460ff161561103957611032848484611442565b9050610883565b6001600160a01b0383166000908152600a602052604090205460ff1615801561106b5750600854600160a01b900460ff165b156110e4576014546001600160a01b0384166000908152600260205260409020546110969084610e1c565b11156110e45760405162461bcd60e51b815260206004820152600660248201527f77616c6c65740000000000000000000000000000000000000000000000000000604482015260640161082b565b6011546001600160a01b031633148015906111095750601354600160a01b900460ff16155b801561111e5750601354600160a81b900460ff165b801561113b57506015543060009081526002602052604090205410155b1561114857611148611531565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0387166000908152600290915291909120546111a39184906118e3565b6001600160a01b038516600090815260026020908152604080832093909355600990529081205460ff161580156111f357506001600160a01b03841660009081526009602052604090205460ff16155b6111fd5782611207565b611207858461190f565b6001600160a01b03851660009081526002602052604090205490915061122d9082610e1c565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600b909152205460ff166112d257600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156112bf57600080fd5b505af19250505080156112d0575060015b505b6001600160a01b0384166000908152600b602052604090205460ff1661136457600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561135157600080fd5b505af1925050508015611362575060015b505b6000546001546040517fffb2c4790000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163ffb2c479916113b29160040190815260200190565b600060405180830381600087803b1580156113cc57600080fd5b505af19250505080156113dd575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161142391815260200190565b60405180910390a3506001949350505050565b60006108838284611ce1565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b038616600090815260029091529182205461149c9184906118e3565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546114cb9083610e1c565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061151f9086815260200190565b60405180910390a35060019392505050565b6013805460ff60a01b1916600160a01b179055306000908152600260208190526040822054600f54600d5491939261157892909161157291829087906119b4565b906119c0565b905060006115868383611436565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106115c0576115c0611d49565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561162d57600080fd5b505afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166591906119fe565b8160018151811061167857611678611d49565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906116d7908590600090869030904290600401611c17565b600060405180830381600087803b1580156116f157600080fd5b505af1158015611705573d6000803e3d6000fd5b505050506000479050600061172b600f54611572600e54856119b490919063ffffffff16565b9050600061174f6002611572600f54611572600d54886119b490919063ffffffff16565b90506000611761826108d18686611436565b905083156118cc576013546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156117a3573d6000803e3d6000fd5b5060008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117f257600080fd5b505af193505050508015611804575060015b5086156118cc576010546007546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b15801561188f57600080fd5b505af11580156118a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118c89190611b94565b5050505b50506013805460ff60a01b19169055505050505050565b600081848411156119075760405162461bcd60e51b815260040161082b9190611bc2565b505050900390565b60008061192c6064611572600f54866119b490919063ffffffff16565b306000908152600260205260409020549091506119499082610e1c565b30600081815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061199a9085815260200190565b60405180910390a36119ac8382611436565b949350505050565b60006108838284611cc2565b60006108838284611ca0565b803580151581146119dc57600080fd5b919050565b6000602082840312156119f357600080fd5b813561088381611d5f565b600060208284031215611a1057600080fd5b815161088381611d5f565b60008060408385031215611a2e57600080fd5b8235611a3981611d5f565b91506020830135611a4981611d5f565b809150509250929050565b600080600060608486031215611a6957600080fd5b8335611a7481611d5f565b92506020840135611a8481611d5f565b929592945050506040919091013590565b60008060408385031215611aa857600080fd5b8235611ab381611d5f565b9150611ac1602084016119cc565b90509250929050565b60008060408385031215611add57600080fd5b8235611ae881611d5f565b946020939093013593505050565b600060208284031215611b0857600080fd5b610883826119cc565b60008060408385031215611b2457600080fd5b611ae8836119cc565b600060208284031215611b3f57600080fd5b5035919050565b60008060408385031215611b5957600080fd5b50508035926020909101359150565b600080600060608486031215611b7d57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ba957600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611bef57858101830151858201604001528201611bd3565b81811115611c01576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c675784516001600160a01b031683529383019391830191600101611c42565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611c9b57611c9b611d33565b500190565b600082611cbd57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611cdc57611cdc611d33565b500290565b600082821015611cf357611cf3611d33565b500390565b600181811c90821680611d0c57607f821691505b60208210811415611d2d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611d7457600080fd5b5056fea2646970667358221220f2e63990b8e76c2fe52165f6bcf89d1840f10074f4f558f37d15b4e0d39ab41064736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556a295be96e64066972000000600d5534801561003857600080fd5b50604051610fdd380380610fdd833981016040819052610057916100b5565b600180546001600160a01b039485166001600160a01b0319918216179091556002805493851693821693909317909255600080549190931691161790556100f8565b80516001600160a01b03811681146100b057600080fd5b919050565b6000806000606084860312156100ca57600080fd5b6100d384610099565b92506100e160208501610099565b91506100ef60408501610099565b90509250925092565b610ed6806101076000396000f3fe6080604052600436106100e85760003560e01c8063ce7c2ac21161008a578063f0fc6bca11610059578063f0fc6bca14610245578063f1e9f1e51461025a578063ffb2c47914610292578063ffd49c84146102b257600080fd5b8063ce7c2ac2146101ba578063d0e30db014610211578063e2d2e21914610219578063efca2eed1461022f57600080fd5b80632d48e896116100c65780632d48e896146101585780633a98ef39146101785780634fab0ae81461018e578063997664d7146101a457600080fd5b806311ce023d146100ed57806314b6ca961461011657806328fd319814610138575b600080fd5b3480156100f957600080fd5b50610103600b5481565b6040519081526020015b60405180910390f35b34801561012257600080fd5b50610136610131366004610cb2565b6102c8565b005b34801561014457600080fd5b50610103610153366004610c78565b61044d565b34801561016457600080fd5b50610136610173366004610d32565b6104d6565b34801561018457600080fd5b5061010360075481565b34801561019a57600080fd5b50610103600d5481565b3480156101b057600080fd5b5061010360085481565b3480156101c657600080fd5b506101f66101d5366004610c78565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161010d565b6101366104f8565b34801561022557600080fd5b50610103600a5481565b34801561023b57600080fd5b5061010360095481565b34801561025157600080fd5b506101366107e7565b34801561026657600080fd5b5060025461027a906001600160a01b031681565b6040516001600160a01b03909116815260200161010d565b34801561029e57600080fd5b506101366102ad366004610d00565b610865565b3480156102be57600080fd5b50610103600c5481565b6000546001600160a01b031633146102df57600080fd5b6001600160a01b038216600090815260066020526040902054156103065761030682610966565b60008111801561032c57506001600160a01b038216600090815260066020526040902054155b1561039f57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191690911790556103d2565b801580156103c457506001600160a01b03821660009081526006602052604090205415155b156103d2576103d282610aaa565b6001600160a01b0382166000908152600660205260409020546007546104039183916103fd91610bd9565b90610bec565b6007556001600160a01b038216600090815260066020526040902081905561042a81610bf8565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b03811660009081526006602052604081205461047257506000919050565b6001600160a01b03821660009081526006602052604081205461049490610bf8565b6001600160a01b0384166000908152600660205260409020600101549091508082116104c4575060009392505050565b6104ce8282610bd9565b949350505050565b6000546001600160a01b031633146104ed57600080fd5b600c91909155600d55565b6000546001600160a01b0316331461050f57600080fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561055357600080fd5b505afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190610d19565b60408051600280825260608201835292935060009290916020830190803683375050600154604080517fad5c464800000000000000000000000000000000000000000000000000000000815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561060e57600080fd5b505afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190610c95565b8160008151811061065957610659610e75565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061068a5761068a610e75565b6001600160a01b0392831660209182029290920101526001546040517fb6f9de9500000000000000000000000000000000000000000000000000000000815291169063b6f9de959034906106e990600090869030904290600401610d54565b6000604051808303818588803b15801561070257600080fd5b505af1158015610716573d6000803e3d6000fd5b50506002546040516370a0823160e01b8152306004820152600094506107a593508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561076757600080fd5b505afa15801561077b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079f9190610d19565b90610bd9565b6008549091506107b59082610bec565b600855600754600b546107df916107d6916107d09085610c1b565b90610c27565b600a5490610bec565b600a55505050565b6107f033610c33565b61085a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015260640160405180910390fd5b61086333610966565b565b6000546001600160a01b0316331461087c57600080fd5b60035480610888575050565b60008060005a90505b848210801561089f57508383105b1561095e5783600e54106108b3576000600e555b6108e56003600e54815481106108cb576108cb610e75565b6000918252602090912001546001600160a01b0316610c33565b1561091c5761091c6003600e548154811061090257610902610e75565b6000918252602090912001546001600160a01b0316610966565b61093161092a5a8390610bd9565b8390610bec565b91505a600e8054919250600061094683610e2e565b9190505550828061095690610e2e565b935050610891565b505050505b50565b6001600160a01b0381166000908152600660205260409020546109865750565b60006109918261044d565b90508015610aa6576009546109a69082610bec565b6009556002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015610a1057600080fd5b505af1158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190610cde565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610a7c9082610bec565b6001600160a01b038316600090815260066020526040902060028101919091555461042a90610bf8565b5050565b60038054610aba90600190610e17565b81548110610aca57610aca610e75565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b0857610b08610e75565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03948516179055918316815260049182905260408120546003805491939291610b6190600190610e17565b81548110610b7157610b71610e75565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610ba757610ba7610e5f565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff1916905501905550565b6000610be58284610e17565b9392505050565b6000610be58284610dbe565b6000610c15600b546107d0600a5485610c1b90919063ffffffff16565b92915050565b6000610be58284610df8565b6000610be58284610dd6565b600c546001600160a01b03821660009081526005602052604081205490914291610c5d9190610dbe565b108015610c155750600d54610c718361044d565b1192915050565b600060208284031215610c8a57600080fd5b8135610be581610e8b565b600060208284031215610ca757600080fd5b8151610be581610e8b565b60008060408385031215610cc557600080fd5b8235610cd081610e8b565b946020939093013593505050565b600060208284031215610cf057600080fd5b81518015158114610be557600080fd5b600060208284031215610d1257600080fd5b5035919050565b600060208284031215610d2b57600080fd5b5051919050565b60008060408385031215610d4557600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610d9e5784516001600160a01b031683529383019391830191600101610d79565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610dd157610dd1610e49565b500190565b600082610df357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610e1257610e12610e49565b500290565b600082821015610e2957610e29610e49565b500390565b6000600019821415610e4257610e42610e49565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461096357600080fdfea264697066735822122048d8c2934cbd51a278da2bd18dfdd426226b32b4f6a9c3e87e9caf7e251333bf64736f6c634300080700330000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000a71d0588eaf47f12b13cf8ec750430d21df049740000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102535760003560e01c806370a0823111610138578063a457c2d7116100b0578063bad3ea6a1161007f578063dd62ed3e11610064578063dd62ed3e146106a5578063e66b1d1e146106eb578063f887ea401461070b57600080fd5b8063bad3ea6a14610665578063bb542ef01461068557600080fd5b8063a457c2d7146105d5578063a8aa1b31146105f5578063a9059cbb14610615578063b0c150af1461063557600080fd5b806383ad79941161010757806395d89b41116100ec57806395d89b4114610580578063a3a2e89e14610595578063a3e67610146105b557600080fd5b806383ad7994146105325780638ea5220f1461054857600080fd5b806370a08231146104a65780637a319590146104dc5780637db1342c146104fc578063807c2d9c1461051c57600080fd5b8063313ce567116101cb5780634355855a1161019a5780634a74bb021161017f5780634a74bb02146104595780636827e7641461047a578063704ce43e1461049057600080fd5b80634355855a1461040857806344de2e4c1461043857600080fd5b8063313ce5671461037c57806339509351146103985780633dab5269146103b85780633f4218e0146103d857600080fd5b80631df4ccfc1161022257806323b872dd1161020757806323b872dd146103275780632b112e49146103475780632d48e8961461035c57600080fd5b80631df4ccfc146102ef5780631f53ac021461030557600080fd5b80630445b6671461025f57806306fdde0314610288578063095ea7b3146102aa57806318160ddd146102da57600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027560155481565b6040519081526020015b60405180910390f35b34801561029457600080fd5b5061029d61072b565b60405161027f9190611bc2565b3480156102b657600080fd5b506102ca6102c5366004611aca565b6107bd565b604051901515815260200161027f565b3480156102e657600080fd5b50600454610275565b3480156102fb57600080fd5b50610275600f5481565b34801561031157600080fd5b506103256103203660046119e1565b6107d5565b005b34801561033357600080fd5b506102ca610342366004611a54565b610863565b34801561035357600080fd5b5061027561088a565b34801561036857600080fd5b50610325610377366004611b46565b6108dc565b34801561038857600080fd5b506040516009815260200161027f565b3480156103a457600080fd5b506102ca6103b3366004611aca565b6109b8565b3480156103c457600080fd5b506103256103d3366004611b11565b6109f7565b3480156103e457600080fd5b506102ca6103f33660046119e1565b60096020526000908152604090205460ff1681565b34801561041457600080fd5b506102ca6104233660046119e1565b600b6020526000908152604090205460ff1681565b34801561044457600080fd5b506008546102ca90600160a01b900460ff1681565b34801561046557600080fd5b506013546102ca90600160a81b900460ff1681565b34801561048657600080fd5b50610275600e5481565b34801561049c57600080fd5b50610275600d5481565b3480156104b257600080fd5b506102756104c13660046119e1565b6001600160a01b031660009081526002602052604090205490565b3480156104e857600080fd5b506103256104f7366004611b68565b610a8e565b34801561050857600080fd5b50610325610517366004611b2d565b610b65565b34801561052857600080fd5b5061027560145481565b34801561053e57600080fd5b50610275600c5481565b34801561055457600080fd5b50601354610568906001600160a01b031681565b6040516001600160a01b03909116815260200161027f565b34801561058c57600080fd5b5061029d610bc4565b3480156105a157600080fd5b506103256105b0366004611a95565b610bd3565b3480156105c157600080fd5b50601254610568906001600160a01b031681565b3480156105e157600080fd5b506102ca6105f0366004611aca565b610c58565b34801561060157600080fd5b50601154610568906001600160a01b031681565b34801561062157600080fd5b506102ca610630366004611aca565b610d0d565b34801561064157600080fd5b506102ca6106503660046119e1565b600a6020526000908152604090205460ff1681565b34801561067157600080fd5b50600054610568906001600160a01b031681565b34801561069157600080fd5b506103256106a03660046119e1565b610d1b565b3480156106b157600080fd5b506102756106c0366004611a1b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106f757600080fd5b50610325610706366004611af6565b610da4565b34801561071757600080fd5b50601054610568906001600160a01b031681565b60606005805461073a90611cf8565b80601f016020809104026020016040519081016040528092919081815260200182805461076690611cf8565b80156107b35780601f10610788576101008083540402835291602001916107b3565b820191906000526020600020905b81548152906001019060200180831161079657829003601f168201915b5050505050905090565b6000336107cb818585610e28565b5060019392505050565b6012546001600160a01b031633146108345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600033610871858285610f80565b61087c858585611012565b5060019150505b9392505050565b6008546001600160a01b03166000908152600260205260408120546108d7906007546001600160a01b03166000908152600260205260409020546108d19060045490611436565b90611436565b905090565b6012546001600160a01b031633146109365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b6000546040517f2d48e89600000000000000000000000000000000000000000000000000000000815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091906107cb90829086906109f2908790611c88565b610e28565b6012546001600160a01b03163314610a515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b60138054921515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217909155601555565b6012546001600160a01b03163314610ae85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b600c839055600d829055600e819055610b0b83610b058385610e1c565b90610e1c565b600f819055600c1015610b605760405162461bcd60e51b815260206004820152600c60248201527f546f6f2068696768206665650000000000000000000000000000000000000000604482015260640161082b565b505050565b6012546001600160a01b03163314610bbf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b601455565b60606006805461073a90611cf8565b6012546001600160a01b03163314610c2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919083811015610cf55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161082b565b610d028286868403610e28565b506001949350505050565b600033610d02818585611012565b6012546001600160a01b03163314610d755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6012546001600160a01b03163314610dfe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b60088054911515600160a01b0260ff60a01b19909216919091179055565b60006108838284611c88565b6001600160a01b038316610ea35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161082b565b6001600160a01b038216610f1f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161082b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260036020908152604080832093861683529290522054600019811461100c5781811015610fff5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161082b565b61100c8484848403610e28565b50505050565b601354600090600160a01b900460ff161561103957611032848484611442565b9050610883565b6001600160a01b0383166000908152600a602052604090205460ff1615801561106b5750600854600160a01b900460ff165b156110e4576014546001600160a01b0384166000908152600260205260409020546110969084610e1c565b11156110e45760405162461bcd60e51b815260206004820152600660248201527f77616c6c65740000000000000000000000000000000000000000000000000000604482015260640161082b565b6011546001600160a01b031633148015906111095750601354600160a01b900460ff16155b801561111e5750601354600160a81b900460ff165b801561113b57506015543060009081526002602052604090205410155b1561114857611148611531565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0387166000908152600290915291909120546111a39184906118e3565b6001600160a01b038516600090815260026020908152604080832093909355600990529081205460ff161580156111f357506001600160a01b03841660009081526009602052604090205460ff16155b6111fd5782611207565b611207858461190f565b6001600160a01b03851660009081526002602052604090205490915061122d9082610e1c565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600b909152205460ff166112d257600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156112bf57600080fd5b505af19250505080156112d0575060015b505b6001600160a01b0384166000908152600b602052604090205460ff1661136457600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561135157600080fd5b505af1925050508015611362575060015b505b6000546001546040517fffb2c4790000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163ffb2c479916113b29160040190815260200190565b600060405180830381600087803b1580156113cc57600080fd5b505af19250505080156113dd575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161142391815260200190565b60405180910390a3506001949350505050565b60006108838284611ce1565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b038616600090815260029091529182205461149c9184906118e3565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546114cb9083610e1c565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061151f9086815260200190565b60405180910390a35060019392505050565b6013805460ff60a01b1916600160a01b179055306000908152600260208190526040822054600f54600d5491939261157892909161157291829087906119b4565b906119c0565b905060006115868383611436565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106115c0576115c0611d49565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561162d57600080fd5b505afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166591906119fe565b8160018151811061167857611678611d49565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906116d7908590600090869030904290600401611c17565b600060405180830381600087803b1580156116f157600080fd5b505af1158015611705573d6000803e3d6000fd5b505050506000479050600061172b600f54611572600e54856119b490919063ffffffff16565b9050600061174f6002611572600f54611572600d54886119b490919063ffffffff16565b90506000611761826108d18686611436565b905083156118cc576013546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156117a3573d6000803e3d6000fd5b5060008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117f257600080fd5b505af193505050508015611804575060015b5086156118cc576010546007546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b15801561188f57600080fd5b505af11580156118a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118c89190611b94565b5050505b50506013805460ff60a01b19169055505050505050565b600081848411156119075760405162461bcd60e51b815260040161082b9190611bc2565b505050900390565b60008061192c6064611572600f54866119b490919063ffffffff16565b306000908152600260205260409020549091506119499082610e1c565b30600081815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061199a9085815260200190565b60405180910390a36119ac8382611436565b949350505050565b60006108838284611cc2565b60006108838284611ca0565b803580151581146119dc57600080fd5b919050565b6000602082840312156119f357600080fd5b813561088381611d5f565b600060208284031215611a1057600080fd5b815161088381611d5f565b60008060408385031215611a2e57600080fd5b8235611a3981611d5f565b91506020830135611a4981611d5f565b809150509250929050565b600080600060608486031215611a6957600080fd5b8335611a7481611d5f565b92506020840135611a8481611d5f565b929592945050506040919091013590565b60008060408385031215611aa857600080fd5b8235611ab381611d5f565b9150611ac1602084016119cc565b90509250929050565b60008060408385031215611add57600080fd5b8235611ae881611d5f565b946020939093013593505050565b600060208284031215611b0857600080fd5b610883826119cc565b60008060408385031215611b2457600080fd5b611ae8836119cc565b600060208284031215611b3f57600080fd5b5035919050565b60008060408385031215611b5957600080fd5b50508035926020909101359150565b600080600060608486031215611b7d57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ba957600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611bef57858101830151858201604001528201611bd3565b81811115611c01576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c675784516001600160a01b031683529383019391830191600101611c42565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611c9b57611c9b611d33565b500190565b600082611cbd57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611cdc57611cdc611d33565b500290565b600082821015611cf357611cf3611d33565b500390565b600181811c90821680611d0c57607f821691505b60208210811415611d2d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611d7457600080fd5b5056fea2646970667358221220f2e63990b8e76c2fe52165f6bcf89d1840f10074f4f558f37d15b4e0d39ab41064736f6c63430008070033

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

0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000a71d0588eaf47f12b13cf8ec750430d21df049740000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 1000000000000000000
Arg [1] : reflectionToken (address): 0xa71d0588EAf47f12B13cF8eC750430d21DF04974
Arg [2] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [1] : 000000000000000000000000a71d0588eaf47f12b13cf8ec750430d21df04974
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

21238:14674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22360:28;;;;;;;;;;;;;;;;;;;9428:25:1;;;9416:2;9401:18;22360:28:0;;;;;;;;25656:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;28006:201::-;;;;;;;;;;-1:-1:-1;28006:201:0;;;;;:::i;:::-;;:::i;:::-;;;5529:14:1;;5522:22;5504:41;;5492:2;5477:18;28006:201:0;5364:187:1;26775:108:0;;;;;;;;;;-1:-1:-1;26863:12:0;;26775:108;;22081:23;;;;;;;;;;;;;;;;24763:123;;;;;;;;;;-1:-1:-1;24763:123:0;;;;;:::i;:::-;;:::i;:::-;;28797:295;;;;;;;;;;-1:-1:-1;28797:295:0;;;;;:::i;:::-;;:::i;25444:142::-;;;;;;;;;;;;;:::i;25230:206::-;;;;;;;;;;-1:-1:-1;25230:206:0;;;;;:::i;:::-;;:::i;26618:92::-;;;;;;;;;;-1:-1:-1;26618:92:0;;26701:1;10890:36:1;;10878:2;10863:18;26618:92:0;10748:184:1;29501:240:0;;;;;;;;;;-1:-1:-1;29501:240:0;;;;;:::i;:::-;;:::i;25023:199::-;;;;;;;;;;-1:-1:-1;25023:199:0;;;;;:::i;:::-;;:::i;21827:44::-;;;;;;;;;;-1:-1:-1;21827:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21931:49;;;;;;;;;;-1:-1:-1;21931:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21785:33;;;;;;;;;;-1:-1:-1;21785:33:0;;;;-1:-1:-1;;;21785:33:0;;;;;;22279:40;;;;;;;;;;-1:-1:-1;22279:40:0;;;;-1:-1:-1;;;22279:40:0;;;;;;22051:21;;;;;;;;;;;;;;;;22024:20;;;;;;;;;;;;;;;;26946:127;;;;;;;;;;-1:-1:-1;26946:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;27047:18:0;27020:7;27047:18;;;:9;:18;;;;;;;26946:127;24050:345;;;;;;;;;;-1:-1:-1;24050:345:0;;;;;:::i;:::-;;:::i;24404:105::-;;;;;;;;;;-1:-1:-1;24404:105:0;;;;;:::i;:::-;;:::i;22328:25::-;;;;;;;;;;;;;;;;21989:28;;;;;;;;;;;;;;;;22210:32;;;;;;;;;;-1:-1:-1;22210:32:0;;;;-1:-1:-1;;;;;22210:32:0;;;;;;-1:-1:-1;;;;;4113:55:1;;;4095:74;;4083:2;4068:18;22210:32:0;3949:226:1;25875:104:0;;;;;;;;;;;;;:::i;24633:122::-;;;;;;;;;;-1:-1:-1;24633:122:0;;;;;:::i;:::-;;:::i;22178:25::-;;;;;;;;;;-1:-1:-1;22178:25:0;;;;-1:-1:-1;;;;;22178:25:0;;;30244:438;;;;;;;;;;-1:-1:-1;30244:438:0;;;;;:::i;:::-;;:::i;22152:19::-;;;;;;;;;;-1:-1:-1;22152:19:0;;;;-1:-1:-1;;;;;22152:19:0;;;27279:193;;;;;;;;;;-1:-1:-1;27279:193:0;;;;;:::i;:::-;;:::i;21878:46::-;;;;;;;;;;-1:-1:-1;21878:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21332:47;;;;;;;;;;-1:-1:-1;21332:47:0;;;;-1:-1:-1;;;;;21332:47:0;;;24894:121;;;;;;;;;;-1:-1:-1;24894:121:0;;;;;:::i;:::-;;:::i;27535:151::-;;;;;;;;;;-1:-1:-1;27535:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;27651:18:0;;;27624:7;27651:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;27535:151;24517:108;;;;;;;;;;-1:-1:-1;24517:108:0;;;;;:::i;:::-;;:::i;22113:32::-;;;;;;;;;;-1:-1:-1;22113:32:0;;;;-1:-1:-1;;;;;22113:32:0;;;25656:100;25710:13;25743:5;25736:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25656:100;:::o;28006:201::-;28089:4;4398:10;28145:32;4398:10;28161:7;28170:6;28145:8;:32::i;:::-;-1:-1:-1;28195:4:0;;28006:201;-1:-1:-1;;;28006:201:0:o;24763:123::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;;;;;;;;;24845:9:::1;:33:::0;;-1:-1:-1;;24845:33:0::1;-1:-1:-1::0;;;;;24845:33:0;;;::::1;::::0;;;::::1;::::0;;24763:123::o;28797:295::-;28928:4;4398:10;28986:38;29002:4;4398:10;29017:6;28986:15;:38::i;:::-;29035:27;29045:4;29051:2;29055:6;29035:9;:27::i;:::-;;29080:4;29073:11;;;28797:295;;;;;;:::o;25444:142::-;25572:4;;-1:-1:-1;;;;;25572:4:0;25497:7;27047:18;;;:9;:18;;;;;;25524:54;;25551:4;;-1:-1:-1;;;;;25551:4:0;27020:7;27047:18;;;:9;:18;;;;;;25524:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25517:61;;25444:142;:::o;25230:206::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;7769:356:1;23922:71:0;25343:19:::1;::::0;:77:::1;::::0;;;;::::1;::::0;::::1;10669:25:1::0;;;10710:18;;;10703:34;;;-1:-1:-1;;;;;25343:19:0;;::::1;::::0;:43:::1;::::0;10642:18:1;;25343:77:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25230:206:::0;;:::o;29501:240::-;4398:10;29589:4;29670:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;29670:27:0;;;;;;;;;;29589:4;;4398:10;29645:66;;4398:10;;29670:27;;:40;;29700:10;;29670:40;:::i;:::-;29645:8;:66::i;25023:199::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;7769:356:1;23922:71:0;25132:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;25132:39:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;;:21:::1;25182:32:::0;25023:199::o;24050:345::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;7769:356:1;23922:71:0;24177:13:::1;:36:::0;;;24224:5:::1;:20:::0;;;24255:6:::1;:22:::0;;;24301:36:::1;24193:20:::0;24301:17:::1;24264:13:::0;24232:12;24301:10:::1;:17::i;:::-;:21:::0;::::1;:36::i;:::-;24290:8;:47:::0;;;24368:2:::1;-1:-1:-1::0;24356:14:0::1;24348:39;;;::::0;-1:-1:-1;;;24348:39:0;;8332:2:1;24348:39:0::1;::::0;::::1;8314:21:1::0;8371:2;8351:18;;;8344:30;8410:14;8390:18;;;8383:42;8442:18;;24348:39:0::1;8130:336:1::0;24348:39:0::1;24050:345:::0;;;:::o;24404:105::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;7769:356:1;23922:71:0;24479:10:::1;:22:::0;24404:105::o;25875:104::-;25931:13;25964:7;25957:14;;;;;:::i;24633:122::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;7769:356:1;23922:71:0;-1:-1:-1;;;;;24719:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24719:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24633:122::o;30244:438::-;4398:10;30337:4;30420:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;30420:27:0;;;;;;;;;;30337:4;;4398:10;30466:35;;;;30458:85;;;;-1:-1:-1;;;30458:85:0;;9078:2:1;30458:85:0;;;9060:21:1;9117:2;9097:18;;;9090:30;9156:34;9136:18;;;9129:62;9227:7;9207:18;;;9200:35;9252:19;;30458:85:0;8876:401:1;30458:85:0;30579:60;30588:5;30595:7;30623:15;30604:16;:34;30579:8;:60::i;:::-;-1:-1:-1;30670:4:0;;30244:438;-1:-1:-1;;;;30244:438:0:o;27279:193::-;27358:4;4398:10;27414:28;4398:10;27431:2;27435:6;27414:9;:28::i;24894:121::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;7769:356:1;23922:71:0;24980:10:::1;:27:::0;;-1:-1:-1;;24980:27:0::1;-1:-1:-1::0;;;;;24980:27:0;;;::::1;::::0;;;::::1;::::0;;24894:121::o;24517:108::-;23930:10;;-1:-1:-1;;;;;23930:10:0;4398;23930:26;23922:71;;;;-1:-1:-1;;;23922:71:0;;7971:2:1;23922:71:0;;;7953:21:1;;;7990:18;;;7983:30;8049:34;8029:18;;;8022:62;8101:18;;23922:71:0;7769:356:1;23922:71:0;24592:14:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;24592:25:0::1;-1:-1:-1::0;;;;24592:25:0;;::::1;::::0;;;::::1;::::0;;24517:108::o;7392:98::-;7450:7;7477:5;7481:1;7477;:5;:::i;33001:380::-;-1:-1:-1;;;;;33137:19:0;;33129:68;;;;-1:-1:-1;;;33129:68:0;;8673:2:1;33129:68:0;;;8655:21:1;8712:2;8692:18;;;8685:30;8751:34;8731:18;;;8724:62;8822:6;8802:18;;;8795:34;8846:19;;33129:68:0;8471:400:1;33129:68:0;-1:-1:-1;;;;;33216:21:0;;33208:68;;;;-1:-1:-1;;;33208:68:0;;6876:2:1;33208:68:0;;;6858:21:1;6915:2;6895:18;;;6888:30;6954:34;6934:18;;;6927:62;7025:4;7005:18;;;6998:32;7047:19;;33208:68:0;6674:398:1;33208:68:0;-1:-1:-1;;;;;33289:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;33341:32;;9428:25:1;;;33341:32:0;;9401:18:1;33341:32:0;;;;;;;33001:380;;;:::o;33668:453::-;-1:-1:-1;;;;;27651:18:0;;;33803:24;27651:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;33870:37:0;;33866:248;;33952:6;33932:16;:26;;33924:68;;;;-1:-1:-1;;;33924:68:0;;7279:2:1;33924:68:0;;;7261:21:1;7318:2;7298:18;;;7291:30;7357:31;7337:18;;;7330:59;7406:18;;33924:68:0;7077:353:1;33924:68:0;34036:51;34045:5;34052:7;34080:6;34061:16;:25;34036:8;:51::i;:::-;33792:329;33668:453;;;:::o;30690:1242::-;30800:16;;30778:4;;-1:-1:-1;;;30800:16:0;;;;30797:73;;;30826:41;30841:6;30849:9;30860:6;30826:14;:41::i;:::-;30819:48;;;;30797:73;-1:-1:-1;;;;;30888:24:0;;;;;;:13;:24;;;;;;;;30887:25;:43;;;;-1:-1:-1;30916:14:0;;-1:-1:-1;;;30916:14:0;;;;30887:43;30884:149;;;31000:10;;-1:-1:-1;;;;;30964:20:0;;;;;;:9;:20;;;;;;:32;;30989:6;30964:24;:32::i;:::-;:46;;30956:65;;;;-1:-1:-1;;;30956:65:0;;7637:2:1;30956:65:0;;;7619:21:1;7676:1;7656:18;;;7649:29;7714:8;7694:18;;;7687:36;7740:18;;30956:65:0;7435:329:1;30956:65:0;31062:4;;-1:-1:-1;;;;;31062:4:0;31048:10;:18;;;;:39;;-1:-1:-1;31071:16:0;;-1:-1:-1;;;31071:16:0;;;;31070:17;31048:39;:64;;;;-1:-1:-1;31091:21:0;;-1:-1:-1;;;31091:21:0;;;;31048:64;:109;;;;-1:-1:-1;31144:13:0;;31134:4;31116:24;;;;:9;:24;;;;;;:41;;31048:109;31045:128;;;31160:10;:8;:10::i;:::-;31205:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31205:17:0;;-1:-1:-1;31205:17:0;;;:9;:17;;;;;;;;:53;;31227:6;;31205:21;:53::i;:::-;-1:-1:-1;;;;;31185:17:0;;;;;;:9;:17;;;;;;;;:73;;;;31302:11;:19;;;;;;;;31301:20;:47;;;;-1:-1:-1;;;;;;31326:22:0;;;;;;:11;:22;;;;;;;;31325:23;31301:47;:82;;31377:6;31301:82;;;31351:23;31359:6;31367;31351:7;:23::i;:::-;-1:-1:-1;;;;;31417:20:0;;;;;;:9;:20;;;;;;31279:104;;-1:-1:-1;31417:37:0;;31279:104;31417:24;:37::i;:::-;-1:-1:-1;;;;;31394:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;31500:24;;;;;:16;:24;;;;;;;31496:127;;31545:19;;;-1:-1:-1;;;;;31582:17:0;;;;;;:9;:17;;;;;;;;31545:55;;-1:-1:-1;;;31545:55:0;;;;;4601:74:1;;;;4691:18;;;4684:34;;;;31545:19:0;;:28;;4574:18:1;;31545:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31541:71;;-1:-1:-1;;;;;31639:27:0;;;;;;:16;:27;;;;;;;;31635:137;;31687:19;;;-1:-1:-1;;;;;31727:20:0;;;;;;:9;:20;;;;;;;;31687:61;;-1:-1:-1;;;31687:61:0;;;;;4601:74:1;;;;4691:18;;;4684:34;;;;31687:19:0;;:28;;4574:18:1;;31687:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31683:77;;31788:19;;;31816:14;31788:43;;;;;-1:-1:-1;;;;;31788:19:0;;;;:27;;:43;;;;9428:25:1;;;9416:2;9401:18;;9282:177;31788:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31784:59;31879:9;-1:-1:-1;;;;;31862:40:0;31871:6;-1:-1:-1;;;;;31862:40:0;;31890:11;31862:40;;;;9428:25:1;;9416:2;9401:18;;9282:177;31862:40:0;;;;;;;;-1:-1:-1;31920:4:0;;30690:1242;-1:-1:-1;;;;30690:1242:0:o;7773:98::-;7831:7;7858:5;7862:1;7858;:5;:::i;31944:330::-;32074:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32074:17:0;;32037:4;32074:17;;;:9;:17;;;;;;;:53;;32096:6;;32074:21;:53::i;:::-;-1:-1:-1;;;;;32054:17:0;;;;;;;:9;:17;;;;;;:73;;;;32161:20;;;;;;;:32;;32186:6;32161:24;:32::i;:::-;-1:-1:-1;;;;;32138:20:0;;;;;;;:9;:20;;;;;;;:55;;;;32209:35;;;;;;;;;;32237:6;9428:25:1;;9416:2;9401:18;;9282:177;32209:35:0;;;;;;;;-1:-1:-1;32262:4:0;31944:330;;;;;:::o;34469:1400::-;23804:16;:23;;-1:-1:-1;;;;23804:23:0;-1:-1:-1;;;23804:23:0;;;34575:4:::1;23804:23:::0;34557:24;;;:9:::1;:24;::::0;;;;;;;34649:8:::1;::::0;34638:5:::1;::::0;34557:24;;23804:23;34618:47:::1;::::0;34557:9;;34618:40:::1;::::0;;;34557:24;;34618:19:::1;:26::i;:::-;:30:::0;::::1;:40::i;:47::-;34592:73:::0;-1:-1:-1;34676:20:0::1;34699:36;:15:::0;34592:73;34699:19:::1;:36::i;:::-;34772:16;::::0;;34786:1:::1;34772:16:::0;;;;;::::1;::::0;;34676:59;;-1:-1:-1;34748:21:0::1;::::0;34772:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;34772:16:0::1;34748:40;;34817:4;34799;34804:1;34799:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34799:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;34843:6:::1;::::0;:13:::1;::::0;;;;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;34799:7;;34843:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34833:4;34838:1;34833:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34833:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;34869:6:::1;::::0;:188:::1;::::0;;;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;34941:12;;34869:6:::1;::::0;34984:4;;35011::::1;::::0;35031:15:::1;::::0;34869:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;35070:17;35090:21;35070:41;;35122:18;35143:35;35169:8;;35143:21;35157:6;;35143:9;:13;;:21;;;;:::i;:35::-;35122:56;;35191:26;35220:41;35259:1;35220:34;35245:8;;35220:20;35234:5;;35220:9;:13;;:20;;;;:::i;:41::-;35191:70:::0;-1:-1:-1;35272:27:0::1;35302:49;35191:70:::0;35302:25:::1;:9:::0;35316:10;35302:13:::1;:25::i;:49::-;35272:79:::0;-1:-1:-1;35369:13:0;;35366:490:::1;;35398:9;::::0;:30:::1;::::0;-1:-1:-1;;;;;35398:9:0;;::::1;::::0;:30;::::1;;;::::0;35417:10;;35398:9:::1;:30:::0;:9;:30;35417:10;35398:9;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;35447:19;::::0;::::1;;;;;;-1:-1:-1::0;;;;;35447:19:0::1;-1:-1:-1::0;;;;;35447:27:0::1;;35482:19;35447:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;35443:73:::0;35535:19;;35532:313:::1;;35574:6;::::0;35768:4:::1;::::0;35574:255:::1;::::0;;;;35654:4:::1;35574:255;::::0;::::1;5093:34:1::0;5143:18;;;5136:34;;;35574:6:0::1;5186:18:1::0;;;5179:34;;;5229:18;;;5222:34;-1:-1:-1;;;;;35768:4:0;;::::1;5272:19:1::0;;;5265:44;35795:15:0::1;5325:19:1::0;;;5318:35;35574:6:0;::::1;::::0;:22:::1;::::0;35604:18;;5004:19:1;;35574:255:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35532:313;-1:-1:-1::0;;23850:16:0;:24;;-1:-1:-1;;;;23850:24:0;;;-1:-1:-1;;;;;;34469:1400:0:o;9671:240::-;9791:7;9852:12;9844:6;;;;9836:29;;;;-1:-1:-1;;;9836:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9887:5:0;;;9671:240::o;34129:332::-;34196:7;34226:17;34246:29;34271:3;34246:20;34257:8;;34246:6;:10;;:20;;;;:::i;:29::-;34333:4;34315:24;;;;:9;:24;;;;;;34226:49;;-1:-1:-1;34315:39:0;;34226:49;34315:28;:39::i;:::-;34306:4;34288:24;;;;:9;:24;;;;;;;:66;;;;34370:42;;-1:-1:-1;;;;;34370:42:0;;;;;;;34402:9;9428:25:1;;9416:2;9401:18;;9282:177;34370:42:0;;;;;;;;34432:21;:6;34443:9;34432:10;:21::i;:::-;34425:28;34129:332;-1:-1:-1;;;;34129:332:0:o;8130:98::-;8188:7;8215:5;8219:1;8215;:5;:::i;8529:98::-;8587:7;8614:5;8618:1;8614;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;947:388::-;1015:6;1023;1076:2;1064:9;1055:7;1051:23;1047:32;1044:52;;;1092:1;1089;1082:12;1044:52;1131:9;1118:23;1150:31;1175:5;1150:31;:::i;:::-;1200:5;-1:-1:-1;1257:2:1;1242:18;;1229:32;1270:33;1229:32;1270:33;:::i;:::-;1322:7;1312:17;;;947:388;;;;;:::o;1340:456::-;1417:6;1425;1433;1486:2;1474:9;1465:7;1461:23;1457:32;1454:52;;;1502:1;1499;1492:12;1454:52;1541:9;1528:23;1560:31;1585:5;1560:31;:::i;:::-;1610:5;-1:-1:-1;1667:2:1;1652:18;;1639:32;1680:33;1639:32;1680:33;:::i;:::-;1340:456;;1732:7;;-1:-1:-1;;;1786:2:1;1771:18;;;;1758:32;;1340:456::o;1801:315::-;1866:6;1874;1927:2;1915:9;1906:7;1902:23;1898:32;1895:52;;;1943:1;1940;1933:12;1895:52;1982:9;1969:23;2001:31;2026:5;2001:31;:::i;:::-;2051:5;-1:-1:-1;2075:35:1;2106:2;2091:18;;2075:35;:::i;:::-;2065:45;;1801:315;;;;;:::o;2121:::-;2189:6;2197;2250:2;2238:9;2229:7;2225:23;2221:32;2218:52;;;2266:1;2263;2256:12;2218:52;2305:9;2292:23;2324:31;2349:5;2324:31;:::i;:::-;2374:5;2426:2;2411:18;;;;2398:32;;-1:-1:-1;;;2121:315:1:o;2441:180::-;2497:6;2550:2;2538:9;2529:7;2525:23;2521:32;2518:52;;;2566:1;2563;2556:12;2518:52;2589:26;2605:9;2589:26;:::i;2626:248::-;2691:6;2699;2752:2;2740:9;2731:7;2727:23;2723:32;2720:52;;;2768:1;2765;2758:12;2720:52;2791:26;2807:9;2791:26;:::i;2879:180::-;2938:6;2991:2;2979:9;2970:7;2966:23;2962:32;2959:52;;;3007:1;3004;2997:12;2959:52;-1:-1:-1;3030:23:1;;2879:180;-1:-1:-1;2879:180:1:o;3064:248::-;3132:6;3140;3193:2;3181:9;3172:7;3168:23;3164:32;3161:52;;;3209:1;3206;3199:12;3161:52;-1:-1:-1;;3232:23:1;;;3302:2;3287:18;;;3274:32;;-1:-1:-1;3064:248:1:o;3317:316::-;3394:6;3402;3410;3463:2;3451:9;3442:7;3438:23;3434:32;3431:52;;;3479:1;3476;3469:12;3431:52;-1:-1:-1;;3502:23:1;;;3572:2;3557:18;;3544:32;;-1:-1:-1;3623:2:1;3608:18;;;3595:32;;3317:316;-1:-1:-1;3317:316:1:o;3638:306::-;3726:6;3734;3742;3795:2;3783:9;3774:7;3770:23;3766:32;3763:52;;;3811:1;3808;3801:12;3763:52;3840:9;3834:16;3824:26;;3890:2;3879:9;3875:18;3869:25;3859:35;;3934:2;3923:9;3919:18;3913:25;3903:35;;3638:306;;;;;:::o;6072:597::-;6184:4;6213:2;6242;6231:9;6224:21;6274:6;6268:13;6317:6;6312:2;6301:9;6297:18;6290:34;6342:1;6352:140;6366:6;6363:1;6360:13;6352:140;;;6461:14;;;6457:23;;6451:30;6427:17;;;6446:2;6423:26;6416:66;6381:10;;6352:140;;;6510:6;6507:1;6504:13;6501:91;;;6580:1;6575:2;6566:6;6555:9;6551:22;6547:31;6540:42;6501:91;-1:-1:-1;6653:2:1;6632:15;-1:-1:-1;;6628:29:1;6613:45;;;;6660:2;6609:54;;6072:597;-1:-1:-1;;;6072:597:1:o;9464:1026::-;9726:4;9774:3;9763:9;9759:19;9805:6;9794:9;9787:25;9831:2;9869:6;9864:2;9853:9;9849:18;9842:34;9912:3;9907:2;9896:9;9892:18;9885:31;9936:6;9971;9965:13;10002:6;9994;9987:22;10040:3;10029:9;10025:19;10018:26;;10079:2;10071:6;10067:15;10053:29;;10100:1;10110:218;10124:6;10121:1;10118:13;10110:218;;;10189:13;;-1:-1:-1;;;;;10185:62:1;10173:75;;10303:15;;;;10268:12;;;;10146:1;10139:9;10110:218;;;-1:-1:-1;;;;;;;10384:55:1;;;;10379:2;10364:18;;10357:83;-1:-1:-1;;;10471:3:1;10456:19;10449:35;10345:3;9464:1026;-1:-1:-1;;;9464:1026:1:o;10937:128::-;10977:3;11008:1;11004:6;11001:1;10998:13;10995:39;;;11014:18;;:::i;:::-;-1:-1:-1;11050:9:1;;10937:128::o;11070:274::-;11110:1;11136;11126:189;;-1:-1:-1;;;11168:1:1;11161:88;11272:4;11269:1;11262:15;11300:4;11297:1;11290:15;11126:189;-1:-1:-1;11329:9:1;;11070:274::o;11349:168::-;11389:7;11455:1;11451;11447:6;11443:14;11440:1;11437:21;11432:1;11425:9;11418:17;11414:45;11411:71;;;11462:18;;:::i;:::-;-1:-1:-1;11502:9:1;;11349:168::o;11522:125::-;11562:4;11590:1;11587;11584:8;11581:34;;;11595:18;;:::i;:::-;-1:-1:-1;11632:9:1;;11522:125::o;11652:437::-;11731:1;11727:12;;;;11774;;;11795:61;;11849:4;11841:6;11837:17;11827:27;;11795:61;11902:2;11894:6;11891:14;11871:18;11868:38;11865:218;;;-1:-1:-1;;;11936:1:1;11929:88;12040:4;12037:1;12030:15;12068:4;12065:1;12058:15;11865:218;;11652:437;;;:::o;12094:184::-;-1:-1:-1;;;12143:1:1;12136:88;12243:4;12240:1;12233:15;12267:4;12264:1;12257:15;12283:184;-1:-1:-1;;;12332:1:1;12325:88;12432:4;12429:1;12422:15;12456:4;12453:1;12446:15;12661:154;-1:-1:-1;;;;;12740:5:1;12736:54;12729:5;12726:65;12716:93;;12805:1;12802;12795:12;12716:93;12661:154;:::o

Swarm Source

ipfs://48d8c2934cbd51a278da2bd18dfdd426226b32b4f6a9c3e87e9caf7e251333bf
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.