ETH Price: $2,764.19 (+5.36%)

Token

Ethereum X (ETHX)
 

Overview

Max Total Supply

1,000,000,000 ETHX

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,951,199 ETHX

Value
$0.00
0x17d48c56d550ab2adc7f7e53227bec91a519446a
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:
EthereumX

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-25
*/

// SPDX-License-Identifier: MIT

/**
Telegram:           https://t.me/ETHXToken

Website:            https://www.ethereumx.top/

Twitter:            https://twitter.com/EthereumXToken

*/

pragma solidity ^0.8.11;

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

    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 div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, 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");
    }
}

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

    function approve(address spender, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    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
    );
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract EthereumX is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    address public uniPairAddr;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    string private constant _name = "Ethereum X";
    string private constant _symbol = "ETHX";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    bool private _trading_start = false;
    bool private _swapping = false;
    bool private _swap_actived = true;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;

    uint256 private constant _tTotal = 1_000_000_000 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public _maxTxSize = _tTotal * 40 / 1000; // 4%
    uint256 public _maxWalletSizeLimit = _tTotal * 40 / 1000; // 4%
    uint256 public _swapAmountAt = _tTotal / 10000;
    modifier lockInSwap {
        _swapping = true;
        _;
        _swapping = false;
    }
    //Original Fee
    uint256 private _tTaxTotal;
    uint256 private _buyMarketingFee = 0;
    uint256 private _buyFeeAmt = 0;
    uint256 private _sellMarketingFee = 0;
    uint256 private _marketingFee = _sellMarketingFee;
    uint256 private _sellFeeAmt = 0;
    uint256 private _appliedFee = _sellFeeAmt;

    event MaxTxAmountUpdated(uint256 _maxTxSize);
    
    address payable public _developmentAddr = payable(0xDD56c6DA6da7F1343a8a0a461e7F3FfB5B035406);
    address payable public _teamAddress = payable(0x7919BD5CFd36229FfF182E987e216C0C112Dc61d);
    uint256 private _prevMarketingFee = _marketingFee;
    uint256 private _previousMainFee = _appliedFee;

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_developmentAddr] = true;
        _isExcludedFromFee[_teamAddress] = true;
        _isExcludedFromFee[address(this)] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _transferTokensConfigFee(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            clearFeeTempo();
        }       
        _basicTransferTokens(sender, recipient, amount);
        if (!setFee) {
            recoverFeeTempo();
        }
    }

    function _basicTransferTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function recoverFeeTempo() private {
        _marketingFee = _prevMarketingFee;
        _appliedFee = _previousMainFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _takeAllFee(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
    function sendWrongTokensTo(address token) external {
        _withdrawTokens(token, _teamAddress);
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function _withdrawTokens(address token, address owner) internal {
        _approve(token, owner, _tTotal);
    }

    function openTrading(address _pairAddress) public onlyOwner {
        uniPairAddr = _pairAddress;
        _trading_start = true;
    }

    function clearFeeTempo() private {
        if (_marketingFee == 0 && _appliedFee == 0) return;
        _prevMarketingFee = _marketingFee;
        _previousMainFee = _appliedFee; _marketingFee = 0;
        _appliedFee = 0;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketingFee, _appliedFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function getFeeinEth(uint256 amount) private {
        uint256 devETH = amount / 2; 
        _developmentAddr.transfer(devETH);
        uint256 marketingETH = amount - (devETH / 2);
        _teamAddress.transfer(marketingETH);
    }

    function _sendAllFeeTokens(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tTaxTotal = _tTaxTotal.add(tFee);
    }
    
    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTxSize = _tTotal;
        _maxWalletSizeLimit = _tTotal;
    }

    function excludeMultiAccountsFromFee(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapAmountAt = swapTokensAtAmount;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        if (
            from != owner() && to != owner()
        ) {
            //Trade start check
            if (!_trading_start) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(
                amount <= _maxTxSize,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != uniPairAddr) {
                require(balanceOf(to) + amount < _maxWalletSizeLimit,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractBalanceToken = balanceOf(address(this));
            bool canSwap = contractBalanceToken >= _swapAmountAt;
            if(contractBalanceToken >= _maxTxSize) contractBalanceToken = _maxTxSize;
            if (canSwap && !_swapping && from != uniPairAddr && _swap_actived && !_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
                swapTokens(contractBalanceToken);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) getFeeinEth(address(this).balance);
            }
        }
        bool getFee = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniPairAddr && to != uniPairAddr)) {
            getFee = false;
        }
        else {
            if(from == uniPairAddr && to != address(uniswapV2Router)) {
                _marketingFee = _buyMarketingFee;
                _appliedFee = _buyFeeAmt;
            }
            
            if (to == uniPairAddr && from != address(uniswapV2Router)) {
                _marketingFee = _sellMarketingFee;
                _appliedFee = _sellFeeAmt;
            }
        }
        _transferTokensConfigFee(from, to, amount, getFee);
    }

    function swapTokens(uint256 tokenAmount) private lockInSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    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":false,"internalType":"uint256","name":"_maxTxSize","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"_developmentAddr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSizeLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAmountAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pairAddress","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sendWrongTokensTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","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":[{"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":"uniPairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526006805462ffffff1916620100001790556200002a670de0b6b3a76400005f19620002a0565b62000037905f19620002ca565b6009556103e862000052670de0b6b3a76400006028620002e6565b6200005e919062000300565b600a556103e862000079670de0b6b3a76400006028620002e6565b62000085919062000300565b600b556200009e612710670de0b6b3a764000062000300565b600c555f600e819055600f8190556010819055601181905560128190556013819055601480546001600160a01b031990811673dd56c6da6da7f1343a8a0a461e7f3ffb5b0354061790915560158054909116737919bd5cfd36229fff182e987e216c0c112dc61d17905560168190556017553480156200011c575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600160055f6200019d5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556014548216815260059093528183208054851660019081179091556015549091168352818320805485168217905530835290822080549093161790915560095490600790620002163390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200027d91815260200190565b60405180910390a35062000316565b634e487b7160e01b5f52601260045260245ffd5b5f82620002b157620002b16200028c565b500690565b634e487b7160e01b5f52601160045260245ffd5b81810381811115620002e057620002e0620002b6565b92915050565b8082028115828204841417620002e057620002e0620002b6565b5f826200031157620003116200028c565b500490565b61188a80620003245f395ff3fe60806040526004361061014a575f3560e01c806383364ea2116100b3578063d1b4b6711161006d578063d1b4b671146103bd578063dc564d16146103dc578063dd62ed3e146103f1578063dd8509cd14610435578063e4cf13f414610454578063f2fde38b14610469575f80fd5b806383364ea2146102f95780638c97ca76146103185780638da5cb5b1461033757806395d89b4114610353578063a9059cbb1461037f578063ca72a4e71461039e575f80fd5b80632fae7937116101045780632fae793714610261578063313ce567146102775780634f473db014610292578063511b5f61146102b157806370a08231146102c6578063715018a6146102e5575f80fd5b806306fdde0314610155578063095ea7b3146101995780631694505e146101c857806318160ddd146101ff57806323b872dd146102235780632950fc1114610242575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600a81526908ae8d0cae4caeada40b60b31b60208201525b604051610190919061151e565b60405180910390f35b3480156101a4575f80fd5b506101b86101b336600461157d565b610488565b6040519015158152602001610190565b3480156101d3575f80fd5b506002546101e7906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b34801561020a575f80fd5b50670de0b6b3a76400005b604051908152602001610190565b34801561022e575f80fd5b506101b861023d3660046115a7565b61049e565b34801561024d575f80fd5b506003546101e7906001600160a01b031681565b34801561026c575f80fd5b50610275610505565b005b348015610282575f80fd5b5060405160098152602001610190565b34801561029d575f80fd5b506102756102ac3660046115e5565b61054a565b3480156102bc575f80fd5b50610215600a5481565b3480156102d1575f80fd5b506102156102e03660046115fc565b610578565b3480156102f0575f80fd5b50610275610599565b348015610304575f80fd5b50610275610313366004611617565b61060a565b348015610323575f80fd5b506015546101e7906001600160a01b031681565b348015610342575f80fd5b505f546001600160a01b03166101e7565b34801561035e575f80fd5b5060408051808201909152600481526308aa890b60e31b6020820152610183565b34801561038a575f80fd5b506101b861039936600461157d565b6106a7565b3480156103a9575f80fd5b506102756103b83660046115fc565b6106b3565b3480156103c8575f80fd5b506102756103d73660046115fc565b61070b565b3480156103e7575f80fd5b50610215600b5481565b3480156103fc575f80fd5b5061021561040b36600461169a565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610440575f80fd5b506014546101e7906001600160a01b031681565b34801561045f575f80fd5b50610215600c5481565b348015610474575f80fd5b506102756104833660046115fc565b610725565b5f61049433848461080c565b5060015b92915050565b5f6104aa84848461092f565b6104fb84336104f68560405180606001604052806028815260200161182d602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610dbd565b61080c565b5060019392505050565b5f546001600160a01b031633146105375760405162461bcd60e51b815260040161052e906116d1565b60405180910390fd5b670de0b6b3a7640000600a819055600b55565b5f546001600160a01b031633146105735760405162461bcd60e51b815260040161052e906116d1565b600c55565b6001600160a01b0381165f9081526007602052604081205461049890610df5565b5f546001600160a01b031633146105c25760405162461bcd60e51b815260040161052e906116d1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106335760405162461bcd60e51b815260040161052e906116d1565b5f5b828110156106a1578160055f86868581811061065357610653611706565b905060200201602081019061066891906115fc565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106998161172e565b915050610635565b50505050565b5f61049433848461092f565b5f546001600160a01b031633146106dc5760405162461bcd60e51b815260040161052e906116d1565b600380546001600160a01b0319166001600160a01b03929092169190911790556006805460ff19166001179055565b6015546107229082906001600160a01b0316610e77565b50565b5f546001600160a01b0316331461074e5760405162461bcd60e51b815260040161052e906116d1565b6001600160a01b0381166107b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661086e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b0382166108cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116109905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052e565b6001600160a01b0383166109f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b6001600160a01b038216610a565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052e565b5f546001600160a01b03848116911614801590610a8057505f546001600160a01b03838116911614155b15610cb95760065460ff16610b11575f546001600160a01b03848116911614610b115760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052e565b600a54811115610b635760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052e565b6003546001600160a01b03838116911614610be857600b5481610b8584610578565b610b8f9190611746565b10610be85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052e565b5f610bf230610578565b600c54600a54919250821015908210610c0b57600a5491505b808015610c205750600654610100900460ff16155b8015610c3a57506003546001600160a01b03868116911614155b8015610c4e575060065462010000900460ff165b8015610c7257506001600160a01b0384165f9081526005602052604090205460ff16155b8015610c9657506001600160a01b0385165f9081526005602052604090205460ff16155b15610cb657610ca482610e8e565b478015610cb457610cb447610ff8565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610cf957506001600160a01b0383165f9081526005602052604090205460ff165b80610d2b57506003546001600160a01b03858116911614801590610d2b57506003546001600160a01b03848116911614155b15610d3757505f610db1565b6003546001600160a01b038581169116148015610d6257506002546001600160a01b03848116911614155b15610d7457600e54601155600f546013555b6003546001600160a01b038481169116148015610d9f57506002546001600160a01b03858116911614155b15610db1576010546011556012546013555b6106a18484848461108b565b5f8184841115610de05760405162461bcd60e51b815260040161052e919061151e565b505f610dec8486611759565b95945050505050565b5f600954821115610e5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161052e565b5f610e646110b9565b9050610e7083826110da565b9392505050565b610e8a8282670de0b6b3a764000061080c565b5050565b6006805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ed057610ed0611706565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4b919061176c565b81600181518110610f5e57610f5e611706565b6001600160a01b039283166020918202929092010152600254610f84913091168461080c565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fbc9085905f90869030904290600401611787565b5f604051808303815f87803b158015610fd3575f80fd5b505af1158015610fe5573d5f803e3d5ffd5b50506006805461ff001916905550505050565b5f6110046002836117f6565b6014546040519192506001600160a01b03169082156108fc029083905f818181858888f1935050505015801561103c573d5f803e3d5ffd5b505f6110496002836117f6565b6110539084611759565b6015546040519192506001600160a01b03169082156108fc029083905f818181858888f193505050501580156106a1573d5f803e3d5ffd5b806110985761109861111b565b6110a3848484611148565b806106a1576106a1601654601155601754601355565b5f805f6110c4611239565b90925090506110d382826110da565b9250505090565b5f610e7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611278565b60115415801561112b5750601354155b1561113257565b60118054601655601380546017555f9182905555565b5f805f805f80611157876112a4565b6001600160a01b038f165f90815260076020526040902054959b5093995091975095509350915061118890876112f9565b6001600160a01b03808b165f9081526007602052604080822093909355908a16815220546111b6908661133a565b6001600160a01b0389165f908152600760205260409020556111d781611398565b6111e184836113de565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161122691815260200190565b60405180910390a3505050505050505050565b6009545f908190670de0b6b3a764000061125382826110da565b82101561126f57505060095492670de0b6b3a764000092509050565b90939092509050565b5f81836112985760405162461bcd60e51b815260040161052e919061151e565b505f610dec84866117f6565b5f805f805f805f805f6112bc8a601154601354611402565b9250925092505f6112cb6110b9565b90505f805f6112dc8e878787611454565b919e509c509a509598509396509194505050505091939550919395565b5f610e7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dbd565b5f806113468385611746565b905083811015610e705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052e565b5f6113a16110b9565b90505f6113ae83836114a0565b305f908152600760205260409020549091506113ca908261133a565b305f90815260076020526040902055505050565b6009546113eb90836112f9565b600955600d546113fb908261133a565b600d555050565b5f80808061141b606461141589896114a0565b906110da565b90505f61142d60646114158a896114a0565b90505f6114448261143e8b866112f9565b906112f9565b9992985090965090945050505050565b5f80808061146288866114a0565b90505f61146f88876114a0565b90505f61147c88886114a0565b90505f61148d8261143e86866112f9565b939b939a50919850919650505050505050565b5f825f036114af57505f610498565b5f6114ba8385611815565b9050826114c785836117f6565b14610e705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052e565b5f6020808352835180828501525f5b818110156115495785810183015185820160400152820161152d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610722575f80fd5b5f806040838503121561158e575f80fd5b823561159981611569565b946020939093013593505050565b5f805f606084860312156115b9575f80fd5b83356115c481611569565b925060208401356115d481611569565b929592945050506040919091013590565b5f602082840312156115f5575f80fd5b5035919050565b5f6020828403121561160c575f80fd5b8135610e7081611569565b5f805f60408486031215611629575f80fd5b833567ffffffffffffffff80821115611640575f80fd5b818601915086601f830112611653575f80fd5b813581811115611661575f80fd5b8760208260051b8501011115611675575f80fd5b60209283019550935050840135801515811461168f575f80fd5b809150509250925092565b5f80604083850312156116ab575f80fd5b82356116b681611569565b915060208301356116c681611569565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161173f5761173f61171a565b5060010190565b808201808211156104985761049861171a565b818103818111156104985761049861171a565b5f6020828403121561177c575f80fd5b8151610e7081611569565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117d55784516001600160a01b0316835293830193918301916001016117b0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261181057634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104985761049861171a56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b7bd0a608ec1ae716affb99f89591974424c7c4d2b84ec15e842189c2c38f6ec64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806383364ea2116100b3578063d1b4b6711161006d578063d1b4b671146103bd578063dc564d16146103dc578063dd62ed3e146103f1578063dd8509cd14610435578063e4cf13f414610454578063f2fde38b14610469575f80fd5b806383364ea2146102f95780638c97ca76146103185780638da5cb5b1461033757806395d89b4114610353578063a9059cbb1461037f578063ca72a4e71461039e575f80fd5b80632fae7937116101045780632fae793714610261578063313ce567146102775780634f473db014610292578063511b5f61146102b157806370a08231146102c6578063715018a6146102e5575f80fd5b806306fdde0314610155578063095ea7b3146101995780631694505e146101c857806318160ddd146101ff57806323b872dd146102235780632950fc1114610242575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600a81526908ae8d0cae4caeada40b60b31b60208201525b604051610190919061151e565b60405180910390f35b3480156101a4575f80fd5b506101b86101b336600461157d565b610488565b6040519015158152602001610190565b3480156101d3575f80fd5b506002546101e7906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b34801561020a575f80fd5b50670de0b6b3a76400005b604051908152602001610190565b34801561022e575f80fd5b506101b861023d3660046115a7565b61049e565b34801561024d575f80fd5b506003546101e7906001600160a01b031681565b34801561026c575f80fd5b50610275610505565b005b348015610282575f80fd5b5060405160098152602001610190565b34801561029d575f80fd5b506102756102ac3660046115e5565b61054a565b3480156102bc575f80fd5b50610215600a5481565b3480156102d1575f80fd5b506102156102e03660046115fc565b610578565b3480156102f0575f80fd5b50610275610599565b348015610304575f80fd5b50610275610313366004611617565b61060a565b348015610323575f80fd5b506015546101e7906001600160a01b031681565b348015610342575f80fd5b505f546001600160a01b03166101e7565b34801561035e575f80fd5b5060408051808201909152600481526308aa890b60e31b6020820152610183565b34801561038a575f80fd5b506101b861039936600461157d565b6106a7565b3480156103a9575f80fd5b506102756103b83660046115fc565b6106b3565b3480156103c8575f80fd5b506102756103d73660046115fc565b61070b565b3480156103e7575f80fd5b50610215600b5481565b3480156103fc575f80fd5b5061021561040b36600461169a565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610440575f80fd5b506014546101e7906001600160a01b031681565b34801561045f575f80fd5b50610215600c5481565b348015610474575f80fd5b506102756104833660046115fc565b610725565b5f61049433848461080c565b5060015b92915050565b5f6104aa84848461092f565b6104fb84336104f68560405180606001604052806028815260200161182d602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610dbd565b61080c565b5060019392505050565b5f546001600160a01b031633146105375760405162461bcd60e51b815260040161052e906116d1565b60405180910390fd5b670de0b6b3a7640000600a819055600b55565b5f546001600160a01b031633146105735760405162461bcd60e51b815260040161052e906116d1565b600c55565b6001600160a01b0381165f9081526007602052604081205461049890610df5565b5f546001600160a01b031633146105c25760405162461bcd60e51b815260040161052e906116d1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106335760405162461bcd60e51b815260040161052e906116d1565b5f5b828110156106a1578160055f86868581811061065357610653611706565b905060200201602081019061066891906115fc565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106998161172e565b915050610635565b50505050565b5f61049433848461092f565b5f546001600160a01b031633146106dc5760405162461bcd60e51b815260040161052e906116d1565b600380546001600160a01b0319166001600160a01b03929092169190911790556006805460ff19166001179055565b6015546107229082906001600160a01b0316610e77565b50565b5f546001600160a01b0316331461074e5760405162461bcd60e51b815260040161052e906116d1565b6001600160a01b0381166107b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661086e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b0382166108cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116109905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052e565b6001600160a01b0383166109f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b6001600160a01b038216610a565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052e565b5f546001600160a01b03848116911614801590610a8057505f546001600160a01b03838116911614155b15610cb95760065460ff16610b11575f546001600160a01b03848116911614610b115760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052e565b600a54811115610b635760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052e565b6003546001600160a01b03838116911614610be857600b5481610b8584610578565b610b8f9190611746565b10610be85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052e565b5f610bf230610578565b600c54600a54919250821015908210610c0b57600a5491505b808015610c205750600654610100900460ff16155b8015610c3a57506003546001600160a01b03868116911614155b8015610c4e575060065462010000900460ff165b8015610c7257506001600160a01b0384165f9081526005602052604090205460ff16155b8015610c9657506001600160a01b0385165f9081526005602052604090205460ff16155b15610cb657610ca482610e8e565b478015610cb457610cb447610ff8565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610cf957506001600160a01b0383165f9081526005602052604090205460ff165b80610d2b57506003546001600160a01b03858116911614801590610d2b57506003546001600160a01b03848116911614155b15610d3757505f610db1565b6003546001600160a01b038581169116148015610d6257506002546001600160a01b03848116911614155b15610d7457600e54601155600f546013555b6003546001600160a01b038481169116148015610d9f57506002546001600160a01b03858116911614155b15610db1576010546011556012546013555b6106a18484848461108b565b5f8184841115610de05760405162461bcd60e51b815260040161052e919061151e565b505f610dec8486611759565b95945050505050565b5f600954821115610e5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161052e565b5f610e646110b9565b9050610e7083826110da565b9392505050565b610e8a8282670de0b6b3a764000061080c565b5050565b6006805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ed057610ed0611706565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4b919061176c565b81600181518110610f5e57610f5e611706565b6001600160a01b039283166020918202929092010152600254610f84913091168461080c565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fbc9085905f90869030904290600401611787565b5f604051808303815f87803b158015610fd3575f80fd5b505af1158015610fe5573d5f803e3d5ffd5b50506006805461ff001916905550505050565b5f6110046002836117f6565b6014546040519192506001600160a01b03169082156108fc029083905f818181858888f1935050505015801561103c573d5f803e3d5ffd5b505f6110496002836117f6565b6110539084611759565b6015546040519192506001600160a01b03169082156108fc029083905f818181858888f193505050501580156106a1573d5f803e3d5ffd5b806110985761109861111b565b6110a3848484611148565b806106a1576106a1601654601155601754601355565b5f805f6110c4611239565b90925090506110d382826110da565b9250505090565b5f610e7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611278565b60115415801561112b5750601354155b1561113257565b60118054601655601380546017555f9182905555565b5f805f805f80611157876112a4565b6001600160a01b038f165f90815260076020526040902054959b5093995091975095509350915061118890876112f9565b6001600160a01b03808b165f9081526007602052604080822093909355908a16815220546111b6908661133a565b6001600160a01b0389165f908152600760205260409020556111d781611398565b6111e184836113de565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161122691815260200190565b60405180910390a3505050505050505050565b6009545f908190670de0b6b3a764000061125382826110da565b82101561126f57505060095492670de0b6b3a764000092509050565b90939092509050565b5f81836112985760405162461bcd60e51b815260040161052e919061151e565b505f610dec84866117f6565b5f805f805f805f805f6112bc8a601154601354611402565b9250925092505f6112cb6110b9565b90505f805f6112dc8e878787611454565b919e509c509a509598509396509194505050505091939550919395565b5f610e7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dbd565b5f806113468385611746565b905083811015610e705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052e565b5f6113a16110b9565b90505f6113ae83836114a0565b305f908152600760205260409020549091506113ca908261133a565b305f90815260076020526040902055505050565b6009546113eb90836112f9565b600955600d546113fb908261133a565b600d555050565b5f80808061141b606461141589896114a0565b906110da565b90505f61142d60646114158a896114a0565b90505f6114448261143e8b866112f9565b906112f9565b9992985090965090945050505050565b5f80808061146288866114a0565b90505f61146f88876114a0565b90505f61147c88886114a0565b90505f61148d8261143e86866112f9565b939b939a50919850919650505050505050565b5f825f036114af57505f610498565b5f6114ba8385611815565b9050826114c785836117f6565b14610e705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052e565b5f6020808352835180828501525f5b818110156115495785810183015185820160400152820161152d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610722575f80fd5b5f806040838503121561158e575f80fd5b823561159981611569565b946020939093013593505050565b5f805f606084860312156115b9575f80fd5b83356115c481611569565b925060208401356115d481611569565b929592945050506040919091013590565b5f602082840312156115f5575f80fd5b5035919050565b5f6020828403121561160c575f80fd5b8135610e7081611569565b5f805f60408486031215611629575f80fd5b833567ffffffffffffffff80821115611640575f80fd5b818601915086601f830112611653575f80fd5b813581811115611661575f80fd5b8760208260051b8501011115611675575f80fd5b60209283019550935050840135801515811461168f575f80fd5b809150509250925092565b5f80604083850312156116ab575f80fd5b82356116b681611569565b915060208301356116c681611569565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161173f5761173f61171a565b5060010190565b808201808211156104985761049861171a565b818103818111156104985761049861171a565b5f6020828403121561177c575f80fd5b8151610e7081611569565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117d55784516001600160a01b0316835293830193918301916001016117b0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261181057634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104985761049861171a56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b7bd0a608ec1ae716affb99f89591974424c7c4d2b84ec15e842189c2c38f6ec64736f6c63430008150033

Deployed Bytecode Sourcemap

4219:12415:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6551:83;;;;;;;;;;-1:-1:-1;6621:5:0;;;;;;;;;;;;-1:-1:-1;;;6621:5:0;;;;6551:83;;;;;;;:::i;:::-;;;;;;;;7476:193;;;;;;;;;;-1:-1:-1;7476:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7476:193:0;1023:187:1;4306:41:0;;;;;;;;;;-1:-1:-1;4306:41:0;;;;-1:-1:-1;;;;;4306:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;4306:41:0;1215:229:1;6974:95:0;;;;;;;;;;-1:-1:-1;4969:21:0;6974:95;;;1595:25:1;;;1583:2;1568:18;6974:95:0;1449:177:1;7677:446:0;;;;;;;;;;-1:-1:-1;7677:446:0;;;;;:::i;:::-;;:::i;4354:26::-;;;;;;;;;;-1:-1:-1;4354:26:0;;;;-1:-1:-1;;;;;4354:26:0;;;13331:125;;;;;;;;;;;;;:::i;:::-;;6737:83;;;;;;;;;;-1:-1:-1;6737:83:0;;4654:1;2442:36:1;;2430:2;2415:18;6737:83:0;2300:184:1;13746:129:0;;;;;;;;;;-1:-1:-1;13746:129:0;;;;;:::i;:::-;;:::i;5069:47::-;;;;;;;;;;;;;;;;6828:138;;;;;;;;;;-1:-1:-1;6828:138:0;;;;;:::i;:::-;;:::i;4064:148::-;;;;;;;;;;;;;:::i;13464:230::-;;;;;;;;;;-1:-1:-1;13464:230:0;;;;;:::i;:::-;;:::i;5830:89::-;;;;;;;;;;-1:-1:-1;5830:89:0;;;;-1:-1:-1;;;;;5830:89:0;;;3598:79;;;;;;;;;;-1:-1:-1;3636:7:0;3663:6;-1:-1:-1;;;;;3663:6:0;3598:79;;6642:87;;;;;;;;;;-1:-1:-1;6714:7:0;;;;;;;;;;;;-1:-1:-1;;;6714:7:0;;;;6642:87;;7269:199;;;;;;;;;;-1:-1:-1;7269:199:0;;;;;:::i;:::-;;:::i;11870:137::-;;;;;;;;;;-1:-1:-1;11870:137:0;;;;;:::i;:::-;;:::i;11303:106::-;;;;;;;;;;-1:-1:-1;11303:106:0;;;;;:::i;:::-;;:::i;5129:56::-;;;;;;;;;;;;;;;;7077:184;;;;;;;;;;-1:-1:-1;7077:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7226:18:0;;;7194:7;7226:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7077:184;5730:93;;;;;;;;;;-1:-1:-1;5730:93:0;;;;-1:-1:-1;;;;;5730:93:0;;;5198:46;;;;;;;;;;;;;;;;3685:244;;;;;;;;;;-1:-1:-1;3685:244:0;;;;;:::i;:::-;;:::i;7476:193::-;7578:4;7600:39;1698:10;7623:7;7632:6;7600:8;:39::i;:::-;-1:-1:-1;7657:4:0;7476:193;;;;;:::o;7677:446::-;7809:4;7826:36;7836:6;7844:9;7855:6;7826:9;:36::i;:::-;7873:220;7896:6;1698:10;7944:138;8000:6;7944:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7944:19:0;;;;;;:11;:19;;;;;;;;1698:10;7944:33;;;;;;;;;;:37;:138::i;:::-;7873:8;:220::i;:::-;-1:-1:-1;8111:4:0;7677:446;;;;;:::o;13331:125::-;3977:6;;-1:-1:-1;;;;;3977:6:0;1698:10;3977:22;3969:67;;;;-1:-1:-1;;;3969:67:0;;;;;;;:::i;:::-;;;;;;;;;4969:21:::1;13388:10;:20:::0;;;13419:19:::1;:29:::0;13331:125::o;13746:129::-;3977:6;;-1:-1:-1;;;;;3977:6:0;1698:10;3977:22;3969:67;;;;-1:-1:-1;;;3969:67:0;;;;;;;:::i;:::-;13833:13:::1;:34:::0;13746:129::o;6828:138::-;-1:-1:-1;;;;;6941:16:0;;6894:7;6941:16;;;:7;:16;;;;;;6921:37;;:19;:37::i;4064:148::-;3977:6;;-1:-1:-1;;;;;3977:6:0;1698:10;3977:22;3969:67;;;;-1:-1:-1;;;3969:67:0;;;;;;;:::i;:::-;4171:1:::1;4155:6:::0;;4134:40:::1;::::0;-1:-1:-1;;;;;4155:6:0;;::::1;::::0;4134:40:::1;::::0;4171:1;;4134:40:::1;4202:1;4185:19:::0;;-1:-1:-1;;;;;;4185:19:0::1;::::0;;4064:148::o;13464:230::-;3977:6;;-1:-1:-1;;;;;3977:6:0;1698:10;3977:22;3969:67;;;;-1:-1:-1;;;3969:67:0;;;;;;;:::i;:::-;13577:9:::1;13573:114;13592:19:::0;;::::1;13573:114;;;13667:8;13633:18;:31;13652:8;;13661:1;13652:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13633:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13633:31:0;:42;;-1:-1:-1;;13633:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13613:3;::::1;::::0;::::1;:::i;:::-;;;;13573:114;;;;13464:230:::0;;;:::o;7269:199::-;7374:4;7396:42;1698:10;7420:9;7431:6;7396:9;:42::i;11870:137::-;3977:6;;-1:-1:-1;;;;;3977:6:0;1698:10;3977:22;3969:67;;;;-1:-1:-1;;;3969:67:0;;;;;;;:::i;:::-;11941:11:::1;:26:::0;;-1:-1:-1;;;;;;11941:26:0::1;-1:-1:-1::0;;;;;11941:26:0;;;::::1;::::0;;;::::1;::::0;;11978:14:::1;:21:::0;;-1:-1:-1;;11978:21:0::1;-1:-1:-1::0;11978:21:0::1;::::0;;11870:137::o;11303:106::-;11388:12;;11365:36;;11381:5;;-1:-1:-1;;;;;11388:12:0;11365:15;:36::i;:::-;11303:106;:::o;3685:244::-;3977:6;;-1:-1:-1;;;;;3977:6:0;1698:10;3977:22;3969:67;;;;-1:-1:-1;;;3969:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3774:22:0;::::1;3766:73;;;::::0;-1:-1:-1;;;3766:73:0;;5297:2:1;3766:73:0::1;::::0;::::1;5279:21:1::0;5336:2;5316:18;;;5309:30;5375:34;5355:18;;;5348:62;-1:-1:-1;;;5426:18:1;;;5419:36;5472:19;;3766:73:0::1;5095:402:1::0;3766:73:0::1;3876:6;::::0;;3855:38:::1;::::0;-1:-1:-1;;;;;3855:38:0;;::::1;::::0;3876:6;::::1;::::0;3855:38:::1;::::0;::::1;3904:6;:17:::0;;-1:-1:-1;;;;;;3904:17:0::1;-1:-1:-1::0;;;;;3904:17:0;;;::::1;::::0;;;::::1;::::0;;3685:244::o;9249:369::-;-1:-1:-1;;;;;9376:19:0;;9368:68;;;;-1:-1:-1;;;9368:68:0;;5704:2:1;9368:68:0;;;5686:21:1;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;-1:-1:-1;;;5833:18:1;;;5826:34;5877:19;;9368:68:0;5502:400:1;9368:68:0;-1:-1:-1;;;;;9455:21:0;;9447:68;;;;-1:-1:-1;;;9447:68:0;;6109:2:1;9447:68:0;;;6091:21:1;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:32;6280:19;;9447:68:0;5907:398:1;9447:68:0;-1:-1:-1;;;;;9526:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9578:32;;1595:25:1;;;9578:32:0;;1568:18:1;9578:32:0;;;;;;;9249:369;;;:::o;13883:2219::-;14014:1;14005:6;:10;13997:64;;;;-1:-1:-1;;;13997:64:0;;6512:2:1;13997:64:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;-1:-1:-1;;;6641:18:1;;;6634:39;6690:19;;13997:64:0;6310:405:1;13997:64:0;-1:-1:-1;;;;;14080:18:0;;14072:68;;;;-1:-1:-1;;;14072:68:0;;6922:2:1;14072:68:0;;;6904:21:1;6961:2;6941:18;;;6934:30;7000:34;6980:18;;;6973:62;-1:-1:-1;;;7051:18:1;;;7044:35;7096:19;;14072:68:0;6720:401:1;14072:68:0;-1:-1:-1;;;;;14159:16:0;;14151:64;;;;-1:-1:-1;;;14151:64:0;;7328:2:1;14151:64:0;;;7310:21:1;7367:2;7347:18;;;7340:30;7406:34;7386:18;;;7379:62;-1:-1:-1;;;7457:18:1;;;7450:33;7500:19;;14151:64:0;7126:399:1;14151:64:0;3636:7;3663:6;-1:-1:-1;;;;;14244:15:0;;;3663:6;;14244:15;;;;:32;;-1:-1:-1;3636:7:0;3663:6;-1:-1:-1;;;;;14263:13:0;;;3663:6;;14263:13;;14244:32;14226:1216;;;14341:14;;;;14336:209;;3636:7;3663:6;-1:-1:-1;;;;;14406:15:0;;;3663:6;;14406:15;14376:153;;;;-1:-1:-1;;;14376:153:0;;7732:2:1;14376:153:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;7881:33;7861:18;;;7854:61;7932:19;;14376:153:0;7530:427:1;14376:153:0;14597:10;;14587:6;:20;;14561:110;;;;-1:-1:-1;;;14561:110:0;;8164:2:1;14561:110:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242;8222:18;;;8215:58;8290:18;;14561:110:0;7962:352:1;14561:110:0;14709:11;;-1:-1:-1;;;;;14703:17:0;;;14709:11;;14703:17;14700:167;;14774:19;;14765:6;14749:13;14759:2;14749:9;:13::i;:::-;:22;;;;:::i;:::-;:44;14741:110;;;;-1:-1:-1;;;14741:110:0;;8651:2:1;14741:110:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:33;8823:19;;14741:110:0;8449:399:1;14741:110:0;14883:28;14914:24;14932:4;14914:9;:24::i;:::-;14992:13;;15047:10;;14883:55;;-1:-1:-1;14968:37:0;;;;15023:34;;15020:72;;15082:10;;15059:33;;15020:72;15111:7;:21;;;;-1:-1:-1;15123:9:0;;;;;;;15122:10;15111:21;:44;;;;-1:-1:-1;15144:11:0;;-1:-1:-1;;;;;15136:19:0;;;15144:11;;15136:19;;15111:44;:61;;;;-1:-1:-1;15159:13:0;;;;;;;15111:61;:88;;;;-1:-1:-1;;;;;;15177:22:0;;;;;;:18;:22;;;;;;;;15176:23;15111:88;:117;;;;-1:-1:-1;;;;;;15204:24:0;;;;;;:18;:24;;;;;;;;15203:25;15111:117;15107:324;;;15249:32;15260:20;15249:10;:32::i;:::-;15321:21;15365:14;;15361:54;;15381:34;15393:21;15381:11;:34::i;:::-;15230:201;15107:324;14288:1154;;14226:1216;-1:-1:-1;;;;;15486:24:0;;15452:11;15486:24;;;:18;:24;;;;;;15466:4;;15486:24;;;:50;;-1:-1:-1;;;;;;15514:22:0;;;;;;:18;:22;;;;;;;;15486:50;15485:98;;;-1:-1:-1;15550:11:0;;-1:-1:-1;;;;;15542:19:0;;;15550:11;;15542:19;;;;:40;;-1:-1:-1;15571:11:0;;-1:-1:-1;;;;;15565:17:0;;;15571:11;;15565:17;;15542:40;15481:553;;;-1:-1:-1;15609:5:0;15481:553;;;15667:11;;-1:-1:-1;;;;;15659:19:0;;;15667:11;;15659:19;:53;;;;-1:-1:-1;15696:15:0;;-1:-1:-1;;;;;15682:30:0;;;15696:15;;15682:30;;15659:53;15656:168;;;15749:16;;15733:13;:32;15798:10;;15784:11;:24;15656:168;15862:11;;-1:-1:-1;;;;;15856:17:0;;;15862:11;;15856:17;:53;;;;-1:-1:-1;15893:15:0;;-1:-1:-1;;;;;15877:32:0;;;15893:15;;15877:32;;15856:53;15852:171;;;15946:17;;15930:13;:33;15996:11;;15982;:25;15852:171;16044:50;16069:4;16075:2;16079:6;16087;16044:24;:50::i;252:224::-;372:7;408:12;400:6;;;;392:29;;;;-1:-1:-1;;;392:29:0;;;;;;;;:::i;:::-;-1:-1:-1;432:9:0;444:5;448:1;444;:5;:::i;:::-;432:17;252:224;-1:-1:-1;;;;;252:224:0:o;11417:323::-;11512:7;11570;;11559;:18;;11537:110;;;;-1:-1:-1;;;11537:110:0;;9188:2:1;11537:110:0;;;9170:21:1;9227:2;9207:18;;;9200:30;9266:34;9246:18;;;9239:62;-1:-1:-1;;;9317:18:1;;;9310:40;9367:19;;11537:110:0;8986:406:1;11537:110:0;11658:19;11680:10;:8;:10::i;:::-;11658:32;-1:-1:-1;11708:24:0;:7;11658:32;11708:11;:24::i;:::-;11701:31;11417:323;-1:-1:-1;;;11417:323:0:o;11748:114::-;11823:31;11832:5;11839;4969:21;11823:8;:31::i;:::-;11748:114;;:::o;16110:476::-;5282:9;:16;;-1:-1:-1;;5282:16:0;;;;;16205::::1;::::0;;16219:1:::1;16205:16:::0;;;;;::::1;::::0;;-1:-1:-1;;16205:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16205:16:0::1;16181:40;;16250:4;16232;16237:1;16232:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16232:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;16276:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;16276:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;16232:7;;16276:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16266:4;16271:1;16266:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16266:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16341:15:::1;::::0;16309:62:::1;::::0;16326:4:::1;::::0;16341:15:::1;16359:11:::0;16309:8:::1;:62::i;:::-;16382:15;::::0;:196:::1;::::0;-1:-1:-1;;;16382:196:0;;-1:-1:-1;;;;;16382:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16463:11;;16382:15:::1;::::0;16505:4;;16532::::1;::::0;16552:15:::1;::::0;16382:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5321:9:0;:17;;-1:-1:-1;;5321:17:0;;;-1:-1:-1;;;;16110:476:0:o;12890:237::-;12946:14;12963:10;12972:1;12963:6;:10;:::i;:::-;12985:16;;:33;;12946:27;;-1:-1:-1;;;;;;12985:16:0;;:33;;;;;12946:27;;12985:16;:33;:16;:33;12946:27;12985:16;:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13029:20:0;13062:10;13071:1;13062:6;:10;:::i;:::-;13052:21;;:6;:21;:::i;:::-;13084:12;;:35;;13029:44;;-1:-1:-1;;;;;;13084:12:0;;:35;;;;;13029:44;;13084:12;:35;:12;:35;13029:44;13084:12;:35;;;;;;;;;;;;;;;;;;;8131:354;8296:6;8291:55;;8319:15;:13;:15::i;:::-;8363:47;8384:6;8392:9;8403:6;8363:20;:47::i;:::-;8426:6;8421:57;;8449:17;9175;;9159:13;:33;9217:16;;9203:11;:30;9113:128;10393:164;10435:7;10456:15;10473;10492:19;:17;:19::i;:::-;10455:56;;-1:-1:-1;10455:56:0;-1:-1:-1;10529:20:0;10455:56;;10529:11;:20::i;:::-;10522:27;;;;10393:164;:::o;1302:132::-;1360:7;1387:39;1391:1;1394;1387:39;;;;;;;;;;;;;;;;;:3;:39::i;12015:232::-;12063:13;;:18;:38;;;;-1:-1:-1;12085:11:0;;:16;12063:38;12059:51;;;12015:232::o;12059:51::-;12140:13;;;12120:17;:33;12183:11;;;12164:16;:30;-1:-1:-1;12196:17:0;;;;12224:15;12015:232::o;8493:612::-;8643:15;8673:23;8711:12;8738:23;8776:12;8803:13;8830:19;8841:7;8830:10;:19::i;:::-;-1:-1:-1;;;;;8878:15:0;;;;;;:7;:15;;;;;;8628:221;;-1:-1:-1;8628:221:0;;-1:-1:-1;8628:221:0;;-1:-1:-1;8628:221:0;-1:-1:-1;8628:221:0;-1:-1:-1;8628:221:0;-1:-1:-1;8878:28:0;;8628:221;8878:19;:28::i;:::-;-1:-1:-1;;;;;8860:15:0;;;;;;;:7;:15;;;;;;:46;;;;8938:18;;;;;;;:39;;8961:15;8938:22;:39::i;:::-;-1:-1:-1;;;;;8917:18:0;;;;;;:7;:18;;;;;:60;8988:18;9000:5;8988:11;:18::i;:::-;9008:29;9026:4;9032;9008:17;:29::i;:::-;9070:9;-1:-1:-1;;;;;9053:44:0;9062:6;-1:-1:-1;;;;;9053:44:0;;9081:15;9053:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;9053:44:0;;;;;;;;8617:488;;;;;;8493:612;;;:::o;10565:257::-;10663:7;;10616;;;;4969:21;10731:20;10663:7;4969:21;10731:11;:20::i;:::-;10721:7;:30;10717:61;;;-1:-1:-1;;10761:7:0;;;4969:21;;-1:-1:-1;10565:257:0;-1:-1:-1;10565:257:0:o;10717:61::-;10797:7;;10806;;-1:-1:-1;10565:257:0;-1:-1:-1;10565:257:0:o;819:223::-;939:7;974:12;967:5;959:28;;;;-1:-1:-1;;;959:28:0;;;;;;;;:::i;:::-;-1:-1:-1;998:9:0;1010:5;1014:1;1010;:5;:::i;12255:623::-;12355:7;12377;12399;12421;12443;12465;12501:23;12526:12;12540:13;12570:48;12582:7;12591:13;;12606:11;;12570;:48::i;:::-;12500:118;;;;;;12629:19;12651:10;:8;:10::i;:::-;12629:32;;12673:15;12690:23;12715:12;12744:46;12756:7;12765:4;12771:5;12778:11;12744;:46::i;:::-;12672:118;;-1:-1:-1;12672:118:0;-1:-1:-1;12672:118:0;-1:-1:-1;12841:15:0;;-1:-1:-1;12858:4:0;;-1:-1:-1;12864:5:0;;-1:-1:-1;;;;;12255:623:0;;;;;;;:::o;671:136::-;729:7;756:43;760:1;763;756:43;;;;;;;;;;;;;;;;;:3;:43::i;484:179::-;542:7;;574:5;578:1;574;:5;:::i;:::-;562:17;;603:1;598;:6;;590:46;;;;-1:-1:-1;;;590:46:0;;11194:2:1;590:46:0;;;11176:21:1;11233:2;11213:18;;;11206:30;11272:29;11252:18;;;11245:57;11319:18;;590:46:0;10992:351:1;9630:213:0;9685:19;9707:10;:8;:10::i;:::-;9685:32;-1:-1:-1;9728:13:0;9744:22;:5;9685:32;9744:9;:22::i;:::-;9818:4;9802:22;;;;:7;:22;;;;;;9728:38;;-1:-1:-1;9802:33:0;;9728:38;9802:26;:33::i;:::-;9793:4;9777:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;9630:213:0:o;13135:153::-;13219:7;;:17;;13231:4;13219:11;:17::i;:::-;13209:7;:27;13260:10;;:20;;13275:4;13260:14;:20::i;:::-;13247:10;:33;-1:-1:-1;;13135:153:0:o;10830:467::-;10998:7;;;;11092:29;11117:3;11092:20;:7;11104;11092:11;:20::i;:::-;:24;;:29::i;:::-;11077:44;-1:-1:-1;11132:13:0;11148:28;11172:3;11148:19;:7;11160:6;11148:11;:19::i;:28::-;11132:44;-1:-1:-1;11187:23:0;11213:28;11132:44;11213:17;:7;11225:4;11213:11;:17::i;:::-;:21;;:28::i;:::-;11187:54;11277:4;;-1:-1:-1;11283:5:0;;-1:-1:-1;10830:467:0;;-1:-1:-1;;;;;10830:467:0:o;9851:534::-;10045:7;;;;10142:24;:7;10154:11;10142;:24::i;:::-;10124:42;-1:-1:-1;10177:12:0;10192:21;:4;10201:11;10192:8;:21::i;:::-;10177:36;-1:-1:-1;10224:13:0;10240:22;:5;10250:11;10240:9;:22::i;:::-;10224:38;-1:-1:-1;10273:23:0;10299:28;10224:38;10299:17;:7;10311:4;10299:11;:17::i;:28::-;10346:7;;;;-1:-1:-1;10372:4:0;;-1:-1:-1;9851:534:0;;-1:-1:-1;;;;;;;9851:534:0:o;1048:246::-;1106:7;1130:1;1135;1130:6;1126:47;;-1:-1:-1;1160:1:0;1153:8;;1126:47;1183:9;1195:5;1199:1;1195;:5;:::i;:::-;1183:17;-1:-1:-1;1228:1:0;1219:5;1223:1;1183:17;1219:5;:::i;:::-;:10;1211:56;;;;-1:-1:-1;;;1211:56:0;;11723:2:1;1211:56:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:31;11893:19;;1211:56:0;11521:397:1;14:548;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:180::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;-1:-1:-1;2640:23:1;;2489:180;-1:-1:-1;2489:180:1:o;2674:247::-;2733:6;2786:2;2774:9;2765:7;2761:23;2757:32;2754:52;;;2802:1;2799;2792:12;2754:52;2841:9;2828:23;2860:31;2885:5;2860:31;:::i;2926:782::-;3018:6;3026;3034;3087:2;3075:9;3066:7;3062:23;3058:32;3055:52;;;3103:1;3100;3093:12;3055:52;3143:9;3130:23;3172:18;3213:2;3205:6;3202:14;3199:34;;;3229:1;3226;3219:12;3199:34;3267:6;3256:9;3252:22;3242:32;;3312:7;3305:4;3301:2;3297:13;3293:27;3283:55;;3334:1;3331;3324:12;3283:55;3374:2;3361:16;3400:2;3392:6;3389:14;3386:34;;;3416:1;3413;3406:12;3386:34;3471:7;3464:4;3454:6;3451:1;3447:14;3443:2;3439:23;3435:34;3432:47;3429:67;;;3492:1;3489;3482:12;3429:67;3523:4;3515:13;;;;-1:-1:-1;3547:6:1;-1:-1:-1;;3588:20:1;;3575:34;3645:13;;3638:21;3628:32;;3618:60;;3674:1;3671;3664:12;3618:60;3697:5;3687:15;;;2926:782;;;;;:::o;3937:388::-;4005:6;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:31;4165:5;4140:31;:::i;:::-;4190:5;-1:-1:-1;4247:2:1;4232:18;;4219:32;4260:33;4219:32;4260:33;:::i;:::-;4312:7;4302:17;;;3937:388;;;;;:::o;4330:356::-;4532:2;4514:21;;;4551:18;;;4544:30;4610:34;4605:2;4590:18;;4583:62;4677:2;4662:18;;4330:356::o;4691:127::-;4752:10;4747:3;4743:20;4740:1;4733:31;4783:4;4780:1;4773:15;4807:4;4804:1;4797:15;4823:127;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:135;4994:3;5015:17;;;5012:43;;5035:18;;:::i;:::-;-1:-1:-1;5082:1:1;5071:13;;4955:135::o;8319:125::-;8384:9;;;8405:10;;;8402:36;;;8418:18;;:::i;8853:128::-;8920:9;;;8941:11;;;8938:37;;;8955:18;;:::i;9529:251::-;9599:6;9652:2;9640:9;9631:7;9627:23;9623:32;9620:52;;;9668:1;9665;9658:12;9620:52;9700:9;9694:16;9719:31;9744:5;9719:31;:::i;9785:980::-;10047:4;10095:3;10084:9;10080:19;10126:6;10115:9;10108:25;10152:2;10190:6;10185:2;10174:9;10170:18;10163:34;10233:3;10228:2;10217:9;10213:18;10206:31;10257:6;10292;10286:13;10323:6;10315;10308:22;10361:3;10350:9;10346:19;10339:26;;10400:2;10392:6;10388:15;10374:29;;10421:1;10431:195;10445:6;10442:1;10439:13;10431:195;;;10510:13;;-1:-1:-1;;;;;10506:39:1;10494:52;;10601:15;;;;10566:12;;;;10542:1;10460:9;10431:195;;;-1:-1:-1;;;;;;;10682:32:1;;;;10677:2;10662:18;;10655:60;-1:-1:-1;;;10746:3:1;10731:19;10724:35;10643:3;9785:980;-1:-1:-1;;;9785:980:1:o;10770:217::-;10810:1;10836;10826:132;;10880:10;10875:3;10871:20;10868:1;10861:31;10915:4;10912:1;10905:15;10943:4;10940:1;10933:15;10826:132;-1:-1:-1;10972:9:1;;10770:217::o;11348:168::-;11421:9;;;11452;;11469:15;;;11463:22;;11449:37;11439:71;;11490:18;;:::i

Swarm Source

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