ETH Price: $2,534.45 (+3.99%)

Contract

0x92ac3F1490E85CA8cB6dd99903b9434B890C863b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy Tokens173371312023-05-25 15:45:11466 days ago1685029511IN
0x92ac3F14...B890C863b
0 ETH0.0013395155.38600648
Buy Tokens173371312023-05-25 15:45:11466 days ago1685029511IN
0x92ac3F14...B890C863b
0 ETH0.0013395155.38600648
Buy Tokens173371252023-05-25 15:43:59466 days ago1685029439IN
0x92ac3F14...B890C863b
0 ETH0.0013336655.14414787
Claim Tokens173324792023-05-25 0:03:35467 days ago1684973015IN
0x92ac3F14...B890C863b
0 ETH0.0024180635.99647564
Claim Tokens173324792023-05-25 0:03:35467 days ago1684973015IN
0x92ac3F14...B890C863b
0 ETH0.0024180635.99647564
Claim Tokens173324792023-05-25 0:03:35467 days ago1684973015IN
0x92ac3F14...B890C863b
0 ETH0.0024180635.99647564
Claim Tokens173324792023-05-25 0:03:35467 days ago1684973015IN
0x92ac3F14...B890C863b
0 ETH0.0024180635.99647564
Claim Tokens173324792023-05-25 0:03:35467 days ago1684973015IN
0x92ac3F14...B890C863b
0 ETH0.0024180635.99647564
Claim Tokens173324792023-05-25 0:03:35467 days ago1684973015IN
0x92ac3F14...B890C863b
0 ETH0.0024180635.99647564
Claim Tokens173324662023-05-25 0:00:59467 days ago1684972859IN
0x92ac3F14...B890C863b
0 ETH0.0019742629.38982633
Claim Tokens173324442023-05-24 23:56:35467 days ago1684972595IN
0x92ac3F14...B890C863b
0 ETH0.0013348428.72183842
Buy Tokens173324442023-05-24 23:56:35467 days ago1684972595IN
0x92ac3F14...B890C863b
0 ETH0.0027329113
Buy Tokens173324442023-05-24 23:56:35467 days ago1684972595IN
0x92ac3F14...B890C863b
0 ETH0.00282964117
Buy Tokens173324422023-05-24 23:56:11467 days ago1684972571IN
0x92ac3F14...B890C863b
0 ETH0.0021315100
Buy Tokens173324422023-05-24 23:56:11467 days ago1684972571IN
0x92ac3F14...B890C863b
0 ETH0.00240859113
Claim Tokens173324232023-05-24 23:52:23467 days ago1684972343IN
0x92ac3F14...B890C863b
0 ETH0.0020913745
Claim Tokens173324052023-05-24 23:48:47467 days ago1684972127IN
0x92ac3F14...B890C863b
0 ETH0.0018948440.77136792
Claim Tokens173324042023-05-24 23:48:35467 days ago1684972115IN
0x92ac3F14...B890C863b
0 ETH0.0025778838.37572729
Claim Tokens173323942023-05-24 23:46:35467 days ago1684971995IN
0x92ac3F14...B890C863b
0 ETH0.0017122536.84245334
Claim Tokens173323892023-05-24 23:45:35467 days ago1684971935IN
0x92ac3F14...B890C863b
0 ETH0.0024792336.9071174
Claim Tokens173323812023-05-24 23:43:59467 days ago1684971839IN
0x92ac3F14...B890C863b
0 ETH0.0021214231.58064066
Claim Tokens173323792023-05-24 23:43:35467 days ago1684971815IN
0x92ac3F14...B890C863b
0 ETH0.0015125732.54599508
Claim Tokens173323712023-05-24 23:41:59467 days ago1684971719IN
0x92ac3F14...B890C863b
0 ETH0.0020386630.34861967
Claim Tokens173323602023-05-24 23:39:47467 days ago1684971587IN
0x92ac3F14...B890C863b
0 ETH0.0019691942.37115455
Claim Tokens173323602023-05-24 23:39:47467 days ago1684971587IN
0x92ac3F14...B890C863b
0 ETH0.0029067343.27115455
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
173323242023-05-24 23:32:35467 days ago1684971155
0x92ac3F14...B890C863b
20.6967 ETH
173323242023-05-24 23:32:35467 days ago1684971155
0x92ac3F14...B890C863b
48.2923 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Presale

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

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 subtraction 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;
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract Presale is Ownable {
    using SafeMath for uint256;

    bool public isInit;
    bool public isDeposit;
    bool public isRefund;
    bool public isFinish;
    bool public burnTokens = true;
    address public creatorWallet;
    address public teamWallet;
    address public weth;
    uint8 public tokenDecimals = 18;
    uint256 public ethRaised;
    uint256 public percentageRaised;
    uint256 public tokensSold;

    struct Pool {
        uint64 startTime;
        uint64 endTime;
        uint256 tokenDeposit;
        uint256 tokensForSale;
        uint256 tokensForLiquidity;
        uint8 liquidityPortion;
        uint256 hardCap;
        uint256 softCap;
        uint256 maxBuy;
        uint256 minBuy;
    }

    IERC20 public tokenInstance;
    IUniswapV2Factory public UniswapV2Factory;
    IUniswapV2Router02 public UniswapV2Router02;
    Pool public pool;

    mapping(address => uint256) public ethContribution;

    modifier onlyActive() {
        require(block.timestamp >= pool.startTime, "Sale must be active.");
        require(block.timestamp <= pool.endTime, "Sale must be active.");
        _;
    }

    modifier onlyInactive() {
        require(
            block.timestamp < pool.startTime ||
                block.timestamp > pool.endTime ||
                ethRaised >= pool.hardCap,
            "Sale must be inactive."
        );
        _;
    }

    modifier onlyRefund() {
        require(
            isRefund == true ||
                (block.timestamp > pool.endTime && ethRaised < pool.softCap),
            "Refund unavailable."
        );
        _;
    }

    constructor(
        IERC20 _tokenInstance,
        address _uniswapv2Router,
        address _uniswapv2Factory,
        address _teamWallet,
        address _weth
    ) {
        require(_uniswapv2Router != address(0), "Invalid router address");
        require(_uniswapv2Factory != address(0), "Invalid factory address");

        isInit = false;
        isDeposit = false;
        isFinish = false;
        isRefund = false;
        ethRaised = 0;

        teamWallet = _teamWallet;
        weth = _weth;
        tokenInstance = _tokenInstance;
        creatorWallet = address(payable(msg.sender));
        UniswapV2Router02 = IUniswapV2Router02(_uniswapv2Router);
        UniswapV2Factory = IUniswapV2Factory(_uniswapv2Factory);

        require(
            UniswapV2Factory.getPair(address(tokenInstance), weth) ==
                address(0),
            "IUniswap: Pool exists."
        );

        tokenInstance.approve(_uniswapv2Router, tokenInstance.totalSupply());
    }

    event Liquified(
        address indexed _token,
        address indexed _router,
        address indexed _pair
    );

    event Canceled(
        address indexed _inititator,
        address indexed _token,
        address indexed _presale
    );

    event Bought(address indexed _buyer, uint256 _tokenAmount);

    event Refunded(address indexed _refunder, uint256 _tokenAmount);

    event Deposited(address indexed _initiator, uint256 _totalDeposit);

    event Claimed(address indexed _participent, uint256 _tokenAmount);

    event RefundedRemainder(address indexed _initiator, uint256 _amount);

    event BurntRemainder(address indexed _initiator, uint256 _amount);

    event Withdraw(address indexed _creator, uint256 _amount);

    /*
     * Reverts ethers sent to this address whenever requirements are not met
     */
    receive() external payable {
        if (
            block.timestamp >= pool.startTime && block.timestamp <= pool.endTime
        ) {
            buyTokens(_msgSender());
        } else {
            revert("Presale is closed");
        }
    }

    /*
    * Initiates the arguments of the sale
    @dev arguments must be pa   ssed in wei (amount*10**18)
    */
    function initSale(
        uint64 _startTime,
        uint64 _endTime,
        uint256 _tokenDeposit,
        uint256 _tokensForSale,
        uint256 _tokensForLiquidity,
        uint8 _liquidityPortion,
        uint256 _hardCap,
        uint256 _softCap,
        uint256 _maxBuy,
        uint256 _minBuy
    ) external onlyOwner onlyInactive {
        require(isInit == false, "Sale no initialized");
        require(_startTime >= block.timestamp, "Invalid start time.");
        require(_endTime > block.timestamp, "Invalid end time.");
        require(_tokenDeposit > 0, "Invalid token deposit.");
        require(_tokensForSale < _tokenDeposit, "Invalid tokens for sale.");
        require(
            _tokensForLiquidity < _tokenDeposit,
            "Invalid tokens for liquidity."
        );
        require(_softCap >= _hardCap / 2, "SC must be >= HC/2.");
        require(_liquidityPortion >= 50, "Liquidity must be >=50.");
        require(_liquidityPortion <= 100, "Invalid liquidity.");
        require(_minBuy < _maxBuy, "Min buy must greater than max.");
        require(_minBuy > 0, "Min buy must exceed 0.");

        Pool memory newPool = Pool(
            _startTime,
            _endTime,
            _tokenDeposit,
            _tokensForSale,
            _tokensForLiquidity,
            _liquidityPortion,
            _hardCap,
            _softCap,
            _maxBuy,
            _minBuy
        );

        pool = newPool;

        isInit = true;
    }

    /*
     * Once called the owner deposits tokens into pool
     */
    function deposit() external onlyOwner {
        require(!isDeposit, "Tokens already deposited.");
        require(isInit, "Not initialized yet.");

        uint256 totalDeposit = _getTokenDeposit();

        isDeposit = true;

        require(
            tokenInstance.transferFrom(msg.sender, address(this), totalDeposit),
            "Deposit failed."
        );

        emit Deposited(msg.sender, totalDeposit);
    }

    /*
     * Finish the sale - Create Uniswap v2 pair, add liquidity, take fees, withrdawal funds, burn/refund unused tokens
     */
    function finishSale() external onlyOwner onlyInactive {
        require(ethRaised >= pool.softCap, "Soft Cap is not met.");
        require(
            block.timestamp > pool.startTime,
            "Can not finish before start"
        );
        require(!isFinish, "Sale already launched.");
        require(!isRefund, "Refund process.");

        percentageRaised = _getPercentageFromValue(ethRaised, pool.hardCap);
        tokensSold = _getValueFromPercentage(
            percentageRaised,
            pool.tokensForSale
        );
        uint256 tokensForLiquidity = _getValueFromPercentage(
            percentageRaised,
            pool.tokensForLiquidity
        );
        isFinish = true;

        //add liquidity
        (uint256 amountToken, uint256 amountETH, ) = UniswapV2Router02
            .addLiquidityETH{value: _getLiquidityEth()}(
            address(tokenInstance),
            tokensForLiquidity,
            tokensForLiquidity,
            _getLiquidityEth(),
            owner(),
            block.timestamp + 600
        );

        require(
            amountToken == tokensForLiquidity &&
                amountETH == _getLiquidityEth(),
            "Providing liquidity failed."
        );

        emit Liquified(
            address(tokenInstance),
            address(UniswapV2Router02),
            UniswapV2Factory.getPair(address(tokenInstance), weth)
        );

        //withrawal eth
        uint256 ownerShareEth = _getOwnerEth();

        if (ownerShareEth > 0) {
            payable(creatorWallet).transfer(ownerShareEth);
        }

        //If HC is not reached, burn or refund the remainder
        if (ethRaised < pool.hardCap) {
            uint256 remainder = _getUserTokens(pool.hardCap - ethRaised) +
                (pool.tokensForLiquidity - tokensForLiquidity);
            if (burnTokens == true) {
                require(
                    tokenInstance.transfer(
                        0x000000000000000000000000000000000000dEaD,
                        remainder
                    ),
                    "Unable to burn."
                );
                emit BurntRemainder(msg.sender, remainder);
            } else {
                require(
                    tokenInstance.transfer(creatorWallet, remainder),
                    "Refund failed."
                );
                emit RefundedRemainder(msg.sender, remainder);
            }
        }
    }

    /*
    * The owner can decide to close the sale if it is still active
    NOTE: Creator may call this function even if the Hard Cap is reached, to prevent it use:
     require(ethRaised < pool.hardCap)
    */
    function cancelSale() external onlyOwner onlyActive {
        require(!isFinish, "Sale finished.");
        pool.endTime = 0;
        isRefund = true;

        if (tokenInstance.balanceOf(address(this)) > 0) {
            uint256 tokenDeposit = _getTokenDeposit();
            tokenInstance.transfer(msg.sender, tokenDeposit);
            emit Withdraw(msg.sender, tokenDeposit);
        }
        emit Canceled(msg.sender, address(tokenInstance), address(this));
    }

    /*
     * Allows participents to claim the tokens they purchased
     */
    function claimTokens() external onlyInactive {
        require(isFinish, "Sale is still active.");
        require(!isRefund, "Refund process.");

        uint256 tokensAmount = _getUserTokens(ethContribution[msg.sender]);
        ethContribution[msg.sender] = 0;
        require(
            tokenInstance.transfer(msg.sender, tokensAmount),
            "Claim failed."
        );
        emit Claimed(msg.sender, tokensAmount);
    }

    /*
     * Refunds the Eth to participents
     */
    function refund() external onlyInactive onlyRefund {
        uint256 refundAmount = ethContribution[msg.sender];

        require(refundAmount > 0, "No refund amount");
        require(address(this).balance >= refundAmount, "No amount available");

        ethContribution[msg.sender] = 0;
        address payable refunder = payable(msg.sender);
        refunder.transfer(refundAmount);
        emit Refunded(refunder, refundAmount);
    }

    /*
     * Withdrawal tokens on refund
     */
    function withrawTokens() external onlyOwner onlyInactive onlyRefund {
        if (tokenInstance.balanceOf(address(this)) > 0) {
            uint256 tokenDeposit = _getTokenDeposit();
            require(
                tokenInstance.transfer(msg.sender, tokenDeposit),
                "Withdraw failed."
            );
            emit Withdraw(msg.sender, tokenDeposit);
        }
    }

    /*
     * If requirements are passed, updates user"s token balance based on their eth contribution
     */
    function buyTokens(address _contributor) public payable onlyActive {
        require(isDeposit, "Tokens not deposited.");
        require(_contributor != address(0), "Transfer to 0 address.");
        require(msg.value != 0, "Wei Amount is 0");
        require(msg.value >= pool.minBuy, "Min buy is not met.");
        require(
            msg.value + ethContribution[_contributor] <= pool.maxBuy,
            "Max buy limit exceeded."
        );
        require(ethRaised + msg.value <= pool.hardCap, "HC Reached.");

        ethRaised += msg.value;
        ethContribution[msg.sender] += msg.value;
    }

    /*
     * Internal functions, called when calculating balances
     */
    function _getUserTokens(uint256 _amount) internal view returns (uint256) {
        return _amount.mul(tokensSold).div(ethRaised);
    }

    function _getLiquidityEth() internal view returns (uint256) {
        return _getValueFromPercentage(pool.liquidityPortion, ethRaised);
    }

    function _getOwnerEth() internal view returns (uint256) {
        uint256 liquidityEthFee = _getLiquidityEth();
        return ethRaised - liquidityEthFee;
    }

    function _getTokenDeposit() internal view returns (uint256) {
        return pool.tokenDeposit;
    }

    function _getPercentageFromValue(uint256 currentValue, uint256 maxValue)
        private
        pure
        returns (uint256)
    {
        require(currentValue <= maxValue, "Number too high");

        return currentValue.mul(100).div(maxValue);
    }

    function _getValueFromPercentage(
        uint256 currentPercentage,
        uint256 maxValue
    ) private pure returns (uint256) {
        require(currentPercentage <= 100, "Number too high");

        return maxValue.mul(currentPercentage).div(100);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_tokenInstance","type":"address"},{"internalType":"address","name":"_uniswapv2Router","type":"address"},{"internalType":"address","name":"_uniswapv2Factory","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"},{"internalType":"address","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_initiator","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"BurntRemainder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_inititator","type":"address"},{"indexed":true,"internalType":"address","name":"_token","type":"address"},{"indexed":true,"internalType":"address","name":"_presale","type":"address"}],"name":"Canceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_participent","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_initiator","type":"address"},{"indexed":false,"internalType":"uint256","name":"_totalDeposit","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_token","type":"address"},{"indexed":true,"internalType":"address","name":"_router","type":"address"},{"indexed":true,"internalType":"address","name":"_pair","type":"address"}],"name":"Liquified","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_refunder","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_initiator","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"RefundedRemainder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"UniswapV2Factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UniswapV2Router02","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contributor","type":"address"}],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cancelSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creatorWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethContribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finishSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_startTime","type":"uint64"},{"internalType":"uint64","name":"_endTime","type":"uint64"},{"internalType":"uint256","name":"_tokenDeposit","type":"uint256"},{"internalType":"uint256","name":"_tokensForSale","type":"uint256"},{"internalType":"uint256","name":"_tokensForLiquidity","type":"uint256"},{"internalType":"uint8","name":"_liquidityPortion","type":"uint8"},{"internalType":"uint256","name":"_hardCap","type":"uint256"},{"internalType":"uint256","name":"_softCap","type":"uint256"},{"internalType":"uint256","name":"_maxBuy","type":"uint256"},{"internalType":"uint256","name":"_minBuy","type":"uint256"}],"name":"initSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFinish","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isInit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRefund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentageRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"uint64","name":"startTime","type":"uint64"},{"internalType":"uint64","name":"endTime","type":"uint64"},{"internalType":"uint256","name":"tokenDeposit","type":"uint256"},{"internalType":"uint256","name":"tokensForSale","type":"uint256"},{"internalType":"uint256","name":"tokensForLiquidity","type":"uint256"},{"internalType":"uint8","name":"liquidityPortion","type":"uint8"},{"internalType":"uint256","name":"hardCap","type":"uint256"},{"internalType":"uint256","name":"softCap","type":"uint256"},{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"minBuy","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenInstance","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000805460ff60c01b1916600160c01b17905560038054600960a11b60ff60a01b199091161790553480156200003957600080fd5b506040516200276b3803806200276b8339810160408190526200005c91620003b4565b62000067336200034b565b6001600160a01b038416620000c35760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420726f7574657220616464726573730000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166200011b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420666163746f727920616464726573730000000000000000006044820152606401620000ba565b6000805463ffffffff60a01b191681556004818155600280546001600160a01b038681166001600160a01b031992831617909255600380548684169083168117909155600780548b8516908416811790915560018054841633179055600980548b861690851617905560088054948a1694909316841790925560405163e6a4390560e01b81529384019190915260248301529063e6a4390590604401602060405180830381865afa158015620001d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fb919062000434565b6001600160a01b031614620002535760405162461bcd60e51b815260206004820152601660248201527f49556e69737761703a20506f6f6c206578697374732e000000000000000000006044820152606401620000ba565b600754604080516318160ddd60e01b815290516001600160a01b039092169163095ea7b391879184916318160ddd9160048083019260209291908290030181865afa158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd91906200045b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f919062000475565b50505050505062000499565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620003b157600080fd5b50565b600080600080600060a08688031215620003cd57600080fd5b8551620003da816200039b565b6020870151909550620003ed816200039b565b604087015190945062000400816200039b565b606087015190935062000413816200039b565b608087015190925062000426816200039b565b809150509295509295909350565b6000602082840312156200044757600080fd5b815162000454816200039b565b9392505050565b6000602082840312156200046e57600080fd5b5051919050565b6000602082840312156200048857600080fd5b815180151581146200045457600080fd5b6122c280620004a96000396000f3fe6080604052600436106101bb5760003560e01c80637bc3b5ff116100ec578063d64428e31161008a578063ec8ac4d811610064578063ec8ac4d8146105dd578063f2fde38b146105eb578063fddf0fc01461060b578063ffa324dc1461062157600080fd5b8063d64428e314610591578063d921eb78146105a7578063e7e10490146105c857600080fd5b80638f86f5ea116100c65780638f86f5ea14610526578063b145a5b81461053b578063ca62089e1461055c578063d0e30db01461057c57600080fd5b80637bc3b5ff146104c75780637cdc65f2146104e85780638da5cb5b1461050857600080fd5b8063518ab2a81161015957806359927044116101335780635992704414610452578063658030b314610472578063715018a61461049257806378cc70b2146104a757600080fd5b8063518ab2a81461040757806355cb26661461041d578063590e1ae31461043d57600080fd5b80633b97e856116101955780633b97e8561461034c5780633fc8cef31461037f5780634034175e146103b757806348c54b9d146103f257600080fd5b806308003f781461024857806316f0115b1461027e5780632c8ca0ea1461032b57600080fd5b3661024357600a546001600160401b031642108015906101ed5750600a54600160401b90046001600160401b03164211155b156102025761020033610636565b610636565b005b60405162461bcd60e51b8152602060048201526011602482015270141c995cd85b19481a5cc818db1bdcd959607a1b60448201526064015b60405180910390fd5b600080fd5b34801561025457600080fd5b5060005461026990600160c01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561028a57600080fd5b50600a54600b54600c54600d54600e54600f546010546011546012546102d3986001600160401b0380821699600160401b909204169790969095909460ff90911693909290918a565b604080516001600160401b039b8c1681529a90991660208b0152978901969096526060880194909452608087019290925260ff1660a086015260c085015260e084015261010083015261012082015261014001610275565b34801561033757600080fd5b5060005461026990600160b81b900460ff1681565b34801561035857600080fd5b5060035461036d90600160a01b900460ff1681565b60405160ff9091168152602001610275565b34801561038b57600080fd5b5060035461039f906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b3480156103c357600080fd5b506103e46103d2366004612069565b60136020526000908152604090205481565b604051908152602001610275565b3480156103fe57600080fd5b506102006108bc565b34801561041357600080fd5b506103e460065481565b34801561042957600080fd5b5060095461039f906001600160a01b031681565b34801561044957600080fd5b50610200610ac9565b34801561045e57600080fd5b5060025461039f906001600160a01b031681565b34801561047e57600080fd5b5060075461039f906001600160a01b031681565b34801561049e57600080fd5b50610200610cb6565b3480156104b357600080fd5b5060085461039f906001600160a01b031681565b3480156104d357600080fd5b5060005461026990600160a81b900460ff1681565b3480156104f457600080fd5b5060015461039f906001600160a01b031681565b34801561051457600080fd5b506000546001600160a01b031661039f565b34801561053257600080fd5b50610200610cca565b34801561054757600080fd5b5060005461026990600160a01b900460ff1681565b34801561056857600080fd5b506102006105773660046120a2565b611342565b34801561058857600080fd5b506102006117c5565b34801561059d57600080fd5b506103e460055481565b3480156105b357600080fd5b5060005461026990600160b01b900460ff1681565b3480156105d457600080fd5b50610200611981565b6102006101fb366004612069565b3480156105f757600080fd5b50610200610606366004612069565b611bc4565b34801561061757600080fd5b506103e460045481565b34801561062d57600080fd5b50610200611c3d565b600a546001600160401b03164210156106615760405162461bcd60e51b815260040161023a90612133565b600a54600160401b90046001600160401b03164211156106935760405162461bcd60e51b815260040161023a90612133565b600054600160a81b900460ff166106e45760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b739903737ba103232b837b9b4ba32b21760591b604482015260640161023a565b6001600160a01b0381166107335760405162461bcd60e51b81526020600482015260166024820152752a3930b739b332b9103a3790181030b2323932b9b99760511b604482015260640161023a565b346000036107755760405162461bcd60e51b815260206004820152600f60248201526e057656920416d6f756e74206973203608c1b604482015260640161023a565b6012543410156107bd5760405162461bcd60e51b815260206004820152601360248201527226b4b710313abc9034b9903737ba1036b2ba1760691b604482015260640161023a565b6011546001600160a01b0382166000908152601360205260409020546107e39034612177565b11156108315760405162461bcd60e51b815260206004820152601760248201527f4d617820627579206c696d69742065786365656465642e000000000000000000604482015260640161023a565b600f54600454610842903490612177565b111561087e5760405162461bcd60e51b815260206004820152600b60248201526a2421902932b0b1b432b21760a91b604482015260640161023a565b34600460008282546108909190612177565b909155505033600090815260136020526040812080543492906108b4908490612177565b909155505050565b600a546001600160401b03164210806108e65750600a54600160401b90046001600160401b031642115b806108f55750600f5460045410155b6109115760405162461bcd60e51b815260040161023a9061218a565b600054600160b81b900460ff166109625760405162461bcd60e51b815260206004820152601560248201527429b0b6329034b99039ba34b6361030b1ba34bb329760591b604482015260640161023a565b600054600160b01b900460ff16156109ae5760405162461bcd60e51b815260206004820152600f60248201526e2932b33ab73210383937b1b2b9b99760891b604482015260640161023a565b336000908152601360205260408120546109c790611e7d565b3360008181526013602052604080822091909155600754905163a9059cbb60e01b81526004810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5491906121ba565b610a905760405162461bcd60e51b815260206004820152600d60248201526c21b630b4b6903330b4b632b21760991b604482015260640161023a565b60405181815233907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a906020015b60405180910390a250565b600a546001600160401b0316421080610af35750600a54600160401b90046001600160401b031642115b80610b025750600f5460045410155b610b1e5760405162461bcd60e51b815260040161023a9061218a565b600054600160b01b900460ff16151560011480610b5a5750600a54600160401b90046001600160401b031642118015610b5a5750601054600454105b610b9c5760405162461bcd60e51b81526020600482015260136024820152722932b33ab732103ab730bb30b4b630b136329760691b604482015260640161023a565b3360009081526013602052604090205480610bec5760405162461bcd60e51b815260206004820152601060248201526f139bc81c99599d5b9908185b5bdd5b9d60821b604482015260640161023a565b80471015610c325760405162461bcd60e51b81526020600482015260136024820152724e6f20616d6f756e7420617661696c61626c6560681b604482015260640161023a565b3360008181526013602052604080822082905551829184156108fc02918591818181858888f19350505050158015610c6e573d6000803e3d6000fd5b50806001600160a01b03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d065183604051610caa91815260200190565b60405180910390a25050565b610cbe611ea6565b610cc86000611f00565b565b610cd2611ea6565b600a546001600160401b0316421080610cfc5750600a54600160401b90046001600160401b031642115b80610d0b5750600f5460045410155b610d275760405162461bcd60e51b815260040161023a9061218a565b6010546004541015610d725760405162461bcd60e51b815260206004820152601460248201527329b7b33a1021b0b81034b9903737ba1036b2ba1760611b604482015260640161023a565b600a546001600160401b03164211610dcc5760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e697368206265666f72652073746172740000000000604482015260640161023a565b600054600160b81b900460ff1615610e1f5760405162461bcd60e51b815260206004820152601660248201527529b0b6329030b63932b0b23c903630bab731b432b21760511b604482015260640161023a565b600054600160b01b900460ff1615610e6b5760405162461bcd60e51b815260206004820152600f60248201526e2932b33ab73210383937b1b2b9b99760891b604482015260640161023a565b610e7c600454600a60050154611f50565b6005819055600c54610e8e9190611faa565b600655600554600d54600091610ea391611faa565b6000805460ff60b81b1916600160b81b1781556009549192509081906001600160a01b031663f305d719610ed5611ffe565b6007546001600160a01b03168680610eeb611ffe565b6000546001600160a01b0316610f0342610258612177565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015610f70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f9591906121dc565b50915091508282148015610faf5750610fac611ffe565b81145b610ffb5760405162461bcd60e51b815260206004820152601b60248201527f50726f766964696e67206c6971756964697479206661696c65642e0000000000604482015260640161023a565b60085460075460035460405163e6a4390560e01b81526001600160a01b039283166004820152908216602482015291169063e6a4390590604401602060405180830381865afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611076919061220a565b6009546007546040516001600160a01b039384169392831692909116907f855e21f045401bd18ad033c48b74263dc6e037024f082f3118fa5b79b8c63cf890600090a460006110c361201b565b90508015611107576001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611105573d6000803e3d6000fd5b505b600f54600454101561133c57600d54600090611124908690612227565b600454600f5461113c9161113791612227565b611e7d565b6111469190612177565b600054909150600160c01b900460ff16151560010361124e5760075460405163a9059cbb60e01b815261dead6004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d691906121ba565b6112145760405162461bcd60e51b815260206004820152600f60248201526e2ab730b13632903a3790313ab9371760891b604482015260640161023a565b60405181815233907ff64f45e6447f41665c556373a7683d2b9537f22f7498825a215561a075d341959060200160405180910390a261133a565b60075460015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156112a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c791906121ba565b6113045760405162461bcd60e51b815260206004820152600e60248201526d2932b33ab732103330b4b632b21760911b604482015260640161023a565b60405181815233907fb2a2a849a821dbd9c9ae4fad722faef4e72c7edbbadaeeaabfdba3c1b17aa86a9060200160405180910390a25b505b50505050565b61134a611ea6565b600a546001600160401b03164210806113745750600a54600160401b90046001600160401b031642115b806113835750600f5460045410155b61139f5760405162461bcd60e51b815260040161023a9061218a565b600054600160a01b900460ff16156113ef5760405162461bcd60e51b815260206004820152601360248201527214d85b19481b9bc81a5b9a5d1a585b1a5e9959606a1b604482015260640161023a565b428a6001600160401b0316101561143e5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21039ba30b93a103a34b6b29760691b604482015260640161023a565b42896001600160401b03161161148a5760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21032b732103a34b6b29760791b604482015260640161023a565b600088116114d35760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103a37b5b2b7103232b837b9b4ba1760511b604482015260640161023a565b8787106115225760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420746f6b656e7320666f722073616c652e0000000000000000604482015260640161023a565b8786106115715760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420746f6b656e7320666f72206c69717569646974792e000000604482015260640161023a565b61157c60028561223a565b8310156115c15760405162461bcd60e51b815260206004820152601360248201527229a19036bab9ba103132901f1e90242197991760691b604482015260640161023a565b60328560ff1610156116155760405162461bcd60e51b815260206004820152601760248201527f4c6971756964697479206d757374206265203e3d35302e000000000000000000604482015260640161023a565b60648560ff16111561165e5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103634b8bab4b234ba3c9760711b604482015260640161023a565b8181106116ad5760405162461bcd60e51b815260206004820152601e60248201527f4d696e20627579206d7573742067726561746572207468616e206d61782e0000604482015260640161023a565b600081116116f65760405162461bcd60e51b815260206004820152601660248201527526b4b710313abc9036bab9ba1032bc31b2b2b210181760511b604482015260640161023a565b60408051610140810182526001600160401b039b8c168082529a909b1660208c01819052908b0189905260608b0188905260808b0187905260ff90951660a08b0181905260c08b0185905260e08b018490526101008b01839052610120909a01819052600a8054600160401b9096026fffffffffffffffffffffffffffffffff1990961690991794909417909755600b95909555600c93909355600d91909155600e805460ff1916909517909455600f556010556011556012556000805460ff60a01b1916600160a01b179055565b6117cd611ea6565b600054600160a81b900460ff16156118275760405162461bcd60e51b815260206004820152601960248201527f546f6b656e7320616c7265616479206465706f73697465642e00000000000000604482015260640161023a565b600054600160a01b900460ff166118775760405162461bcd60e51b81526020600482015260146024820152732737ba1034b734ba34b0b634bd32b2103cb2ba1760611b604482015260640161023a565b6000611882600b5490565b6000805460ff60a81b1916600160a81b1790556007546040516323b872dd60e01b8152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af11580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191191906121ba565b61194f5760405162461bcd60e51b815260206004820152600f60248201526e2232b837b9b4ba103330b4b632b21760891b604482015260640161023a565b60405181815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610abe565b611989611ea6565b600a546001600160401b03164210156119b45760405162461bcd60e51b815260040161023a90612133565b600a54600160401b90046001600160401b03164211156119e65760405162461bcd60e51b815260040161023a90612133565b600054600160b81b900460ff1615611a315760405162461bcd60e51b815260206004820152600e60248201526d29b0b632903334b734b9b432b21760911b604482015260640161023a565b600a80546fffffffffffffffff0000000000000000191690556000805460ff60b01b1916600160b01b1781556007546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac9919061225c565b1115611b88576000611ada600b5490565b60075460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5091906121ba565b5060405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a2505b60075460405130916001600160a01b03169033907f72452f1a219141fd5d3814b0d1d79e431ceb617f33a3a07bdd18a1a64ed0a6e890600090a4565b611bcc611ea6565b6001600160a01b038116611c315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b611c3a81611f00565b50565b611c45611ea6565b600a546001600160401b0316421080611c6f5750600a54600160401b90046001600160401b031642115b80611c7e5750600f5460045410155b611c9a5760405162461bcd60e51b815260040161023a9061218a565b600054600160b01b900460ff16151560011480611cd65750600a54600160401b90046001600160401b031642118015611cd65750601054600454105b611d185760405162461bcd60e51b81526020600482015260136024820152722932b33ab732103ab730bb30b4b630b136329760691b604482015260640161023a565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d85919061225c565b1115610cc8576000611d96600b5490565b60075460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c91906121ba565b611e4b5760405162461bcd60e51b815260206004820152601060248201526f2bb4ba34323930bb903330b4b632b21760811b604482015260640161023a565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436490602001610abe565b6000611ea0600454611e9a6006548561203c90919063ffffffff16565b90612048565b92915050565b6000546001600160a01b03163314610cc85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161023a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831115611f945760405162461bcd60e51b815260206004820152600f60248201526e09ceadac4cae440e8dede40d0d2ced608b1b604482015260640161023a565b611fa382611e9a85606461203c565b9392505050565b60006064831115611fef5760405162461bcd60e51b815260206004820152600f60248201526e09ceadac4cae440e8dede40d0d2ced608b1b604482015260640161023a565b611fa36064611e9a848661203c565b600e546004546000916120169160ff90911690611faa565b905090565b600080612026611ffe565b9050806004546120369190612227565b91505090565b6000611fa38284612275565b6000611fa3828461223a565b6001600160a01b0381168114611c3a57600080fd5b60006020828403121561207b57600080fd5b8135611fa381612054565b80356001600160401b038116811461209d57600080fd5b919050565b6000806000806000806000806000806101408b8d0312156120c257600080fd5b6120cb8b612086565b99506120d960208c01612086565b985060408b0135975060608b0135965060808b0135955060a08b013560ff8116811461210457600080fd5b999c989b5096999598949794965050505060c08301359260e08101359261010082013592506101209091013590565b60208082526014908201527329b0b6329036bab9ba1031329030b1ba34bb329760611b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115611ea057611ea0612161565b60208082526016908201527529b0b6329036bab9ba1031329034b730b1ba34bb329760511b604082015260600190565b6000602082840312156121cc57600080fd5b81518015158114611fa357600080fd5b6000806000606084860312156121f157600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561221c57600080fd5b8151611fa381612054565b81810381811115611ea057611ea0612161565b60008261225757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561226e57600080fd5b5051919050565b8082028115828204841417611ea057611ea061216156fea26469706673582212208e0e205c2810594699f4f672359e8fa726cbda69bfaa160e07f107650b990d5364736f6c634300081200330000000000000000000000007453e75ceced1546b992b97fb77a9dac5bfda2ae0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000004687f6b19b5ceea0cd50eca6711127b23602deac000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637bc3b5ff116100ec578063d64428e31161008a578063ec8ac4d811610064578063ec8ac4d8146105dd578063f2fde38b146105eb578063fddf0fc01461060b578063ffa324dc1461062157600080fd5b8063d64428e314610591578063d921eb78146105a7578063e7e10490146105c857600080fd5b80638f86f5ea116100c65780638f86f5ea14610526578063b145a5b81461053b578063ca62089e1461055c578063d0e30db01461057c57600080fd5b80637bc3b5ff146104c75780637cdc65f2146104e85780638da5cb5b1461050857600080fd5b8063518ab2a81161015957806359927044116101335780635992704414610452578063658030b314610472578063715018a61461049257806378cc70b2146104a757600080fd5b8063518ab2a81461040757806355cb26661461041d578063590e1ae31461043d57600080fd5b80633b97e856116101955780633b97e8561461034c5780633fc8cef31461037f5780634034175e146103b757806348c54b9d146103f257600080fd5b806308003f781461024857806316f0115b1461027e5780632c8ca0ea1461032b57600080fd5b3661024357600a546001600160401b031642108015906101ed5750600a54600160401b90046001600160401b03164211155b156102025761020033610636565b610636565b005b60405162461bcd60e51b8152602060048201526011602482015270141c995cd85b19481a5cc818db1bdcd959607a1b60448201526064015b60405180910390fd5b600080fd5b34801561025457600080fd5b5060005461026990600160c01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561028a57600080fd5b50600a54600b54600c54600d54600e54600f546010546011546012546102d3986001600160401b0380821699600160401b909204169790969095909460ff90911693909290918a565b604080516001600160401b039b8c1681529a90991660208b0152978901969096526060880194909452608087019290925260ff1660a086015260c085015260e084015261010083015261012082015261014001610275565b34801561033757600080fd5b5060005461026990600160b81b900460ff1681565b34801561035857600080fd5b5060035461036d90600160a01b900460ff1681565b60405160ff9091168152602001610275565b34801561038b57600080fd5b5060035461039f906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b3480156103c357600080fd5b506103e46103d2366004612069565b60136020526000908152604090205481565b604051908152602001610275565b3480156103fe57600080fd5b506102006108bc565b34801561041357600080fd5b506103e460065481565b34801561042957600080fd5b5060095461039f906001600160a01b031681565b34801561044957600080fd5b50610200610ac9565b34801561045e57600080fd5b5060025461039f906001600160a01b031681565b34801561047e57600080fd5b5060075461039f906001600160a01b031681565b34801561049e57600080fd5b50610200610cb6565b3480156104b357600080fd5b5060085461039f906001600160a01b031681565b3480156104d357600080fd5b5060005461026990600160a81b900460ff1681565b3480156104f457600080fd5b5060015461039f906001600160a01b031681565b34801561051457600080fd5b506000546001600160a01b031661039f565b34801561053257600080fd5b50610200610cca565b34801561054757600080fd5b5060005461026990600160a01b900460ff1681565b34801561056857600080fd5b506102006105773660046120a2565b611342565b34801561058857600080fd5b506102006117c5565b34801561059d57600080fd5b506103e460055481565b3480156105b357600080fd5b5060005461026990600160b01b900460ff1681565b3480156105d457600080fd5b50610200611981565b6102006101fb366004612069565b3480156105f757600080fd5b50610200610606366004612069565b611bc4565b34801561061757600080fd5b506103e460045481565b34801561062d57600080fd5b50610200611c3d565b600a546001600160401b03164210156106615760405162461bcd60e51b815260040161023a90612133565b600a54600160401b90046001600160401b03164211156106935760405162461bcd60e51b815260040161023a90612133565b600054600160a81b900460ff166106e45760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b739903737ba103232b837b9b4ba32b21760591b604482015260640161023a565b6001600160a01b0381166107335760405162461bcd60e51b81526020600482015260166024820152752a3930b739b332b9103a3790181030b2323932b9b99760511b604482015260640161023a565b346000036107755760405162461bcd60e51b815260206004820152600f60248201526e057656920416d6f756e74206973203608c1b604482015260640161023a565b6012543410156107bd5760405162461bcd60e51b815260206004820152601360248201527226b4b710313abc9034b9903737ba1036b2ba1760691b604482015260640161023a565b6011546001600160a01b0382166000908152601360205260409020546107e39034612177565b11156108315760405162461bcd60e51b815260206004820152601760248201527f4d617820627579206c696d69742065786365656465642e000000000000000000604482015260640161023a565b600f54600454610842903490612177565b111561087e5760405162461bcd60e51b815260206004820152600b60248201526a2421902932b0b1b432b21760a91b604482015260640161023a565b34600460008282546108909190612177565b909155505033600090815260136020526040812080543492906108b4908490612177565b909155505050565b600a546001600160401b03164210806108e65750600a54600160401b90046001600160401b031642115b806108f55750600f5460045410155b6109115760405162461bcd60e51b815260040161023a9061218a565b600054600160b81b900460ff166109625760405162461bcd60e51b815260206004820152601560248201527429b0b6329034b99039ba34b6361030b1ba34bb329760591b604482015260640161023a565b600054600160b01b900460ff16156109ae5760405162461bcd60e51b815260206004820152600f60248201526e2932b33ab73210383937b1b2b9b99760891b604482015260640161023a565b336000908152601360205260408120546109c790611e7d565b3360008181526013602052604080822091909155600754905163a9059cbb60e01b81526004810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5491906121ba565b610a905760405162461bcd60e51b815260206004820152600d60248201526c21b630b4b6903330b4b632b21760991b604482015260640161023a565b60405181815233907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a906020015b60405180910390a250565b600a546001600160401b0316421080610af35750600a54600160401b90046001600160401b031642115b80610b025750600f5460045410155b610b1e5760405162461bcd60e51b815260040161023a9061218a565b600054600160b01b900460ff16151560011480610b5a5750600a54600160401b90046001600160401b031642118015610b5a5750601054600454105b610b9c5760405162461bcd60e51b81526020600482015260136024820152722932b33ab732103ab730bb30b4b630b136329760691b604482015260640161023a565b3360009081526013602052604090205480610bec5760405162461bcd60e51b815260206004820152601060248201526f139bc81c99599d5b9908185b5bdd5b9d60821b604482015260640161023a565b80471015610c325760405162461bcd60e51b81526020600482015260136024820152724e6f20616d6f756e7420617661696c61626c6560681b604482015260640161023a565b3360008181526013602052604080822082905551829184156108fc02918591818181858888f19350505050158015610c6e573d6000803e3d6000fd5b50806001600160a01b03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d065183604051610caa91815260200190565b60405180910390a25050565b610cbe611ea6565b610cc86000611f00565b565b610cd2611ea6565b600a546001600160401b0316421080610cfc5750600a54600160401b90046001600160401b031642115b80610d0b5750600f5460045410155b610d275760405162461bcd60e51b815260040161023a9061218a565b6010546004541015610d725760405162461bcd60e51b815260206004820152601460248201527329b7b33a1021b0b81034b9903737ba1036b2ba1760611b604482015260640161023a565b600a546001600160401b03164211610dcc5760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e697368206265666f72652073746172740000000000604482015260640161023a565b600054600160b81b900460ff1615610e1f5760405162461bcd60e51b815260206004820152601660248201527529b0b6329030b63932b0b23c903630bab731b432b21760511b604482015260640161023a565b600054600160b01b900460ff1615610e6b5760405162461bcd60e51b815260206004820152600f60248201526e2932b33ab73210383937b1b2b9b99760891b604482015260640161023a565b610e7c600454600a60050154611f50565b6005819055600c54610e8e9190611faa565b600655600554600d54600091610ea391611faa565b6000805460ff60b81b1916600160b81b1781556009549192509081906001600160a01b031663f305d719610ed5611ffe565b6007546001600160a01b03168680610eeb611ffe565b6000546001600160a01b0316610f0342610258612177565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015610f70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f9591906121dc565b50915091508282148015610faf5750610fac611ffe565b81145b610ffb5760405162461bcd60e51b815260206004820152601b60248201527f50726f766964696e67206c6971756964697479206661696c65642e0000000000604482015260640161023a565b60085460075460035460405163e6a4390560e01b81526001600160a01b039283166004820152908216602482015291169063e6a4390590604401602060405180830381865afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611076919061220a565b6009546007546040516001600160a01b039384169392831692909116907f855e21f045401bd18ad033c48b74263dc6e037024f082f3118fa5b79b8c63cf890600090a460006110c361201b565b90508015611107576001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611105573d6000803e3d6000fd5b505b600f54600454101561133c57600d54600090611124908690612227565b600454600f5461113c9161113791612227565b611e7d565b6111469190612177565b600054909150600160c01b900460ff16151560010361124e5760075460405163a9059cbb60e01b815261dead6004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d691906121ba565b6112145760405162461bcd60e51b815260206004820152600f60248201526e2ab730b13632903a3790313ab9371760891b604482015260640161023a565b60405181815233907ff64f45e6447f41665c556373a7683d2b9537f22f7498825a215561a075d341959060200160405180910390a261133a565b60075460015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156112a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c791906121ba565b6113045760405162461bcd60e51b815260206004820152600e60248201526d2932b33ab732103330b4b632b21760911b604482015260640161023a565b60405181815233907fb2a2a849a821dbd9c9ae4fad722faef4e72c7edbbadaeeaabfdba3c1b17aa86a9060200160405180910390a25b505b50505050565b61134a611ea6565b600a546001600160401b03164210806113745750600a54600160401b90046001600160401b031642115b806113835750600f5460045410155b61139f5760405162461bcd60e51b815260040161023a9061218a565b600054600160a01b900460ff16156113ef5760405162461bcd60e51b815260206004820152601360248201527214d85b19481b9bc81a5b9a5d1a585b1a5e9959606a1b604482015260640161023a565b428a6001600160401b0316101561143e5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21039ba30b93a103a34b6b29760691b604482015260640161023a565b42896001600160401b03161161148a5760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21032b732103a34b6b29760791b604482015260640161023a565b600088116114d35760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103a37b5b2b7103232b837b9b4ba1760511b604482015260640161023a565b8787106115225760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420746f6b656e7320666f722073616c652e0000000000000000604482015260640161023a565b8786106115715760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420746f6b656e7320666f72206c69717569646974792e000000604482015260640161023a565b61157c60028561223a565b8310156115c15760405162461bcd60e51b815260206004820152601360248201527229a19036bab9ba103132901f1e90242197991760691b604482015260640161023a565b60328560ff1610156116155760405162461bcd60e51b815260206004820152601760248201527f4c6971756964697479206d757374206265203e3d35302e000000000000000000604482015260640161023a565b60648560ff16111561165e5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103634b8bab4b234ba3c9760711b604482015260640161023a565b8181106116ad5760405162461bcd60e51b815260206004820152601e60248201527f4d696e20627579206d7573742067726561746572207468616e206d61782e0000604482015260640161023a565b600081116116f65760405162461bcd60e51b815260206004820152601660248201527526b4b710313abc9036bab9ba1032bc31b2b2b210181760511b604482015260640161023a565b60408051610140810182526001600160401b039b8c168082529a909b1660208c01819052908b0189905260608b0188905260808b0187905260ff90951660a08b0181905260c08b0185905260e08b018490526101008b01839052610120909a01819052600a8054600160401b9096026fffffffffffffffffffffffffffffffff1990961690991794909417909755600b95909555600c93909355600d91909155600e805460ff1916909517909455600f556010556011556012556000805460ff60a01b1916600160a01b179055565b6117cd611ea6565b600054600160a81b900460ff16156118275760405162461bcd60e51b815260206004820152601960248201527f546f6b656e7320616c7265616479206465706f73697465642e00000000000000604482015260640161023a565b600054600160a01b900460ff166118775760405162461bcd60e51b81526020600482015260146024820152732737ba1034b734ba34b0b634bd32b2103cb2ba1760611b604482015260640161023a565b6000611882600b5490565b6000805460ff60a81b1916600160a81b1790556007546040516323b872dd60e01b8152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af11580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191191906121ba565b61194f5760405162461bcd60e51b815260206004820152600f60248201526e2232b837b9b4ba103330b4b632b21760891b604482015260640161023a565b60405181815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610abe565b611989611ea6565b600a546001600160401b03164210156119b45760405162461bcd60e51b815260040161023a90612133565b600a54600160401b90046001600160401b03164211156119e65760405162461bcd60e51b815260040161023a90612133565b600054600160b81b900460ff1615611a315760405162461bcd60e51b815260206004820152600e60248201526d29b0b632903334b734b9b432b21760911b604482015260640161023a565b600a80546fffffffffffffffff0000000000000000191690556000805460ff60b01b1916600160b01b1781556007546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac9919061225c565b1115611b88576000611ada600b5490565b60075460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5091906121ba565b5060405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a2505b60075460405130916001600160a01b03169033907f72452f1a219141fd5d3814b0d1d79e431ceb617f33a3a07bdd18a1a64ed0a6e890600090a4565b611bcc611ea6565b6001600160a01b038116611c315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b611c3a81611f00565b50565b611c45611ea6565b600a546001600160401b0316421080611c6f5750600a54600160401b90046001600160401b031642115b80611c7e5750600f5460045410155b611c9a5760405162461bcd60e51b815260040161023a9061218a565b600054600160b01b900460ff16151560011480611cd65750600a54600160401b90046001600160401b031642118015611cd65750601054600454105b611d185760405162461bcd60e51b81526020600482015260136024820152722932b33ab732103ab730bb30b4b630b136329760691b604482015260640161023a565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d85919061225c565b1115610cc8576000611d96600b5490565b60075460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c91906121ba565b611e4b5760405162461bcd60e51b815260206004820152601060248201526f2bb4ba34323930bb903330b4b632b21760811b604482015260640161023a565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436490602001610abe565b6000611ea0600454611e9a6006548561203c90919063ffffffff16565b90612048565b92915050565b6000546001600160a01b03163314610cc85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161023a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831115611f945760405162461bcd60e51b815260206004820152600f60248201526e09ceadac4cae440e8dede40d0d2ced608b1b604482015260640161023a565b611fa382611e9a85606461203c565b9392505050565b60006064831115611fef5760405162461bcd60e51b815260206004820152600f60248201526e09ceadac4cae440e8dede40d0d2ced608b1b604482015260640161023a565b611fa36064611e9a848661203c565b600e546004546000916120169160ff90911690611faa565b905090565b600080612026611ffe565b9050806004546120369190612227565b91505090565b6000611fa38284612275565b6000611fa3828461223a565b6001600160a01b0381168114611c3a57600080fd5b60006020828403121561207b57600080fd5b8135611fa381612054565b80356001600160401b038116811461209d57600080fd5b919050565b6000806000806000806000806000806101408b8d0312156120c257600080fd5b6120cb8b612086565b99506120d960208c01612086565b985060408b0135975060608b0135965060808b0135955060a08b013560ff8116811461210457600080fd5b999c989b5096999598949794965050505060c08301359260e08101359261010082013592506101209091013590565b60208082526014908201527329b0b6329036bab9ba1031329030b1ba34bb329760611b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115611ea057611ea0612161565b60208082526016908201527529b0b6329036bab9ba1031329034b730b1ba34bb329760511b604082015260600190565b6000602082840312156121cc57600080fd5b81518015158114611fa357600080fd5b6000806000606084860312156121f157600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561221c57600080fd5b8151611fa381612054565b81810381811115611ea057611ea0612161565b60008261225757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561226e57600080fd5b5051919050565b8082028115828204841417611ea057611ea061216156fea26469706673582212208e0e205c2810594699f4f672359e8fa726cbda69bfaa160e07f107650b990d5364736f6c63430008120033

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

0000000000000000000000007453e75ceced1546b992b97fb77a9dac5bfda2ae0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000004687f6b19b5ceea0cd50eca6711127b23602deac000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : _tokenInstance (address): 0x7453E75CecED1546B992B97Fb77a9dAc5Bfda2AE
Arg [1] : _uniswapv2Router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [2] : _uniswapv2Factory (address): 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
Arg [3] : _teamWallet (address): 0x4687F6b19b5CEEA0cd50ecA6711127B23602dEac
Arg [4] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000007453e75ceced1546b992b97fb77a9dac5bfda2ae
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [2] : 0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Arg [3] : 0000000000000000000000004687f6b19b5ceea0cd50eca6711127b23602deac
Arg [4] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


Deployed Bytecode Sourcemap

10439:12777:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14070:4;:14;-1:-1:-1;;;;;14070:14:0;14051:15;:33;;;;:68;;-1:-1:-1;14107:4:0;:12;-1:-1:-1;;;14107:12:0;;-1:-1:-1;;;;;14107:12:0;14088:15;:31;;14051:68;14033:208;;;14146:23;6848:10;14146:9;:23::i;14156:12::-;14146:9;:23::i;:::-;10439:12777;14033:208;14202:27;;-1:-1:-1;;;14202:27:0;;216:2:1;14202:27:0;;;198:21:1;255:2;235:18;;;228:30;-1:-1:-1;;;274:18:1;;;267:47;331:18;;14202:27:0;;;;;;;;10439:12777;;;;10616:29;;;;;;;;;;-1:-1:-1;10616:29:0;;;;-1:-1:-1;;;10616:29:0;;;;;;;;;525:14:1;;518:22;500:41;;488:2;473:18;10616:29:0;;;;;;;;11333:16;;;;;;;;;;-1:-1:-1;11333:16:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11333:16:0;;;;-1:-1:-1;;;11333:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;998:15:1;;;980:34;;1050:15;;;;1045:2;1030:18;;1023:43;1082:18;;;1075:34;;;;1140:2;1125:18;;1118:34;;;;1183:3;1168:19;;1161:35;;;;1245:4;1233:17;1227:3;1212:19;;1205:46;1282:3;1267:19;;1260:35;1326:3;1311:19;;1304:35;1370:3;1355:19;;1348:35;1414:3;1399:19;;1392:35;930:3;915:19;11333:16:0;552:881:1;10589:20:0;;;;;;;;;;-1:-1:-1;10589:20:0;;;;-1:-1:-1;;;10589:20:0;;;;;;10745:31;;;;;;;;;;-1:-1:-1;10745:31:0;;;;-1:-1:-1;;;10745:31:0;;;;;;;;;1610:4:1;1598:17;;;1580:36;;1568:2;1553:18;10745:31:0;1438:184:1;10719:19:0;;;;;;;;;;-1:-1:-1;10719:19:0;;;;-1:-1:-1;;;;;10719:19:0;;;;;;-1:-1:-1;;;;;1791:32:1;;;1773:51;;1761:2;1746:18;10719:19:0;1627:203:1;11358:50:0;;;;;;;;;;-1:-1:-1;11358:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2369:25:1;;;2357:2;2342:18;11358:50:0;2223:177:1;19854:446:0;;;;;;;;;;;;;:::i;10852:25::-;;;;;;;;;;;;;;;;11283:43;;;;;;;;;;-1:-1:-1;11283:43:0;;;;-1:-1:-1;;;;;11283:43:0;;;20365:449;;;;;;;;;;;;;:::i;10687:25::-;;;;;;;;;;-1:-1:-1;10687:25:0;;;;-1:-1:-1;;;;;10687:25:0;;;11201:27;;;;;;;;;;-1:-1:-1;11201:27:0;;;;-1:-1:-1;;;;;11201:27:0;;;8218:103;;;;;;;;;;;;;:::i;11235:41::-;;;;;;;;;;-1:-1:-1;11235:41:0;;;;-1:-1:-1;;;;;11235:41:0;;;10534:21;;;;;;;;;;-1:-1:-1;10534:21:0;;;;-1:-1:-1;;;10534:21:0;;;;;;10652:28;;;;;;;;;;-1:-1:-1;10652:28:0;;;;-1:-1:-1;;;;;10652:28:0;;;7577:87;;;;;;;;;;-1:-1:-1;7623:7:0;7650:6;-1:-1:-1;;;;;7650:6:0;7577:87;;16558:2502;;;;;;;;;;;;;:::i;10509:18::-;;;;;;;;;;-1:-1:-1;10509:18:0;;;;-1:-1:-1;;;10509:18:0;;;;;;14376:1520;;;;;;;;;;-1:-1:-1;14376:1520:0;;;;;:::i;:::-;;:::i;15977:436::-;;;;;;;;;;;;;:::i;10814:31::-;;;;;;;;;;;;;;;;10562:20;;;;;;;;;;-1:-1:-1;10562:20:0;;;;-1:-1:-1;;;10562:20:0;;;;;;19286:480;;;;;;;;;;;;;:::i;21394:619::-;;;;;;:::i;8476:238::-;;;;;;;;;;-1:-1:-1;8476:238:0;;;;;:::i;:::-;;:::i;10783:24::-;;;;;;;;;;;;;;;;20875:397;;;;;;;;;;;;;:::i;21394:619::-;11477:4;:14;-1:-1:-1;;;;;11477:14:0;11458:15;:33;;11450:66;;;;-1:-1:-1;;;11450:66:0;;;;;;;:::i;:::-;11554:4;:12;-1:-1:-1;;;11554:12:0;;-1:-1:-1;;;;;11554:12:0;11535:15;:31;;11527:64;;;;-1:-1:-1;;;11527:64:0;;;;;;;:::i;:::-;21480:9:::1;::::0;-1:-1:-1;;;21480:9:0;::::1;;;21472:43;;;::::0;-1:-1:-1;;;21472:43:0;;4722:2:1;21472:43:0::1;::::0;::::1;4704:21:1::0;4761:2;4741:18;;;4734:30;-1:-1:-1;;;4780:18:1;;;4773:51;4841:18;;21472:43:0::1;4520:345:1::0;21472:43:0::1;-1:-1:-1::0;;;;;21534:26:0;::::1;21526:61;;;::::0;-1:-1:-1;;;21526:61:0;;5072:2:1;21526:61:0::1;::::0;::::1;5054:21:1::0;5111:2;5091:18;;;5084:30;-1:-1:-1;;;5130:18:1;;;5123:52;5192:18;;21526:61:0::1;4870:346:1::0;21526:61:0::1;21606:9;21619:1;21606:14:::0;21598:42:::1;;;::::0;-1:-1:-1;;;21598:42:0;;5423:2:1;21598:42:0::1;::::0;::::1;5405:21:1::0;5462:2;5442:18;;;5435:30;-1:-1:-1;;;5481:18:1;;;5474:45;5536:18;;21598:42:0::1;5221:339:1::0;21598:42:0::1;21672:11:::0;;21659:9:::1;:24;;21651:56;;;::::0;-1:-1:-1;;;21651:56:0;;5767:2:1;21651:56:0::1;::::0;::::1;5749:21:1::0;5806:2;5786:18;;;5779:30;-1:-1:-1;;;5825:18:1;;;5818:49;5884:18;;21651:56:0::1;5565:343:1::0;21651:56:0::1;21785:11:::0;;-1:-1:-1;;;;;21752:29:0;::::1;;::::0;;;:15:::1;:29;::::0;;;;;21740:41:::1;::::0;:9:::1;:41;:::i;:::-;:56;;21718:129;;;::::0;-1:-1:-1;;;21718:129:0;;6377:2:1;21718:129:0::1;::::0;::::1;6359:21:1::0;6416:2;6396:18;;;6389:30;6455:25;6435:18;;;6428:53;6498:18;;21718:129:0::1;6175:347:1::0;21718:129:0::1;21891:12:::0;;21866:9:::1;::::0;:21:::1;::::0;21878:9:::1;::::0;21866:21:::1;:::i;:::-;:37;;21858:61;;;::::0;-1:-1:-1;;;21858:61:0;;6729:2:1;21858:61:0::1;::::0;::::1;6711:21:1::0;6768:2;6748:18;;;6741:30;-1:-1:-1;;;6787:18:1;;;6780:41;6838:18;;21858:61:0::1;6527:335:1::0;21858:61:0::1;21945:9;21932;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;21981:10:0::1;21965:27;::::0;;;:15:::1;:27;::::0;;;;:40;;21996:9:::1;::::0;21965:27;:40:::1;::::0;21996:9;;21965:40:::1;:::i;:::-;::::0;;;-1:-1:-1;;;21394:619:0:o;19854:446::-;11694:4;:14;-1:-1:-1;;;;;11694:14:0;11676:15;:32;;:83;;-1:-1:-1;11747:4:0;:12;-1:-1:-1;;;11747:12:0;;-1:-1:-1;;;;;11747:12:0;11729:15;:30;11676:83;:129;;;-1:-1:-1;11793:12:0;;11780:9;;:25;;11676:129;11654:201;;;;-1:-1:-1;;;11654:201:0;;;;;;;:::i;:::-;19918:8:::1;::::0;-1:-1:-1;;;19918:8:0;::::1;;;19910:42;;;::::0;-1:-1:-1;;;19910:42:0;;7420:2:1;19910:42:0::1;::::0;::::1;7402:21:1::0;7459:2;7439:18;;;7432:30;-1:-1:-1;;;7478:18:1;;;7471:51;7539:18;;19910:42:0::1;7218:345:1::0;19910:42:0::1;19972:8;::::0;-1:-1:-1;;;19972:8:0;::::1;;;19971:9;19963:37;;;::::0;-1:-1:-1;;;19963:37:0;;7770:2:1;19963:37:0::1;::::0;::::1;7752:21:1::0;7809:2;7789:18;;;7782:30;-1:-1:-1;;;7828:18:1;;;7821:45;7883:18;;19963:37:0::1;7568:339:1::0;19963:37:0::1;20067:10;20013:20;20051:27:::0;;;:15:::1;:27;::::0;;;;;20036:43:::1;::::0;:14:::1;:43::i;:::-;20106:10;20120:1;20090:27:::0;;;:15:::1;:27;::::0;;;;;:31;;;;20154:13:::1;::::0;:48;;-1:-1:-1;;;20154:48:0;;::::1;::::0;::::1;8086:51:1::0;;;;8153:18;;;8146:34;;;20013:66:0;;-1:-1:-1;;;;;;20154:13:0;;::::1;::::0;:22:::1;::::0;8059:18:1;;20154:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20132:111;;;::::0;-1:-1:-1;;;20132:111:0;;8675:2:1;20132:111:0::1;::::0;::::1;8657:21:1::0;8714:2;8694:18;;;8687:30;-1:-1:-1;;;8733:18:1;;;8726:43;8786:18;;20132:111:0::1;8473:337:1::0;20132:111:0::1;20259:33;::::0;2369:25:1;;;20267:10:0::1;::::0;20259:33:::1;::::0;2357:2:1;2342:18;20259:33:0::1;;;;;;;;19899:401;19854:446::o:0;20365:449::-;11694:4;:14;-1:-1:-1;;;;;11694:14:0;11676:15;:32;;:83;;-1:-1:-1;11747:4:0;:12;-1:-1:-1;;;11747:12:0;;-1:-1:-1;;;;;11747:12:0;11729:15;:30;11676:83;:129;;;-1:-1:-1;11793:12:0;;11780:9;;:25;;11676:129;11654:201;;;;-1:-1:-1;;;11654:201:0;;;;;;;:::i;:::-;11938:8:::1;::::0;-1:-1:-1;;;11938:8:0;::::1;;;:16;;11950:4;11938:16;::::0;:97:::1;;-1:-1:-1::0;11994:4:0::1;:12:::0;-1:-1:-1;;;11994:12:0;::::1;-1:-1:-1::0;;;;;11994:12:0::1;11976:15;:30;:58:::0;::::1;;;-1:-1:-1::0;12022:12:0;;12010:9:::1;::::0;:24:::1;11976:58;11916:166;;;::::0;-1:-1:-1;;;11916:166:0;;9017:2:1;11916:166:0::1;::::0;::::1;8999:21:1::0;9056:2;9036:18;;;9029:30;-1:-1:-1;;;9075:18:1;;;9068:49;9134:18;;11916:166:0::1;8815:343:1::0;11916:166:0::1;20466:10:::2;20427:20;20450:27:::0;;;:15:::2;:27;::::0;;;;;20498:16;20490:45:::2;;;::::0;-1:-1:-1;;;20490:45:0;;9365:2:1;20490:45:0::2;::::0;::::2;9347:21:1::0;9404:2;9384:18;;;9377:30;-1:-1:-1;;;9423:18:1;;;9416:46;9479:18;;20490:45:0::2;9163:340:1::0;20490:45:0::2;20579:12;20554:21;:37;;20546:69;;;::::0;-1:-1:-1;;;20546:69:0;;9710:2:1;20546:69:0::2;::::0;::::2;9692:21:1::0;9749:2;9729:18;;;9722:30;-1:-1:-1;;;9768:18:1;;;9761:49;9827:18;;20546:69:0::2;9508:343:1::0;20546:69:0::2;20644:10;20658:1;20628:27:::0;;;:15:::2;:27;::::0;;;;;:31;;;20727;20644:10;;20727:31;::::2;;;::::0;20745:12;;20727:31;20658:1;20727:31;20745:12;20644:10;20727:31;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;20783:8;-1:-1:-1::0;;;;;20774:32:0::2;;20793:12;20774:32;;;;2369:25:1::0;;2357:2;2342:18;;2223:177;20774:32:0::2;;;;;;;;20416:398;;20365:449::o:0;8218:103::-;7463:13;:11;:13::i;:::-;8283:30:::1;8310:1;8283:18;:30::i;:::-;8218:103::o:0;16558:2502::-;7463:13;:11;:13::i;:::-;11694:4:::1;:14:::0;-1:-1:-1;;;;;11694:14:0::1;11676:15;:32;::::0;:83:::1;;-1:-1:-1::0;11747:4:0::1;:12:::0;-1:-1:-1;;;11747:12:0;::::1;-1:-1:-1::0;;;;;11747:12:0::1;11729:15;:30;11676:83;:129;;;-1:-1:-1::0;11793:12:0;;11780:9:::1;::::0;:25:::1;;11676:129;11654:201;;;;-1:-1:-1::0;;;11654:201:0::1;;;;;;;:::i;:::-;16644:12:::0;;16631:9:::2;::::0;:25:::2;;16623:58;;;::::0;-1:-1:-1;;;16623:58:0;;10058:2:1;16623:58:0::2;::::0;::::2;10040:21:1::0;10097:2;10077:18;;;10070:30;-1:-1:-1;;;10116:18:1;;;10109:50;10176:18;;16623:58:0::2;9856:344:1::0;16623:58:0::2;16732:4;:14:::0;-1:-1:-1;;;;;16732:14:0::2;16714:15;:32;16692:109;;;::::0;-1:-1:-1;;;16692:109:0;;10407:2:1;16692:109:0::2;::::0;::::2;10389:21:1::0;10446:2;10426:18;;;10419:30;10485:29;10465:18;;;10458:57;10532:18;;16692:109:0::2;10205:351:1::0;16692:109:0::2;16821:8;::::0;-1:-1:-1;;;16821:8:0;::::2;;;16820:9;16812:44;;;::::0;-1:-1:-1;;;16812:44:0;;10763:2:1;16812:44:0::2;::::0;::::2;10745:21:1::0;10802:2;10782:18;;;10775:30;-1:-1:-1;;;10821:18:1;;;10814:52;10883:18;;16812:44:0::2;10561:346:1::0;16812:44:0::2;16876:8;::::0;-1:-1:-1;;;16876:8:0;::::2;;;16875:9;16867:37;;;::::0;-1:-1:-1;;;16867:37:0;;7770:2:1;16867:37:0::2;::::0;::::2;7752:21:1::0;7809:2;7789:18;;;7782:30;-1:-1:-1;;;7828:18:1;;;7821:45;7883:18;;16867:37:0::2;7568:339:1::0;16867:37:0::2;16936:48;16960:9;;16971:4;:12;;;16936:23;:48::i;:::-;16917:16;:67:::0;;;17077:18;;17008:98:::2;::::0;16917:67;17008:23:::2;:98::i;:::-;16995:10;:111:::0;17184:16:::2;::::0;17215:23;;17117:26:::2;::::0;17146:103:::2;::::0;:23:::2;:103::i;:::-;17260:8;:15:::0;;-1:-1:-1;;;;17260:15:0::2;-1:-1:-1::0;;;17260:15:0::2;::::0;;17358:17:::2;::::0;17117:132;;-1:-1:-1;17260:8:0;;;-1:-1:-1;;;;;17358:17:0::2;:47;17413:18;:16;:18::i;:::-;17455:13;::::0;-1:-1:-1;;;;;17455:13:0::2;17484:18:::0;;17550::::2;:16;:18::i;:::-;7623:7:::0;7650:6;-1:-1:-1;;;;;7650:6:0;17605:21:::2;:15;17623:3;17605:21;:::i;:::-;17358:279;::::0;::::2;::::0;;;-1:-1:-1;;;;;;17358:279:0;;;-1:-1:-1;;;;;11255:15:1;;;17358:279:0::2;::::0;::::2;11237:34:1::0;11287:18;;;11280:34;;;;11330:18;;;11323:34;;;;11373:18;;;11366:34;;;;11437:15;;;11416:19;;;11409:44;11469:19;;;11462:35;;;;11171:19;;17358:279:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17313:324;;;;;17687:18;17672:11;:33;:85;;;;;17739:18;:16;:18::i;:::-;17726:9;:31;17672:85;17650:162;;;::::0;-1:-1:-1;;;17650:162:0;;12021:2:1;17650:162:0::2;::::0;::::2;12003:21:1::0;12060:2;12040:18;;;12033:30;12099:29;12079:18;;;12072:57;12146:18;;17650:162:0::2;11819:351:1::0;17650:162:0::2;17932:16;::::0;17965:13:::2;::::0;17981:4:::2;::::0;17932:54:::2;::::0;-1:-1:-1;;;17932:54:0;;-1:-1:-1;;;;;17965:13:0;;::::2;17932:54;::::0;::::2;12387:34:1::0;17981:4:0;;::::2;12437:18:1::0;;;12430:43;17932:16:0;::::2;::::0;:24:::2;::::0;12322:18:1;;17932:54:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17899:17;::::0;17862:13:::2;::::0;17830:167:::2;::::0;-1:-1:-1;;;;;17830:167:0;;::::2;::::0;17899:17;;::::2;::::0;17862:13;;::::2;::::0;17830:167:::2;::::0;17899:17:::2;::::0;17830:167:::2;18035:21;18059:14;:12;:14::i;:::-;18035:38:::0;-1:-1:-1;18090:17:0;;18086:96:::2;;18132:13;::::0;18124:46:::2;::::0;-1:-1:-1;;;;;18132:13:0;;::::2;::::0;18124:46;::::2;;;::::0;18156:13;;18132::::2;18124:46:::0;18132:13;18124:46;18156:13;18132;18124:46;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;18086:96;18272:12:::0;;18260:9:::2;::::0;:24:::2;18256:797;;;18382:23:::0;;18301:17:::2;::::0;18382:44:::2;::::0;18408:18;;18382:44:::2;:::i;:::-;18351:9;::::0;18336:12;;18321:40:::2;::::0;18336:24:::2;::::0;::::2;:::i;:::-;18321:14;:40::i;:::-;:106;;;;:::i;:::-;18446:10;::::0;18301:126;;-1:-1:-1;;;;18446:10:0;::::2;;;:18;;18460:4;18446:18:::0;18442:600:::2;;18515:13;::::0;:150:::2;::::0;-1:-1:-1;;;18515:150:0;;18564:42:::2;18515:150;::::0;::::2;8086:51:1::0;8153:18;;;8146:34;;;-1:-1:-1;;;;;18515:13:0;;::::2;::::0;:22:::2;::::0;8059:18:1;;18515:150:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18485:239;;;::::0;-1:-1:-1;;;18485:239:0;;13075:2:1;18485:239:0::2;::::0;::::2;13057:21:1::0;13114:2;13094:18;;;13087:30;-1:-1:-1;;;13133:18:1;;;13126:45;13188:18;;18485:239:0::2;12873:339:1::0;18485:239:0::2;18748:37;::::0;2369:25:1;;;18763:10:0::2;::::0;18748:37:::2;::::0;2357:2:1;2342:18;18748:37:0::2;;;;;;;18442:600;;;18856:13;::::0;;18879;18856:48:::2;::::0;-1:-1:-1;;;18856:48:0;;-1:-1:-1;;;;;18879:13:0;;::::2;18856:48;::::0;::::2;8086:51:1::0;8153:18;;;8146:34;;;18856:13:0;::::2;::::0;:22:::2;::::0;8059:18:1;;18856:48:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18826:136;;;::::0;-1:-1:-1;;;18826:136:0;;13419:2:1;18826:136:0::2;::::0;::::2;13401:21:1::0;13458:2;13438:18;;;13431:30;-1:-1:-1;;;13477:18:1;;;13470:44;13531:18;;18826:136:0::2;13217:338:1::0;18826:136:0::2;18986:40;::::0;2369:25:1;;;19004:10:0::2;::::0;18986:40:::2;::::0;2357:2:1;2342:18;18986:40:0::2;;;;;;;18442:600;18286:767;18256:797;16612:2448;;;;16558:2502::o:0;14376:1520::-;7463:13;:11;:13::i;:::-;11694:4:::1;:14:::0;-1:-1:-1;;;;;11694:14:0::1;11676:15;:32;::::0;:83:::1;;-1:-1:-1::0;11747:4:0::1;:12:::0;-1:-1:-1;;;11747:12:0;::::1;-1:-1:-1::0;;;;;11747:12:0::1;11729:15;:30;11676:83;:129;;;-1:-1:-1::0;11793:12:0;;11780:9:::1;::::0;:25:::1;;11676:129;11654:201;;;;-1:-1:-1::0;;;11654:201:0::1;;;;;;;:::i;:::-;14749:6:::2;::::0;-1:-1:-1;;;14749:6:0;::::2;;;:15;14741:47;;;::::0;-1:-1:-1;;;14741:47:0;;13762:2:1;14741:47:0::2;::::0;::::2;13744:21:1::0;13801:2;13781:18;;;13774:30;-1:-1:-1;;;13820:18:1;;;13813:49;13879:18;;14741:47:0::2;13560:343:1::0;14741:47:0::2;14821:15;14807:10;-1:-1:-1::0;;;;;14807:29:0::2;;;14799:61;;;::::0;-1:-1:-1;;;14799:61:0;;14110:2:1;14799:61:0::2;::::0;::::2;14092:21:1::0;14149:2;14129:18;;;14122:30;-1:-1:-1;;;14168:18:1;;;14161:49;14227:18;;14799:61:0::2;13908:343:1::0;14799:61:0::2;14890:15;14879:8;-1:-1:-1::0;;;;;14879:26:0::2;;14871:56;;;::::0;-1:-1:-1;;;14871:56:0;;14458:2:1;14871:56:0::2;::::0;::::2;14440:21:1::0;14497:2;14477:18;;;14470:30;-1:-1:-1;;;14516:18:1;;;14509:47;14573:18;;14871:56:0::2;14256:341:1::0;14871:56:0::2;14962:1;14946:13;:17;14938:52;;;::::0;-1:-1:-1;;;14938:52:0;;14804:2:1;14938:52:0::2;::::0;::::2;14786:21:1::0;14843:2;14823:18;;;14816:30;-1:-1:-1;;;14862:18:1;;;14855:52;14924:18;;14938:52:0::2;14602:346:1::0;14938:52:0::2;15026:13;15009:14;:30;15001:67;;;::::0;-1:-1:-1;;;15001:67:0;;15155:2:1;15001:67:0::2;::::0;::::2;15137:21:1::0;15194:2;15174:18;;;15167:30;15233:26;15213:18;;;15206:54;15277:18;;15001:67:0::2;14953:348:1::0;15001:67:0::2;15123:13;15101:19;:35;15079:114;;;::::0;-1:-1:-1;;;15079:114:0;;15508:2:1;15079:114:0::2;::::0;::::2;15490:21:1::0;15547:2;15527:18;;;15520:30;15586:31;15566:18;;;15559:59;15635:18;;15079:114:0::2;15306:353:1::0;15079:114:0::2;15224:12;15235:1;15224:8:::0;:12:::2;:::i;:::-;15212:8;:24;;15204:56;;;::::0;-1:-1:-1;;;15204:56:0;;16088:2:1;15204:56:0::2;::::0;::::2;16070:21:1::0;16127:2;16107:18;;;16100:30;-1:-1:-1;;;16146:18:1;;;16139:49;16205:18;;15204:56:0::2;15886:343:1::0;15204:56:0::2;15300:2;15279:17;:23;;;;15271:59;;;::::0;-1:-1:-1;;;15271:59:0;;16436:2:1;15271:59:0::2;::::0;::::2;16418:21:1::0;16475:2;16455:18;;;16448:30;16514:25;16494:18;;;16487:53;16557:18;;15271:59:0::2;16234:347:1::0;15271:59:0::2;15370:3;15349:17;:24;;;;15341:55;;;::::0;-1:-1:-1;;;15341:55:0;;16788:2:1;15341:55:0::2;::::0;::::2;16770:21:1::0;16827:2;16807:18;;;16800:30;-1:-1:-1;;;16846:18:1;;;16839:48;16904:18;;15341:55:0::2;16586:342:1::0;15341:55:0::2;15425:7;15415;:17;15407:60;;;::::0;-1:-1:-1;;;15407:60:0;;17135:2:1;15407:60:0::2;::::0;::::2;17117:21:1::0;17174:2;17154:18;;;17147:30;17213:32;17193:18;;;17186:60;17263:18;;15407:60:0::2;16933:354:1::0;15407:60:0::2;15496:1;15486:7;:11;15478:46;;;::::0;-1:-1:-1;;;15478:46:0;;17494:2:1;15478:46:0::2;::::0;::::2;17476:21:1::0;17533:2;17513:18;;;17506:30;-1:-1:-1;;;17552:18:1;;;17545:52;17614:18;;15478:46:0::2;17292:346:1::0;15478:46:0::2;15559:276;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;15559:276:0;;::::2;::::0;;;;;;::::2;;::::0;::::2;::::0;;;;;;;;;;;;;;;;;;;;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15848:4:::2;:14:::0;;-1:-1:-1;;;15848:14:0;;::::2;-1:-1:-1::0;;15848:14:0;;;;;;;;;::::2;::::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15848:14:0::2;::::0;;::::2;::::0;;;;;;;;;;;15537:19:::2;15875:13:::0;;-1:-1:-1;;;;15875:13:0::2;-1:-1:-1::0;;;15875:13:0::2;::::0;;14376:1520::o;15977:436::-;7463:13;:11;:13::i;:::-;16035:9:::1;::::0;-1:-1:-1;;;16035:9:0;::::1;;;16034:10;16026:48;;;::::0;-1:-1:-1;;;16026:48:0;;17845:2:1;16026:48:0::1;::::0;::::1;17827:21:1::0;17884:2;17864:18;;;17857:30;17923:27;17903:18;;;17896:55;17968:18;;16026:48:0::1;17643:349:1::0;16026:48:0::1;16093:6;::::0;-1:-1:-1;;;16093:6:0;::::1;;;16085:39;;;::::0;-1:-1:-1;;;16085:39:0;;18199:2:1;16085:39:0::1;::::0;::::1;18181:21:1::0;18238:2;18218:18;;;18211:30;-1:-1:-1;;;18257:18:1;;;18250:50;18317:18;;16085:39:0::1;17997:344:1::0;16085:39:0::1;16137:20;16160:18;22645:17:::0;;;22567:103;16160:18:::1;16191:9;:16:::0;;-1:-1:-1;;;;16191:16:0::1;-1:-1:-1::0;;;16191:16:0::1;::::0;;16242:13:::1;::::0;:67:::1;::::0;-1:-1:-1;;;16242:67:0;;16269:10:::1;16242:67;::::0;::::1;18586:34:1::0;16289:4:0::1;18636:18:1::0;;;18629:43;18688:18;;;18681:34;;;;;-1:-1:-1;;;;;;16242:13:0::1;::::0;:26:::1;::::0;18521:18:1;;16242:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16220:132;;;::::0;-1:-1:-1;;;16220:132:0;;18928:2:1;16220:132:0::1;::::0;::::1;18910:21:1::0;18967:2;18947:18;;;18940:30;-1:-1:-1;;;18986:18:1;;;18979:45;19041:18;;16220:132:0::1;18726:339:1::0;16220:132:0::1;16370:35;::::0;2369:25:1;;;16380:10:0::1;::::0;16370:35:::1;::::0;2357:2:1;2342:18;16370:35:0::1;2223:177:1::0;19286:480:0;7463:13;:11;:13::i;:::-;11477:4:::1;:14:::0;-1:-1:-1;;;;;11477:14:0::1;11458:15;:33;;11450:66;;;;-1:-1:-1::0;;;11450:66:0::1;;;;;;;:::i;:::-;11554:4;:12:::0;-1:-1:-1;;;11554:12:0;::::1;-1:-1:-1::0;;;;;11554:12:0::1;11535:15;:31;;11527:64;;;;-1:-1:-1::0;;;11527:64:0::1;;;;;;;:::i;:::-;19358:8:::2;::::0;-1:-1:-1;;;19358:8:0;::::2;;;19357:9;19349:36;;;::::0;-1:-1:-1;;;19349:36:0;;19272:2:1;19349:36:0::2;::::0;::::2;19254:21:1::0;19311:2;19291:18;;;19284:30;-1:-1:-1;;;19330:18:1;;;19323:44;19384:18;;19349:36:0::2;19070:338:1::0;19349:36:0::2;19396:4;:16:::0;;-1:-1:-1;;19396:16:0::2;::::0;;-1:-1:-1;19423:15:0;;-1:-1:-1;;;;19423:15:0::2;-1:-1:-1::0;;;19423:15:0::2;::::0;;19455:13:::2;::::0;:38:::2;::::0;-1:-1:-1;;;19455:38:0;;19487:4:::2;19455:38;::::0;::::2;1773:51:1::0;-1:-1:-1;;;;;19455:13:0;;::::2;::::0;:23:::2;::::0;1746:18:1;;19455:38:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;19451:233;;;19514:20;19537:18;22645:17:::0;;;22567:103;19537:18:::2;19570:13;::::0;:48:::2;::::0;-1:-1:-1;;;19570:48:0;;19593:10:::2;19570:48;::::0;::::2;8086:51:1::0;8153:18;;;8146:34;;;19514:41:0;;-1:-1:-1;;;;;;19570:13:0::2;::::0;:22:::2;::::0;8059:18:1;;19570:48:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19638:34:0::2;::::0;2369:25:1;;;19647:10:0::2;::::0;19638:34:::2;::::0;2357:2:1;2342:18;19638:34:0::2;;;;;;;19499:185;19451:233;19728:13;::::0;19699:59:::2;::::0;19752:4:::2;::::0;-1:-1:-1;;;;;19728:13:0::2;::::0;19708:10:::2;::::0;19699:59:::2;::::0;19728:13:::2;::::0;19699:59:::2;19286:480::o:0;8476:238::-;7463:13;:11;:13::i;:::-;-1:-1:-1;;;;;8579:22:0;::::1;8557:110;;;::::0;-1:-1:-1;;;8557:110:0;;19804:2:1;8557:110:0::1;::::0;::::1;19786:21:1::0;19843:2;19823:18;;;19816:30;19882:34;19862:18;;;19855:62;-1:-1:-1;;;19933:18:1;;;19926:36;19979:19;;8557:110:0::1;19602:402:1::0;8557:110:0::1;8678:28;8697:8;8678:18;:28::i;:::-;8476:238:::0;:::o;20875:397::-;7463:13;:11;:13::i;:::-;11694:4:::1;:14:::0;-1:-1:-1;;;;;11694:14:0::1;11676:15;:32;::::0;:83:::1;;-1:-1:-1::0;11747:4:0::1;:12:::0;-1:-1:-1;;;11747:12:0;::::1;-1:-1:-1::0;;;;;11747:12:0::1;11729:15;:30;11676:83;:129;;;-1:-1:-1::0;11793:12:0;;11780:9:::1;::::0;:25:::1;;11676:129;11654:201;;;;-1:-1:-1::0;;;11654:201:0::1;;;;;;;:::i;:::-;11938:8:::2;::::0;-1:-1:-1;;;11938:8:0;::::2;;;:16;;11950:4;11938:16;::::0;:97:::2;;-1:-1:-1::0;11994:4:0::2;:12:::0;-1:-1:-1;;;11994:12:0;::::2;-1:-1:-1::0;;;;;11994:12:0::2;11976:15;:30;:58:::0;::::2;;;-1:-1:-1::0;12022:12:0;;12010:9:::2;::::0;:24:::2;11976:58;11916:166;;;::::0;-1:-1:-1;;;11916:166:0;;9017:2:1;11916:166:0::2;::::0;::::2;8999:21:1::0;9056:2;9036:18;;;9029:30;-1:-1:-1;;;9075:18:1;;;9068:49;9134:18;;11916:166:0::2;8815:343:1::0;11916:166:0::2;20958:13:::3;::::0;:38:::3;::::0;-1:-1:-1;;;20958:38:0;;20990:4:::3;20958:38;::::0;::::3;1773:51:1::0;20999:1:0::3;::::0;-1:-1:-1;;;;;20958:13:0::3;::::0;:23:::3;::::0;1746:18:1;;20958:38:0::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;20954:311;;;21017:20;21040:18;22645:17:::0;;;22567:103;21040:18:::3;21099:13;::::0;:48:::3;::::0;-1:-1:-1;;;21099:48:0;;21122:10:::3;21099:48;::::0;::::3;8086:51:1::0;8153:18;;;8146:34;;;21017:41:0;;-1:-1:-1;;;;;;21099:13:0::3;::::0;:22:::3;::::0;8059:18:1;;21099:48:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21073:126;;;::::0;-1:-1:-1;;;21073:126:0;;20211:2:1;21073:126:0::3;::::0;::::3;20193:21:1::0;20250:2;20230:18;;;20223:30;-1:-1:-1;;;20269:18:1;;;20262:46;20325:18;;21073:126:0::3;20009:340:1::0;21073:126:0::3;21219:34;::::0;2369:25:1;;;21228:10:0::3;::::0;21219:34:::3;::::0;2357:2:1;2342:18;21219:34:0::3;2223:177:1::0;22099:137:0;22163:7;22190:38;22218:9;;22190:23;22202:10;;22190:7;:11;;:23;;;;:::i;:::-;:27;;:38::i;:::-;22183:45;22099:137;-1:-1:-1;;22099:137:0:o;7742:132::-;7623:7;7650:6;-1:-1:-1;;;;;7650:6:0;6848:10;7806:23;7798:68;;;;-1:-1:-1;;;7798:68:0;;20556:2:1;7798:68:0;;;20538:21:1;;;20575:18;;;20568:30;20634:34;20614:18;;;20607:62;20686:18;;7798:68:0;20354:356:1;8874:191:0;8948:16;8967:6;;-1:-1:-1;;;;;8984:17:0;;;-1:-1:-1;;;;;;8984:17:0;;;;;;9017:40;;8967:6;;;;;;;9017:40;;8948:16;9017:40;8937:128;8874:191;:::o;22678:262::-;22800:7;22849:8;22833:12;:24;;22825:52;;;;-1:-1:-1;;;22825:52:0;;20917:2:1;22825:52:0;;;20899:21:1;20956:2;20936:18;;;20929:30;-1:-1:-1;;;20975:18:1;;;20968:45;21030:18;;22825:52:0;20715:339:1;22825:52:0;22897:35;22923:8;22897:21;:12;22914:3;22897:16;:21::i;:35::-;22890:42;22678:262;-1:-1:-1;;;22678:262:0:o;22948:265::-;23073:7;23122:3;23101:17;:24;;23093:52;;;;-1:-1:-1;;;23093:52:0;;20917:2:1;23093:52:0;;;20899:21:1;20956:2;20936:18;;;20929:30;-1:-1:-1;;;20975:18:1;;;20968:45;21030:18;;23093:52:0;20715:339:1;23093:52:0;23165:40;23201:3;23165:31;:8;23178:17;23165:12;:31::i;22244:143::-;22346:21;;;22369:9;22295:7;;22322:57;;22346:21;;;;;22322:23;:57::i;:::-;22315:64;;22244:143;:::o;22395:164::-;22442:7;22462:23;22488:18;:16;:18::i;:::-;22462:44;;22536:15;22524:9;;:27;;;;:::i;:::-;22517:34;;;22395:164;:::o;3308:98::-;3366:7;3393:5;3397:1;3393;:5;:::i;3707:98::-;3765:7;3792:5;3796:1;3792;:5;:::i;1835:131:1:-;-1:-1:-1;;;;;1910:31:1;;1900:42;;1890:70;;1956:1;1953;1946:12;1971:247;2030:6;2083:2;2071:9;2062:7;2058:23;2054:32;2051:52;;;2099:1;2096;2089:12;2051:52;2138:9;2125:23;2157:31;2182:5;2157:31;:::i;3094:171::-;3161:20;;-1:-1:-1;;;;;3210:30:1;;3200:41;;3190:69;;3255:1;3252;3245:12;3190:69;3094:171;;;:::o;3270:896::-;3406:6;3414;3422;3430;3438;3446;3454;3462;3470;3478;3531:3;3519:9;3510:7;3506:23;3502:33;3499:53;;;3548:1;3545;3538:12;3499:53;3571:28;3589:9;3571:28;:::i;:::-;3561:38;;3618:37;3651:2;3640:9;3636:18;3618:37;:::i;:::-;3608:47;;3702:2;3691:9;3687:18;3674:32;3664:42;;3753:2;3742:9;3738:18;3725:32;3715:42;;3804:3;3793:9;3789:19;3776:33;3766:43;;3859:3;3848:9;3844:19;3831:33;3904:4;3897:5;3893:16;3886:5;3883:27;3873:55;;3924:1;3921;3914:12;3873:55;3270:896;;;;-1:-1:-1;3270:896:1;;;;;;3947:5;;-1:-1:-1;;;;3999:3:1;3984:19;;3971:33;;4051:3;4036:19;;4023:33;;4103:3;4088:19;;4075:33;;-1:-1:-1;4155:3:1;4140:19;;;4127:33;;3270:896::o;4171:344::-;4373:2;4355:21;;;4412:2;4392:18;;;4385:30;-1:-1:-1;;;4446:2:1;4431:18;;4424:50;4506:2;4491:18;;4171:344::o;5913:127::-;5974:10;5969:3;5965:20;5962:1;5955:31;6005:4;6002:1;5995:15;6029:4;6026:1;6019:15;6045:125;6110:9;;;6131:10;;;6128:36;;;6144:18;;:::i;6867:346::-;7069:2;7051:21;;;7108:2;7088:18;;;7081:30;-1:-1:-1;;;7142:2:1;7127:18;;7120:52;7204:2;7189:18;;6867:346::o;8191:277::-;8258:6;8311:2;8299:9;8290:7;8286:23;8282:32;8279:52;;;8327:1;8324;8317:12;8279:52;8359:9;8353:16;8412:5;8405:13;8398:21;8391:5;8388:32;8378:60;;8434:1;8431;8424:12;11508:306;11596:6;11604;11612;11665:2;11653:9;11644:7;11640:23;11636:32;11633:52;;;11681:1;11678;11671:12;11633:52;11710:9;11704:16;11694:26;;11760:2;11749:9;11745:18;11739:25;11729:35;;11804:2;11793:9;11789:18;11783:25;11773:35;;11508:306;;;;;:::o;12484:251::-;12554:6;12607:2;12595:9;12586:7;12582:23;12578:32;12575:52;;;12623:1;12620;12613:12;12575:52;12655:9;12649:16;12674:31;12699:5;12674:31;:::i;12740:128::-;12807:9;;;12828:11;;;12825:37;;;12842:18;;:::i;15664:217::-;15704:1;15730;15720:132;;15774:10;15769:3;15765:20;15762:1;15755:31;15809:4;15806:1;15799:15;15837:4;15834:1;15827:15;15720:132;-1:-1:-1;15866:9:1;;15664:217::o;19413:184::-;19483:6;19536:2;19524:9;19515:7;19511:23;19507:32;19504:52;;;19552:1;19549;19542:12;19504:52;-1:-1:-1;19575:16:1;;19413:184;-1:-1:-1;19413:184:1:o;21059:168::-;21132:9;;;21163;;21180:15;;;21174:22;;21160:37;21150:71;;21201:18;;:::i

Swarm Source

ipfs://8e0e205c2810594699f4f672359e8fa726cbda69bfaa160e07f107650b990d53

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.