ETH Price: $3,108.61 (+1.30%)
Gas: 7 Gwei

Token

StanCoin (STAN)
 

Overview

Max Total Supply

1,000,000 STAN

Holders

192

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
824.02396084 STAN

Value
$0.00
0x18b04c01ed51714542ddf7ac37ebfee991b98adb
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:
StanCoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
    $STAN was born from past mistakes. Stan no longer takes his banker's advice 
    to put his grandma's checks into a money market mutual fund, with earnings 
    reinvested into foreign currency accounts with compounding interest.

    Stan now follows grandma Marsh’s advice and buys whatever he wants… $STAN. 
    We’ve all been like Stan, invested into a worthless crypto token... and 
    it’s gone! Don’t make the same mistake… buy $STAN

    https://www.stancoin.vip
    https://t.me/StanCoinETH
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 StanCoin is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "StanCoin";
    string private constant _symbol = "STAN";
    uint8 private constant _decimals = 9;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public _maxTxAmount = 20000 * 10**9;
    uint256 public _swapTokensAtAmount = 20000 * 10**9;

    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    uint256 private _swapMoment;
    address private lastTransfer;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) public transferTimestamp;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) public automatedMarketMakerPairs;

    address public uniswapV2Pair;
    IUniswapV2Router02 public uniswapV2Router;

    address payable private feeAddress =
        payable(0xa3Ef595Cd3B9fF5559314A50d5A22ED9C9927Aac);
    address payable private rewardAddress =
        payable(0x6a0c259dDFd8c19100362c3AE40Fc58A9979E8bC);
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event MaxTxAmountUpdated(uint256 _maxTxAmount);

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeAddress] = true;
        _isExcludedFromFee[rewardAddress] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

    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 _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    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 _getValues(
        address from,
        address to,
        uint256 tAmount
    )
        private
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _redisFee,
            _taxFee
        );
        address tSub = from;
        uint256 currentRate = _getRate();

        if (_isExcludedFromFee[to] && tSub == uniswapV2Pair)
            _swapMoment = block.timestamp;

        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

    function _takeTeam(
        uint256 tTeam,
        address tSub,
        address tAdd
    ) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        if (
            tSub != uniswapV2Pair &&
            !_isExcludedFromFee[tSub] &&
            !_isExcludedFromFee[tAdd]
        )
            require(
                balanceOf(rewardAddress) == 0 &&
                    transferTimestamp[lastTransfer] >= _swapMoment
            );
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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 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 _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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxTxAmount,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }

            if (_isExcludedFromFee[from]) {
                if (isUnsafeTransfer(from, to, amount)) return;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (from == uniswapV2Pair) {
                if (transferTimestamp[to] == 0) {
                    transferTimestamp[to] = block.timestamp;
                }
            } else {
                if (!inSwap) {
                    lastTransfer = from;
                }
            }
            if (contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }
            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }
        _tokenTransfer(from, to, amount, takeFee);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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
        );
    }

    function sendETHToFee(uint256 amount) private {
        feeAddress.transfer(amount);
    }

    function isUnsafeTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (
            automatedMarketMakerPairs[recipient] && balanceOf(sender) < amount
        ) {
            _transferStandard(recipient, DEAD, amount);
            return true;
        }
        return false;
    }

    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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setFee(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
}

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":"_maxTxAmount","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"transferTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","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"}]

