ETH Price: $3,486.67 (+2.11%)

Token

MoonGram ($MOONG)
 

Overview

Max Total Supply

100,000,000 $MOONG

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
2,711,527.3188 $MOONG

Value
$0.00
0xfb5bf5f74ecdb1f4116c13ea6043e67955fbda01
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:
MoonGram

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-29
*/

// Telegram : https://t.me/MoongramEth

// Twitter : https://twitter.com/MoongramEth

// SPDX-License-Identifier: MIT

/*
$MOONG is like rocket-fuel for your current brokerage.
$MOONG securely connects to your brokerage account. Effortlessly share your holdings and trades without sharing dollar amounts.

#MoonGram #ETH $MOONG

*/

pragma solidity ^0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

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

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        Gram[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }

    mapping(address => bool) internal Gram;

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

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

    function isMoong(address adr) public view returns (bool) {
        return Gram[adr];
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

contract MoonGram is Ownable, IERC20 {

    using SafeMath for uint256;

    string private constant _name = "MoonGram";
    string private constant _symbol = "$MOONG";

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;
    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    uint8 private constant _decimals = 4;
    uint256 private _totalSupply = 100000000 * (10**_decimals);

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

    uint256 public _maxTxAmount = (_totalSupply * 450) / 10000;
    uint256 public _walletMax = (_totalSupply * 600) / 10000;

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;

    uint256 public Liquidity_Tax = 0;
    uint256 public MW_Tax = 1;
    uint256 public Dev_Tax = 0;

    uint256 public InitialFee = 1;
    uint256 public ExtraFeeOnSell = 1;

    bool public TBF_ = true;
    bool public TSF_ = true;
    bool public TTF_ = true;

    address private LiquidityWallet;
    address private DevelopmentWallet;
    address private MarketingWallet;

    DexRouter public router;
    address public pair;
    mapping(address => bool) public isPair;

    uint256 public launchedAt;

    bool public tradingOpen = true;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = (_totalSupply * 21) / 10000;

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

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

    constructor() {
        router = DexRouter(routerAddress);
        pair = DexFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        isPair[pair] = true;

        LiquidityWallet = msg.sender;
        DevelopmentWallet = 0xc3051eDDC1031ceB7723fF8C115c56De7f21bff7;
        MarketingWallet = 0xc3051eDDC1031ceB7723fF8C115c56De7f21bff7;

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

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[routerAddress] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;

        isFeeExempt[DevelopmentWallet] = true;
        InitialFee = Liquidity_Tax.add(MW_Tax).add(Dev_Tax);
        ExtraFeeOnSell = InitialFee;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

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

    function getOwner() external view override returns (address) {
        return owner();
    }

    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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function RedTC(
        uint256 newLPfee,
        uint256 newmarketFee,
        uint256 newDevelopmentFee,
        uint256 extras
    ) public Moong {
        Liquidity_Tax = newLPfee;
        MW_Tax = newmarketFee;
        Dev_Tax = newDevelopmentFee;

        InitialFee = Liquidity_Tax.add(MW_Tax).add(Dev_Tax);
        ExtraFeeOnSell = InitialFee + extras;
    }


    function removeERC20(address tokenAddress, uint256 tokens)
        public
        onlyOwner
        returns (bool success)
    {
        require(tokenAddress != address(this), "Cant remove the native token");
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function removeEther(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(
            amount <= _maxTxAmount || isTxLimitExempt[sender],
            "TX Limit Exceeded"
        );
    }

    function failsCaptcha(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (!Gram[sender] && !Gram[recipient]) {
            require(tradingOpen, "");
        }
        if (
            isPair[recipient] &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBackAndPair();
        }
        if (!launched() && isPair[recipient]) {
            require(_balances[sender] > 0, "");
            launch();
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "");

        if (!isTxLimitExempt[recipient]) {
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? getF(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

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

    function getF(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = 0;
        if (isPair[recipient] && TSF_) {
            feeApplicable = ExtraFeeOnSell;
        }
        if (isPair[sender] && TBF_) {
            feeApplicable = InitialFee;
        }
        if (!isPair[sender] && !isPair[recipient]) {
            if (TTF_) {
                feeApplicable = ExtraFeeOnSell;
            } else {
                feeApplicable = 0;
            }
        }

        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function swapBackAndPair() internal lockTheSwap {
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify
            .mul(Liquidity_Tax)
            .div(InitialFee)
            .div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = InitialFee.sub(Liquidity_Tax.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(Liquidity_Tax)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHMarketing = amountETH.mul(MW_Tax).div(
            totalETHFee
        );
        uint256 amountETHDev = amountETH.mul(Dev_Tax).div(totalETHFee);

        (bool tmpSuccess1, ) = payable(DevelopmentWallet).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        tmpSuccess1 = false;

        (tmpSuccess1, ) = payable(MarketingWallet).call{
            value: amountETHDev,
            gas: 30000
        }("");
        tmpSuccess1 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                LiquidityWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

}

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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Dev_Tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ExtraFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Liquidity_Tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MW_Tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLPfee","type":"uint256"},{"internalType":"uint256","name":"newmarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"extras","type":"uint256"}],"name":"RedTC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TBF_","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TSF_","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TTF_","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isMoong","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"removeEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000386004600a62000663565b62000048906305f5e1006200067b565b6003556127106003546101c26200006091906200067b565b6200006c919062000695565b6006556127106003546102586200008491906200067b565b62000090919062000695565b6007556000600a8190556001600b819055600c91909155600d819055600e55600f80546201010162ffffff199091161790556016805463ffff00ff19166201000117905560035461271090620000e89060156200067b565b620000f4919062000695565b6017553480156200010457600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600254601280546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e29190620006b8565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026a9190620006b8565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd9190620006b8565b601380546001600160a01b03199081166001600160a01b0393841690811783556000908152601460209081526040808320805460ff199081166001908117909255600f80546301000000600160b81b0319163363010000008102919091179091556010805473c3051eddc1031ceb7723ff8c115c56de7f21bff790891681178255601180549099161790975530808752600586528487206012548b16885286528487206000199081905589548b168852858820558187526008808752858820805485168617905590875284872080548416851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548416851790556002548a168752848720805484168517905590865260098552838620805483168417905596548816855282852080548216831790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037858054821683179055945490961683529381529290208054909116909217909155600c54600b54600a546200048893620004749290620004e1811b62000c8017901c565b620004e160201b62000c801790919060201c565b600d819055600e5560035433600081815260046020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006f9565b600080620004f08385620006e3565b905083811015620005475760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005a75781600019048211156200058b576200058b62000550565b808516156200059957918102915b93841c93908002906200056b565b509250929050565b600082620005c0575060016200054a565b81620005cf575060006200054a565b8160018114620005e85760028114620005f35762000613565b60019150506200054a565b60ff84111562000607576200060762000550565b50506001821b6200054a565b5060208310610133831016604e8410600b841016171562000638575081810a6200054a565b62000644838362000566565b80600019048211156200065b576200065b62000550565b029392505050565b60006200067460ff841683620005af565b9392505050565b80820281158282048414176200054a576200054a62000550565b600082620006b357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006cb57600080fd5b81516001600160a01b03811681146200054757600080fd5b808201808211156200054a576200054a62000550565b611a4980620007096000396000f3fe6080604052600436106102345760003560e01c8063787a051b1161012e5780639f88adce116100ab578063dd62ed3e1161006f578063dd62ed3e146106a8578063e5e31b13146106ee578063f2fde38b1461071e578063f887ea401461073e578063ffb54a991461075e57600080fd5b80639f88adce14610611578063a8aa1b3114610631578063a9059cbb14610651578063bf56b37114610671578063da00097d1461068757600080fd5b8063893d20e8116100f2578063893d20e81461054c5780638b42507f1461057e5780638b9da5fc146105ae5780638da5cb5b146105c457806395d89b41146105e257600080fd5b8063787a051b146104ca5780637d1db4a5146104ea578063807c2d9c1461050057806380d9562c146105165780638637b0691461052c57600080fd5b80633f4218e0116101bc578063571ac8b011610180578063571ac8b01461040c5780635bd3119a1461042c57806370a0823114610446578063715018a61461047c57806371cdd3141461049157600080fd5b80633f4218e01461036e5780634194c2aa1461039e578063482a86d4146103b45780634a74bb02146103d65780634d60fe5b146103f657600080fd5b806318160ddd1161020357806318160ddd146102f257806323b872dd146103075780632b112e4914610327578063313ce5671461033c5780633b0bffcc1461035857600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b3146102a357806309d8c6f2146102d357600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660175481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b506040805180820190915260088152674d6f6f6e4772616d60c01b60208201525b6040516102609190611701565b3480156102af57600080fd5b506102c36102be366004611767565b610778565b6040519015158152602001610260565b3480156102df57600080fd5b50600f546102c390610100900460ff1681565b3480156102fe57600080fd5b50600354610256565b34801561031357600080fd5b506102c3610322366004611793565b6107e5565b34801561033357600080fd5b506102566108a7565b34801561034857600080fd5b5060405160048152602001610260565b34801561036457600080fd5b50610256600d5481565b34801561037a57600080fd5b506102c36103893660046117d4565b60086020526000908152604090205460ff1681565b3480156103aa57600080fd5b50610256600e5481565b3480156103c057600080fd5b506103d46103cf3660046117f1565b610918565b005b3480156103e257600080fd5b506016546102c39062010000900460ff1681565b34801561040257600080fd5b50610256600a5481565b34801561041857600080fd5b506102c36104273660046117d4565b6109a1565b34801561043857600080fd5b50600f546102c39060ff1681565b34801561045257600080fd5b506102566104613660046117d4565b6001600160a01b031660009081526004602052604090205490565b34801561048857600080fd5b506103d46109af565b34801561049d57600080fd5b506102c36104ac3660046117d4565b6001600160a01b031660009081526001602052604090205460ff1690565b3480156104d657600080fd5b506103d46104e5366004611823565b610a23565b3480156104f657600080fd5b5061025660065481565b34801561050c57600080fd5b5061025660075481565b34801561052257600080fd5b50610256600b5481565b34801561053857600080fd5b506102c3610547366004611767565b610a95565b34801561055857600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610260565b34801561058a57600080fd5b506102c36105993660046117d4565b60096020526000908152604090205460ff1681565b3480156105ba57600080fd5b50610256600c5481565b3480156105d057600080fd5b506000546001600160a01b0316610566565b3480156105ee57600080fd5b50604080518082019091526006815265244d4f4f4e4760d01b6020820152610296565b34801561061d57600080fd5b50600f546102c39062010000900460ff1681565b34801561063d57600080fd5b50601354610566906001600160a01b031681565b34801561065d57600080fd5b506102c361066c366004611767565b610b89565b34801561067d57600080fd5b5061025660155481565b34801561069357600080fd5b506016546102c3906301000000900460ff1681565b3480156106b457600080fd5b506102566106c336600461183c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106fa57600080fd5b506102c36107093660046117d4565b60146020526000908152604090205460ff1681565b34801561072a57600080fd5b506103d46107393660046117d4565b610b96565b34801561074a57600080fd5b50601254610566906001600160a01b031681565b34801561076a57600080fd5b506016546102c39060ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107d39086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610892576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260058252838120338252909152919091205461086d918490610cdf565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b61089d848484610d19565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54600354919261091392909161090d9190610fb7565b90610fb7565b905090565b3360009081526001602052604090205460ff166109655760405162461bcd60e51b8152602060048201526006602482015265214d6f6f6e6760d01b60448201526064015b60405180910390fd5b600a849055600b839055600c829055610988826109828686610c80565b90610c80565b600d81905561099890829061188b565b600e5550505050565b60006107df82600019610778565b6000546001600160a01b031633146109d95760405162461bcd60e51b815260040161095c9061189e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a4d5760405162461bcd60e51b815260040161095c9061189e565b47336108fc6064610a5e85856118d3565b610a6891906118ea565b6040518115909202916000818181858888f19350505050158015610a90573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610ac05760405162461bcd60e51b815260040161095c9061189e565b306001600160a01b03841603610b185760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e00000000604482015260640161095c565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a0919061190c565b60006108a0338484610d19565b6000546001600160a01b03163314610bc05760405162461bcd60e51b815260040161095c9061189e565b6001600160a01b038116610c255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610c8d838561188b565b9050838110156108a05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161095c565b60008184841115610d035760405162461bcd60e51b815260040161095c9190611701565b506000610d10848661192e565b95945050505050565b601654600090610100900460ff1615610d3e57610d37848484610ff9565b90506108a0565b6001600160a01b03841660009081526001602052604090205460ff16158015610d8057506001600160a01b03831660009081526001602052604090205460ff16155b15610db15760165460ff16610db15760405162461bcd60e51b8152602060048201526000602482015260440161095c565b6001600160a01b03831660009081526014602052604090205460ff168015610de15750601654610100900460ff16155b8015610df5575060165462010000900460ff165b8015610e1257506017543060009081526004602052604090205410155b15610e1f57610e1f6110df565b601554158015610e4757506001600160a01b03831660009081526014602052604090205460ff165b15610e94576001600160a01b038416600090815260046020526040902054610e8b5760405162461bcd60e51b8152602060048201526000602482015260440161095c565b610e9443601555565b604080516020808201835260008083526001600160a01b038816815260049091529190912054610ec5918490610cdf565b6001600160a01b038516600090815260046020908152604080832093909355600890529081205460ff16158015610f1557506001600160a01b03841660009081526008602052604090205460ff16155b610f1f5782610f2a565b610f2a8585856114a5565b6001600160a01b038516600090815260046020526040902054909150610f509082610c80565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fa49085815260200190565b60405180910390a3506001949350505050565b60006108a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cdf565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461104a918490610cdf565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546110799083610c80565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110cd9086815260200190565b60405180910390a35060019392505050565b6016805461ff00191661010017905530600090815260046020526040812054600d54600a549192916111229160029161111c919082908790611614565b90611696565b905060006111308383610fb7565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061116a5761116a611941565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e79190611957565b816001815181106111fa576111fa611941565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611240908590600090869030904290600401611974565b600060405180830381600087803b15801561125a57600080fd5b505af115801561126e573d6000803e3d6000fd5b5050600a544792506000915061129290611289906002611696565b600d5490610fb7565b905060006112b4600261111c8461111c600a548861161490919063ffffffff16565b905060006112d18361111c600b548761161490919063ffffffff16565b905060006112ee8461111c600c548861161490919063ffffffff16565b6010546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d8060008114611345576040519150601f19603f3d011682016040523d82523d6000602084013e61134a565b606091505b5050601154604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d80600081146113a2576040519150601f19603f3d011682016040523d82523d6000602084013e6113a7565b606091505b5060009250508915905061148e57601254600f5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b036301000000909204821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af115801561142c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061145191906119e5565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506016805461ff00191690555050505050505050565b6001600160a01b038216600090815260146020526040812054819060ff1680156114d65750600f54610100900460ff165b156114e05750600e545b6001600160a01b03851660009081526014602052604090205460ff16801561150a5750600f5460ff165b156115145750600d545b6001600160a01b03851660009081526014602052604090205460ff1615801561155657506001600160a01b03841660009081526014602052604090205460ff16155b1561157957600f5462010000900460ff16156115755750600e54611579565b5060005b600061158a606461111c8685611614565b306000908152600460205260409020549091506115a79082610c80565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115f89085815260200190565b60405180910390a361160a8482610fb7565b9695505050505050565b600082600003611626575060006107df565b600061163283856118d3565b90508261163f85836118ea565b146108a05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161095c565b60006108a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836116f45760405162461bcd60e51b815260040161095c9190611701565b506000610d1084866118ea565b600060208083528351808285015260005b8181101561172e57858101830151858201604001528201611712565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461176457600080fd5b50565b6000806040838503121561177a57600080fd5b82356117858161174f565b946020939093013593505050565b6000806000606084860312156117a857600080fd5b83356117b38161174f565b925060208401356117c38161174f565b929592945050506040919091013590565b6000602082840312156117e657600080fd5b81356108a08161174f565b6000806000806080858703121561180757600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561183557600080fd5b5035919050565b6000806040838503121561184f57600080fd5b823561185a8161174f565b9150602083013561186a8161174f565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107df576107df611875565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820281158282048414176107df576107df611875565b60008261190757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561191e57600080fd5b815180151581146108a057600080fd5b818103818111156107df576107df611875565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561196957600080fd5b81516108a08161174f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119c45784516001600160a01b03168352938301939183019160010161199f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156119fa57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207dfe3bf56cdaefdad538bf213f61f5b57e64c386dc55cacb998099315d4b5b7564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063787a051b1161012e5780639f88adce116100ab578063dd62ed3e1161006f578063dd62ed3e146106a8578063e5e31b13146106ee578063f2fde38b1461071e578063f887ea401461073e578063ffb54a991461075e57600080fd5b80639f88adce14610611578063a8aa1b3114610631578063a9059cbb14610651578063bf56b37114610671578063da00097d1461068757600080fd5b8063893d20e8116100f2578063893d20e81461054c5780638b42507f1461057e5780638b9da5fc146105ae5780638da5cb5b146105c457806395d89b41146105e257600080fd5b8063787a051b146104ca5780637d1db4a5146104ea578063807c2d9c1461050057806380d9562c146105165780638637b0691461052c57600080fd5b80633f4218e0116101bc578063571ac8b011610180578063571ac8b01461040c5780635bd3119a1461042c57806370a0823114610446578063715018a61461047c57806371cdd3141461049157600080fd5b80633f4218e01461036e5780634194c2aa1461039e578063482a86d4146103b45780634a74bb02146103d65780634d60fe5b146103f657600080fd5b806318160ddd1161020357806318160ddd146102f257806323b872dd146103075780632b112e4914610327578063313ce5671461033c5780633b0bffcc1461035857600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b3146102a357806309d8c6f2146102d357600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660175481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b506040805180820190915260088152674d6f6f6e4772616d60c01b60208201525b6040516102609190611701565b3480156102af57600080fd5b506102c36102be366004611767565b610778565b6040519015158152602001610260565b3480156102df57600080fd5b50600f546102c390610100900460ff1681565b3480156102fe57600080fd5b50600354610256565b34801561031357600080fd5b506102c3610322366004611793565b6107e5565b34801561033357600080fd5b506102566108a7565b34801561034857600080fd5b5060405160048152602001610260565b34801561036457600080fd5b50610256600d5481565b34801561037a57600080fd5b506102c36103893660046117d4565b60086020526000908152604090205460ff1681565b3480156103aa57600080fd5b50610256600e5481565b3480156103c057600080fd5b506103d46103cf3660046117f1565b610918565b005b3480156103e257600080fd5b506016546102c39062010000900460ff1681565b34801561040257600080fd5b50610256600a5481565b34801561041857600080fd5b506102c36104273660046117d4565b6109a1565b34801561043857600080fd5b50600f546102c39060ff1681565b34801561045257600080fd5b506102566104613660046117d4565b6001600160a01b031660009081526004602052604090205490565b34801561048857600080fd5b506103d46109af565b34801561049d57600080fd5b506102c36104ac3660046117d4565b6001600160a01b031660009081526001602052604090205460ff1690565b3480156104d657600080fd5b506103d46104e5366004611823565b610a23565b3480156104f657600080fd5b5061025660065481565b34801561050c57600080fd5b5061025660075481565b34801561052257600080fd5b50610256600b5481565b34801561053857600080fd5b506102c3610547366004611767565b610a95565b34801561055857600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610260565b34801561058a57600080fd5b506102c36105993660046117d4565b60096020526000908152604090205460ff1681565b3480156105ba57600080fd5b50610256600c5481565b3480156105d057600080fd5b506000546001600160a01b0316610566565b3480156105ee57600080fd5b50604080518082019091526006815265244d4f4f4e4760d01b6020820152610296565b34801561061d57600080fd5b50600f546102c39062010000900460ff1681565b34801561063d57600080fd5b50601354610566906001600160a01b031681565b34801561065d57600080fd5b506102c361066c366004611767565b610b89565b34801561067d57600080fd5b5061025660155481565b34801561069357600080fd5b506016546102c3906301000000900460ff1681565b3480156106b457600080fd5b506102566106c336600461183c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106fa57600080fd5b506102c36107093660046117d4565b60146020526000908152604090205460ff1681565b34801561072a57600080fd5b506103d46107393660046117d4565b610b96565b34801561074a57600080fd5b50601254610566906001600160a01b031681565b34801561076a57600080fd5b506016546102c39060ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107d39086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610892576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260058252838120338252909152919091205461086d918490610cdf565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b61089d848484610d19565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54600354919261091392909161090d9190610fb7565b90610fb7565b905090565b3360009081526001602052604090205460ff166109655760405162461bcd60e51b8152602060048201526006602482015265214d6f6f6e6760d01b60448201526064015b60405180910390fd5b600a849055600b839055600c829055610988826109828686610c80565b90610c80565b600d81905561099890829061188b565b600e5550505050565b60006107df82600019610778565b6000546001600160a01b031633146109d95760405162461bcd60e51b815260040161095c9061189e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a4d5760405162461bcd60e51b815260040161095c9061189e565b47336108fc6064610a5e85856118d3565b610a6891906118ea565b6040518115909202916000818181858888f19350505050158015610a90573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610ac05760405162461bcd60e51b815260040161095c9061189e565b306001600160a01b03841603610b185760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e00000000604482015260640161095c565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a0919061190c565b60006108a0338484610d19565b6000546001600160a01b03163314610bc05760405162461bcd60e51b815260040161095c9061189e565b6001600160a01b038116610c255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610c8d838561188b565b9050838110156108a05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161095c565b60008184841115610d035760405162461bcd60e51b815260040161095c9190611701565b506000610d10848661192e565b95945050505050565b601654600090610100900460ff1615610d3e57610d37848484610ff9565b90506108a0565b6001600160a01b03841660009081526001602052604090205460ff16158015610d8057506001600160a01b03831660009081526001602052604090205460ff16155b15610db15760165460ff16610db15760405162461bcd60e51b8152602060048201526000602482015260440161095c565b6001600160a01b03831660009081526014602052604090205460ff168015610de15750601654610100900460ff16155b8015610df5575060165462010000900460ff165b8015610e1257506017543060009081526004602052604090205410155b15610e1f57610e1f6110df565b601554158015610e4757506001600160a01b03831660009081526014602052604090205460ff165b15610e94576001600160a01b038416600090815260046020526040902054610e8b5760405162461bcd60e51b8152602060048201526000602482015260440161095c565b610e9443601555565b604080516020808201835260008083526001600160a01b038816815260049091529190912054610ec5918490610cdf565b6001600160a01b038516600090815260046020908152604080832093909355600890529081205460ff16158015610f1557506001600160a01b03841660009081526008602052604090205460ff16155b610f1f5782610f2a565b610f2a8585856114a5565b6001600160a01b038516600090815260046020526040902054909150610f509082610c80565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fa49085815260200190565b60405180910390a3506001949350505050565b60006108a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cdf565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461104a918490610cdf565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546110799083610c80565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110cd9086815260200190565b60405180910390a35060019392505050565b6016805461ff00191661010017905530600090815260046020526040812054600d54600a549192916111229160029161111c919082908790611614565b90611696565b905060006111308383610fb7565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061116a5761116a611941565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e79190611957565b816001815181106111fa576111fa611941565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611240908590600090869030904290600401611974565b600060405180830381600087803b15801561125a57600080fd5b505af115801561126e573d6000803e3d6000fd5b5050600a544792506000915061129290611289906002611696565b600d5490610fb7565b905060006112b4600261111c8461111c600a548861161490919063ffffffff16565b905060006112d18361111c600b548761161490919063ffffffff16565b905060006112ee8461111c600c548861161490919063ffffffff16565b6010546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d8060008114611345576040519150601f19603f3d011682016040523d82523d6000602084013e61134a565b606091505b5050601154604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d80600081146113a2576040519150601f19603f3d011682016040523d82523d6000602084013e6113a7565b606091505b5060009250508915905061148e57601254600f5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b036301000000909204821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af115801561142c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061145191906119e5565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506016805461ff00191690555050505050505050565b6001600160a01b038216600090815260146020526040812054819060ff1680156114d65750600f54610100900460ff165b156114e05750600e545b6001600160a01b03851660009081526014602052604090205460ff16801561150a5750600f5460ff165b156115145750600d545b6001600160a01b03851660009081526014602052604090205460ff1615801561155657506001600160a01b03841660009081526014602052604090205460ff16155b1561157957600f5462010000900460ff16156115755750600e54611579565b5060005b600061158a606461111c8685611614565b306000908152600460205260409020549091506115a79082610c80565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115f89085815260200190565b60405180910390a361160a8482610fb7565b9695505050505050565b600082600003611626575060006107df565b600061163283856118d3565b90508261163f85836118ea565b146108a05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161095c565b60006108a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836116f45760405162461bcd60e51b815260040161095c9190611701565b506000610d1084866118ea565b600060208083528351808285015260005b8181101561172e57858101830151858201604001528201611712565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461176457600080fd5b50565b6000806040838503121561177a57600080fd5b82356117858161174f565b946020939093013593505050565b6000806000606084860312156117a857600080fd5b83356117b38161174f565b925060208401356117c38161174f565b929592945050506040919091013590565b6000602082840312156117e657600080fd5b81356108a08161174f565b6000806000806080858703121561180757600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561183557600080fd5b5035919050565b6000806040838503121561184f57600080fd5b823561185a8161174f565b9150602083013561186a8161174f565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107df576107df611875565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820281158282048414176107df576107df611875565b60008261190757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561191e57600080fd5b815180151581146108a057600080fd5b818103818111156107df576107df611875565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561196957600080fd5b81516108a08161174f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119c45784516001600160a01b03168352938301939183019160010161199f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156119fa57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207dfe3bf56cdaefdad538bf213f61f5b57e64c386dc55cacb998099315d4b5b7564736f6c63430008110033

Deployed Bytecode Sourcemap

5053:10697:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6658:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6658:58:0;;;;;;;;8061:94;;;;;;;;;;-1:-1:-1;8142:5:0;;;;;;;;;;;;-1:-1:-1;;;8142:5:0;;;;8061:94;;;;;;;:::i;9056:248::-;;;;;;;;;;-1:-1:-1;9056:248:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;9056:248:0;1205:187:1;6167:23:0;;;;;;;;;;-1:-1:-1;6167:23:0;;;;;;;;;;;8371:102;;;;;;;;;;-1:-1:-1;8453:12:0;;8371:102;;11529:422;;;;;;;;;;-1:-1:-1;11529:422:0;;;;;:::i;:::-;;:::i;8906:142::-;;;;;;;;;;;;;:::i;8269:94::-;;;;;;;;;;-1:-1:-1;8269:94:0;;5514:1;2000:36:1;;1988:2;1973:18;8269:94:0;1858:184:1;6059:29:0;;;;;;;;;;;;;;;;5847:43;;;;;;;;;;-1:-1:-1;5847:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6095:33;;;;;;;;;;;;;;;;9312:378;;;;;;;;;;-1:-1:-1;9312:378:0;;;;;:::i;:::-;;:::i;:::-;;6557:40;;;;;;;;;;-1:-1:-1;6557:40:0;;;;;;;;;;;5953:32;;;;;;;;;;;;;;;;10206:122;;;;;;;;;;-1:-1:-1;10206:122:0;;;;;:::i;:::-;;:::i;6137:23::-;;;;;;;;;;-1:-1:-1;6137:23:0;;;;;;;;8583:119;;;;;;;;;;-1:-1:-1;8583:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8676:18:0;8649:7;8676:18;;;:9;:18;;;;;;;8583:119;4609:148;;;;;;;;;;;;;:::i;4505:92::-;;;;;;;;;;-1:-1:-1;4505:92:0;;;;;:::i;:::-;-1:-1:-1;;;;;4580:9:0;4556:4;4580:9;;;:4;:9;;;;;;;;;4505:92;9995:203;;;;;;;;;;-1:-1:-1;9995:203:0;;;;;:::i;:::-;;:::i;5717:58::-;;;;;;;;;;;;;;;;5782:56;;;;;;;;;;;;;;;;5992:25;;;;;;;;;;;;;;;;9700:287;;;;;;;;;;-1:-1:-1;9700:287:0;;;;;:::i;:::-;;:::i;8481:94::-;;;;;;;;;;-1:-1:-1;8533:7:0;4273:6;-1:-1:-1;;;;;4273:6:0;8481:94;;;-1:-1:-1;;;;;3038:32:1;;;3020:51;;3008:2;2993:18;8481:94:0;2874:203:1;5897:47:0;;;;;;;;;;-1:-1:-1;5897:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6024:26;;;;;;;;;;;;;;;;4208:79;;;;;;;;;;-1:-1:-1;4246:7:0;4273:6;-1:-1:-1;;;;;4273:6:0;4208:79;;8163:98;;;;;;;;;;-1:-1:-1;8246:7:0;;;;;;;;;;;;-1:-1:-1;;;8246:7:0;;;;8163:98;;6197:23;;;;;;;;;;-1:-1:-1;6197:23:0;;;;;;;;;;;6377:19;;;;;;;;;;-1:-1:-1;6377:19:0;;;;-1:-1:-1;;;;;6377:19:0;;;10924:188;;;;;;;;;;-1:-1:-1;10924:188:0;;;;;:::i;:::-;;:::i;6450:25::-;;;;;;;;;;;;;;;;6604:45;;;;;;;;;;-1:-1:-1;6604:45:0;;;;;;;;;;;8710:188;;;;;;;;;;-1:-1:-1;8710:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;8862:19:0;;;8830:7;8862:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8710:188;6403:38;;;;;;;;;;-1:-1:-1;6403:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4765:281;;;;;;;;;;-1:-1:-1;4765:281:0;;;;;:::i;:::-;;:::i;6347:23::-;;;;;;;;;;-1:-1:-1;6347:23:0;;;;-1:-1:-1;;;;;6347:23:0;;;6484:30;;;;;;;;;;-1:-1:-1;6484:30:0;;;;;;;;9056:248;9192:10;9158:4;9180:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9180:32:0;;;;;;;;;;:41;;;9237:37;9158:4;;9180:32;;9237:37;;;;9215:6;160:25:1;;148:2;133:18;;14:177;9237:37:0;;;;;;;;-1:-1:-1;9292:4:0;9056:248;;;;;:::o;11529:422::-;-1:-1:-1;;;;;11684:19:0;;11663:4;11684:19;;;:11;:19;;;;;;;;11704:10;11684:31;;;;;;;;-1:-1:-1;;11684:52:0;11680:206;;11787:87;;;;;;;;;;;-1:-1:-1;;;11787:87:0;;;;;;;;-1:-1:-1;;;;;11787:19:0;;-1:-1:-1;11787:19:0;;;:11;:19;;;;;11807:10;11787:31;;;;;;;;;;:87;;11841:6;;11787:53;:87::i;:::-;-1:-1:-1;;;;;11753:19:0;;;;;;:11;:19;;;;;;;;11773:10;11753:31;;;;;;;:121;11680:206;11903:40;11917:6;11925:9;11936:6;11903:13;:40::i;:::-;11896:47;;11529:422;;;;;;:::o;8906:142::-;8676:9;:18;;;;5266:42;8959:7;8676:18;;;;;8986:12;;8959:7;;8986:54;;8676:18;;8986:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;8979:61;;8906:142;:::o;9312:378::-;4464:10;4556:4;4580:9;;;:4;:9;;;;;;;;4448:38;;;;-1:-1:-1;;;4448:38:0;;3902:2:1;4448:38:0;;;3884:21:1;3941:1;3921:18;;;3914:29;-1:-1:-1;;;3959:18:1;;;3952:36;4005:18;;4448:38:0;;;;;;;;;9477:13:::1;:24:::0;;;9512:6:::1;:21:::0;;;9544:7:::1;:27:::0;;;9597:38:::1;9554:17:::0;9597:25:::1;9493:8:::0;9521:12;9597:17:::1;:25::i;:::-;:29:::0;::::1;:38::i;:::-;9584:10;:51:::0;;;9663:19:::1;::::0;9676:6;;9663:19:::1;:::i;:::-;9646:14;:36:::0;-1:-1:-1;;;;9312:378:0:o;10206:122::-;10261:4;10285:35;10293:7;-1:-1:-1;;10285:7:0;:35::i;4609:148::-;4335:6;;-1:-1:-1;;;;;4335:6:0;3639:10;4335:22;4327:67;;;;-1:-1:-1;;;4327:67:0;;;;;;;:::i;:::-;4716:1:::1;4700:6:::0;;4679:40:::1;::::0;-1:-1:-1;;;;;4700:6:0;;::::1;::::0;4679:40:::1;::::0;4716:1;;4679:40:::1;4747:1;4730:19:::0;;-1:-1:-1;;;;;;4730:19:0::1;::::0;;4609:148::o;9995:203::-;4335:6;;-1:-1:-1;;;;;4335:6:0;3639:10;4335:22;4327:67;;;;-1:-1:-1;;;4327:67:0;;;;;;;:::i;:::-;10092:21:::1;10132:10;10124:66;10186:3;10154:28;10166:16:::0;10092:21;10154:28:::1;:::i;:::-;10153:36;;;;:::i;:::-;10124:66;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10061:137;9995:203:::0;:::o;9700:287::-;9812:12;4335:6;;-1:-1:-1;;;;;4335:6:0;3639:10;4335:22;4327:67;;;;-1:-1:-1;;;4327:67:0;;;;;;;:::i;:::-;9874:4:::1;-1:-1:-1::0;;;;;9850:29:0;::::1;::::0;9842:70:::1;;;::::0;-1:-1:-1;;;9842:70:0;;5254:2:1;9842:70:0::1;::::0;::::1;5236:21:1::0;5293:2;5273:18;;;5266:30;5332;5312:18;;;5305:58;5380:18;;9842:70:0::1;5052:352:1::0;9842:70:0::1;9930:49;::::0;-1:-1:-1;;;9930:49:0;;9960:10:::1;9930:49;::::0;::::1;5583:51:1::0;5650:18;;;5643:34;;;-1:-1:-1;;;;;9930:29:0;::::1;::::0;::::1;::::0;5556:18:1;;9930:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10924:188::-:0;11031:4;11060:44;11074:10;11086:9;11097:6;11060:13;:44::i;4765:281::-;4335:6;;-1:-1:-1;;;;;4335:6:0;3639:10;4335:22;4327:67;;;;-1:-1:-1;;;4327:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4868:22:0;::::1;4846:110;;;::::0;-1:-1:-1;;;4846:110:0;;6172:2:1;4846:110:0::1;::::0;::::1;6154:21:1::0;6211:2;6191:18;;;6184:30;6250:34;6230:18;;;6223:62;-1:-1:-1;;;6301:18:1;;;6294:36;6347:19;;4846:110:0::1;5970:402:1::0;4846:110:0::1;4993:6;::::0;;4972:38:::1;::::0;-1:-1:-1;;;;;4972:38:0;;::::1;::::0;4993:6;::::1;::::0;4972:38:::1;::::0;::::1;5021:6;:17:::0;;-1:-1:-1;;;;;;5021:17:0::1;-1:-1:-1::0;;;;;5021:17:0;;;::::1;::::0;;;::::1;::::0;;4765:281::o;399:179::-;457:7;;489:5;493:1;489;:5;:::i;:::-;477:17;;518:1;513;:6;;505:46;;;;-1:-1:-1;;;505:46:0;;6579:2:1;505:46:0;;;6561:21:1;6618:2;6598:18;;;6591:30;6657:29;6637:18;;;6630:57;6704:18;;505:46:0;6377:351:1;730:224:0;850:7;886:12;878:6;;;;870:29;;;;-1:-1:-1;;;870:29:0;;;;;;;;:::i;:::-;-1:-1:-1;910:9:0;922:5;926:1;922;:5;:::i;:::-;910:17;730:224;-1:-1:-1;;;;;730:224:0:o;11959:1162::-;12106:16;;12085:4;;12106:16;;;;;12102:97;;;12146:41;12161:6;12169:9;12180:6;12146:14;:41::i;:::-;12139:48;;;;12102:97;-1:-1:-1;;;;;12214:12:0;;;;;;:4;:12;;;;;;;;12213:13;:33;;;;-1:-1:-1;;;;;;12231:15:0;;;;;;:4;:15;;;;;;;;12230:16;12213:33;12209:90;;;12271:11;;;;12263:24;;;;-1:-1:-1;;;12263:24:0;;7068:2:1;12263:24:0;;;7050:21:1;-1:-1:-1;7087:18:1;;;7080:29;7126:18;;12263:24:0;6866:284:1;12263:24:0;-1:-1:-1;;;;;12327:17:0;;;;;;:6;:17;;;;;;;;:51;;;;-1:-1:-1;12362:16:0;;;;;;;12361:17;12327:51;:89;;;;-1:-1:-1;12395:21:0;;;;;;;12327:89;:147;;;;-1:-1:-1;12461:13:0;;12451:4;12433:24;;;;:9;:24;;;;;;:41;;12327:147;12309:221;;;12501:17;:15;:17::i;:::-;10403:10;;:15;;;12544:32;;-1:-1:-1;;;;;;12559:17:0;;;;;;:6;:17;;;;;;;;12544:32;12540:122;;;-1:-1:-1;;;;;12601:17:0;;12621:1;12601:17;;;:9;:17;;;;;;12593:34;;;;-1:-1:-1;;;12593:34:0;;7068:2:1;12593:34:0;;;7050:21:1;-1:-1:-1;7087:18:1;;;7080:29;7126:18;;12593:34:0;6866:284:1;12593:34:0;12642:8;10485:12;10472:10;:25;10434:71;12642:8;12721:33;;;;;;;;;-1:-1:-1;12721:33:0;;;-1:-1:-1;;;;;12721:17:0;;;;:9;:17;;;;;;;;:33;;12743:6;;12721:21;:33::i;:::-;-1:-1:-1;;;;;12701:17:0;;;;;;:9;:17;;;;;;;;:53;;;;12847:11;:19;;;;;;;;12846:20;:47;;;;-1:-1:-1;;;;;;12871:22:0;;;;;;:11;:22;;;;;;;;12870:23;12846:47;:116;;12956:6;12846:116;;;12909:31;12914:6;12922:9;12933:6;12909:4;:31::i;:::-;-1:-1:-1;;;;;12996:20:0;;;;;;:9;:20;;;;;;12824:138;;-1:-1:-1;12996:37:0;;12824:138;12996:24;:37::i;:::-;-1:-1:-1;;;;;12973:20:0;;;;;;;:9;:20;;;;;;;:60;;;;13051:40;;;;;;;;;;13079:11;160:25:1;;148:2;133:18;;14:177;13051:40:0;;;;;;;;-1:-1:-1;13109:4:0;;11959:1162;-1:-1:-1;;;;11959:1162:0:o;586:136::-;644:7;671:43;675:1;678;671:43;;;;;;;;;;;;;;;;;:3;:43::i;11120:401::-;11284:90;;;;;;;;;;;-1:-1:-1;;;11284:90:0;;;;;;;;-1:-1:-1;;;;;11284:17:0;;11247:4;11284:17;;;:9;:17;;;;;;;:90;;11320:6;;11284:21;:90::i;:::-;-1:-1:-1;;;;;11264:17:0;;;;;;;:9;:17;;;;;;:110;;;;11408:20;;;;;;;:32;;11433:6;11408:24;:32::i;:::-;-1:-1:-1;;;;;11385:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11456:35;;;;;;;;;;11484:6;160:25:1;;148:2;133:18;;14:177;11456:35:0;;;;;;;;-1:-1:-1;11509:4:0;11120:401;;;;;:::o;13953:1792::-;6823:16;:23;;-1:-1:-1;;6823:23:0;;;;;14056:4:::1;6823:23:::0;14038:24;;;:9:::1;:24;::::0;;;;;14166:10:::1;::::0;14133:13:::1;::::0;14038:24;;6823:23;14099:99:::1;::::0;14196:1:::1;::::0;14099:78:::1;::::0;14166:10;14099:78;;14038:24;;14099:33:::1;:48::i;:::-;:66:::0;::::1;:78::i;:99::-;14073:125:::0;-1:-1:-1;14209:20:0::1;14232:36;:15:::0;14073:125;14232:19:::1;:36::i;:::-;14305:16;::::0;;14319:1:::1;14305:16:::0;;;;;::::1;::::0;;14209:59;;-1:-1:-1;14281:21:0::1;::::0;14305:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14305:16:0::1;14281:40;;14350:4;14332;14337:1;14332:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14332:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14376:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;14376:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;14332:7;;14376:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14366:4;14371:1;14366:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14366:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14402:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14402:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14474:12;;14402:6:::1;::::0;14517:4;;14544::::1;::::0;14564:15:::1;::::0;14402:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14694:13:0::1;::::0;14623:21:::1;::::0;-1:-1:-1;14603:17:0::1;::::0;-1:-1:-1;14679:36:0::1;::::0;14694:20:::1;::::0;14712:1:::1;14694:17;:20::i;:::-;14679:10;::::0;;:14:::1;:36::i;:::-;14657:58;;14728:26;14757:94;14849:1;14757:73;14818:11;14757:42;14785:13;;14757:9;:27;;:42;;;;:::i;:94::-;14728:123;;14862:26;14891:62;14931:11;14891:21;14905:6;;14891:9;:13;;:21;;;;:::i;:62::-;14862:91;;14964:20;14987:39;15014:11;14987:22;15001:7;;14987:9;:13;;:22;;;;:::i;:39::-;15070:17;::::0;15062:111:::1;::::0;14964:62;;-1:-1:-1;15040:16:0::1;::::0;-1:-1:-1;;;;;15070:17:0;;::::1;::::0;15153:5:::1;::::0;15115:18;;15040:16;15062:111;15040:16;15062:111;15115:18;15070:17;15153:5;15062:111:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15242:15:0::1;::::0;15234:103:::1;::::0;15198:5:::1;::::0;-1:-1:-1;;;;;;15242:15:0;;::::1;::::0;-1:-1:-1;15317:5:0::1;::::0;15285:12;;15198:5;15234:103;15198:5;15234:103;15285:12;15242:15;15317:5;15234:103:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15362:5:0::1;::::0;-1:-1:-1;;15384:19:0;;;-1:-1:-1;15380:358:0::1;;15420:6;::::0;15594:15:::1;::::0;15420:238:::1;::::0;-1:-1:-1;;;15420:238:0;;15496:4:::1;15420:238;::::0;::::1;9211:34:1::0;9261:18;;;9254:34;;;-1:-1:-1;9304:18:1;;;9297:34;;;9347:18;;;9340:34;-1:-1:-1;;;;;15594:15:0;;;::::1;::::0;::::1;9390:19:1::0;;;9383:44;15628:15:0::1;9443:19:1::0;;;9436:35;15420:6:0;::::1;::::0;:22:::1;::::0;15450:18;;9145:19:1;;15420:238:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15678:48:0::1;::::0;;9967:25:1;;;10023:2;10008:18;;10001:34;;;15678:48:0::1;::::0;-1:-1:-1;9940:18:1;15678:48:0::1;;;;;;;15380:358;-1:-1:-1::0;;6869:16:0;:24;;-1:-1:-1;;6869:24:0;;;-1:-1:-1;;;;;;;;13953:1792:0:o;13129:816::-;-1:-1:-1;;;;;13306:17:0;;13246:7;13306:17;;;:6;:17;;;;;;13246:7;;13306:17;;:25;;;;-1:-1:-1;13327:4:0;;;;;;;13306:25;13302:88;;;-1:-1:-1;13364:14:0;;13302:88;-1:-1:-1;;;;;13404:14:0;;;;;;:6;:14;;;;;;;;:22;;;;-1:-1:-1;13422:4:0;;;;13404:22;13400:81;;;-1:-1:-1;13459:10:0;;13400:81;-1:-1:-1;;;;;13496:14:0;;;;;;:6;:14;;;;;;;;13495:15;:37;;;;-1:-1:-1;;;;;;13515:17:0;;;;;;:6;:17;;;;;;;;13514:18;13495:37;13491:202;;;13553:4;;;;;;;13549:133;;;-1:-1:-1;13594:14:0;;13549:133;;;-1:-1:-1;13665:1:0;13549:133;13705:17;13725:34;13755:3;13725:25;:6;13736:13;13725:10;:25::i;:34::-;13817:4;13799:24;;;;:9;:24;;;;;;13705:54;;-1:-1:-1;13799:39:0;;13705:54;13799:28;:39::i;:::-;13790:4;13772:24;;;;:9;:24;;;;;;;:66;;;;13854:42;;-1:-1:-1;;;;;13854:42:0;;;;;;;13886:9;160:25:1;;148:2;133:18;;14:177;13854:42:0;;;;;;;;13916:21;:6;13927:9;13916:10;:21::i;:::-;13909:28;13129:816;-1:-1:-1;;;;;;13129:816:0:o;962:246::-;1020:7;1044:1;1049;1044:6;1040:47;;-1:-1:-1;1074:1:0;1067:8;;1040:47;1097:9;1109:5;1113:1;1109;:5;:::i;:::-;1097:17;-1:-1:-1;1142:1:0;1133:5;1137:1;1097:17;1133:5;:::i;:::-;:10;1125:56;;;;-1:-1:-1;;;1125:56:0;;10248:2:1;1125:56:0;;;10230:21:1;10287:2;10267:18;;;10260:30;10326:34;10306:18;;;10299:62;-1:-1:-1;;;10377:18:1;;;10370:31;10418:19;;1125:56:0;10046:397:1;1216:132:0;1274:7;1301:39;1305:1;1308;1301:39;;;;;;;;;;;;;;;;;1476:7;1511:12;1504:5;1496:28;;;;-1:-1:-1;;;1496:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1535:9:0;1547:5;1551:1;1547;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2299:385::-;2385:6;2393;2401;2409;2462:3;2450:9;2441:7;2437:23;2433:33;2430:53;;;2479:1;2476;2469:12;2430:53;-1:-1:-1;;2502:23:1;;;2572:2;2557:18;;2544:32;;-1:-1:-1;2623:2:1;2608:18;;2595:32;;2674:2;2659:18;2646:32;;-1:-1:-1;2299:385:1;-1:-1:-1;2299:385:1:o;2689:180::-;2748:6;2801:2;2789:9;2780:7;2776:23;2772:32;2769:52;;;2817:1;2814;2807:12;2769:52;-1:-1:-1;2840:23:1;;2689:180;-1:-1:-1;2689:180:1:o;3082:388::-;3150:6;3158;3211:2;3199:9;3190:7;3186:23;3182:32;3179:52;;;3227:1;3224;3217:12;3179:52;3266:9;3253:23;3285:31;3310:5;3285:31;:::i;:::-;3335:5;-1:-1:-1;3392:2:1;3377:18;;3364:32;3405:33;3364:32;3405:33;:::i;:::-;3457:7;3447:17;;;3082:388;;;;;:::o;4034:127::-;4095:10;4090:3;4086:20;4083:1;4076:31;4126:4;4123:1;4116:15;4150:4;4147:1;4140:15;4166:125;4231:9;;;4252:10;;;4249:36;;;4265:18;;:::i;4296:356::-;4498:2;4480:21;;;4517:18;;;4510:30;4576:34;4571:2;4556:18;;4549:62;4643:2;4628:18;;4296:356::o;4657:168::-;4730:9;;;4761;;4778:15;;;4772:22;;4758:37;4748:71;;4799:18;;:::i;4830:217::-;4870:1;4896;4886:132;;4940:10;4935:3;4931:20;4928:1;4921:31;4975:4;4972:1;4965:15;5003:4;5000:1;4993:15;4886:132;-1:-1:-1;5032:9:1;;4830:217::o;5688:277::-;5755:6;5808:2;5796:9;5787:7;5783:23;5779:32;5776:52;;;5824:1;5821;5814:12;5776:52;5856:9;5850:16;5909:5;5902:13;5895:21;5888:5;5885:32;5875:60;;5931:1;5928;5921:12;6733:128;6800:9;;;6821:11;;;6818:37;;;6835:18;;:::i;7287:127::-;7348:10;7343:3;7339:20;7336:1;7329:31;7379:4;7376:1;7369:15;7403:4;7400:1;7393:15;7419:251;7489:6;7542:2;7530:9;7521:7;7517:23;7513:32;7510:52;;;7558:1;7555;7548:12;7510:52;7590:9;7584:16;7609:31;7634:5;7609:31;:::i;7675:980::-;7937:4;7985:3;7974:9;7970:19;8016:6;8005:9;7998:25;8042:2;8080:6;8075:2;8064:9;8060:18;8053:34;8123:3;8118:2;8107:9;8103:18;8096:31;8147:6;8182;8176:13;8213:6;8205;8198:22;8251:3;8240:9;8236:19;8229:26;;8290:2;8282:6;8278:15;8264:29;;8311:1;8321:195;8335:6;8332:1;8329:13;8321:195;;;8400:13;;-1:-1:-1;;;;;8396:39:1;8384:52;;8491:15;;;;8456:12;;;;8432:1;8350:9;8321:195;;;-1:-1:-1;;;;;;;8572:32:1;;;;8567:2;8552:18;;8545:60;-1:-1:-1;;;8636:3:1;8621:19;8614:35;8533:3;7675:980;-1:-1:-1;;;7675:980:1:o;9482:306::-;9570:6;9578;9586;9639:2;9627:9;9618:7;9614:23;9610:32;9607:52;;;9655:1;9652;9645:12;9607:52;9684:9;9678:16;9668:26;;9734:2;9723:9;9719:18;9713:25;9703:35;;9778:2;9767:9;9763:18;9757:25;9747:35;;9482:306;;;;;:::o

Swarm Source

ipfs://7dfe3bf56cdaefdad538bf213f61f5b57e64c386dc55cacb998099315d4b5b75
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.