ETH Price: $3,400.36 (+1.97%)

Token

Ultimate Tipbot (ULTIMATEBOT)
 

Overview

Max Total Supply

10,000,000 ULTIMATEBOT

Holders

743

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.209613646 ULTIMATEBOT

Value
$0.00
0x308cc16eae9ff1c5bbd2e567e164425f041c68bb
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Send, share, trade, and get free crypto on multiple platforms such as Telegram & Discord!

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UltimateTipbot

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-04
*/

/**

Ultimate Tipbot: Tipbot-Based Cross-Platform Exchange

Send, Share & Trade: Send, share, trade, and get free crypto on multiple platforms such as Telegram & Discord
Mass Adoption: By providing a low entry barrier, crypto becomes available to anyone from virtually anywhere
Utility: Striving to provide various publicly available services to put your crypto to good use

-----

Website: ultimatetipbot.com

Telegram: t.me/UltimateTipbot & t.me/UltimateTipbotToken

X / Twitter: x.com/UltimateTipbot / twitter.com/UltimateTipbot

Telegram Bots: ultimatetipbot.com#tipbots

Roadmap: ultimatetipbot.com#roadmap

**/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

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

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 zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

contract UltimateTipbot is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Ultimate Tipbot";
    string private constant _symbol = "ULTIMATEBOT";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromInitialFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10 ** 9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _uFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _uFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;

    uint256 private _uFee = _uFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousuFee = _uFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x5E7c18a68B57d38a0D8B3B1758a0BF221CBC93EE);
    address payable private _marketingAddress = payable(0x5E7c18a68B57d38a0D8B3B1758a0BF221CBC93EE);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _tTotal / 1000;

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

        _isExcludedFromInitialFee[owner()] = true;
        _isExcludedFromInitialFee[address(this)] = true;
        _isExcludedFromInitialFee[_developmentAddress] = true;
        _isExcludedFromInitialFee[_marketingAddress] = true;

        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 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 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 removeAllFee() private {
        if (_uFee == 0 && _taxFee == 0) return;

        _previousuFee = _uFee;
        _previoustaxFee = _taxFee;

        _uFee = 5;
        _taxFee = 5;
    }

    function restoreAllFee() private {
        _uFee = _previousuFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to 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 zero address");
        require(to != address(0), "ERC20: transfer to 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");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted");

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

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

            if (contractTokenBalance >= _swapTokensAtAmount * 8) {
                contractTokenBalance = _swapTokensAtAmount * 8;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromInitialFee[from] && !_isExcludedFromInitialFee[to]) {
                swapTokensForETH(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;

                if (contractETHBalance > 50000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        if ((_isExcludedFromInitialFee[from] || _isExcludedFromInitialFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _uFee = _uFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _uFee = _uFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 {
        _marketingAddress.transfer(amount);
    }

    function manualMarketingSwap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForETH(contractBalance);
    }

    function manualMarketingSend() external {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory isBots) public onlyOwner {
        for (uint256 i = 0; i < isBots.length; i++) {
            bots[isBots[i]] = true;
        }
    }

    function unblockBot(address notBot) public onlyOwner {
        bots[notBot] = false;
    }

    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(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

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

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _uFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 uFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(uFee).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 _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 setFee(uint256 uFeeOnBuy, uint256 uFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _uFeeOnBuy = uFeeOnBuy;
        _uFeeOnSell = uFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        uint256 totalFee = _uFeeOnBuy + _uFeeOnSell + _taxFeeOnBuy + _taxFeeOnSell;
        require (totalFee <= 25, "Total fees cannot be more than 25%");
    }

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

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

    function setMaxTxAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal * maxTxAmount / 100;
        require (_maxTxAmount >= _tTotal / 100);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal * maxWalletSize / 100;
        require (_maxWalletSize >= _tTotal / 100);
    }

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

    function updateMarketingAddress(address newMarketingAddress) public onlyOwner {
        _marketingAddress = payable(newMarketingAddress);
    }
}

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"isBots","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"excludeMultipleAccountsFromInitialFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualMarketingSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualMarketingSwap","outputs":[],"stateMutability":"nonpayable","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":"uFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"uFeeOnSell","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":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"swapStatus","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":"notBot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"newMarketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000019662386f26fc10000600019620003d2565b6200002790600019620003ff565b6006556000600881905560056009819055600a829055600b819055600c829055600d819055600e91909155600f5560128054735e7c18a68b57d38a0d8b3b1758a0bf221cbc93ee6001600160a01b031991821681179092556013805490911690911790556015805462ffffff60a01b19166201000160a01b179055662386f26fc100006016819055606490620000bf90600262000419565b620000cb91906200043b565b601755620000e36103e8662386f26fc100006200043b565b601855348015620000f357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b158015620001ac57600080fd5b505afa158015620001c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e7919062000452565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023057600080fd5b505afa15801562000245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026b919062000452565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002b457600080fd5b505af1158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000452565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc10000604051620003ad91815260200190565b60405180910390a35062000484565b634e487b7160e01b600052601260045260246000fd5b600082620003e457620003e4620003bc565b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620004145762000414620003e9565b500390565b6000816000190483118215151615620004365762000436620003e9565b500290565b6000826200044d576200044d620003bc565b500490565b6000602082840312156200046557600080fd5b81516001600160a01b03811681146200047d57600080fd5b9392505050565b611eca80620004946000396000f3fe6080604052600436106101d05760003560e01c8063715018a6116100f757806398a5c31511610095578063dd62ed3e11610064578063dd62ed3e14610560578063ea1644d5146105a6578063ec28438a146105c6578063f2fde38b146105e657600080fd5b806398a5c315146104d0578063a2a957bb146104f0578063a9059cbb14610510578063bfd792841461053057600080fd5b806386e0bdd0116100d157806386e0bdd0146104535780638da5cb5b146104685780638f9a55c01461048657806395d89b411461049c57600080fd5b8063715018a6146103fb5780637d1db4a5146104105780637f2feddc1461042657600080fd5b806327fb9c071161016f57806349bd5a5e1161013e57806349bd5a5e1461037b5780636b9990531461039b5780636d8aa8f8146103bb57806370a08231146103db57600080fd5b806327fb9c07146103145780632fd689e314610334578063313ce5671461034a578063468e9a0d1461036657600080fd5b80631694505e116101ab5780631694505e1461027857806318160ddd146102b05780632369bf83146102d457806323b872dd146102f457600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461024857600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611a1b565b610606565b005b34801561020a57600080fd5b5060408051808201909152600f81526e155b1d1a5b585d1948151a5c189bdd608a1b60208201525b60405161023f9190611ae0565b60405180910390f35b34801561025457600080fd5b50610268610263366004611b35565b6106a5565b604051901515815260200161023f565b34801561028457600080fd5b50601454610298906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b3480156102bc57600080fd5b50662386f26fc100005b60405190815260200161023f565b3480156102e057600080fd5b506101fc6102ef366004611b61565b6106bc565b34801561030057600080fd5b5061026861030f366004611b7e565b610708565b34801561032057600080fd5b506101fc61032f366004611bcf565b610771565b34801561034057600080fd5b506102c660185481565b34801561035657600080fd5b506040516009815260200161023f565b34801561037257600080fd5b506101fc610812565b34801561038757600080fd5b50601554610298906001600160a01b031681565b3480156103a757600080fd5b506101fc6103b6366004611b61565b61081f565b3480156103c757600080fd5b506101fc6103d6366004611c53565b61086a565b3480156103e757600080fd5b506102c66103f6366004611b61565b6108b2565b34801561040757600080fd5b506101fc6108d4565b34801561041c57600080fd5b506102c660165481565b34801561043257600080fd5b506102c6610441366004611b61565b60116020526000908152604090205481565b34801561045f57600080fd5b506101fc610948565b34801561047457600080fd5b506000546001600160a01b0316610298565b34801561049257600080fd5b506102c660175481565b3480156104a857600080fd5b5060408051808201909152600b81526a15531512535055115093d560aa1b6020820152610232565b3480156104dc57600080fd5b506101fc6104eb366004611c6e565b61099c565b3480156104fc57600080fd5b506101fc61050b366004611c87565b6109cb565b34801561051c57600080fd5b5061026861052b366004611b35565b610a90565b34801561053c57600080fd5b5061026861054b366004611b61565b60106020526000908152604090205460ff1681565b34801561056c57600080fd5b506102c661057b366004611cb9565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105b257600080fd5b506101fc6105c1366004611c6e565b610a9d565b3480156105d257600080fd5b506101fc6105e1366004611c6e565b610b07565b3480156105f257600080fd5b506101fc610601366004611b61565b610b71565b6000546001600160a01b031633146106395760405162461bcd60e51b815260040161063090611cf2565b60405180910390fd5b60005b81518110156106a15760016010600084848151811061065d5761065d611d27565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061069981611d53565b91505061063c565b5050565b60006106b2338484610c57565b5060015b92915050565b6000546001600160a01b031633146106e65760405162461bcd60e51b815260040161063090611cf2565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610715848484610d64565b610767843361076285604051806060016040528060288152602001611e6d602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112ab565b610c57565b5060019392505050565b6000546001600160a01b0316331461079b5760405162461bcd60e51b815260040161063090611cf2565b60005b8281101561080c5781600560008686858181106107bd576107bd611d27565b90506020020160208101906107d29190611b61565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061080481611d53565b91505061079e565b50505050565b4761081c816112e5565b50565b6000546001600160a01b031633146108495760405162461bcd60e51b815260040161063090611cf2565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b031633146108945760405162461bcd60e51b815260040161063090611cf2565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381166000908152600260205260408120546106b69061131f565b6000546001600160a01b031633146108fe5760405162461bcd60e51b815260040161063090611cf2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6012546001600160a01b0316336001600160a01b0316148061097d57506013546001600160a01b0316336001600160a01b0316145b61098657600080fd5b6000610991306108b2565b905061081c816113a3565b6000546001600160a01b031633146109c65760405162461bcd60e51b815260040161063090611cf2565b601855565b6000546001600160a01b031633146109f55760405162461bcd60e51b815260040161063090611cf2565b6008849055600a8390556009829055600b81905560008183610a178688611d6e565b610a219190611d6e565b610a2b9190611d6e565b90506019811115610a895760405162461bcd60e51b815260206004820152602260248201527f546f74616c20666565732063616e6e6f74206265206d6f7265207468616e2032604482015261352560f01b6064820152608401610630565b5050505050565b60006106b2338484610d64565b6000546001600160a01b03163314610ac75760405162461bcd60e51b815260040161063090611cf2565b6064610ada82662386f26fc10000611d86565b610ae49190611da5565b601755610af96064662386f26fc10000611da5565b601754101561081c57600080fd5b6000546001600160a01b03163314610b315760405162461bcd60e51b815260040161063090611cf2565b6064610b4482662386f26fc10000611d86565b610b4e9190611da5565b601655610b636064662386f26fc10000611da5565b601654101561081c57600080fd5b6000546001600160a01b03163314610b9b5760405162461bcd60e51b815260040161063090611cf2565b6001600160a01b038116610bfc5760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a206e6577206f776e6572206973207a65726f206164647265604482015261737360f01b6064820152608401610630565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cad5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610630565b6001600160a01b038216610d035760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610630565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dc45760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610630565b6001600160a01b038216610e1a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610630565b60008111610e7c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610630565b6000546001600160a01b03848116911614801590610ea857506000546001600160a01b03838116911614155b156111a457601554600160a01b900460ff16610f41576000546001600160a01b03848116911614610f415760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610630565b601654811115610f935760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178207472616e73616374696f6e206c696d6974000000006044820152606401610630565b6001600160a01b03831660009081526010602052604090205460ff16158015610fd557506001600160a01b03821660009081526010602052604090205460ff16155b61102c5760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c697374604482015261195960f21b6064820152608401610630565b6015546001600160a01b038381169116146110b0576017548161104e846108b2565b6110589190611d6e565b106110b05760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152617a6560f01b6064820152608401610630565b60006110bb306108b2565b60185490915080821015906110d1906008611d86565b82106110e8576018546110e5906008611d86565b91505b8080156110ff5750601554600160a81b900460ff16155b801561111957506015546001600160a01b03868116911614155b801561112e5750601554600160b01b900460ff165b801561115357506001600160a01b03851660009081526005602052604090205460ff16155b801561117857506001600160a01b03841660009081526005602052604090205460ff16155b156111a157611186826113a3565b4766b1a2bc2ec5000081111561119f5761119f476112e5565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806111e657506001600160a01b03831660009081526005602052604090205460ff165b8061121857506015546001600160a01b0385811691161480159061121857506015546001600160a01b03848116911614155b156112255750600061129f565b6015546001600160a01b03858116911614801561125057506014546001600160a01b03848116911614155b1561126257600854600c55600954600d555b6015546001600160a01b03848116911614801561128d57506014546001600160a01b03858116911614155b1561129f57600a54600c55600b54600d555b61080c8484848461152c565b600081848411156112cf5760405162461bcd60e51b81526004016106309190611ae0565b5060006112dc8486611dc7565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106a1573d6000803e3d6000fd5b60006006548211156113865760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610630565b600061139061155a565b905061139c838261157d565b9392505050565b6015805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113eb576113eb611d27565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114779190611dde565b8160018151811061148a5761148a611d27565b6001600160a01b0392831660209182029290920101526014546114b09130911684610c57565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906114e9908590600090869030904290600401611dfb565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611539576115396115bf565b6115448484846115ed565b8061080c5761080c600e54600c55600f54600d55565b60008060006115676116e4565b9092509050611576828261157d565b9250505090565b600061139c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611722565b600c541580156115cf5750600d54155b156115d657565b600c8054600e55600d8054600f5560059182905555565b6000806000806000806115ff87611750565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061163190876117ad565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461166090866117ef565b6001600160a01b0389166000908152600260205260409020556116828161184e565b61168c8483611898565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116d191815260200190565b60405180910390a3505050505050505050565b6006546000908190662386f26fc100006116fe828261157d565b82101561171957505060065492662386f26fc1000092509050565b90939092509050565b600081836117435760405162461bcd60e51b81526004016106309190611ae0565b5060006112dc8486611da5565b600080600080600080600080600061176d8a600c54600d546118bc565b925092509250600061177d61155a565b905060008060006117908e878787611911565b919e509c509a509598509396509194505050505091939550919395565b600061139c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112ab565b6000806117fc8385611d6e565b90508381101561139c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610630565b600061185861155a565b905060006118668383611961565b3060009081526002602052604090205490915061188390826117ef565b30600090815260026020526040902055505050565b6006546118a590836117ad565b6006556007546118b590826117ef565b6007555050565b60008080806118d660646118d08989611961565b9061157d565b905060006118e960646118d08a89611961565b90506000611901826118fb8b866117ad565b906117ad565b9992985090965090945050505050565b60008080806119208886611961565b9050600061192e8887611961565b9050600061193c8888611961565b9050600061194e826118fb86866117ad565b939b939a50919850919650505050505050565b600082611970575060006106b6565b600061197c8385611d86565b9050826119898583611da5565b1461139c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610630565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461081c57600080fd5b8035611a16816119f6565b919050565b60006020808385031215611a2e57600080fd5b823567ffffffffffffffff80821115611a4657600080fd5b818501915085601f830112611a5a57600080fd5b813581811115611a6c57611a6c6119e0565b8060051b604051601f19603f83011681018181108582111715611a9157611a916119e0565b604052918252848201925083810185019188831115611aaf57600080fd5b938501935b82851015611ad457611ac585611a0b565b84529385019392850192611ab4565b98975050505050505050565b600060208083528351808285015260005b81811015611b0d57858101830151858201604001528201611af1565b81811115611b1f576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611b4857600080fd5b8235611b53816119f6565b946020939093013593505050565b600060208284031215611b7357600080fd5b813561139c816119f6565b600080600060608486031215611b9357600080fd5b8335611b9e816119f6565b92506020840135611bae816119f6565b929592945050506040919091013590565b80358015158114611a1657600080fd5b600080600060408486031215611be457600080fd5b833567ffffffffffffffff80821115611bfc57600080fd5b818601915086601f830112611c1057600080fd5b813581811115611c1f57600080fd5b8760208260051b8501011115611c3457600080fd5b602092830195509350611c4a9186019050611bbf565b90509250925092565b600060208284031215611c6557600080fd5b61139c82611bbf565b600060208284031215611c8057600080fd5b5035919050565b60008060008060808587031215611c9d57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611ccc57600080fd5b8235611cd7816119f6565b91506020830135611ce7816119f6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611d6757611d67611d3d565b5060010190565b60008219821115611d8157611d81611d3d565b500190565b6000816000190483118215151615611da057611da0611d3d565b500290565b600082611dc257634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611dd957611dd9611d3d565b500390565b600060208284031215611df057600080fd5b815161139c816119f6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e4b5784516001600160a01b031683529383019391830191600101611e26565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c8aa34a04d9450c2ca271d98d5f3ebeededa9a8b3859bc6d9d141f7a8e009ac764736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c8063715018a6116100f757806398a5c31511610095578063dd62ed3e11610064578063dd62ed3e14610560578063ea1644d5146105a6578063ec28438a146105c6578063f2fde38b146105e657600080fd5b806398a5c315146104d0578063a2a957bb146104f0578063a9059cbb14610510578063bfd792841461053057600080fd5b806386e0bdd0116100d157806386e0bdd0146104535780638da5cb5b146104685780638f9a55c01461048657806395d89b411461049c57600080fd5b8063715018a6146103fb5780637d1db4a5146104105780637f2feddc1461042657600080fd5b806327fb9c071161016f57806349bd5a5e1161013e57806349bd5a5e1461037b5780636b9990531461039b5780636d8aa8f8146103bb57806370a08231146103db57600080fd5b806327fb9c07146103145780632fd689e314610334578063313ce5671461034a578063468e9a0d1461036657600080fd5b80631694505e116101ab5780631694505e1461027857806318160ddd146102b05780632369bf83146102d457806323b872dd146102f457600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461024857600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611a1b565b610606565b005b34801561020a57600080fd5b5060408051808201909152600f81526e155b1d1a5b585d1948151a5c189bdd608a1b60208201525b60405161023f9190611ae0565b60405180910390f35b34801561025457600080fd5b50610268610263366004611b35565b6106a5565b604051901515815260200161023f565b34801561028457600080fd5b50601454610298906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b3480156102bc57600080fd5b50662386f26fc100005b60405190815260200161023f565b3480156102e057600080fd5b506101fc6102ef366004611b61565b6106bc565b34801561030057600080fd5b5061026861030f366004611b7e565b610708565b34801561032057600080fd5b506101fc61032f366004611bcf565b610771565b34801561034057600080fd5b506102c660185481565b34801561035657600080fd5b506040516009815260200161023f565b34801561037257600080fd5b506101fc610812565b34801561038757600080fd5b50601554610298906001600160a01b031681565b3480156103a757600080fd5b506101fc6103b6366004611b61565b61081f565b3480156103c757600080fd5b506101fc6103d6366004611c53565b61086a565b3480156103e757600080fd5b506102c66103f6366004611b61565b6108b2565b34801561040757600080fd5b506101fc6108d4565b34801561041c57600080fd5b506102c660165481565b34801561043257600080fd5b506102c6610441366004611b61565b60116020526000908152604090205481565b34801561045f57600080fd5b506101fc610948565b34801561047457600080fd5b506000546001600160a01b0316610298565b34801561049257600080fd5b506102c660175481565b3480156104a857600080fd5b5060408051808201909152600b81526a15531512535055115093d560aa1b6020820152610232565b3480156104dc57600080fd5b506101fc6104eb366004611c6e565b61099c565b3480156104fc57600080fd5b506101fc61050b366004611c87565b6109cb565b34801561051c57600080fd5b5061026861052b366004611b35565b610a90565b34801561053c57600080fd5b5061026861054b366004611b61565b60106020526000908152604090205460ff1681565b34801561056c57600080fd5b506102c661057b366004611cb9565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105b257600080fd5b506101fc6105c1366004611c6e565b610a9d565b3480156105d257600080fd5b506101fc6105e1366004611c6e565b610b07565b3480156105f257600080fd5b506101fc610601366004611b61565b610b71565b6000546001600160a01b031633146106395760405162461bcd60e51b815260040161063090611cf2565b60405180910390fd5b60005b81518110156106a15760016010600084848151811061065d5761065d611d27565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061069981611d53565b91505061063c565b5050565b60006106b2338484610c57565b5060015b92915050565b6000546001600160a01b031633146106e65760405162461bcd60e51b815260040161063090611cf2565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610715848484610d64565b610767843361076285604051806060016040528060288152602001611e6d602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112ab565b610c57565b5060019392505050565b6000546001600160a01b0316331461079b5760405162461bcd60e51b815260040161063090611cf2565b60005b8281101561080c5781600560008686858181106107bd576107bd611d27565b90506020020160208101906107d29190611b61565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061080481611d53565b91505061079e565b50505050565b4761081c816112e5565b50565b6000546001600160a01b031633146108495760405162461bcd60e51b815260040161063090611cf2565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b031633146108945760405162461bcd60e51b815260040161063090611cf2565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381166000908152600260205260408120546106b69061131f565b6000546001600160a01b031633146108fe5760405162461bcd60e51b815260040161063090611cf2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6012546001600160a01b0316336001600160a01b0316148061097d57506013546001600160a01b0316336001600160a01b0316145b61098657600080fd5b6000610991306108b2565b905061081c816113a3565b6000546001600160a01b031633146109c65760405162461bcd60e51b815260040161063090611cf2565b601855565b6000546001600160a01b031633146109f55760405162461bcd60e51b815260040161063090611cf2565b6008849055600a8390556009829055600b81905560008183610a178688611d6e565b610a219190611d6e565b610a2b9190611d6e565b90506019811115610a895760405162461bcd60e51b815260206004820152602260248201527f546f74616c20666565732063616e6e6f74206265206d6f7265207468616e2032604482015261352560f01b6064820152608401610630565b5050505050565b60006106b2338484610d64565b6000546001600160a01b03163314610ac75760405162461bcd60e51b815260040161063090611cf2565b6064610ada82662386f26fc10000611d86565b610ae49190611da5565b601755610af96064662386f26fc10000611da5565b601754101561081c57600080fd5b6000546001600160a01b03163314610b315760405162461bcd60e51b815260040161063090611cf2565b6064610b4482662386f26fc10000611d86565b610b4e9190611da5565b601655610b636064662386f26fc10000611da5565b601654101561081c57600080fd5b6000546001600160a01b03163314610b9b5760405162461bcd60e51b815260040161063090611cf2565b6001600160a01b038116610bfc5760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a206e6577206f776e6572206973207a65726f206164647265604482015261737360f01b6064820152608401610630565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cad5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610630565b6001600160a01b038216610d035760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610630565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dc45760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610630565b6001600160a01b038216610e1a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610630565b60008111610e7c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610630565b6000546001600160a01b03848116911614801590610ea857506000546001600160a01b03838116911614155b156111a457601554600160a01b900460ff16610f41576000546001600160a01b03848116911614610f415760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610630565b601654811115610f935760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178207472616e73616374696f6e206c696d6974000000006044820152606401610630565b6001600160a01b03831660009081526010602052604090205460ff16158015610fd557506001600160a01b03821660009081526010602052604090205460ff16155b61102c5760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c697374604482015261195960f21b6064820152608401610630565b6015546001600160a01b038381169116146110b0576017548161104e846108b2565b6110589190611d6e565b106110b05760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152617a6560f01b6064820152608401610630565b60006110bb306108b2565b60185490915080821015906110d1906008611d86565b82106110e8576018546110e5906008611d86565b91505b8080156110ff5750601554600160a81b900460ff16155b801561111957506015546001600160a01b03868116911614155b801561112e5750601554600160b01b900460ff165b801561115357506001600160a01b03851660009081526005602052604090205460ff16155b801561117857506001600160a01b03841660009081526005602052604090205460ff16155b156111a157611186826113a3565b4766b1a2bc2ec5000081111561119f5761119f476112e5565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806111e657506001600160a01b03831660009081526005602052604090205460ff165b8061121857506015546001600160a01b0385811691161480159061121857506015546001600160a01b03848116911614155b156112255750600061129f565b6015546001600160a01b03858116911614801561125057506014546001600160a01b03848116911614155b1561126257600854600c55600954600d555b6015546001600160a01b03848116911614801561128d57506014546001600160a01b03858116911614155b1561129f57600a54600c55600b54600d555b61080c8484848461152c565b600081848411156112cf5760405162461bcd60e51b81526004016106309190611ae0565b5060006112dc8486611dc7565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106a1573d6000803e3d6000fd5b60006006548211156113865760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610630565b600061139061155a565b905061139c838261157d565b9392505050565b6015805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113eb576113eb611d27565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114779190611dde565b8160018151811061148a5761148a611d27565b6001600160a01b0392831660209182029290920101526014546114b09130911684610c57565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906114e9908590600090869030904290600401611dfb565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611539576115396115bf565b6115448484846115ed565b8061080c5761080c600e54600c55600f54600d55565b60008060006115676116e4565b9092509050611576828261157d565b9250505090565b600061139c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611722565b600c541580156115cf5750600d54155b156115d657565b600c8054600e55600d8054600f5560059182905555565b6000806000806000806115ff87611750565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061163190876117ad565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461166090866117ef565b6001600160a01b0389166000908152600260205260409020556116828161184e565b61168c8483611898565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116d191815260200190565b60405180910390a3505050505050505050565b6006546000908190662386f26fc100006116fe828261157d565b82101561171957505060065492662386f26fc1000092509050565b90939092509050565b600081836117435760405162461bcd60e51b81526004016106309190611ae0565b5060006112dc8486611da5565b600080600080600080600080600061176d8a600c54600d546118bc565b925092509250600061177d61155a565b905060008060006117908e878787611911565b919e509c509a509598509396509194505050505091939550919395565b600061139c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112ab565b6000806117fc8385611d6e565b90508381101561139c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610630565b600061185861155a565b905060006118668383611961565b3060009081526002602052604090205490915061188390826117ef565b30600090815260026020526040902055505050565b6006546118a590836117ad565b6006556007546118b590826117ef565b6007555050565b60008080806118d660646118d08989611961565b9061157d565b905060006118e960646118d08a89611961565b90506000611901826118fb8b866117ad565b906117ad565b9992985090965090945050505050565b60008080806119208886611961565b9050600061192e8887611961565b9050600061193c8888611961565b9050600061194e826118fb86866117ad565b939b939a50919850919650505050505050565b600082611970575060006106b6565b600061197c8385611d86565b9050826119898583611da5565b1461139c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610630565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461081c57600080fd5b8035611a16816119f6565b919050565b60006020808385031215611a2e57600080fd5b823567ffffffffffffffff80821115611a4657600080fd5b818501915085601f830112611a5a57600080fd5b813581811115611a6c57611a6c6119e0565b8060051b604051601f19603f83011681018181108582111715611a9157611a916119e0565b604052918252848201925083810185019188831115611aaf57600080fd5b938501935b82851015611ad457611ac585611a0b565b84529385019392850192611ab4565b98975050505050505050565b600060208083528351808285015260005b81811015611b0d57858101830151858201604001528201611af1565b81811115611b1f576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611b4857600080fd5b8235611b53816119f6565b946020939093013593505050565b600060208284031215611b7357600080fd5b813561139c816119f6565b600080600060608486031215611b9357600080fd5b8335611b9e816119f6565b92506020840135611bae816119f6565b929592945050506040919091013590565b80358015158114611a1657600080fd5b600080600060408486031215611be457600080fd5b833567ffffffffffffffff80821115611bfc57600080fd5b818601915086601f830112611c1057600080fd5b813581811115611c1f57600080fd5b8760208260051b8501011115611c3457600080fd5b602092830195509350611c4a9186019050611bbf565b90509250925092565b600060208284031215611c6557600080fd5b61139c82611bbf565b600060208284031215611c8057600080fd5b5035919050565b60008060008060808587031215611c9d57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611ccc57600080fd5b8235611cd7816119f6565b91506020830135611ce7816119f6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611d6757611d67611d3d565b5060010190565b60008219821115611d8157611d81611d3d565b500190565b6000816000190483118215151615611da057611da0611d3d565b500290565b600082611dc257634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611dd957611dd9611d3d565b500390565b600060208284031215611df057600080fd5b815161139c816119f6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e4b5784516001600160a01b031683529383019391830191600101611e26565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c8aa34a04d9450c2ca271d98d5f3ebeededa9a8b3859bc6d9d141f7a8e009ac764736f6c63430008090033

Deployed Bytecode Sourcemap

4680:13486:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13034:172;;;;;;;;;;-1:-1:-1;13034:172:0;;;;;:::i;:::-;;:::i;:::-;;7176:83;;;;;;;;;;-1:-1:-1;7246:5:0;;;;;;;;;;;;-1:-1:-1;;;7246:5:0;;;;7176:83;;;;;;;:::i;:::-;;;;;;;;8101:193;;;;;;;;;;-1:-1:-1;8101:193:0;;;;;:::i;:::-;;:::i;:::-;;;2634:14:1;;2627:22;2609:41;;2597:2;2582:18;8101:193:0;2469:187:1;6002:41:0;;;;;;;;;;-1:-1:-1;6002:41:0;;;;-1:-1:-1;;;;;6002:41:0;;;;;;-1:-1:-1;;;;;2851:32:1;;;2833:51;;2821:2;2806:18;6002:41:0;2661:229:1;7453:95:0;;;;;;;;;;-1:-1:-1;5252:18:0;7453:95;;;3041:25:1;;;3029:2;3014:18;7453:95:0;2895:177:1;18018:145:0;;;;;;;;;;-1:-1:-1;18018:145:0;;;;;:::i;:::-;;:::i;8302:446::-;;;;;;;;;;-1:-1:-1;8302:446:0;;;;;:::i;:::-;;:::i;17763:247::-;;;;;;;;;;-1:-1:-1;17763:247:0;;;;;:::i;:::-;;:::i;6299:51::-;;;;;;;;;;;;;;;;7362:83;;;;;;;;;;-1:-1:-1;7362:83:0;;4919:1;4791:36:1;;4779:2;4764:18;7362:83:0;4649:184:1;12874:152:0;;;;;;;;;;;;;:::i;6050:28::-;;;;;;;;;;-1:-1:-1;6050:28:0;;;;-1:-1:-1;;;;;6050:28:0;;;13214:92;;;;;;;;;;-1:-1:-1;13214:92:0;;;;;:::i;:::-;;:::i;17286:97::-;;;;;;;;;;-1:-1:-1;17286:97:0;;;;;:::i;:::-;;:::i;7556:138::-;;;;;;;;;;-1:-1:-1;7556:138:0;;;;;:::i;:::-;;:::i;2197:148::-;;;;;;;;;;;;;:::i;6199:37::-;;;;;;;;;;;;;;;;5744:43;;;;;;;;;;-1:-1:-1;5744:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;12621:245;;;;;;;;;;;;;:::i;1983:79::-;;;;;;;;;;-1:-1:-1;2021:7:0;2048:6;-1:-1:-1;;;;;2048:6:0;1983:79;;6243:49;;;;;;;;;;;;;;;;7267:87;;;;;;;;;;-1:-1:-1;7339:7:0;;;;;;;;;;;;-1:-1:-1;;;7339:7:0;;;;7267:87;;17139:139;;;;;;;;;;-1:-1:-1;17139:139:0;;;;;:::i;:::-;;:::i;16706:425::-;;;;;;;;;;-1:-1:-1;16706:425:0;;;;;:::i;:::-;;:::i;7702:199::-;;;;;;;;;;-1:-1:-1;7702:199:0;;;;;:::i;:::-;;:::i;5706:36::-;;;;;;;;;;-1:-1:-1;5706:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7909:184;;;;;;;;;;-1:-1:-1;7909:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8058:18:0;;;8026:7;8058:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7909:184;17572:183;;;;;;;;;;-1:-1:-1;17572:183:0;;;;;:::i;:::-;;:::i;17391:173::-;;;;;;;;;;-1:-1:-1;17391:173:0;;;;;:::i;:::-;;:::i;2353:240::-;;;;;;;;;;-1:-1:-1;2353:240:0;;;;;:::i;:::-;;:::i;13034:172::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;;;;;;;;;13111:9:::1;13106:93;13130:6;:13;13126:1;:17;13106:93;;;13183:4;13165;:15;13170:6;13177:1;13170:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13165:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13165:15:0;:22;;-1:-1:-1;;13165:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13145:3;::::1;::::0;::::1;:::i;:::-;;;;13106:93;;;;13034:172:::0;:::o;8101:193::-;8203:4;8225:39;822:10;8248:7;8257:6;8225:8;:39::i;:::-;-1:-1:-1;8282:4:0;8101:193;;;;;:::o;18018:145::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;18107:17:::1;:48:::0;;-1:-1:-1;;;;;;18107:48:0::1;-1:-1:-1::0;;;;;18107:48:0;;;::::1;::::0;;;::::1;::::0;;18018:145::o;8302:446::-;8434:4;8451:36;8461:6;8469:9;8480:6;8451:9;:36::i;:::-;8498:220;8521:6;822:10;8569:138;8625:6;8569:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8569:19:0;;;;;;:11;:19;;;;;;;;822:10;8569:33;;;;;;;;;;:37;:138::i;:::-;8498:8;:220::i;:::-;-1:-1:-1;8736:4:0;8302:446;;;;;:::o;17763:247::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;17886:9:::1;17882:121;17901:19:::0;;::::1;17882:121;;;17983:8;17942:25;:38;17968:8;;17977:1;17968:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17942:38:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17942:38:0;:49;;-1:-1:-1;;17942:49:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17922:3;::::1;::::0;::::1;:::i;:::-;;;;17882:121;;;;17763:247:::0;;;:::o;12874:152::-;12954:21;12986:32;12954:21;12986:12;:32::i;:::-;12914:112;12874:152::o;13214:92::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13278:12:0::1;13293:5;13278:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13278:20:0::1;::::0;;13214:92::o;17286:97::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;17351:11:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;17351:24:0::1;-1:-1:-1::0;;;;17351:24:0;;::::1;::::0;;;::::1;::::0;;17286:97::o;7556:138::-;-1:-1:-1;;;;;7669:16:0;;7622:7;7669:16;;;:7;:16;;;;;;7649:37;;:19;:37::i;2197:148::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;2304:1:::1;2288:6:::0;;2267:40:::1;::::0;-1:-1:-1;;;;;2288:6:0;;::::1;::::0;2267:40:::1;::::0;2304:1;;2267:40:::1;2335:1;2318:19:::0;;-1:-1:-1;;;;;;2318:19:0::1;::::0;;2197:148::o;12621:245::-;12696:19;;-1:-1:-1;;;;;12696:19:0;822:10;-1:-1:-1;;;;;12680:35:0;;:72;;;-1:-1:-1;12735:17:0;;-1:-1:-1;;;;;12735:17:0;822:10;-1:-1:-1;;;;;12719:33:0;;12680:72;12672:81;;;;;;12764:23;12790:24;12808:4;12790:9;:24::i;:::-;12764:50;;12825:33;12842:15;12825:16;:33::i;17139:139::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;17230:19:::1;:40:::0;17139:139::o;16706:425::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;16832:10:::1;:22:::0;;;16865:11:::1;:24:::0;;;16900:12:::1;:26:::0;;;16937:13:::1;:28:::0;;;-1:-1:-1;16953:12:0;16915:11;16995:24:::1;16879:10:::0;16845:9;16995:24:::1;:::i;:::-;:39;;;;:::i;:::-;:55;;;;:::i;:::-;16976:74;;17082:2;17070:8;:14;;17061:62;;;::::0;-1:-1:-1;;;17061:62:0;;7299:2:1;17061:62:0::1;::::0;::::1;7281:21:1::0;7338:2;7318:18;;;7311:30;7377:34;7357:18;;;7350:62;-1:-1:-1;;;7428:18:1;;;7421:32;7470:19;;17061:62:0::1;7097:398:1::0;17061:62:0::1;16821:310;16706:425:::0;;;;:::o;7702:199::-;7807:4;7829:42;822:10;7853:9;7864:6;7829:9;:42::i;17572:183::-;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;17692:3:::1;17666:23;17676:13:::0;5252:18:::1;17666:23;:::i;:::-;:29;;;;:::i;:::-;17649:14;:46:::0;17733:13:::1;17743:3;5252:18;17733:13;:::i;:::-;17715:14;;:31;;17706:41;;;::::0;::::1;17391:173:::0;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;17503:3:::1;17479:21;17489:11:::0;5252:18:::1;17479:21;:::i;:::-;:27;;;;:::i;:::-;17464:12;:42:::0;17542:13:::1;17552:3;5252:18;17542:13;:::i;:::-;17526:12;;:29;;17517:39;;;::::0;::::1;2353:240:::0;2110:6;;-1:-1:-1;;;;;2110:6:0;822:10;2110:22;2102:67;;;;-1:-1:-1;;;2102:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2442:22:0;::::1;2434:69;;;::::0;-1:-1:-1;;;2434:69:0;;8097:2:1;2434:69:0::1;::::0;::::1;8079:21:1::0;8136:2;8116:18;;;8109:30;8175:34;8155:18;;;8148:62;-1:-1:-1;;;8226:18:1;;;8219:32;8268:19;;2434:69:0::1;7895:398:1::0;2434:69:0::1;2540:6;::::0;;2519:38:::1;::::0;-1:-1:-1;;;;;2519:38:0;;::::1;::::0;2540:6;::::1;::::0;2519:38:::1;::::0;::::1;2568:6;:17:::0;;-1:-1:-1;;;;;;2568:17:0::1;-1:-1:-1::0;;;;;2568:17:0;;;::::1;::::0;;;::::1;::::0;;2353:240::o;9415:361::-;-1:-1:-1;;;;;9542:19:0;;9534:64;;;;-1:-1:-1;;;9534:64:0;;8500:2:1;9534:64:0;;;8482:21:1;;;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;8630:18;;9534:64:0;8298:356:1;9534:64:0;-1:-1:-1;;;;;9617:21:0;;9609:64;;;;-1:-1:-1;;;9609:64:0;;8861:2:1;9609:64:0;;;8843:21:1;8900:2;8880:18;;;8873:30;8939:32;8919:18;;;8912:60;8989:18;;9609:64:0;8659:354:1;9609:64:0;-1:-1:-1;;;;;9684:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9736:32;;3041:25:1;;;9736:32:0;;3014:18:1;9736:32:0;;;;;;;9415:361;;;:::o;9784:2231::-;-1:-1:-1;;;;;9906:18:0;;9898:64;;;;-1:-1:-1;;;9898:64:0;;9220:2:1;9898:64:0;;;9202:21:1;9259:2;9239:18;;;9232:30;9298:34;9278:18;;;9271:62;-1:-1:-1;;;9349:18:1;;;9342:31;9390:19;;9898:64:0;9018:397:1;9898:64:0;-1:-1:-1;;;;;9981:16:0;;9973:60;;;;-1:-1:-1;;;9973:60:0;;9622:2:1;9973:60:0;;;9604:21:1;9661:2;9641:18;;;9634:30;9700:33;9680:18;;;9673:61;9751:18;;9973:60:0;9420:355:1;9973:60:0;10061:1;10052:6;:10;10044:64;;;;-1:-1:-1;;;10044:64:0;;9982:2:1;10044:64:0;;;9964:21:1;10021:2;10001:18;;;9994:30;10060:34;10040:18;;;10033:62;-1:-1:-1;;;10111:18:1;;;10104:39;10160:19;;10044:64:0;9780:405:1;10044:64:0;2021:7;2048:6;-1:-1:-1;;;;;10125:15:0;;;2048:6;;10125:15;;;;:32;;-1:-1:-1;2021:7:0;2048:6;-1:-1:-1;;;;;10144:13:0;;;2048:6;;10144:13;;10125:32;10121:1265;;;10179:11;;-1:-1:-1;;;10179:11:0;;;;10174:144;;2021:7;2048:6;-1:-1:-1;;;;;10219:15:0;;;2048:6;;10219:15;10211:91;;;;-1:-1:-1;;;10211:91:0;;10392:2:1;10211:91:0;;;10374:21:1;10431:2;10411:18;;;10404:30;10470:34;10450:18;;;10443:62;10541:33;10521:18;;;10514:61;10592:19;;10211:91:0;10190:427:1;10211:91:0;10352:12;;10342:6;:22;;10334:63;;;;-1:-1:-1;;;10334:63:0;;10824:2:1;10334:63:0;;;10806:21:1;10863:2;10843:18;;;10836:30;10902;10882:18;;;10875:58;10950:18;;10334:63:0;10622:352:1;10334:63:0;-1:-1:-1;;;;;10421:10:0;;;;;;:4;:10;;;;;;;;10420:11;:24;;;;-1:-1:-1;;;;;;10436:8:0;;;;;;:4;:8;;;;;;;;10435:9;10420:24;10412:71;;;;-1:-1:-1;;;10412:71:0;;11181:2:1;10412:71:0;;;11163:21:1;11220:2;11200:18;;;11193:30;11259:34;11239:18;;;11232:62;-1:-1:-1;;;11310:18:1;;;11303:32;11352:19;;10412:71:0;10979:398:1;10412:71:0;10510:13;;-1:-1:-1;;;;;10504:19:0;;;10510:13;;10504:19;10500:146;;10577:14;;10568:6;10552:13;10562:2;10552:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10544:86;;;;-1:-1:-1;;;10544:86:0;;11584:2:1;10544:86:0;;;11566:21:1;11623:2;11603:18;;;11596:30;11662:34;11642:18;;;11635:62;-1:-1:-1;;;11713:18:1;;;11706:32;11755:19;;10544:86:0;11382:398:1;10544:86:0;10662:28;10693:24;10711:4;10693:9;:24::i;:::-;10771:19;;10662:55;;-1:-1:-1;10747:43:0;;;;;10835:23;;10857:1;10835:23;:::i;:::-;10811:20;:47;10807:134;;10902:19;;:23;;10924:1;10902:23;:::i;:::-;10879:46;;10807:134;10961:7;:18;;;;-1:-1:-1;10973:6:0;;-1:-1:-1;;;10973:6:0;;;;10972:7;10961:18;:43;;;;-1:-1:-1;10991:13:0;;-1:-1:-1;;;;;10983:21:0;;;10991:13;;10983:21;;10961:43;:58;;;;-1:-1:-1;11008:11:0;;-1:-1:-1;;;11008:11:0;;;;10961:58;:94;;;;-1:-1:-1;;;;;;11024:31:0;;;;;;:25;:31;;;;;;;;11023:32;10961:94;:128;;;;-1:-1:-1;;;;;;11060:29:0;;;;;;:25;:29;;;;;;;;11059:30;10961:128;10957:418;;;11110:38;11127:20;11110:16;:38::i;:::-;11196:21;11263:17;11242:38;;11238:122;;;11305:35;11318:21;11305:12;:35::i;:::-;11091:284;10957:418;10159:1227;;10121:1265;-1:-1:-1;;;;;11435:31:0;;11398:12;11435:31;;;:25;:31;;;;;;11413:4;;11435:31;;;:64;;-1:-1:-1;;;;;;11470:29:0;;;;;;:25;:29;;;;;;;;11435:64;11434:116;;;-1:-1:-1;11513:13:0;;-1:-1:-1;;;;;11505:21:0;;;11513:13;;11505:21;;;;:44;;-1:-1:-1;11536:13:0;;-1:-1:-1;;;;;11530:19:0;;;11536:13;;11530:19;;11505:44;11430:524;;;-1:-1:-1;11577:5:0;11430:524;;;11627:13;;-1:-1:-1;;;;;11619:21:0;;;11627:13;;11619:21;:55;;;;-1:-1:-1;11658:15:0;;-1:-1:-1;;;;;11644:30:0;;;11658:15;;11644:30;;11619:55;11615:155;;;11703:10;;11695:5;:18;11742:12;;11732:7;:22;11615:155;11796:13;;-1:-1:-1;;;;;11790:19:0;;;11796:13;;11790:19;:55;;;;-1:-1:-1;11829:15:0;;-1:-1:-1;;;;;11813:32:0;;;11829:15;;11813:32;;11790:55;11786:157;;;11874:11;;11866:5;:19;11914:13;;11904:7;:23;11786:157;11966:41;11981:4;11987:2;11991:6;11999:7;11966:14;:41::i;2955:224::-;3075:7;3111:12;3103:6;;;;3095:29;;;;-1:-1:-1;;;3095:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3135:9:0;3147:5;3151:1;3147;:5;:::i;:::-;3135:17;2955:224;-1:-1:-1;;;;;2955:224:0:o;12514:99::-;12571:17;;:34;;-1:-1:-1;;;;;12571:17:0;;;;:34;;;;;12598:6;;12571:17;:34;:17;:34;12598:6;12571:17;:34;;;;;;;;;;;;;;;;;;;8756:323;8851:7;8909;;8898;:18;;8876:110;;;;-1:-1:-1;;;8876:110:0;;12117:2:1;8876:110:0;;;12099:21:1;12156:2;12136:18;;;12129:30;12195:34;12175:18;;;12168:62;-1:-1:-1;;;12246:18:1;;;12239:40;12296:19;;8876:110:0;11915:406:1;8876:110:0;8997:19;9019:10;:8;:10::i;:::-;8997:32;-1:-1:-1;9047:24:0;:7;8997:32;9047:11;:24::i;:::-;9040:31;8756:323;-1:-1:-1;;;8756:323:0:o;12023:483::-;6444:6;:13;;-1:-1:-1;;;;6444:13:0;-1:-1:-1;;;6444:13:0;;;12125:16:::1;::::0;;12139:1:::1;12125:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12125:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12125:16:0::1;12101:40;;12170:4;12152;12157:1;12152:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12152:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12196:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12196:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12152:7;;12196:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12186:4;12191:1;12186:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12186:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12261:15:::1;::::0;12229:62:::1;::::0;12246:4:::1;::::0;12261:15:::1;12279:11:::0;12229:8:::1;:62::i;:::-;12302:15;::::0;:196:::1;::::0;-1:-1:-1;;;12302:196:0;;-1:-1:-1;;;;;12302:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12383:11;;12302:15:::1;::::0;12425:4;;12452::::1;::::0;12472:15:::1;::::0;12302:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6480:6:0;:14;;-1:-1:-1;;;;6480:14:0;;;-1:-1:-1;;;;12023:483:0:o;13314:286::-;13470:7;13465:28;;13479:14;:12;:14::i;:::-;13506:44;13524:6;13532:9;13543:6;13506:17;:44::i;:::-;13568:7;13563:29;;13577:15;9350:13;;9342:5;:21;9384:15;;9374:7;:25;9298:109;16267:164;16309:7;16330:15;16347;16366:19;:17;:19::i;:::-;16329:56;;-1:-1:-1;16329:56:0;-1:-1:-1;16403:20:0;16329:56;;16403:11;:20::i;:::-;16396:27;;;;16267:164;:::o;3417:132::-;3475:7;3502:39;3506:1;3509;3502:39;;;;;;;;;;;;;;;;;:3;:39::i;9087:203::-;9134:5;;:10;:26;;;;-1:-1:-1;9148:7:0;;:12;9134:26;9130:39;;;9087:203::o;9130:39::-;9197:5;;;9181:13;:21;9231:7;;;9213:15;:25;9259:1;9251:9;;;;9271:11;9087:203::o;13608:610::-;13755:15;13785:23;13823:12;13850:23;13888:12;13915:13;13942:19;13953:7;13942:10;:19::i;:::-;-1:-1:-1;;;;;13990:15:0;;;;;;:7;:15;;;;;;13740:221;;-1:-1:-1;13740:221:0;;-1:-1:-1;13740:221:0;;-1:-1:-1;13740:221:0;-1:-1:-1;13740:221:0;-1:-1:-1;13740:221:0;-1:-1:-1;13990:28:0;;13740:221;13990:19;:28::i;:::-;-1:-1:-1;;;;;13972:15:0;;;;;;;:7;:15;;;;;;:46;;;;14050:18;;;;;;;:39;;14073:15;14050:22;:39::i;:::-;-1:-1:-1;;;;;14029:18:0;;;;;;:7;:18;;;;;:60;14100:16;14110:5;14100:9;:16::i;:::-;14127:23;14139:4;14145;14127:11;:23::i;:::-;14183:9;-1:-1:-1;;;;;14166:44:0;14175:6;-1:-1:-1;;;;;14166:44:0;;14194:15;14166:44;;;;3041:25:1;;3029:2;3014:18;;2895:177;14166:44:0;;;;;;;;13729:489;;;;;;13608:610;;;:::o;16439:259::-;16537:7;;16490;;;;5252:18;16607:20;16537:7;5252:18;16607:11;:20::i;:::-;16597:7;:30;16593:61;;;-1:-1:-1;;16637:7:0;;;5252:18;;-1:-1:-1;16439:259:0;-1:-1:-1;16439:259:0:o;16593:61::-;16673:7;;16682;;-1:-1:-1;16439:259:0;-1:-1:-1;16439:259:0:o;3557:223::-;3677:7;3712:12;3705:5;3697:28;;;;-1:-1:-1;;;3697:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3736:9:0;3748:5;3752:1;3748;:5;:::i;14637:611::-;14737:7;14759;14781;14803;14825;14847;14883:23;14908:12;14922:13;14952:36;14964:7;14973:5;;14980:7;;14952:11;:36::i;:::-;14882:106;;;;;;14999:19;15021:10;:8;:10::i;:::-;14999:32;;15043:15;15060:23;15085:12;15114:46;15126:7;15135:4;15141:5;15148:11;15114;:46::i;:::-;15042:118;;-1:-1:-1;15042:118:0;-1:-1:-1;15042:118:0;-1:-1:-1;15211:15:0;;-1:-1:-1;15228:4:0;;-1:-1:-1;15234:5:0;;-1:-1:-1;;;;;14637:611:0;;;;;;;:::o;2811:136::-;2869:7;2896:43;2900:1;2903;2896:43;;;;;;;;;;;;;;;;;:3;:43::i;2624:179::-;2682:7;;2714:5;2718:1;2714;:5;:::i;:::-;2702:17;;2743:1;2738;:6;;2730:46;;;;-1:-1:-1;;;2730:46:0;;13769:2:1;2730:46:0;;;13751:21:1;13808:2;13788:18;;;13781:30;13847:29;13827:18;;;13820:57;13894:18;;2730:46:0;13567:351:1;14226:211:0;14279:19;14301:10;:8;:10::i;:::-;14279:32;-1:-1:-1;14322:13:0;14338:22;:5;14279:32;14338:9;:22::i;:::-;14412:4;14396:22;;;;:7;:22;;;;;;14322:38;;-1:-1:-1;14396:33:0;;14322:38;14396:26;:33::i;:::-;14387:4;14371:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14226:211:0:o;14445:147::-;14523:7;;:17;;14535:4;14523:11;:17::i;:::-;14513:7;:27;14564:10;;:20;;14579:4;14564:14;:20::i;:::-;14551:10;:33;-1:-1:-1;;14445:147:0:o;15256:461::-;15421:7;;;;15515:26;15537:3;15515:17;:7;15527:4;15515:11;:17::i;:::-;:21;;:26::i;:::-;15500:41;-1:-1:-1;15552:13:0;15568:28;15592:3;15568:19;:7;15580:6;15568:11;:19::i;:28::-;15552:44;-1:-1:-1;15607:23:0;15633:28;15552:44;15633:17;:7;15645:4;15633:11;:17::i;:::-;:21;;:28::i;:::-;15607:54;15697:4;;-1:-1:-1;15703:5:0;;-1:-1:-1;15256:461:0;;-1:-1:-1;;;;;15256:461:0:o;15725:534::-;15919:7;;;;16016:24;:7;16028:11;16016;:24::i;:::-;15998:42;-1:-1:-1;16051:12:0;16066:21;:4;16075:11;16066:8;:21::i;:::-;16051:36;-1:-1:-1;16098:13:0;16114:22;:5;16124:11;16114:9;:22::i;:::-;16098:38;-1:-1:-1;16147:23:0;16173:28;16098:38;16173:17;:7;16185:4;16173:11;:17::i;:28::-;16220:7;;;;-1:-1:-1;16246:4:0;;-1:-1:-1;15725:534:0;;-1:-1:-1;;;;;;;15725:534:0:o;3187:222::-;3245:7;3269:6;3265:20;;-1:-1:-1;3284:1:0;3277:8;;3265:20;3298:9;3310:5;3314:1;3310;:5;:::i;:::-;3298:17;-1:-1:-1;3343:1:0;3334:5;3338:1;3298:17;3334:5;:::i;:::-;:10;3326:56;;;;-1:-1:-1;;;3326:56:0;;14125:2:1;3326:56:0;;;14107:21:1;14164:2;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;-1:-1:-1;;;14254:18:1;;;14247:31;14295:19;;3326:56:0;13923:397:1;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:134;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:597::-;1659:4;1688:2;1717;1706:9;1699:21;1749:6;1743:13;1792:6;1787:2;1776:9;1772:18;1765:34;1817:1;1827:140;1841:6;1838:1;1835:13;1827:140;;;1936:14;;;1932:23;;1926:30;1902:17;;;1921:2;1898:26;1891:66;1856:10;;1827:140;;;1985:6;1982:1;1979:13;1976:91;;;2055:1;2050:2;2041:6;2030:9;2026:22;2022:31;2015:42;1976:91;-1:-1:-1;2128:2:1;2107:15;-1:-1:-1;;2103:29:1;2088:45;;;;2135:2;2084:54;;1547:597;-1:-1:-1;;;1547:597:1:o;2149:315::-;2217:6;2225;2278:2;2266:9;2257:7;2253:23;2249:32;2246:52;;;2294:1;2291;2284:12;2246:52;2333:9;2320:23;2352:31;2377:5;2352:31;:::i;:::-;2402:5;2454:2;2439:18;;;;2426:32;;-1:-1:-1;;;2149:315:1:o;3077:247::-;3136:6;3189:2;3177:9;3168:7;3164:23;3160:32;3157:52;;;3205:1;3202;3195:12;3157:52;3244:9;3231:23;3263:31;3288:5;3263:31;:::i;3329:456::-;3406:6;3414;3422;3475:2;3463:9;3454:7;3450:23;3446:32;3443:52;;;3491:1;3488;3481:12;3443:52;3530:9;3517:23;3549:31;3574:5;3549:31;:::i;:::-;3599:5;-1:-1:-1;3656:2:1;3641:18;;3628:32;3669:33;3628:32;3669:33;:::i;:::-;3329:456;;3721:7;;-1:-1:-1;;;3775:2:1;3760:18;;;;3747:32;;3329:456::o;3790:160::-;3855:20;;3911:13;;3904:21;3894:32;;3884:60;;3940:1;3937;3930:12;3955:689;4047:6;4055;4063;4116:2;4104:9;4095:7;4091:23;4087:32;4084:52;;;4132:1;4129;4122:12;4084:52;4172:9;4159:23;4201:18;4242:2;4234:6;4231:14;4228:34;;;4258:1;4255;4248:12;4228:34;4296:6;4285:9;4281:22;4271:32;;4341:7;4334:4;4330:2;4326:13;4322:27;4312:55;;4363:1;4360;4353:12;4312:55;4403:2;4390:16;4429:2;4421:6;4418:14;4415:34;;;4445:1;4442;4435:12;4415:34;4500:7;4493:4;4483:6;4480:1;4476:14;4472:2;4468:23;4464:34;4461:47;4458:67;;;4521:1;4518;4511:12;4458:67;4552:4;4544:13;;;;-1:-1:-1;4576:6:1;-1:-1:-1;4601:37:1;;4617:20;;;-1:-1:-1;4601:37:1;:::i;:::-;4591:47;;3955:689;;;;;:::o;5046:180::-;5102:6;5155:2;5143:9;5134:7;5130:23;5126:32;5123:52;;;5171:1;5168;5161:12;5123:52;5194:26;5210:9;5194:26;:::i;5231:180::-;5290:6;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;-1:-1:-1;5382:23:1;;5231:180;-1:-1:-1;5231:180:1:o;5416:385::-;5502:6;5510;5518;5526;5579:3;5567:9;5558:7;5554:23;5550:33;5547:53;;;5596:1;5593;5586:12;5547:53;-1:-1:-1;;5619:23:1;;;5689:2;5674:18;;5661:32;;-1:-1:-1;5740:2:1;5725:18;;5712:32;;5791:2;5776:18;5763:32;;-1:-1:-1;5416:385:1;-1:-1:-1;5416:385:1:o;5806:388::-;5874:6;5882;5935:2;5923:9;5914:7;5910:23;5906:32;5903:52;;;5951:1;5948;5941:12;5903:52;5990:9;5977:23;6009:31;6034:5;6009:31;:::i;:::-;6059:5;-1:-1:-1;6116:2:1;6101:18;;6088:32;6129:33;6088:32;6129:33;:::i;:::-;6181:7;6171:17;;;5806:388;;;;;:::o;6199:356::-;6401:2;6383:21;;;6420:18;;;6413:30;6479:34;6474:2;6459:18;;6452:62;6546:2;6531:18;;6199:356::o;6560:127::-;6621:10;6616:3;6612:20;6609:1;6602:31;6652:4;6649:1;6642:15;6676:4;6673:1;6666:15;6692:127;6753:10;6748:3;6744:20;6741:1;6734:31;6784:4;6781:1;6774:15;6808:4;6805:1;6798:15;6824:135;6863:3;-1:-1:-1;;6884:17:1;;6881:43;;;6904:18;;:::i;:::-;-1:-1:-1;6951:1:1;6940:13;;6824:135::o;6964:128::-;7004:3;7035:1;7031:6;7028:1;7025:13;7022:39;;;7041:18;;:::i;:::-;-1:-1:-1;7077:9:1;;6964:128::o;7500:168::-;7540:7;7606:1;7602;7598:6;7594:14;7591:1;7588:21;7583:1;7576:9;7569:17;7565:45;7562:71;;;7613:18;;:::i;:::-;-1:-1:-1;7653:9:1;;7500:168::o;7673:217::-;7713:1;7739;7729:132;;7783:10;7778:3;7774:20;7771:1;7764:31;7818:4;7815:1;7808:15;7846:4;7843:1;7836:15;7729:132;-1:-1:-1;7875:9:1;;7673:217::o;11785:125::-;11825:4;11853:1;11850;11847:8;11844:34;;;11858:18;;:::i;:::-;-1:-1:-1;11895:9:1;;11785:125::o;12326:251::-;12396:6;12449:2;12437:9;12428:7;12424:23;12420:32;12417:52;;;12465:1;12462;12455:12;12417:52;12497:9;12491:16;12516:31;12541:5;12516:31;:::i;12582:980::-;12844:4;12892:3;12881:9;12877:19;12923:6;12912:9;12905:25;12949:2;12987:6;12982:2;12971:9;12967:18;12960:34;13030:3;13025:2;13014:9;13010:18;13003:31;13054:6;13089;13083:13;13120:6;13112;13105:22;13158:3;13147:9;13143:19;13136:26;;13197:2;13189:6;13185:15;13171:29;;13218:1;13228:195;13242:6;13239:1;13236:13;13228:195;;;13307:13;;-1:-1:-1;;;;;13303:39:1;13291:52;;13398:15;;;;13363:12;;;;13339:1;13257:9;13228:195;;;-1:-1:-1;;;;;;;13479:32:1;;;;13474:2;13459:18;;13452:60;-1:-1:-1;;;13543:3:1;13528:19;13521:35;13440:3;12582:980;-1:-1:-1;;;12582:980:1:o

Swarm Source

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