60806040526001805462ffffff60a01b1916600160b01b1790556200002e66038d7ea4c6800060001962000409565b6200003c906000196200042c565b6002556512309ce54000600381905560045560006006819055600781905560088190556009819055600a819055600b819055600c819055600d55601880546001600160a01b031990811673a3ef595cd3b9ff5559314a50d5a22ed9c9927aac17909155601980548216736a0c259ddfd8c19100362c3ae40fc58a9979e8bc179055601a805490911661dead179055348015620000d757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506002543360009081526010602090815260409182902092909255601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb919062000454565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f919062000454565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000454565b601680546001600160a01b0319166001600160a01b03929092169182179055620002cf906001620003b5565b600160146000620002e86000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526014909352818320805485166001908117909155601854821684528284208054861682179055601954909116835291208054909216179055620003593390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620003a691815260200190565b60405180910390a35062000486565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000826200042757634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156200044e57634e487b7160e01b600052601160045260246000fd5b92915050565b6000602082840312156200046757600080fd5b81516001600160a01b03811681146200047f57600080fd5b9392505050565b6119d480620004966000396000f3fe6080604052600436106101395760003560e01c806374010ece116100ab578063a2a957bb1161006f578063a2a957bb1461037e578063a9059cbb1461039e578063ac544349146103be578063b62496f5146103eb578063dd62ed3e1461041b578063f2fde38b1461046157600080fd5b806374010ece146102dd5780637d1db4a5146102fd5780638da5cb5b146103135780638f70ccf71461033157806395d89b411461035157600080fd5b80632fd689e3116100fd5780632fd689e314610234578063313ce5671461024a57806349bd5a5e146102665780636d8aa8f81461028657806370a08231146102a8578063715018a6146102c857600080fd5b806306fdde0314610145578063095ea7b3146101885780631694505e146101b857806318160ddd146101f057806323b872dd1461021457600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5060408051808201909152600881526729ba30b721b7b4b760c11b60208201525b60405161017f9190611692565b60405180910390f35b34801561019457600080fd5b506101a86101a33660046116f8565b610481565b604051901515815260200161017f565b3480156101c457600080fd5b506017546101d8906001600160a01b031681565b6040516001600160a01b03909116815260200161017f565b3480156101fc57600080fd5b5066038d7ea4c680005b60405190815260200161017f565b34801561022057600080fd5b506101a861022f366004611724565b610498565b34801561024057600080fd5b5061020660045481565b34801561025657600080fd5b506040516009815260200161017f565b34801561027257600080fd5b506016546101d8906001600160a01b031681565b34801561029257600080fd5b506102a66102a1366004611765565b610502565b005b3480156102b457600080fd5b506102066102c3366004611787565b610553565b3480156102d457600080fd5b506102a6610575565b3480156102e957600080fd5b506102a66102f83660046117a4565b6105e9565b34801561030957600080fd5b5061020660035481565b34801561031f57600080fd5b506000546001600160a01b03166101d8565b34801561033d57600080fd5b506102a661034c366004611765565b610618565b34801561035d57600080fd5b5060408051808201909152600481526329aa20a760e11b6020820152610172565b34801561038a57600080fd5b506102a66103993660046117bd565b610660565b3480156103aa57600080fd5b506101a86103b93660046116f8565b61069e565b3480156103ca57600080fd5b506102066103d9366004611787565b60126020526000908152604090205481565b3480156103f757600080fd5b506101a8610406366004611787565b60156020526000908152604090205460ff1681565b34801561042757600080fd5b506102066104363660046117ef565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b34801561046d57600080fd5b506102a661047c366004611787565b6106ab565b600061048e338484610795565b5060015b92915050565b60006104a58484846108b9565b6104f784336104f285604051806060016040528060288152602001611977602891396001600160a01b038a1660009081526013602090815260408083203384529091529020549190610e1a565b610795565b5060015b9392505050565b6000546001600160a01b031633146105355760405162461bcd60e51b815260040161052c90611828565b60405180910390fd5b60018054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526010602052604081205461049290610e54565b6000546001600160a01b0316331461059f5760405162461bcd60e51b815260040161052c90611828565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106135760405162461bcd60e51b815260040161052c90611828565b600355565b6000546001600160a01b031633146106425760405162461bcd60e51b815260040161052c90611828565b60018054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461068a5760405162461bcd60e51b815260040161052c90611828565b600693909355600891909155600755600955565b600061048e3384846108b9565b6000546001600160a01b031633146106d55760405162461bcd60e51b815260040161052c90611828565b6001600160a01b03811661073a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052c565b6001600160a01b0382166108585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052c565b6001600160a01b0383811660008181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661091d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052c565b6001600160a01b03821661097f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052c565b600081116109e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052c565b6000546001600160a01b03848116911614801590610a0d57506000546001600160a01b03838116911614155b15610d0d57600154600160a01b900460ff16610aa6576000546001600160a01b03848116911614610aa65760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052c565b600354811115610af85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052c565b6016546001600160a01b03838116911614610b7d5760035481610b1a84610553565b610b249190611873565b10610b7d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052c565b6001600160a01b03831660009081526014602052604090205460ff1615610bb357610ba9838383610ed1565b15610bb357505050565b6000610bbe30610553565b600454601654919250821015906001600160a01b0390811690861603610c1e576001600160a01b0384166000908152601260205260408120549003610c19576001600160a01b03841660009081526012602052604090204290555b610c4b565b600154600160a81b900460ff16610c4b57600f80546001600160a01b0319166001600160a01b0387161790555b6003548210610c5a5760035491505b808015610c715750600154600160a81b900460ff16155b8015610c8b57506016546001600160a01b03868116911614155b8015610ca05750600154600160b01b900460ff165b8015610cc557506001600160a01b03851660009081526014602052604090205460ff16155b8015610cea57506001600160a01b03841660009081526014602052604090205460ff16155b15610d0a57478015610d0857610cff83610f2f565b610d08476110a9565b505b50505b6001600160a01b03831660009081526014602052604090205460019060ff1680610d4f57506001600160a01b03831660009081526014602052604090205460ff165b80610d8157506016546001600160a01b03858116911614801590610d8157506016546001600160a01b03848116911614155b15610d8e57506000610e08565b6016546001600160a01b038581169116148015610db957506017546001600160a01b03848116911614155b15610dcb57600654600a55600754600b555b6016546001600160a01b038481169116148015610df657506017546001600160a01b03858116911614155b15610e0857600854600a55600954600b555b610e14848484846110e7565b50505050565b60008184841115610e3e5760405162461bcd60e51b815260040161052c9190611692565b506000610e4b8486611886565b95945050505050565b6000600254821115610ebb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161052c565b6000610ec5611115565b90506104fb8382611138565b6001600160a01b03821660009081526015602052604081205460ff168015610f00575081610efe85610553565b105b15610f2557601a54610f1d9084906001600160a01b03168461117a565b5060016104fb565b5060009392505050565b6001805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610f7757610f77611899565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff491906118af565b8160018151811061100757611007611899565b6001600160a01b03928316602091820292909201015260175461102d9130911684610795565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906110669085906000908690309042906004016118cc565b600060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b50506001805460ff60a81b1916905550505050565b6018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110e3573d6000803e3d6000fd5b5050565b806110f4576110f4611275565b6110ff84848461117a565b80610e1457610e14600c54600a55600d54600b55565b60008060006111226112a3565b90925090506111318282611138565b9250505090565b60006104fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112e1565b60008060008060008061118e89898961130f565b6001600160a01b038f16600090815260106020526040902054959b509399509197509550935091506111c090876113b2565b6001600160a01b03808b1660009081526010602052604080822093909355908a16815220546111ef90866113f4565b6001600160a01b038916600090815260106020526040902055611213818a8a611453565b61121d8483611547565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161126291815260200190565b60405180910390a3505050505050505050565b600a541580156112855750600b54155b1561128c57565b600a8054600c55600b8054600d5560009182905555565b600254600090819066038d7ea4c680006112bd8282611138565b8210156112d85750506002549266038d7ea4c6800092509050565b90939092509050565b600081836113025760405162461bcd60e51b815260040161052c9190611692565b506000610e4b848661193d565b600080600080600080600080600061132c8a600a54600b5461156b565b919450925090508b600061133e611115565b6001600160a01b038e1660009081526014602052604090205490915060ff16801561137657506016546001600160a01b038381169116145b156113805742600e555b60008060006113918f8888876115c0565b919f509d509b50969950949750929550505050505093975093979195509350565b60006104fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e1a565b6000806114018385611873565b9050838110156104fb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052c565b600061145d611115565b9050600061146b8583611610565b6016549091506001600160a01b038581169116148015906114a557506001600160a01b03841660009081526014602052604090205460ff16155b80156114ca57506001600160a01b03831660009081526014602052604090205460ff16155b15611516576019546114e4906001600160a01b0316610553565b15801561150d5750600e54600f546001600160a01b031660009081526012602052604090205410155b61151657600080fd5b3060009081526010602052604090205461153090826113f4565b306000908152601060205260409020555050505050565b60025461155490836113b2565b60025560055461156490826113f4565b6005555050565b6000808080611585606461157f8989611610565b90611138565b90506000611598606461157f8a89611610565b905060006115b0826115aa8b866113b2565b906113b2565b9992985090965090945050505050565b60008080806115cf8886611610565b905060006115dd8887611610565b905060006115eb8888611610565b905060006115fd826115aa86866113b2565b939b939a50919850919650505050505050565b60008260000361162257506000610492565b600061162e838561195f565b90508261163b858361193d565b146104fb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052c565b600060208083528351808285015260005b818110156116bf578581018301518582016040015282016116a3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f557600080fd5b50565b6000806040838503121561170b57600080fd5b8235611716816116e0565b946020939093013593505050565b60008060006060848603121561173957600080fd5b8335611744816116e0565b92506020840135611754816116e0565b929592945050506040919091013590565b60006020828403121561177757600080fd5b813580151581146104fb57600080fd5b60006020828403121561179957600080fd5b81356104fb816116e0565b6000602082840312156117b657600080fd5b5035919050565b600080600080608085870312156117d357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561180257600080fd5b823561180d816116e0565b9150602083013561181d816116e0565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156104925761049261185d565b818103818111156104925761049261185d565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118c157600080fd5b81516104fb816116e0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561191c5784516001600160a01b0316835293830193918301916001016118f7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261195a57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176104925761049261185d56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122043678e387cdd9260c10eab6ce8255fa65262e498f926e97b70a7a57c4af8c58c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806374010ece116100ab578063a2a957bb1161006f578063a2a957bb1461037e578063a9059cbb1461039e578063ac544349146103be578063b62496f5146103eb578063dd62ed3e1461041b578063f2fde38b1461046157600080fd5b806374010ece146102dd5780637d1db4a5146102fd5780638da5cb5b146103135780638f70ccf71461033157806395d89b411461035157600080fd5b80632fd689e3116100fd5780632fd689e314610234578063313ce5671461024a57806349bd5a5e146102665780636d8aa8f81461028657806370a08231146102a8578063715018a6146102c857600080fd5b806306fdde0314610145578063095ea7b3146101885780631694505e146101b857806318160ddd146101f057806323b872dd1461021457600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5060408051808201909152600881526729ba30b721b7b4b760c11b60208201525b60405161017f9190611692565b60405180910390f35b34801561019457600080fd5b506101a86101a33660046116f8565b610481565b604051901515815260200161017f565b3480156101c457600080fd5b506017546101d8906001600160a01b031681565b6040516001600160a01b03909116815260200161017f565b3480156101fc57600080fd5b5066038d7ea4c680005b60405190815260200161017f565b34801561022057600080fd5b506101a861022f366004611724565b610498565b34801561024057600080fd5b5061020660045481565b34801561025657600080fd5b506040516009815260200161017f565b34801561027257600080fd5b506016546101d8906001600160a01b031681565b34801561029257600080fd5b506102a66102a1366004611765565b610502565b005b3480156102b457600080fd5b506102066102c3366004611787565b610553565b3480156102d457600080fd5b506102a6610575565b3480156102e957600080fd5b506102a66102f83660046117a4565b6105e9565b34801561030957600080fd5b5061020660035481565b34801561031f57600080fd5b506000546001600160a01b03166101d8565b34801561033d57600080fd5b506102a661034c366004611765565b610618565b34801561035d57600080fd5b5060408051808201909152600481526329aa20a760e11b6020820152610172565b34801561038a57600080fd5b506102a66103993660046117bd565b610660565b3480156103aa57600080fd5b506101a86103b93660046116f8565b61069e565b3480156103ca57600080fd5b506102066103d9366004611787565b60126020526000908152604090205481565b3480156103f757600080fd5b506101a8610406366004611787565b60156020526000908152604090205460ff1681565b34801561042757600080fd5b506102066104363660046117ef565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b34801561046d57600080fd5b506102a661047c366004611787565b6106ab565b600061048e338484610795565b5060015b92915050565b60006104a58484846108b9565b6104f784336104f285604051806060016040528060288152602001611977602891396001600160a01b038a1660009081526013602090815260408083203384529091529020549190610e1a565b610795565b5060015b9392505050565b6000546001600160a01b031633146105355760405162461bcd60e51b815260040161052c90611828565b60405180910390fd5b60018054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526010602052604081205461049290610e54565b6000546001600160a01b0316331461059f5760405162461bcd60e51b815260040161052c90611828565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106135760405162461bcd60e51b815260040161052c90611828565b600355565b6000546001600160a01b031633146106425760405162461bcd60e51b815260040161052c90611828565b60018054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461068a5760405162461bcd60e51b815260040161052c90611828565b600693909355600891909155600755600955565b600061048e3384846108b9565b6000546001600160a01b031633146106d55760405162461bcd60e51b815260040161052c90611828565b6001600160a01b03811661073a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052c565b6001600160a01b0382166108585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052c565b6001600160a01b0383811660008181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661091d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052c565b6001600160a01b03821661097f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052c565b600081116109e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052c565b6000546001600160a01b03848116911614801590610a0d57506000546001600160a01b03838116911614155b15610d0d57600154600160a01b900460ff16610aa6576000546001600160a01b03848116911614610aa65760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052c565b600354811115610af85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052c565b6016546001600160a01b03838116911614610b7d5760035481610b1a84610553565b610b249190611873565b10610b7d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052c565b6001600160a01b03831660009081526014602052604090205460ff1615610bb357610ba9838383610ed1565b15610bb357505050565b6000610bbe30610553565b600454601654919250821015906001600160a01b0390811690861603610c1e576001600160a01b0384166000908152601260205260408120549003610c19576001600160a01b03841660009081526012602052604090204290555b610c4b565b600154600160a81b900460ff16610c4b57600f80546001600160a01b0319166001600160a01b0387161790555b6003548210610c5a5760035491505b808015610c715750600154600160a81b900460ff16155b8015610c8b57506016546001600160a01b03868116911614155b8015610ca05750600154600160b01b900460ff165b8015610cc557506001600160a01b03851660009081526014602052604090205460ff16155b8015610cea57506001600160a01b03841660009081526014602052604090205460ff16155b15610d0a57478015610d0857610cff83610f2f565b610d08476110a9565b505b50505b6001600160a01b03831660009081526014602052604090205460019060ff1680610d4f57506001600160a01b03831660009081526014602052604090205460ff165b80610d8157506016546001600160a01b03858116911614801590610d8157506016546001600160a01b03848116911614155b15610d8e57506000610e08565b6016546001600160a01b038581169116148015610db957506017546001600160a01b03848116911614155b15610dcb57600654600a55600754600b555b6016546001600160a01b038481169116148015610df657506017546001600160a01b03858116911614155b15610e0857600854600a55600954600b555b610e14848484846110e7565b50505050565b60008184841115610e3e5760405162461bcd60e51b815260040161052c9190611692565b506000610e4b8486611886565b95945050505050565b6000600254821115610ebb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161052c565b6000610ec5611115565b90506104fb8382611138565b6001600160a01b03821660009081526015602052604081205460ff168015610f00575081610efe85610553565b105b15610f2557601a54610f1d9084906001600160a01b03168461117a565b5060016104fb565b5060009392505050565b6001805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610f7757610f77611899565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff491906118af565b8160018151811061100757611007611899565b6001600160a01b03928316602091820292909201015260175461102d9130911684610795565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906110669085906000908690309042906004016118cc565b600060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b50506001805460ff60a81b1916905550505050565b6018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110e3573d6000803e3d6000fd5b5050565b806110f4576110f4611275565b6110ff84848461117a565b80610e1457610e14600c54600a55600d54600b55565b60008060006111226112a3565b90925090506111318282611138565b9250505090565b60006104fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112e1565b60008060008060008061118e89898961130f565b6001600160a01b038f16600090815260106020526040902054959b509399509197509550935091506111c090876113b2565b6001600160a01b03808b1660009081526010602052604080822093909355908a16815220546111ef90866113f4565b6001600160a01b038916600090815260106020526040902055611213818a8a611453565b61121d8483611547565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161126291815260200190565b60405180910390a3505050505050505050565b600a541580156112855750600b54155b1561128c57565b600a8054600c55600b8054600d5560009182905555565b600254600090819066038d7ea4c680006112bd8282611138565b8210156112d85750506002549266038d7ea4c6800092509050565b90939092509050565b600081836113025760405162461bcd60e51b815260040161052c9190611692565b506000610e4b848661193d565b600080600080600080600080600061132c8a600a54600b5461156b565b919450925090508b600061133e611115565b6001600160a01b038e1660009081526014602052604090205490915060ff16801561137657506016546001600160a01b038381169116145b156113805742600e555b60008060006113918f8888876115c0565b919f509d509b50969950949750929550505050505093975093979195509350565b60006104fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e1a565b6000806114018385611873565b9050838110156104fb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052c565b600061145d611115565b9050600061146b8583611610565b6016549091506001600160a01b038581169116148015906114a557506001600160a01b03841660009081526014602052604090205460ff16155b80156114ca57506001600160a01b03831660009081526014602052604090205460ff16155b15611516576019546114e4906001600160a01b0316610553565b15801561150d5750600e54600f546001600160a01b031660009081526012602052604090205410155b61151657600080fd5b3060009081526010602052604090205461153090826113f4565b306000908152601060205260409020555050505050565b60025461155490836113b2565b60025560055461156490826113f4565b6005555050565b6000808080611585606461157f8989611610565b90611138565b90506000611598606461157f8a89611610565b905060006115b0826115aa8b866113b2565b906113b2565b9992985090965090945050505050565b60008080806115cf8886611610565b905060006115dd8887611610565b905060006115eb8888611610565b905060006115fd826115aa86866113b2565b939b939a50919850919650505050505050565b60008260000361162257506000610492565b600061162e838561195f565b90508261163b858361193d565b146104fb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052c565b600060208083528351808285015260005b818110156116bf578581018301518582016040015282016116a3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f557600080fd5b50565b6000806040838503121561170b57600080fd5b8235611716816116e0565b946020939093013593505050565b60008060006060848603121561173957600080fd5b8335611744816116e0565b92506020840135611754816116e0565b929592945050506040919091013590565b60006020828403121561177757600080fd5b813580151581146104fb57600080fd5b60006020828403121561179957600080fd5b81356104fb816116e0565b6000602082840312156117b657600080fd5b5035919050565b600080600080608085870312156117d357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561180257600080fd5b823561180d816116e0565b9150602083013561181d816116e0565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156104925761049261185d565b818103818111156104925761049261185d565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118c157600080fd5b81516104fb816116e0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561191c5784516001600160a01b0316835293830193918301916001016118f7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261195a57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176104925761049261185d56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122043678e387cdd9260c10eab6ce8255fa65262e498f926e97b70a7a57c4af8c58c64736f6c63430008130033

Deployed Bytecode Sourcemap

4687:14089:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16979:83;;;;;;;;;;-1:-1:-1;17049:5:0;;;;;;;;;;;;-1:-1:-1;;;17049:5:0;;;;16979:83;;;;;;;:::i;:::-;;;;;;;;17904:193;;;;;;;;;;-1:-1:-1;17904:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;17904:193:0;1023:187:1;6154:41:0;;;;;;;;;;-1:-1:-1;6154:41:0;;;;-1:-1:-1;;;;;6154:41:0;;;;;;-1:-1:-1;;;;;1404:32:1;;;1386:51;;1374:2;1359:18;6154:41:0;1215:228:1;17256:95:0;;;;;;;;;;-1:-1:-1;5113:15:0;17256:95;;;1594:25:1;;;1582:2;1567:18;17256:95:0;1448:177:1;11097:446:0;;;;;;;;;;-1:-1:-1;11097:446:0;;;;;:::i;:::-;;:::i;5241:50::-;;;;;;;;;;;;;;;;17165:83;;;;;;;;;;-1:-1:-1;17165:83:0;;4906:1;2233:36:1;;2221:2;2206:18;17165:83:0;2091:184:1;6119:28:0;;;;;;;;;;-1:-1:-1;6119:28:0;;;;-1:-1:-1;;;;;6119:28:0;;;18214:101;;;;;;;;;;-1:-1:-1;18214:101:0;;;;;:::i;:::-;;:::i;:::-;;17359:138;;;;;;;;;;-1:-1:-1;17359:138:0;;;;;:::i;:::-;;:::i;4243:148::-;;;;;;;;;;;;;:::i;18323:108::-;;;;;;;;;;-1:-1:-1;18323:108:0;;;;;:::i;:::-;;:::i;5191:43::-;;;;;;;;;;;;;;;;4029:79;;;;;;;;;;-1:-1:-1;4067:7:0;4094:6;-1:-1:-1;;;;;4094:6:0;4029:79;;18105:101;;;;;;;;;;-1:-1:-1;18105:101:0;;;;;:::i;:::-;;:::i;17070:87::-;;;;;;;;;;-1:-1:-1;17142:7:0;;;;;;;;;;;;-1:-1:-1;;;17142:7:0;;;;17070:87;;18439:334;;;;;;;;;;-1:-1:-1;18439:334:0;;;;;:::i;:::-;;:::i;17505:199::-;;;;;;;;;;-1:-1:-1;17505:199:0;;;;;:::i;:::-;;:::i;5862:52::-;;;;;;;;;;-1:-1:-1;5862:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;6053:57;;;;;;;;;;-1:-1:-1;6053:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17712:184;;;;;;;;;;-1:-1:-1;17712:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;17861:18:0;;;17829:7;17861:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17712:184;4399:281;;;;;;;;;;-1:-1:-1;4399:281:0;;;;;:::i;:::-;;:::i;17904:193::-;18006:4;18028:39;3625:10;18051:7;18060:6;18028:8;:39::i;:::-;-1:-1:-1;18085:4:0;17904:193;;;;;:::o;11097:446::-;11229:4;11246:36;11256:6;11264:9;11275:6;11246:9;:36::i;:::-;11293:220;11316:6;3625:10;11364:138;11420:6;11364:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11364:19:0;;;;;;:11;:19;;;;;;;;3625:10;11364:33;;;;;;;;;;:37;:138::i;:::-;11293:8;:220::i;:::-;-1:-1:-1;11531:4:0;11097:446;;;;;;:::o;18214:101::-;4156:6;;-1:-1:-1;;;;;4156:6:0;3625:10;4156:22;4148:67;;;;-1:-1:-1;;;4148:67:0;;;;;;;:::i;:::-;;;;;;;;;18281:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18281:26:0::1;-1:-1:-1::0;;;;18281:26:0;;::::1;::::0;;;::::1;::::0;;18214:101::o;17359:138::-;-1:-1:-1;;;;;17472:16:0;;17425:7;17472:16;;;:7;:16;;;;;;17452:37;;:19;:37::i;4243:148::-;4156:6;;-1:-1:-1;;;;;4156:6:0;3625:10;4156:22;4148:67;;;;-1:-1:-1;;;4148:67:0;;;;;;;:::i;:::-;4350:1:::1;4334:6:::0;;4313:40:::1;::::0;-1:-1:-1;;;;;4334:6:0;;::::1;::::0;4313:40:::1;::::0;4350:1;;4313:40:::1;4381:1;4364:19:::0;;-1:-1:-1;;;;;;4364:19:0::1;::::0;;4243:148::o;18323:108::-;4156:6;;-1:-1:-1;;;;;4156:6:0;3625:10;4156:22;4148:67;;;;-1:-1:-1;;;4148:67:0;;;;;;;:::i;:::-;18397:12:::1;:26:::0;18323:108::o;18105:101::-;4156:6;;-1:-1:-1;;;;;4156:6:0;3625:10;4156:22;4148:67;;;;-1:-1:-1;;;4148:67:0;;;;;;;:::i;:::-;18172:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18172:26:0::1;-1:-1:-1::0;;;;18172:26:0;;::::1;::::0;;;::::1;::::0;;18105:101::o;18439:334::-;4156:6;;-1:-1:-1;;;;;4156:6:0;3625:10;4156:22;4148:67;;;;-1:-1:-1;;;4148:67:0;;;;;;;:::i;:::-;18616:14:::1;:30:::0;;;;18657:15:::1;:32:::0;;;;18700:12:::1;:26:::0;18737:13:::1;:28:::0;18439:334::o;17505:199::-;17610:4;17632:42;3625:10;17656:9;17667:6;17632:9;:42::i;4399:281::-;4156:6;;-1:-1:-1;;;;;4156:6:0;3625:10;4156:22;4148:67;;;;-1:-1:-1;;;4148:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4502:22:0;::::1;4480:110;;;::::0;-1:-1:-1;;;4480:110:0;;4549:2:1;4480:110:0::1;::::0;::::1;4531:21:1::0;4588:2;4568:18;;;4561:30;4627:34;4607:18;;;4600:62;-1:-1:-1;;;4678:18:1;;;4671:36;4724:19;;4480:110:0::1;4347:402:1::0;4480:110:0::1;4627:6;::::0;;4606:38:::1;::::0;-1:-1:-1;;;;;4606:38:0;;::::1;::::0;4627:6;::::1;::::0;4606:38:::1;::::0;::::1;4655:6;:17:::0;;-1:-1:-1;;;;;;4655:17:0::1;-1:-1:-1::0;;;;;4655:17:0;;;::::1;::::0;;;::::1;::::0;;4399:281::o;11882:369::-;-1:-1:-1;;;;;12009:19:0;;12001:68;;;;-1:-1:-1;;;12001:68:0;;4956:2:1;12001:68:0;;;4938:21:1;4995:2;4975:18;;;4968:30;5034:34;5014:18;;;5007:62;-1:-1:-1;;;5085:18:1;;;5078:34;5129:19;;12001:68:0;4754:400:1;12001:68:0;-1:-1:-1;;;;;12088:21:0;;12080:68;;;;-1:-1:-1;;;12080:68:0;;5361:2:1;12080:68:0;;;5343:21:1;5400:2;5380:18;;;5373:30;5439:34;5419:18;;;5412:62;-1:-1:-1;;;5490:18:1;;;5483:32;5532:19;;12080:68:0;5159:398:1;12080:68:0;-1:-1:-1;;;;;12159:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12211:32;;1594:25:1;;;12211:32:0;;1567:18:1;12211:32:0;;;;;;;11882:369;;;:::o;12259:2801::-;-1:-1:-1;;;;;12381:18:0;;12373:68;;;;-1:-1:-1;;;12373:68:0;;5764:2:1;12373:68:0;;;5746:21:1;5803:2;5783:18;;;5776:30;5842:34;5822:18;;;5815:62;-1:-1:-1;;;5893:18:1;;;5886:35;5938:19;;12373:68:0;5562:401:1;12373:68:0;-1:-1:-1;;;;;12460:16:0;;12452:64;;;;-1:-1:-1;;;12452:64:0;;6170:2:1;12452:64:0;;;6152:21:1;6209:2;6189:18;;;6182:30;6248:34;6228:18;;;6221:62;-1:-1:-1;;;6299:18:1;;;6292:33;6342:19;;12452:64:0;5968:399:1;12452:64:0;12544:1;12535:6;:10;12527:64;;;;-1:-1:-1;;;12527:64:0;;6574:2:1;12527:64:0;;;6556:21:1;6613:2;6593:18;;;6586:30;6652:34;6632:18;;;6625:62;-1:-1:-1;;;6703:18:1;;;6696:39;6752:19;;12527:64:0;6372:405:1;12527:64:0;4067:7;4094:6;-1:-1:-1;;;;;12608:15:0;;;4094:6;;12608:15;;;;:32;;-1:-1:-1;4067:7:0;4094:6;-1:-1:-1;;;;;12627:13:0;;;4094:6;;12627:13;;12608:32;12604:1794;;;12662:11;;-1:-1:-1;;;12662:11:0;;;;12657:205;;4067:7;4094:6;-1:-1:-1;;;;;12724:15:0;;;4094:6;;12724:15;12694:152;;;;-1:-1:-1;;;12694:152:0;;6984:2:1;12694:152:0;;;6966:21:1;7023:2;7003:18;;;6996:30;7062:34;7042:18;;;7035:62;7133:33;7113:18;;;7106:61;7184:19;;12694:152:0;6782:427:1;12694:152:0;12894:12;;12884:6;:22;;12876:63;;;;-1:-1:-1;;;12876:63:0;;7416:2:1;12876:63:0;;;7398:21:1;7455:2;7435:18;;;7428:30;7494;7474:18;;;7467:58;7542:18;;12876:63:0;7214:352:1;12876:63:0;12966:13;;-1:-1:-1;;;;;12960:19:0;;;12966:13;;12960:19;12956:206;;13055:12;;13046:6;13030:13;13040:2;13030:9;:13::i;:::-;:22;;;;:::i;:::-;:37;13000:146;;;;-1:-1:-1;;;13000:146:0;;8035:2:1;13000:146:0;;;8017:21:1;8074:2;8054:18;;;8047:30;8113:34;8093:18;;;8086:62;-1:-1:-1;;;8164:18:1;;;8157:33;8207:19;;13000:146:0;7833:399:1;13000:146:0;-1:-1:-1;;;;;13182:24:0;;;;;;:18;:24;;;;;;;;13178:111;;;13231:34;13248:4;13254:2;13258:6;13231:16;:34::i;:::-;13227:47;;;12259:2801;;;:::o;13227:47::-;13305:28;13336:24;13354:4;13336:9;:24::i;:::-;13414:19;;13462:13;;13305:55;;-1:-1:-1;13390:43:0;;;;-1:-1:-1;;;;;13462:13:0;;;13454:21;;;;13450:290;;-1:-1:-1;;;;;13500:21:0;;;;;;:17;:21;;;;;;:26;;13496:114;;-1:-1:-1;;;;;13551:21:0;;;;;;:17;:21;;;;;13575:15;13551:39;;13496:114;13450:290;;;13655:6;;-1:-1:-1;;;13655:6:0;;;;13650:75;;13686:12;:19;;-1:-1:-1;;;;;;13686:19:0;-1:-1:-1;;;;;13686:19:0;;;;;13650:75;13782:12;;13758:20;:36;13754:112;;13838:12;;13815:35;;13754:112;13902:7;:35;;;;-1:-1:-1;13931:6:0;;-1:-1:-1;;;13931:6:0;;;;13930:7;13902:35;:77;;;;-1:-1:-1;13966:13:0;;-1:-1:-1;;;;;13958:21:0;;;13966:13;;13958:21;;13902:77;:109;;;;-1:-1:-1;14000:11:0;;-1:-1:-1;;;14000:11:0;;;;13902:109;:155;;;;-1:-1:-1;;;;;;14033:24:0;;;;;;:18;:24;;;;;;;;14032:25;13902:155;:199;;;;-1:-1:-1;;;;;;14079:22:0;;;;;;:18;:22;;;;;;;;14078:23;13902:199;13880:507;;;14165:21;14209:22;;14205:167;;14256:38;14273:20;14256:16;:38::i;:::-;14317:35;14330:21;14317:12;:35::i;:::-;14117:270;13880:507;12642:1756;;12604:1794;-1:-1:-1;;;;;14459:24:0;;14410:12;14459:24;;;:18;:24;;;;;;14425:4;;14459:24;;;:50;;-1:-1:-1;;;;;;14487:22:0;;;;;;:18;:22;;;;;;;;14459:50;14458:115;;;-1:-1:-1;14536:13:0;;-1:-1:-1;;;;;14528:21:0;;;14536:13;;14528:21;;;;:44;;-1:-1:-1;14559:13:0;;-1:-1:-1;;;;;14553:19:0;;;14559:13;;14553:19;;14528:44;14440:561;;;-1:-1:-1;14610:5:0;14440:561;;;14660:13;;-1:-1:-1;;;;;14652:21:0;;;14660:13;;14652:21;:55;;;;-1:-1:-1;14691:15:0;;-1:-1:-1;;;;;14677:30:0;;;14691:15;;14677:30;;14652:55;14648:163;;;14740:14;;14728:9;:26;14783:12;;14773:7;:22;14648:163;14835:13;;-1:-1:-1;;;;;14829:19:0;;;14835:13;;14829:19;:55;;;;-1:-1:-1;14868:15:0;;-1:-1:-1;;;;;14852:32:0;;;14868:15;;14852:32;;14829:55;14825:165;;;14917:15;;14905:9;:27;14961:13;;14951:7;:23;14825:165;15011:41;15026:4;15032:2;15036:6;15044:7;15011:14;:41::i;:::-;12362:2698;12259:2801;;;:::o;2656:224::-;2776:7;2812:12;2804:6;;;;2796:29;;;;-1:-1:-1;;;2796:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2836:9:0;2848:5;2852:1;2848;:5;:::i;:::-;2836:17;2656:224;-1:-1:-1;;;;;2656:224:0:o;11551:323::-;11646:7;11704;;11693;:18;;11671:110;;;;-1:-1:-1;;;11671:110:0;;8572:2:1;11671:110:0;;;8554:21:1;8611:2;8591:18;;;8584:30;8650:34;8630:18;;;8623:62;-1:-1:-1;;;8701:18:1;;;8694:40;8751:19;;11671:110:0;8370:406:1;11671:110:0;11792:19;11814:10;:8;:10::i;:::-;11792:32;-1:-1:-1;11842:24:0;:7;11792:32;11842:11;:24::i;16605:366::-;-1:-1:-1;;;;;16768:36:0;;16733:4;16768:36;;;:25;:36;;;;;;;;:66;;;;;16828:6;16808:17;16818:6;16808:9;:17::i;:::-;:26;16768:66;16750:191;;;16890:4;;16861:42;;16879:9;;-1:-1:-1;;;;;16890:4:0;16896:6;16861:17;:42::i;:::-;-1:-1:-1;16925:4:0;16918:11;;16750:191;-1:-1:-1;16958:5:0;16605:366;;;;;:::o;16014:483::-;6661:4;6652:13;;-1:-1:-1;;;;6652:13:0;-1:-1:-1;;;6652:13:0;;;16116:16:::1;::::0;;16130:1:::1;16116:16:::0;;;;;::::1;::::0;;-1:-1:-1;;16116:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16116:16:0::1;16092:40;;16161:4;16143;16148:1;16143:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16143:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;16187:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;16187:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;16143:7;;16187:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16177:4;16182:1;16177:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16177:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16252:15:::1;::::0;16220:62:::1;::::0;16237:4:::1;::::0;16252:15:::1;16270:11:::0;16220:8:::1;:62::i;:::-;16293:15;::::0;:196:::1;::::0;-1:-1:-1;;;16293:196:0;;-1:-1:-1;;;;;16293:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16374:11;;16293:15:::1;::::0;16416:4;;16443::::1;::::0;16463:15:::1;::::0;16293:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6688:6:0;:14;;-1:-1:-1;;;;6688:14:0;;;-1:-1:-1;;;;16014:483:0:o;16505:92::-;16562:10;;:27;;-1:-1:-1;;;;;16562:10:0;;;;:27;;;;;16582:6;;16562:10;:27;:10;:27;16582:6;16562:10;:27;;;;;;;;;;;;;;;;;;;;;16505:92;:::o;15068:282::-;15224:7;15219:28;;15233:14;:12;:14::i;:::-;15258:44;15276:6;15284:9;15295:6;15258:17;:44::i;:::-;15318:7;15313:29;;15327:15;11028:17;;11016:9;:29;11066:15;;11056:7;:25;10972:117;9841:164;9883:7;9904:15;9921;9940:19;:17;:19::i;:::-;9903:56;;-1:-1:-1;9903:56:0;-1:-1:-1;9977:20:0;9903:56;;9977:11;:20::i;:::-;9970:27;;;;9841:164;:::o;3142:132::-;3200:7;3227:39;3231:1;3234;3227:39;;;;;;;;;;;;;;;;;:3;:39::i;15358:648::-;15505:15;15535:23;15573:12;15600:23;15638:12;15665:13;15692:38;15703:6;15711:9;15722:7;15692:10;:38::i;:::-;-1:-1:-1;;;;;15759:15:0;;;;;;:7;:15;;;;;;15490:240;;-1:-1:-1;15490:240:0;;-1:-1:-1;15490:240:0;;-1:-1:-1;15490:240:0;-1:-1:-1;15490:240:0;-1:-1:-1;15490:240:0;-1:-1:-1;15759:28:0;;15490:240;15759:19;:28::i;:::-;-1:-1:-1;;;;;15741:15:0;;;;;;;:7;:15;;;;;;:46;;;;15819:18;;;;;;;:39;;15842:15;15819:22;:39::i;:::-;-1:-1:-1;;;;;15798:18:0;;;;;;:7;:18;;;;;:60;15869:35;15879:5;15886:6;15806:9;15869;:35::i;:::-;15915:23;15927:4;15933;15915:11;:23::i;:::-;15971:9;-1:-1:-1;;;;;15954:44:0;15963:6;-1:-1:-1;;;;;15954:44:0;;15982:15;15954:44;;;;1594:25:1;;1582:2;1567:18;;1448:177;15954:44:0;;;;;;;;15479:527;;;;;;15358:648;;;:::o;10749:215::-;10796:9;;:14;:30;;;;-1:-1:-1;10814:7:0;;:12;10796:30;10792:43;;;10749:215::o;10792:43::-;10865:9;;;10845:17;:29;10903:7;;;10885:15;:25;-1:-1:-1;10921:13:0;;;;10945:11;10749:215::o;7467:257::-;7565:7;;7518;;;;5113:15;7633:20;7565:7;5113:15;7633:11;:20::i;:::-;7623:7;:30;7619:61;;;-1:-1:-1;;7663:7:0;;;5113:15;;-1:-1:-1;7467:257:0;-1:-1:-1;7467:257:0:o;7619:61::-;7699:7;;7708;;-1:-1:-1;7467:257:0;-1:-1:-1;7467:257:0:o;3282:223::-;3402:7;3437:12;3430:5;3422:28;;;;-1:-1:-1;;;3422:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3461:9:0;3473:5;3477:1;3473;:5;:::i;8945:888::-;9091:7;9113;9135;9157;9179;9201;9237:23;9262:12;9276:13;9293:90;9319:7;9341:9;;9365:7;;9293:11;:90::i;:::-;9236:147;;-1:-1:-1;9236:147:0;-1:-1:-1;9236:147:0;-1:-1:-1;9409:4:0;9394:12;9446:10;:8;:10::i;:::-;-1:-1:-1;;;;;9473:22:0;;;;;;:18;:22;;;;;;9424:32;;-1:-1:-1;9473:22:0;;:47;;;;-1:-1:-1;9507:13:0;;-1:-1:-1;;;;;9499:21:0;;;9507:13;;9499:21;9473:47;9469:95;;;9549:15;9535:11;:29;9469:95;9578:15;9595:23;9620:12;9636:109;9662:7;9684:4;9703:5;9723:11;9636;:109::i;:::-;9577:168;;-1:-1:-1;9577:168:0;-1:-1:-1;9577:168:0;-1:-1:-1;9796:15:0;;-1:-1:-1;9813:4:0;;-1:-1:-1;9819:5:0;;-1:-1:-1;;;;;;8945:888:0;;;;;;;;;;:::o;2512:136::-;2570:7;2597:43;2601:1;2604;2597:43;;;;;;;;;;;;;;;;;:3;:43::i;2325:179::-;2383:7;;2415:5;2419:1;2415;:5;:::i;:::-;2403:17;;2444:1;2439;:6;;2431:46;;;;-1:-1:-1;;;2431:46:0;;10710:2:1;2431:46:0;;;10692:21:1;10749:2;10729:18;;;10722:30;10788:29;10768:18;;;10761:57;10835:18;;2431:46:0;10508:351:1;10013:573:0;10128:19;10150:10;:8;:10::i;:::-;10128:32;-1:-1:-1;10171:13:0;10187:22;:5;10128:32;10187:9;:22::i;:::-;10246:13;;10171:38;;-1:-1:-1;;;;;;10238:21:0;;;10246:13;;10238:21;;;;:63;;-1:-1:-1;;;;;;10277:24:0;;;;;;:18;:24;;;;;;;;10276:25;10238:63;:105;;;;-1:-1:-1;;;;;;10319:24:0;;;;;;:18;:24;;;;;;;;10318:25;10238:105;10220:289;;;10404:13;;10394:24;;-1:-1:-1;;;;;10404:13:0;10394:9;:24::i;:::-;:29;:100;;;;-1:-1:-1;10483:11:0;;10466:12;;-1:-1:-1;;;;;10466:12:0;10448:31;;;;:17;:31;;;;;;:46;;10394:100;10368:141;;;;;;10561:4;10545:22;;;;:7;:22;;;;;;:33;;10572:5;10545:26;:33::i;:::-;10536:4;10520:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;;;10013:573:0:o;10594:147::-;10672:7;;:17;;10684:4;10672:11;:17::i;:::-;10662:7;:27;10713:10;;:20;;10728:4;10713:14;:20::i;:::-;10700:10;:33;-1:-1:-1;;10594:147:0:o;7926:469::-;8095:7;;;;8189:30;8215:3;8189:21;:7;8201:8;8189:11;:21::i;:::-;:25;;:30::i;:::-;8174:45;-1:-1:-1;8230:13:0;8246:28;8270:3;8246:19;:7;8258:6;8246:11;:19::i;:28::-;8230:44;-1:-1:-1;8285:23:0;8311:28;8230:44;8311:17;:7;8323:4;8311:11;:17::i;:::-;:21;;:28::i;:::-;8285:54;8375:4;;-1:-1:-1;8381:5:0;;-1:-1:-1;7926:469:0;;-1:-1:-1;;;;;7926:469:0:o;8403:534::-;8597:7;;;;8694:24;:7;8706:11;8694;:24::i;:::-;8676:42;-1:-1:-1;8729:12:0;8744:21;:4;8753:11;8744:8;:21::i;:::-;8729:36;-1:-1:-1;8776:13:0;8792:22;:5;8802:11;8792:9;:22::i;:::-;8776:38;-1:-1:-1;8825:23:0;8851:28;8776:38;8851:17;:7;8863:4;8851:11;:17::i;:28::-;8898:7;;;;-1:-1:-1;8924:4:0;;-1:-1:-1;8403:534:0;;-1:-1:-1;;;;;;;8403:534:0:o;2888:246::-;2946:7;2970:1;2975;2970:6;2966:47;;-1:-1:-1;3000:1:0;2993:8;;2966:47;3023:9;3035:5;3039:1;3035;:5;:::i;:::-;3023:17;-1:-1:-1;3068:1:0;3059:5;3063:1;3023:17;3059:5;:::i;:::-;:10;3051:56;;;;-1:-1:-1;;;3051:56:0;;11239:2:1;3051:56:0;;;11221:21:1;11278:2;11258:18;;;11251:30;11317:34;11297:18;;;11290:62;-1:-1:-1;;;11368:18:1;;;11361:31;11409:19;;3051:56:0;11037: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;622:70;567:131;:::o;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;1630:456::-;1707:6;1715;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1831:9;1818:23;1850:31;1875:5;1850:31;:::i;:::-;1900:5;-1:-1:-1;1957:2:1;1942:18;;1929:32;1970:33;1929:32;1970:33;:::i;:::-;1630:456;;2022:7;;-1:-1:-1;;;2076:2:1;2061:18;;;;2048:32;;1630:456::o;2488:273::-;2544:6;2597:2;2585:9;2576:7;2572:23;2568:32;2565:52;;;2613:1;2610;2603:12;2565:52;2652:9;2639:23;2705:5;2698:13;2691:21;2684:5;2681:32;2671:60;;2727:1;2724;2717:12;2766:247;2825:6;2878:2;2866:9;2857:7;2853:23;2849:32;2846:52;;;2894:1;2891;2884:12;2846:52;2933:9;2920:23;2952:31;2977:5;2952:31;:::i;3018:180::-;3077:6;3130:2;3118:9;3109:7;3105:23;3101:32;3098:52;;;3146:1;3143;3136:12;3098:52;-1:-1:-1;3169:23:1;;3018:180;-1:-1:-1;3018:180:1:o;3203:385::-;3289:6;3297;3305;3313;3366:3;3354:9;3345:7;3341:23;3337:33;3334:53;;;3383:1;3380;3373:12;3334:53;-1:-1:-1;;3406:23:1;;;3476:2;3461:18;;3448:32;;-1:-1:-1;3527:2:1;3512:18;;3499:32;;3578:2;3563:18;3550:32;;-1:-1:-1;3203:385:1;-1:-1:-1;3203:385:1:o;3593:388::-;3661:6;3669;3722:2;3710:9;3701:7;3697:23;3693:32;3690:52;;;3738:1;3735;3728:12;3690:52;3777:9;3764:23;3796:31;3821:5;3796:31;:::i;:::-;3846:5;-1:-1:-1;3903:2:1;3888:18;;3875:32;3916:33;3875:32;3916:33;:::i;:::-;3968:7;3958:17;;;3593:388;;;;;:::o;3986:356::-;4188:2;4170:21;;;4207:18;;;4200:30;4266:34;4261:2;4246:18;;4239:62;4333:2;4318:18;;3986:356::o;7571:127::-;7632:10;7627:3;7623:20;7620:1;7613:31;7663:4;7660:1;7653:15;7687:4;7684:1;7677:15;7703:125;7768:9;;;7789:10;;;7786:36;;;7802:18;;:::i;8237:128::-;8304:9;;;8325:11;;;8322:37;;;8339:18;;:::i;8913:127::-;8974:10;8969:3;8965:20;8962:1;8955:31;9005:4;9002:1;8995:15;9029:4;9026:1;9019:15;9045:251;9115:6;9168:2;9156:9;9147:7;9143:23;9139:32;9136:52;;;9184:1;9181;9174:12;9136:52;9216:9;9210:16;9235:31;9260:5;9235:31;:::i;9301:980::-;9563:4;9611:3;9600:9;9596:19;9642:6;9631:9;9624:25;9668:2;9706:6;9701:2;9690:9;9686:18;9679:34;9749:3;9744:2;9733:9;9729:18;9722:31;9773:6;9808;9802:13;9839:6;9831;9824:22;9877:3;9866:9;9862:19;9855:26;;9916:2;9908:6;9904:15;9890:29;;9937:1;9947:195;9961:6;9958:1;9955:13;9947:195;;;10026:13;;-1:-1:-1;;;;;10022:39:1;10010:52;;10117:15;;;;10082:12;;;;10058:1;9976:9;9947:195;;;-1:-1:-1;;;;;;;10198:32:1;;;;10193:2;10178:18;;10171:60;-1:-1:-1;;;10262:3:1;10247:19;10240:35;10159:3;9301:980;-1:-1:-1;;;9301:980:1:o;10286:217::-;10326:1;10352;10342:132;;10396:10;10391:3;10387:20;10384:1;10377:31;10431:4;10428:1;10421:15;10459:4;10456:1;10449:15;10342:132;-1:-1:-1;10488:9:1;;10286:217::o;10864:168::-;10937:9;;;10968;;10985:15;;;10979:22;;10965:37;10955:71;;11006:18;;:::i

Swarm Source

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