ETH Price: $3,388.68 (+1.70%)

Token

Bundle Tools (BUNDLE)
 

Overview

Max Total Supply

100,000,000 BUNDLE

Holders

98

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,500,000 BUNDLE

Value
$0.00
0x1917de2c035f3214bdf35d599d34c340a4caa714
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:
BundleTools

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-19
*/

/**
BundleTools makes it easier for anyone to work with blockchain technology.

$BUNDLE 5% BUY, 5% SELL, 0% TRANSFER!

Telegram: https://t.me/BundleTools
Twitter: https://twitter.com/BundleTools
Whitepaper: https://bundletoolsofficial.gitbook.io/bundletools-usdbundle/
Website: https://bundletools.tech/
Linkt: https://linktr.ee/bundletoolsofficial

*/

// SPDX-License-Identifier: unlicense

pragma solidity ^0.8.15;
 
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 the 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 BundleTools is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Bundle Tools";
    string private constant _symbol = "BUNDLE";
    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 _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000* 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public launchBlock;
 
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
 
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 25;
 
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
 
    address payable private _revshareAddress = payable(0x29e9f034daA3b7354c7Edf1eb6B19D7DFfF35C2f);
    address payable private _marketingAddress = payable(0x3DF587f0F34Df8eE214cE12765836f2e764466Ff);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = _tTotal.mul(20).div(1000); 
    uint256 public _maxWalletSize = _tTotal.mul(20).div(1000); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(5).div(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());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_revshareAddress] = true;
        _isExcludedFromFee[_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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
 
    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 (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    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");
            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 >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    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 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 {
        _revshareAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }
 
    function openTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
        launchBlock = block.number;
    }
 
    function manualswap() external {
        require(_msgSender() == _revshareAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _revshareAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function setBlacklist(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[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, _redisFee, _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 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 _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 reduceTax(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
 
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function noMax () external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
 
    function setMaxTX(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
 
    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

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":[],"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":"","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":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"noMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"reduceTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","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":"_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":"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"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a67016345785d8a00006000196200052a565b620000289060001962000557565b600655600060098190556019600a819055600b829055600c819055600d829055600e819055600f91909155601055601380546001600160a01b03199081167329e9f034daa3b7354c7edf1eb6b19d7dfff35c2f1790915560148054909116733df587f0f34df8ee214ce12765836f2e764466ff1781556016805461ffff60a81b1916600160b01b179055620000f3906103e890620000df9067016345785d8a00009062000bdc620003f7602090811b91909117901c565b6200048e60201b62000c651790919060201c565b601755620001206103e8620000df601467016345785d8a0000620003f760201b62000bdc1790919060201c565b6018556200014d6103e8620000df600567016345785d8a0000620003f760201b62000bdc1790919060201c565b6019553480156200015d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024191906200056d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b591906200056d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000303573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032991906200056d565b601680546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601354851684528284208054821683179055601454909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620003e891815260200190565b60405180910390a35062000619565b6000826000036200040b5750600062000488565b600062000419838562000598565b905082620004288583620005b2565b14620004855760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200048583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004d860201b60201c565b60008183620004fc5760405162461bcd60e51b81526004016200047c9190620005c9565b5060006200050b8486620005b2565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826200053c576200053c62000514565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111562000488576200048862000541565b6000602082840312156200058057600080fd5b81516001600160a01b03811681146200048557600080fd5b808202811582820484141762000488576200048862000541565b600082620005c457620005c462000514565b500490565b600060208083528351808285015260005b81811015620005f857858101830151858201604001528201620005da565b506000604082860101526040601f19601f8301168501019250505092915050565b611e8280620006296000396000f3fe6080604052600436106101dc5760003560e01c806370a0823111610102578063bf77249111610095578063d00efb2f11610064578063d00efb2f1461056d578063dd62ed3e14610583578063f2fde38b146105c9578063fe00e0df146105e957600080fd5b8063bf772491146104e8578063bfd7928414610508578063c3c8cd8014610538578063c492f0461461054d57600080fd5b80638f9a55c0116100d15780638f9a55c01461046357806395d89b411461047957806398a5c315146104a8578063a9059cbb146104c857600080fd5b806370a08231146103fa578063715018a61461041a5780637d1db4a51461042f5780638da5cb5b1461044557600080fd5b80632fd689e31161017a5780635d0044ca116101495780635d0044ca146103855780636b999053146103a55780636d8aa8f8146103c55780636fc3eaec146103e557600080fd5b80632fd689e314610313578063313ce56714610329578063333c39a51461034557806349bd5a5e1461036557600080fd5b806318160ddd116101b657806318160ddd14610297578063204b916e146102bc57806323b872dd146102d35780632a9b8072146102f357600080fd5b806306fdde03146101e8578063095ea7b31461022f5780631694505e1461025f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600c81526b42756e646c6520546f6f6c7360a01b60208201525b60405161022691906119b2565b60405180910390f35b34801561023b57600080fd5b5061024f61024a366004611a25565b610609565b6040519015158152602001610226565b34801561026b57600080fd5b5060155461027f906001600160a01b031681565b6040516001600160a01b039091168152602001610226565b3480156102a357600080fd5b5067016345785d8a00005b604051908152602001610226565b3480156102c857600080fd5b506102d1610620565b005b3480156102df57600080fd5b5061024f6102ee366004611a51565b610666565b3480156102ff57600080fd5b506102d161030e366004611aa2565b6106cf565b34801561031f57600080fd5b506102ae60195481565b34801561033557600080fd5b5060405160098152602001610226565b34801561035157600080fd5b506102d1610360366004611abd565b61071b565b34801561037157600080fd5b5060165461027f906001600160a01b031681565b34801561039157600080fd5b506102d16103a0366004611abd565b61074a565b3480156103b157600080fd5b506102d16103c0366004611ad6565b610779565b3480156103d157600080fd5b506102d16103e0366004611aa2565b6107c4565b3480156103f157600080fd5b506102d161080c565b34801561040657600080fd5b506102ae610415366004611ad6565b610857565b34801561042657600080fd5b506102d1610879565b34801561043b57600080fd5b506102ae60175481565b34801561045157600080fd5b506000546001600160a01b031661027f565b34801561046f57600080fd5b506102ae60185481565b34801561048557600080fd5b5060408051808201909152600681526542554e444c4560d01b6020820152610219565b3480156104b457600080fd5b506102d16104c3366004611abd565b6108ed565b3480156104d457600080fd5b5061024f6104e3366004611a25565b61091c565b3480156104f457600080fd5b506102d1610503366004611b09565b610929565b34801561051457600080fd5b5061024f610523366004611ad6565b60116020526000908152604090205460ff1681565b34801561054457600080fd5b506102d16109bf565b34801561055957600080fd5b506102d1610568366004611bce565b610a13565b34801561057957600080fd5b506102ae60085481565b34801561058f57600080fd5b506102ae61059e366004611c52565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105d557600080fd5b506102d16105e4366004611ad6565b610ab4565b3480156105f557600080fd5b506102d1610604366004611c8b565b610b9e565b6000610616338484610ca7565b5060015b92915050565b6000546001600160a01b031633146106535760405162461bcd60e51b815260040161064a90611cbd565b60405180910390fd5b67016345785d8a00006017819055601855565b6000610673848484610dcb565b6106c584336106c085604051806060016040528060288152602001611e25602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611307565b610ca7565b5060019392505050565b6000546001600160a01b031633146106f95760405162461bcd60e51b815260040161064a90611cbd565b60168054911515600160a01b0260ff60a01b1990921691909117905543600855565b6000546001600160a01b031633146107455760405162461bcd60e51b815260040161064a90611cbd565b601755565b6000546001600160a01b031633146107745760405162461bcd60e51b815260040161064a90611cbd565b601855565b6000546001600160a01b031633146107a35760405162461bcd60e51b815260040161064a90611cbd565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b031633146107ee5760405162461bcd60e51b815260040161064a90611cbd565b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061084157506014546001600160a01b0316336001600160a01b0316145b61084a57600080fd5b4761085481611341565b50565b6001600160a01b03811660009081526002602052604081205461061a906113c6565b6000546001600160a01b031633146108a35760405162461bcd60e51b815260040161064a90611cbd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109175760405162461bcd60e51b815260040161064a90611cbd565b601955565b6000610616338484610dcb565b6000546001600160a01b031633146109535760405162461bcd60e51b815260040161064a90611cbd565b60005b81518110156109bb5760016011600084848151811061097757610977611cf2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109b381611d1e565b915050610956565b5050565b6013546001600160a01b0316336001600160a01b031614806109f457506014546001600160a01b0316336001600160a01b0316145b6109fd57600080fd5b6000610a0830610857565b905061085481611443565b6000546001600160a01b03163314610a3d5760405162461bcd60e51b815260040161064a90611cbd565b60005b82811015610aae578160056000868685818110610a5f57610a5f611cf2565b9050602002016020810190610a749190611ad6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610aa681611d1e565b915050610a40565b50505050565b6000546001600160a01b03163314610ade5760405162461bcd60e51b815260040161064a90611cbd565b6001600160a01b038116610b435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bc85760405162461bcd60e51b815260040161064a90611cbd565b600993909355600b91909155600a55600c55565b600082600003610bee5750600061061a565b6000610bfa8385611d37565b905082610c078583611d4e565b14610c5e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161064a565b9392505050565b6000610c5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115bd565b6001600160a01b038316610d095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064a565b6001600160a01b038216610d6a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064a565b6001600160a01b038216610e915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161064a565b60008111610ef35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161064a565b6000546001600160a01b03848116911614801590610f1f57506000546001600160a01b03838116911614155b1561120057601654600160a01b900460ff16610fb8576000546001600160a01b03848116911614610fb85760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161064a565b60175481111561100a5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161064a565b6001600160a01b03831660009081526011602052604090205460ff1615801561104c57506001600160a01b03821660009081526011602052604090205460ff16155b6110a45760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161064a565b6016546001600160a01b0383811691161461112957601854816110c684610857565b6110d09190611d70565b106111295760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161064a565b600061113430610857565b60195460175491925082101590821061114d5760175491505b8080156111645750601654600160a81b900460ff16155b801561117e57506016546001600160a01b03868116911614155b80156111935750601654600160b01b900460ff165b80156111b857506001600160a01b03851660009081526005602052604090205460ff16155b80156111dd57506001600160a01b03841660009081526005602052604090205460ff16155b156111fd576111eb82611443565b4780156111fb576111fb47611341565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061124257506001600160a01b03831660009081526005602052604090205460ff165b8061127457506016546001600160a01b0385811691161480159061127457506016546001600160a01b03848116911614155b15611281575060006112fb565b6016546001600160a01b0385811691161480156112ac57506015546001600160a01b03848116911614155b156112be57600954600d55600a54600e555b6016546001600160a01b0384811691161480156112e957506015546001600160a01b03858116911614155b156112fb57600b54600d55600c54600e555b610aae848484846115eb565b6000818484111561132b5760405162461bcd60e51b815260040161064a91906119b2565b5060006113388486611d83565b95945050505050565b6013546001600160a01b03166108fc61135b836002610c65565b6040518115909202916000818181858888f19350505050158015611383573d6000803e3d6000fd5b506014546001600160a01b03166108fc61139e836002610c65565b6040518115909202916000818181858888f193505050501580156109bb573d6000803e3d6000fd5b600060065482111561142d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161064a565b6000611437611619565b9050610c5e8382610c65565b6016805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061148b5761148b611cf2565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115089190611d96565b8160018151811061151b5761151b611cf2565b6001600160a01b0392831660209182029290920101526015546115419130911684610ca7565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac9479061157a908590600090869030904290600401611db3565b600060405180830381600087803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b600081836115de5760405162461bcd60e51b815260040161064a91906119b2565b5060006113388486611d4e565b806115f8576115f861163c565b61160384848461166a565b80610aae57610aae600f54600d55601054600e55565b6000806000611626611761565b90925090506116358282610c65565b9250505090565b600d5415801561164c5750600e54155b1561165357565b600d8054600f55600e805460105560009182905555565b60008060008060008061167c876117a1565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506116ae90876117fe565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546116dd9086611840565b6001600160a01b0389166000908152600260205260409020556116ff8161189f565b61170984836118e9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161174e91815260200190565b60405180910390a3505050505050505050565b600654600090819067016345785d8a000061177c8282610c65565b8210156117985750506006549267016345785d8a000092509050565b90939092509050565b60008060008060008060008060006117be8a600d54600e5461190d565b92509250925060006117ce611619565b905060008060006117e18e878787611962565b919e509c509a509598509396509194505050505091939550919395565b6000610c5e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611307565b60008061184d8385611d70565b905083811015610c5e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161064a565b60006118a9611619565b905060006118b78383610bdc565b306000908152600260205260409020549091506118d49082611840565b30600090815260026020526040902055505050565b6006546118f690836117fe565b6006556007546119069082611840565b6007555050565b600080808061192760646119218989610bdc565b90610c65565b9050600061193a60646119218a89610bdc565b905060006119528261194c8b866117fe565b906117fe565b9992985090965090945050505050565b60008080806119718886610bdc565b9050600061197f8887610bdc565b9050600061198d8888610bdc565b9050600061199f8261194c86866117fe565b939b939a50919850919650505050505050565b600060208083528351808285015260005b818110156119df578581018301518582016040015282016119c3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461085457600080fd5b8035611a2081611a00565b919050565b60008060408385031215611a3857600080fd5b8235611a4381611a00565b946020939093013593505050565b600080600060608486031215611a6657600080fd5b8335611a7181611a00565b92506020840135611a8181611a00565b929592945050506040919091013590565b80358015158114611a2057600080fd5b600060208284031215611ab457600080fd5b610c5e82611a92565b600060208284031215611acf57600080fd5b5035919050565b600060208284031215611ae857600080fd5b8135610c5e81611a00565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611b1c57600080fd5b823567ffffffffffffffff80821115611b3457600080fd5b818501915085601f830112611b4857600080fd5b813581811115611b5a57611b5a611af3565b8060051b604051601f19603f83011681018181108582111715611b7f57611b7f611af3565b604052918252848201925083810185019188831115611b9d57600080fd5b938501935b82851015611bc257611bb385611a15565b84529385019392850192611ba2565b98975050505050505050565b600080600060408486031215611be357600080fd5b833567ffffffffffffffff80821115611bfb57600080fd5b818601915086601f830112611c0f57600080fd5b813581811115611c1e57600080fd5b8760208260051b8501011115611c3357600080fd5b602092830195509350611c499186019050611a92565b90509250925092565b60008060408385031215611c6557600080fd5b8235611c7081611a00565b91506020830135611c8081611a00565b809150509250929050565b60008060008060808587031215611ca157600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d3057611d30611d08565b5060010190565b808202811582820484141761061a5761061a611d08565b600082611d6b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561061a5761061a611d08565b8181038181111561061a5761061a611d08565b600060208284031215611da857600080fd5b8151610c5e81611a00565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e035784516001600160a01b031683529383019391830191600101611dde565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200aa731f2da0474d857f970a9d8520114d6d2127df168fd15e4e4bdf6081aa73364736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806370a0823111610102578063bf77249111610095578063d00efb2f11610064578063d00efb2f1461056d578063dd62ed3e14610583578063f2fde38b146105c9578063fe00e0df146105e957600080fd5b8063bf772491146104e8578063bfd7928414610508578063c3c8cd8014610538578063c492f0461461054d57600080fd5b80638f9a55c0116100d15780638f9a55c01461046357806395d89b411461047957806398a5c315146104a8578063a9059cbb146104c857600080fd5b806370a08231146103fa578063715018a61461041a5780637d1db4a51461042f5780638da5cb5b1461044557600080fd5b80632fd689e31161017a5780635d0044ca116101495780635d0044ca146103855780636b999053146103a55780636d8aa8f8146103c55780636fc3eaec146103e557600080fd5b80632fd689e314610313578063313ce56714610329578063333c39a51461034557806349bd5a5e1461036557600080fd5b806318160ddd116101b657806318160ddd14610297578063204b916e146102bc57806323b872dd146102d35780632a9b8072146102f357600080fd5b806306fdde03146101e8578063095ea7b31461022f5780631694505e1461025f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600c81526b42756e646c6520546f6f6c7360a01b60208201525b60405161022691906119b2565b60405180910390f35b34801561023b57600080fd5b5061024f61024a366004611a25565b610609565b6040519015158152602001610226565b34801561026b57600080fd5b5060155461027f906001600160a01b031681565b6040516001600160a01b039091168152602001610226565b3480156102a357600080fd5b5067016345785d8a00005b604051908152602001610226565b3480156102c857600080fd5b506102d1610620565b005b3480156102df57600080fd5b5061024f6102ee366004611a51565b610666565b3480156102ff57600080fd5b506102d161030e366004611aa2565b6106cf565b34801561031f57600080fd5b506102ae60195481565b34801561033557600080fd5b5060405160098152602001610226565b34801561035157600080fd5b506102d1610360366004611abd565b61071b565b34801561037157600080fd5b5060165461027f906001600160a01b031681565b34801561039157600080fd5b506102d16103a0366004611abd565b61074a565b3480156103b157600080fd5b506102d16103c0366004611ad6565b610779565b3480156103d157600080fd5b506102d16103e0366004611aa2565b6107c4565b3480156103f157600080fd5b506102d161080c565b34801561040657600080fd5b506102ae610415366004611ad6565b610857565b34801561042657600080fd5b506102d1610879565b34801561043b57600080fd5b506102ae60175481565b34801561045157600080fd5b506000546001600160a01b031661027f565b34801561046f57600080fd5b506102ae60185481565b34801561048557600080fd5b5060408051808201909152600681526542554e444c4560d01b6020820152610219565b3480156104b457600080fd5b506102d16104c3366004611abd565b6108ed565b3480156104d457600080fd5b5061024f6104e3366004611a25565b61091c565b3480156104f457600080fd5b506102d1610503366004611b09565b610929565b34801561051457600080fd5b5061024f610523366004611ad6565b60116020526000908152604090205460ff1681565b34801561054457600080fd5b506102d16109bf565b34801561055957600080fd5b506102d1610568366004611bce565b610a13565b34801561057957600080fd5b506102ae60085481565b34801561058f57600080fd5b506102ae61059e366004611c52565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105d557600080fd5b506102d16105e4366004611ad6565b610ab4565b3480156105f557600080fd5b506102d1610604366004611c8b565b610b9e565b6000610616338484610ca7565b5060015b92915050565b6000546001600160a01b031633146106535760405162461bcd60e51b815260040161064a90611cbd565b60405180910390fd5b67016345785d8a00006017819055601855565b6000610673848484610dcb565b6106c584336106c085604051806060016040528060288152602001611e25602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611307565b610ca7565b5060019392505050565b6000546001600160a01b031633146106f95760405162461bcd60e51b815260040161064a90611cbd565b60168054911515600160a01b0260ff60a01b1990921691909117905543600855565b6000546001600160a01b031633146107455760405162461bcd60e51b815260040161064a90611cbd565b601755565b6000546001600160a01b031633146107745760405162461bcd60e51b815260040161064a90611cbd565b601855565b6000546001600160a01b031633146107a35760405162461bcd60e51b815260040161064a90611cbd565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b031633146107ee5760405162461bcd60e51b815260040161064a90611cbd565b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061084157506014546001600160a01b0316336001600160a01b0316145b61084a57600080fd5b4761085481611341565b50565b6001600160a01b03811660009081526002602052604081205461061a906113c6565b6000546001600160a01b031633146108a35760405162461bcd60e51b815260040161064a90611cbd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109175760405162461bcd60e51b815260040161064a90611cbd565b601955565b6000610616338484610dcb565b6000546001600160a01b031633146109535760405162461bcd60e51b815260040161064a90611cbd565b60005b81518110156109bb5760016011600084848151811061097757610977611cf2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109b381611d1e565b915050610956565b5050565b6013546001600160a01b0316336001600160a01b031614806109f457506014546001600160a01b0316336001600160a01b0316145b6109fd57600080fd5b6000610a0830610857565b905061085481611443565b6000546001600160a01b03163314610a3d5760405162461bcd60e51b815260040161064a90611cbd565b60005b82811015610aae578160056000868685818110610a5f57610a5f611cf2565b9050602002016020810190610a749190611ad6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610aa681611d1e565b915050610a40565b50505050565b6000546001600160a01b03163314610ade5760405162461bcd60e51b815260040161064a90611cbd565b6001600160a01b038116610b435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bc85760405162461bcd60e51b815260040161064a90611cbd565b600993909355600b91909155600a55600c55565b600082600003610bee5750600061061a565b6000610bfa8385611d37565b905082610c078583611d4e565b14610c5e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161064a565b9392505050565b6000610c5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115bd565b6001600160a01b038316610d095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064a565b6001600160a01b038216610d6a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064a565b6001600160a01b038216610e915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161064a565b60008111610ef35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161064a565b6000546001600160a01b03848116911614801590610f1f57506000546001600160a01b03838116911614155b1561120057601654600160a01b900460ff16610fb8576000546001600160a01b03848116911614610fb85760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161064a565b60175481111561100a5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161064a565b6001600160a01b03831660009081526011602052604090205460ff1615801561104c57506001600160a01b03821660009081526011602052604090205460ff16155b6110a45760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161064a565b6016546001600160a01b0383811691161461112957601854816110c684610857565b6110d09190611d70565b106111295760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161064a565b600061113430610857565b60195460175491925082101590821061114d5760175491505b8080156111645750601654600160a81b900460ff16155b801561117e57506016546001600160a01b03868116911614155b80156111935750601654600160b01b900460ff165b80156111b857506001600160a01b03851660009081526005602052604090205460ff16155b80156111dd57506001600160a01b03841660009081526005602052604090205460ff16155b156111fd576111eb82611443565b4780156111fb576111fb47611341565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061124257506001600160a01b03831660009081526005602052604090205460ff165b8061127457506016546001600160a01b0385811691161480159061127457506016546001600160a01b03848116911614155b15611281575060006112fb565b6016546001600160a01b0385811691161480156112ac57506015546001600160a01b03848116911614155b156112be57600954600d55600a54600e555b6016546001600160a01b0384811691161480156112e957506015546001600160a01b03858116911614155b156112fb57600b54600d55600c54600e555b610aae848484846115eb565b6000818484111561132b5760405162461bcd60e51b815260040161064a91906119b2565b5060006113388486611d83565b95945050505050565b6013546001600160a01b03166108fc61135b836002610c65565b6040518115909202916000818181858888f19350505050158015611383573d6000803e3d6000fd5b506014546001600160a01b03166108fc61139e836002610c65565b6040518115909202916000818181858888f193505050501580156109bb573d6000803e3d6000fd5b600060065482111561142d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161064a565b6000611437611619565b9050610c5e8382610c65565b6016805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061148b5761148b611cf2565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115089190611d96565b8160018151811061151b5761151b611cf2565b6001600160a01b0392831660209182029290920101526015546115419130911684610ca7565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac9479061157a908590600090869030904290600401611db3565b600060405180830381600087803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b600081836115de5760405162461bcd60e51b815260040161064a91906119b2565b5060006113388486611d4e565b806115f8576115f861163c565b61160384848461166a565b80610aae57610aae600f54600d55601054600e55565b6000806000611626611761565b90925090506116358282610c65565b9250505090565b600d5415801561164c5750600e54155b1561165357565b600d8054600f55600e805460105560009182905555565b60008060008060008061167c876117a1565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506116ae90876117fe565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546116dd9086611840565b6001600160a01b0389166000908152600260205260409020556116ff8161189f565b61170984836118e9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161174e91815260200190565b60405180910390a3505050505050505050565b600654600090819067016345785d8a000061177c8282610c65565b8210156117985750506006549267016345785d8a000092509050565b90939092509050565b60008060008060008060008060006117be8a600d54600e5461190d565b92509250925060006117ce611619565b905060008060006117e18e878787611962565b919e509c509a509598509396509194505050505091939550919395565b6000610c5e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611307565b60008061184d8385611d70565b905083811015610c5e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161064a565b60006118a9611619565b905060006118b78383610bdc565b306000908152600260205260409020549091506118d49082611840565b30600090815260026020526040902055505050565b6006546118f690836117fe565b6006556007546119069082611840565b6007555050565b600080808061192760646119218989610bdc565b90610c65565b9050600061193a60646119218a89610bdc565b905060006119528261194c8b866117fe565b906117fe565b9992985090965090945050505050565b60008080806119718886610bdc565b9050600061197f8887610bdc565b9050600061198d8888610bdc565b9050600061199f8261194c86866117fe565b939b939a50919850919650505050505050565b600060208083528351808285015260005b818110156119df578581018301518582016040015282016119c3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461085457600080fd5b8035611a2081611a00565b919050565b60008060408385031215611a3857600080fd5b8235611a4381611a00565b946020939093013593505050565b600080600060608486031215611a6657600080fd5b8335611a7181611a00565b92506020840135611a8181611a00565b929592945050506040919091013590565b80358015158114611a2057600080fd5b600060208284031215611ab457600080fd5b610c5e82611a92565b600060208284031215611acf57600080fd5b5035919050565b600060208284031215611ae857600080fd5b8135610c5e81611a00565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611b1c57600080fd5b823567ffffffffffffffff80821115611b3457600080fd5b818501915085601f830112611b4857600080fd5b813581811115611b5a57611b5a611af3565b8060051b604051601f19603f83011681018181108582111715611b7f57611b7f611af3565b604052918252848201925083810185019188831115611b9d57600080fd5b938501935b82851015611bc257611bb385611a15565b84529385019392850192611ba2565b98975050505050505050565b600080600060408486031215611be357600080fd5b833567ffffffffffffffff80821115611bfb57600080fd5b818601915086601f830112611c0f57600080fd5b813581811115611c1e57600080fd5b8760208260051b8501011115611c3357600080fd5b602092830195509350611c499186019050611a92565b90509250925092565b60008060408385031215611c6557600080fd5b8235611c7081611a00565b91506020830135611c8081611a00565b809150509250929050565b60008060008060808587031215611ca157600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d3057611d30611d08565b5060010190565b808202811582820484141761061a5761061a611d08565b600082611d6b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561061a5761061a611d08565b8181038181111561061a5761061a611d08565b600060208284031215611da857600080fd5b8151610c5e81611a00565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e035784516001600160a01b031683529383019391830191600101611dde565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200aa731f2da0474d857f970a9d8520114d6d2127df168fd15e4e4bdf6081aa73364736f6c63430008120033

Deployed Bytecode Sourcemap

4467:13602:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7036:83;;;;;;;;;;-1:-1:-1;7106:5:0;;;;;;;;;;;;-1:-1:-1;;;7106:5:0;;;;7036:83;;;;;;;:::i;:::-;;;;;;;;7974:193;;;;;;;;;;-1:-1:-1;7974:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7974:193:0;1162:187:1;5849:41:0;;;;;;;;;;-1:-1:-1;5849:41:0;;;;-1:-1:-1;;;;;5849:41:0;;;;;;-1:-1:-1;;;;;1544:32:1;;;1526:51;;1514:2;1499:18;5849:41:0;1354:229:1;7227:95:0;;;;;;;;;;-1:-1:-1;5026:16:0;7227:95;;;1734:25:1;;;1722:2;1707:18;7227:95:0;1588:177:1;17481:112:0;;;;;;;;;;;;;:::i;:::-;;8176:446;;;;;;;;;;-1:-1:-1;8176:446:0;;;;;:::i;:::-;;:::i;12582:139::-;;;;;;;;;;-1:-1:-1;12582:139:0;;;;;:::i;:::-;;:::i;6169:61::-;;;;;;;;;;;;;;;;7331:83;;;;;;;;;;-1:-1:-1;7331:83:0;;4699:1;2723:36:1;;2711:2;2696:18;7331:83:0;2581:184:1;17602:101:0;;;;;;;;;;-1:-1:-1;17602:101:0;;;;;:::i;:::-;;:::i;5897:28::-;;;;;;;;;;-1:-1:-1;5897:28:0;;;;-1:-1:-1;;;;;5897:28:0;;;17712:111;;;;;;;;;;-1:-1:-1;17712:111:0;;;;;:::i;:::-;;:::i;13394:92::-;;;;;;;;;;-1:-1:-1;13394:92:0;;;;;:::i;:::-;;:::i;17372:101::-;;;;;;;;;;-1:-1:-1;17372:101:0;;;;;:::i;:::-;;:::i;12972:232::-;;;;;;;;;;;;;:::i;7426:138::-;;;;;;;;;;-1:-1:-1;7426:138:0;;;;;:::i;:::-;;:::i;1940:148::-;;;;;;;;;;;;;:::i;6041:55::-;;;;;;;;;;;;;;;;1724:79;;;;;;;;;;-1:-1:-1;1762:7:0;1789:6;-1:-1:-1;;;;;1789:6:0;1724:79;;6104:57;;;;;;;;;;;;;;;;7128:87;;;;;;;;;;-1:-1:-1;7200:7:0;;;;;;;;;;;;-1:-1:-1;;;7200:7:0;;;;7128:87;;17224:139;;;;;;;;;;-1:-1:-1;17224:139:0;;;;;:::i;:::-;;:::i;7573:199::-;;;;;;;;;;-1:-1:-1;7573:199:0;;;;;:::i;:::-;;:::i;13213:172::-;;;;;;;;;;-1:-1:-1;13213:172:0;;;;;:::i;:::-;;:::i;5546:36::-;;;;;;;;;;-1:-1:-1;5546:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12730:233;;;;;;;;;;;;;:::i;17832:234::-;;;;;;;;;;-1:-1:-1;17832:234:0;;;;;:::i;:::-;;:::i;5138:26::-;;;;;;;;;;;;;;;;7781:184;;;;;;;;;;-1:-1:-1;7781:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7930:18:0;;;7898:7;7930:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7781:184;2097:244;;;;;;;;;;-1:-1:-1;2097:244:0;;;;;:::i;:::-;;:::i;16918:297::-;;;;;;;;;;-1:-1:-1;16918:297:0;;;;;:::i;:::-;;:::i;7974:193::-;8076:4;8098:39;552:10;8121:7;8130:6;8098:8;:39::i;:::-;-1:-1:-1;8155:4:0;7974:193;;;;;:::o;17481:112::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;;;;;;;;;5026:16:::1;17528:12;:22:::0;;;17561:14:::1;:24:::0;17481:112::o;8176:446::-;8308:4;8325:36;8335:6;8343:9;8354:6;8325:9;:36::i;:::-;8372:220;8395:6;552:10;8443:138;8499:6;8443:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8443:19:0;;;;;;:11;:19;;;;;;;;552:10;8443:33;;;;;;;;;;:37;:138::i;:::-;8372:8;:220::i;:::-;-1:-1:-1;8610:4:0;8176:446;;;;;:::o;12582:139::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;12650:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12650:26:0::1;-1:-1:-1::0;;;;12650:26:0;;::::1;::::0;;;::::1;::::0;;12701:12:::1;12687:11;:26:::0;12582:139::o;17602:101::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;17669:12:::1;:26:::0;17602:101::o;17712:111::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;17785:14:::1;:30:::0;17712:111::o;13394:92::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13458:12:0::1;13473:5;13458:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13458:20:0::1;::::0;;13394:92::o;17372:101::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;17439:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17439:26:0::1;-1:-1:-1::0;;;;17439:26:0;;::::1;::::0;;;::::1;::::0;;17372:101::o;12972:232::-;13038:16;;-1:-1:-1;;;;;13038:16:0;552:10;-1:-1:-1;;;;;13022:32:0;;:69;;;-1:-1:-1;13074:17:0;;-1:-1:-1;;;;;13074:17:0;552:10;-1:-1:-1;;;;;13058:33:0;;13022:69;13014:78;;;;;;13132:21;13164:32;13132:21;13164:12;:32::i;:::-;13003:201;12972:232::o;7426:138::-;-1:-1:-1;;;;;7539:16:0;;7492:7;7539:16;;;:7;:16;;;;;;7519:37;;:19;:37::i;1940:148::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;2047:1:::1;2031:6:::0;;2010:40:::1;::::0;-1:-1:-1;;;;;2031:6:0;;::::1;::::0;2010:40:::1;::::0;2047:1;;2010:40:::1;2078:1;2061:19:::0;;-1:-1:-1;;;;;;2061:19:0::1;::::0;;1940:148::o;17224:139::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;17315:19:::1;:40:::0;17224:139::o;7573:199::-;7678:4;7700:42;552:10;7724:9;7735:6;7700:9;:42::i;13213:172::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;13292:9:::1;13287:91;13311:5;:12;13307:1;:16;13287:91;;;13362:4;13345;:14;13350:5;13356:1;13350:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13345:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13345:14:0;:21;;-1:-1:-1;;13345:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13325:3;::::1;::::0;::::1;:::i;:::-;;;;13287:91;;;;13213:172:::0;:::o;12730:233::-;12796:16;;-1:-1:-1;;;;;12796:16:0;552:10;-1:-1:-1;;;;;12780:32:0;;:69;;;-1:-1:-1;12832:17:0;;-1:-1:-1;;;;;12832:17:0;552:10;-1:-1:-1;;;;;12816:33:0;;12780:69;12772:78;;;;;;12861:23;12887:24;12905:4;12887:9;:24::i;:::-;12861:50;;12922:33;12939:15;12922:16;:33::i;17832:234::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;17949:9:::1;17945:114;17964:19:::0;;::::1;17945:114;;;18039:8;18005:18;:31;18024:8;;18033:1;18024:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18005:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18005:31:0;:42;;-1:-1:-1;;18005:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17985:3;::::1;::::0;::::1;:::i;:::-;;;;17945:114;;;;17832:234:::0;;;:::o;2097:244::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2186:22:0;::::1;2178:73;;;::::0;-1:-1:-1;;;2178:73:0;;7117:2:1;2178:73:0::1;::::0;::::1;7099:21:1::0;7156:2;7136:18;;;7129:30;7195:34;7175:18;;;7168:62;-1:-1:-1;;;7246:18:1;;;7239:36;7292:19;;2178:73:0::1;6915:402:1::0;2178:73:0::1;2288:6;::::0;;2267:38:::1;::::0;-1:-1:-1;;;;;2267:38:0;;::::1;::::0;2288:6;::::1;::::0;2267:38:::1;::::0;::::1;2316:6;:17:::0;;-1:-1:-1;;;;;;2316:17:0::1;-1:-1:-1::0;;;;;2316:17:0;;;::::1;::::0;;;::::1;::::0;;2097:244::o;16918:297::-;1852:6;;-1:-1:-1;;;;;1852:6:0;552:10;1852:22;1844:67;;;;-1:-1:-1;;;1844:67:0;;;;;;;:::i;:::-;17055:14:::1;:30:::0;;;;17096:15:::1;:32:::0;;;;17142:12:::1;:26:::0;17179:13:::1;:28:::0;16918:297::o;2942:246::-;3000:7;3024:1;3029;3024:6;3020:47;;-1:-1:-1;3054:1:0;3047:8;;3020:47;3077:9;3089:5;3093:1;3089;:5;:::i;:::-;3077:17;-1:-1:-1;3122:1:0;3113:5;3117:1;3077:17;3113:5;:::i;:::-;:10;3105:56;;;;-1:-1:-1;;;3105:56:0;;7919:2:1;3105:56:0;;;7901:21:1;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:1;;;8041:31;8089:19;;3105:56:0;7717:397:1;3105:56:0;3179:1;2942:246;-1:-1:-1;;;2942:246:0:o;3197:132::-;3255:7;3282:39;3286:1;3289;3282:39;;;;;;;;;;;;;;;;;:3;:39::i;9319:369::-;-1:-1:-1;;;;;9446:19:0;;9438:68;;;;-1:-1:-1;;;9438:68:0;;8321:2:1;9438:68:0;;;8303:21:1;8360:2;8340:18;;;8333:30;8399:34;8379:18;;;8372:62;-1:-1:-1;;;8450:18:1;;;8443:34;8494:19;;9438:68:0;8119:400:1;9438:68:0;-1:-1:-1;;;;;9525:21:0;;9517:68;;;;-1:-1:-1;;;9517:68:0;;8726:2:1;9517:68:0;;;8708:21:1;8765:2;8745:18;;;8738:30;8804:34;8784:18;;;8777:62;-1:-1:-1;;;8855:18:1;;;8848:32;8897:19;;9517:68:0;8524:398:1;9517:68:0;-1:-1:-1;;;;;9596:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9648:32;;1734:25:1;;;9648:32:0;;1707:18:1;9648:32:0;;;;;;;9319:369;;;:::o;9697:2218::-;-1:-1:-1;;;;;9819:18:0;;9811:68;;;;-1:-1:-1;;;9811:68:0;;9129:2:1;9811:68:0;;;9111:21:1;9168:2;9148:18;;;9141:30;9207:34;9187:18;;;9180:62;-1:-1:-1;;;9258:18:1;;;9251:35;9303:19;;9811:68:0;8927:401:1;9811:68:0;-1:-1:-1;;;;;9898:16:0;;9890:64;;;;-1:-1:-1;;;9890:64:0;;9535:2:1;9890:64:0;;;9517:21:1;9574:2;9554:18;;;9547:30;9613:34;9593:18;;;9586:62;-1:-1:-1;;;9664:18:1;;;9657:33;9707:19;;9890:64:0;9333:399:1;9890:64:0;9982:1;9973:6;:10;9965:64;;;;-1:-1:-1;;;9965:64:0;;9939:2:1;9965:64:0;;;9921:21:1;9978:2;9958:18;;;9951:30;10017:34;9997:18;;;9990:62;-1:-1:-1;;;10068:18:1;;;10061:39;10117:19;;9965:64:0;9737:405:1;9965:64:0;1762:7;1789:6;-1:-1:-1;;;;;10047:15:0;;;1789:6;;10047:15;;;;:32;;-1:-1:-1;1762:7:0;1789:6;-1:-1:-1;;;;;10066:13:0;;;1789:6;;10066:13;;10047:32;10043:1232;;;10104:11;;-1:-1:-1;;;10104:11:0;;;;10099:144;;1762:7;1789:6;-1:-1:-1;;;;;10144:15:0;;;1789:6;;10144:15;10136:91;;;;-1:-1:-1;;;10136:91:0;;10349:2:1;10136:91:0;;;10331:21:1;10388:2;10368:18;;;10361:30;10427:34;10407:18;;;10400:62;10498:33;10478:18;;;10471:61;10549:19;;10136:91:0;10147:427:1;10136:91:0;10278:12;;10268:6;:22;;10260:63;;;;-1:-1:-1;;;10260:63:0;;10781:2:1;10260:63:0;;;10763:21:1;10820:2;10800:18;;;10793:30;10859;10839:18;;;10832:58;10907:18;;10260:63:0;10579:352:1;10260:63:0;-1:-1:-1;;;;;10347:10:0;;;;;;:4;:10;;;;;;;;10346:11;:24;;;;-1:-1:-1;;;;;;10362:8:0;;;;;;:4;:8;;;;;;;;10361:9;10346:24;10338:72;;;;-1:-1:-1;;;10338:72:0;;11138:2:1;10338:72:0;;;11120:21:1;11177:2;11157:18;;;11150:30;11216:34;11196:18;;;11189:62;-1:-1:-1;;;11267:18:1;;;11260:33;11310:19;;10338:72:0;10936:399:1;10338:72:0;10437:13;;-1:-1:-1;;;;;10431:19:0;;;10437:13;;10431:19;10428:146;;10504:14;;10495:6;10479:13;10489:2;10479:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10471:87;;;;-1:-1:-1;;;10471:87:0;;11672:2:1;10471:87:0;;;11654:21:1;11711:2;11691:18;;;11684:30;11750:34;11730:18;;;11723:62;-1:-1:-1;;;11801:18:1;;;11794:33;11844:19;;10471:87:0;11470:399:1;10471:87:0;10591:28;10622:24;10640:4;10622:9;:24::i;:::-;10700:19;;10764:12;;10591:55;;-1:-1:-1;10676:43:0;;;;10740:36;;10737:124;;10833:12;;10810:35;;10737:124;10882:7;:18;;;;-1:-1:-1;10894:6:0;;-1:-1:-1;;;10894:6:0;;;;10893:7;10882:18;:43;;;;-1:-1:-1;10912:13:0;;-1:-1:-1;;;;;10904:21:0;;;10912:13;;10904:21;;10882:43;:58;;;;-1:-1:-1;10929:11:0;;-1:-1:-1;;;10929:11:0;;;;10882:58;:87;;;;-1:-1:-1;;;;;;10945:24:0;;;;;;:18;:24;;;;;;;;10944:25;10882:87;:114;;;;-1:-1:-1;;;;;;10974:22:0;;;;;;:18;:22;;;;;;;;10973:23;10882:114;10878:386;;;11017:38;11034:20;11017:16;:38::i;:::-;11103:21;11147:22;;11143:106;;11194:35;11207:21;11194:12;:35::i;:::-;10998:266;10878:386;10081:1194;;10043:1232;-1:-1:-1;;;;;11326:24:0;;11288:12;11326:24;;;:18;:24;;;;;;11303:4;;11326:24;;;:50;;-1:-1:-1;;;;;;11354:22:0;;;;;;:18;:22;;;;;;;;11326:50;11325:102;;;-1:-1:-1;11390:13:0;;-1:-1:-1;;;;;11382:21:0;;;11390:13;;11382:21;;;;:44;;-1:-1:-1;11413:13:0;;-1:-1:-1;;;;;11407:19:0;;;11413:13;;11407:19;;11382:44;11321:532;;;-1:-1:-1;11454:5:0;11321:532;;;11506:13;;-1:-1:-1;;;;;11498:21:0;;;11506:13;;11498:21;:55;;;;-1:-1:-1;11537:15:0;;-1:-1:-1;;;;;11523:30:0;;;11537:15;;11523:30;;11498:55;11495:162;;;11586:14;;11574:9;:26;11629:12;;11619:7;:22;11495:162;11684:13;;-1:-1:-1;;;;;11678:19:0;;;11684:13;;11678:19;:55;;;;-1:-1:-1;11717:15:0;;-1:-1:-1;;;;;11701:32:0;;;11717:15;;11701:32;;11678:55;11674:165;;;11766:15;;11754:9;:27;11810:13;;11800:7;:23;11674:165;11866:41;11881:4;11887:2;11891:6;11899:7;11866:14;:41::i;2709:224::-;2829:7;2865:12;2857:6;;;;2849:29;;;;-1:-1:-1;;;2849:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2889:9:0;2901:5;2905:1;2901;:5;:::i;:::-;2889:17;2709:224;-1:-1:-1;;;;;2709:224:0:o;12416:157::-;12473:16;;-1:-1:-1;;;;;12473:16:0;:40;12499:13;:6;12510:1;12499:10;:13::i;:::-;12473:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12524:17:0;;-1:-1:-1;;;;;12524:17:0;:41;12551:13;:6;12562:1;12551:10;:13::i;:::-;12524:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8631:323;8726:7;8784;;8773;:18;;8751:110;;;;-1:-1:-1;;;8751:110:0;;12209:2:1;8751:110:0;;;12191:21:1;12248:2;12228:18;;;12221:30;12287:34;12267:18;;;12260:62;-1:-1:-1;;;12338:18:1;;;12331:40;12388:19;;8751:110:0;12007:406:1;8751:110:0;8872:19;8894:10;:8;:10::i;:::-;8872:32;-1:-1:-1;8922:24:0;:7;8872:32;8922:11;:24::i;11924:483::-;6326:6;:13;;-1:-1:-1;;;;6326:13:0;-1:-1:-1;;;6326:13:0;;;12026:16:::1;::::0;;12040:1:::1;12026:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12026:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12026:16:0::1;12002:40;;12071:4;12053;12058:1;12053:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12053:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12097:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12097:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12053:7;;12097:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12087:4;12092:1;12087:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12087:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12162:15:::1;::::0;12130:62:::1;::::0;12147:4:::1;::::0;12162:15:::1;12180:11:::0;12130:8:::1;:62::i;:::-;12203:15;::::0;:196:::1;::::0;-1:-1:-1;;;12203:196:0;;-1:-1:-1;;;;;12203:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12284:11;;12203:15:::1;::::0;12326:4;;12353::::1;::::0;12373:15:::1;::::0;12203:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6362:6:0;:14;;-1:-1:-1;;;;6362:14:0;;;-1:-1:-1;;;;11924:483:0:o;3338:223::-;3458:7;3493:12;3486:5;3478:28;;;;-1:-1:-1;;;3478:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3517:9:0;3529:5;3533:1;3529;:5;:::i;13495:282::-;13651:7;13646:28;;13660:14;:12;:14::i;:::-;13685:44;13703:6;13711:9;13722:6;13685:17;:44::i;:::-;13745:7;13740:29;;13754:15;9249:17;;9237:9;:29;9287:15;;9277:7;:25;9193:117;16473:167;16515:7;16536:15;16553;16572:19;:17;:19::i;:::-;16535:56;;-1:-1:-1;16535:56:0;-1:-1:-1;16612:20:0;16535:56;;16612:11;:20::i;:::-;16605:27;;;;16473:167;:::o;8963:221::-;9010:9;;:14;:30;;;;-1:-1:-1;9028:7:0;;:12;9010:30;9006:43;;;8963:221::o;9006:43::-;9082:9;;;9062:17;:29;9120:7;;;9102:15;:25;-1:-1:-1;9141:13:0;;;;9165:11;8963:221::o;13786:610::-;13933:15;13963:23;14001:12;14028:23;14066:12;14093:13;14120:19;14131:7;14120:10;:19::i;:::-;-1:-1:-1;;;;;14168:15:0;;;;;;:7;:15;;;;;;13918:221;;-1:-1:-1;13918:221:0;;-1:-1:-1;13918:221:0;;-1:-1:-1;13918:221:0;-1:-1:-1;13918:221:0;-1:-1:-1;13918:221:0;-1:-1:-1;14168:28:0;;13918:221;14168:19;:28::i;:::-;-1:-1:-1;;;;;14150:15:0;;;;;;;:7;:15;;;;;;:46;;;;14228:18;;;;;;;:39;;14251:15;14228:22;:39::i;:::-;-1:-1:-1;;;;;14207:18:0;;;;;;:7;:18;;;;;:60;14278:16;14288:5;14278:9;:16::i;:::-;14305:23;14317:4;14323;14305:11;:23::i;:::-;14361:9;-1:-1:-1;;;;;14344:44:0;14353:6;-1:-1:-1;;;;;14344:44:0;;14372:15;14344:44;;;;1734:25:1;;1722:2;1707:18;;1588:177;14344:44:0;;;;;;;;13907:489;;;;;;13786:610;;;:::o;16649:260::-;16747:7;;16700;;;;5026:16;16815:20;16747:7;5026:16;16815:11;:20::i;:::-;16805:7;:30;16801:61;;;-1:-1:-1;;16845:7:0;;;5026:16;;-1:-1:-1;16649:260:0;-1:-1:-1;16649:260:0:o;16801:61::-;16884:7;;16893;;-1:-1:-1;16649:260:0;-1:-1:-1;16649:260:0:o;14819:618::-;14919:7;14941;14963;14985;15007;15029;15065:23;15090:12;15104:13;15134:40;15146:7;15155:9;;15166:7;;15134:11;:40::i;:::-;15064:110;;;;;;15185:19;15207:10;:8;:10::i;:::-;15185:32;;15229:15;15246:23;15271:12;15300:46;15312:7;15321:4;15327:5;15334:11;15300;:46::i;:::-;15228:118;;-1:-1:-1;15228:118:0;-1:-1:-1;15228:118:0;-1:-1:-1;15400:15:0;;-1:-1:-1;15417:4:0;;-1:-1:-1;15423:5:0;;-1:-1:-1;;;;;14819:618:0;;;;;;;:::o;2564:136::-;2622:7;2649:43;2653:1;2656;2649:43;;;;;;;;;;;;;;;;;:3;:43::i;2376:179::-;2434:7;;2466:5;2470:1;2466;:5;:::i;:::-;2454:17;;2495:1;2490;:6;;2482:46;;;;-1:-1:-1;;;2482:46:0;;13861:2:1;2482:46:0;;;13843:21:1;13900:2;13880:18;;;13873:30;13939:29;13919:18;;;13912:57;13986:18;;2482:46:0;13659:351:1;14405:211:0;14458:19;14480:10;:8;:10::i;:::-;14458:32;-1:-1:-1;14501:13:0;14517:22;:5;14458:32;14517:9;:22::i;:::-;14591:4;14575:22;;;;:7;:22;;;;;;14501:38;;-1:-1:-1;14575:33:0;;14501:38;14575:26;:33::i;:::-;14566:4;14550:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14405:211:0:o;14625:147::-;14703:7;;:17;;14715:4;14703:11;:17::i;:::-;14693:7;:27;14744:10;;:20;;14759:4;14744:14;:20::i;:::-;14731:10;:33;-1:-1:-1;;14625:147:0:o;15446:472::-;15615:7;;;;15709:30;15735:3;15709:21;:7;15721:8;15709:11;:21::i;:::-;:25;;:30::i;:::-;15694:45;-1:-1:-1;15750:13:0;15766:28;15790:3;15766:19;:7;15778:6;15766:11;:19::i;:28::-;15750:44;-1:-1:-1;15805:23:0;15831:28;15750:44;15831:17;:7;15843:4;15831:11;:17::i;:::-;:21;;:28::i;:::-;15805:54;15898:4;;-1:-1:-1;15904:5:0;;-1:-1:-1;15446:472:0;;-1:-1:-1;;;;;15446:472:0:o;15927:537::-;16121:7;;;;16218:24;:7;16230:11;16218;:24::i;:::-;16200:42;-1:-1:-1;16253:12:0;16268:21;:4;16277:11;16268:8;:21::i;:::-;16253:36;-1:-1:-1;16300:13:0;16316:22;:5;16326:11;16316:9;:22::i;:::-;16300:38;-1:-1:-1;16349:23:0;16375:28;16300:38;16375:17;:7;16387:4;16375:11;:17::i;:28::-;16425:7;;;;-1:-1:-1;16451:4:0;;-1:-1:-1;15927:537:0;;-1:-1:-1;;;;;;;15927:537:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1770:456::-;1847:6;1855;1863;1916:2;1904:9;1895:7;1891:23;1887:32;1884:52;;;1932:1;1929;1922:12;1884:52;1971:9;1958:23;1990:31;2015:5;1990:31;:::i;:::-;2040:5;-1:-1:-1;2097:2:1;2082:18;;2069:32;2110:33;2069:32;2110:33;:::i;:::-;1770:456;;2162:7;;-1:-1:-1;;;2216:2:1;2201:18;;;;2188:32;;1770:456::o;2231:160::-;2296:20;;2352:13;;2345:21;2335:32;;2325:60;;2381:1;2378;2371:12;2396:180;2452:6;2505:2;2493:9;2484:7;2480:23;2476:32;2473:52;;;2521:1;2518;2511:12;2473:52;2544:26;2560:9;2544:26;:::i;2770:180::-;2829:6;2882:2;2870:9;2861:7;2857:23;2853:32;2850:52;;;2898:1;2895;2888:12;2850:52;-1:-1:-1;2921:23:1;;2770:180;-1:-1:-1;2770:180:1:o;3163:247::-;3222:6;3275:2;3263:9;3254:7;3250:23;3246:32;3243:52;;;3291:1;3288;3281:12;3243:52;3330:9;3317:23;3349:31;3374:5;3349:31;:::i;3415:127::-;3476:10;3471:3;3467:20;3464:1;3457:31;3507:4;3504:1;3497:15;3531:4;3528:1;3521:15;3547:1121;3631:6;3662:2;3705;3693:9;3684:7;3680:23;3676:32;3673:52;;;3721:1;3718;3711:12;3673:52;3761:9;3748:23;3790:18;3831:2;3823:6;3820:14;3817:34;;;3847:1;3844;3837:12;3817:34;3885:6;3874:9;3870:22;3860:32;;3930:7;3923:4;3919:2;3915:13;3911:27;3901:55;;3952:1;3949;3942:12;3901:55;3988:2;3975:16;4010:2;4006;4003:10;4000:36;;;4016:18;;:::i;:::-;4062:2;4059:1;4055:10;4094:2;4088:9;4157:2;4153:7;4148:2;4144;4140:11;4136:25;4128:6;4124:38;4212:6;4200:10;4197:22;4192:2;4180:10;4177:18;4174:46;4171:72;;;4223:18;;:::i;:::-;4259:2;4252:22;4309:18;;;4343:15;;;;-1:-1:-1;4385:11:1;;;4381:20;;;4413:19;;;4410:39;;;4445:1;4442;4435:12;4410:39;4469:11;;;;4489:148;4505:6;4500:3;4497:15;4489:148;;;4571:23;4590:3;4571:23;:::i;:::-;4559:36;;4522:12;;;;4615;;;;4489:148;;;4656:6;3547:1121;-1:-1:-1;;;;;;;;3547:1121:1:o;4673:689::-;4765:6;4773;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4890:9;4877:23;4919:18;4960:2;4952:6;4949:14;4946:34;;;4976:1;4973;4966:12;4946:34;5014:6;5003:9;4999:22;4989:32;;5059:7;5052:4;5048:2;5044:13;5040:27;5030:55;;5081:1;5078;5071:12;5030:55;5121:2;5108:16;5147:2;5139:6;5136:14;5133:34;;;5163:1;5160;5153:12;5133:34;5218:7;5211:4;5201:6;5198:1;5194:14;5190:2;5186:23;5182:34;5179:47;5176:67;;;5239:1;5236;5229:12;5176:67;5270:4;5262:13;;;;-1:-1:-1;5294:6:1;-1:-1:-1;5319:37:1;;5335:20;;;-1:-1:-1;5319:37:1;:::i;:::-;5309:47;;4673:689;;;;;:::o;5367:388::-;5435:6;5443;5496:2;5484:9;5475:7;5471:23;5467:32;5464:52;;;5512:1;5509;5502:12;5464:52;5551:9;5538:23;5570:31;5595:5;5570:31;:::i;:::-;5620:5;-1:-1:-1;5677:2:1;5662:18;;5649:32;5690:33;5649:32;5690:33;:::i;:::-;5742:7;5732:17;;;5367:388;;;;;:::o;5760:385::-;5846:6;5854;5862;5870;5923:3;5911:9;5902:7;5898:23;5894:33;5891:53;;;5940:1;5937;5930:12;5891:53;-1:-1:-1;;5963:23:1;;;6033:2;6018:18;;6005:32;;-1:-1:-1;6084:2:1;6069:18;;6056:32;;6135:2;6120:18;6107:32;;-1:-1:-1;5760:385:1;-1:-1:-1;5760:385:1:o;6150:356::-;6352:2;6334:21;;;6371:18;;;6364:30;6430:34;6425:2;6410:18;;6403:62;6497:2;6482:18;;6150:356::o;6511:127::-;6572:10;6567:3;6563:20;6560:1;6553:31;6603:4;6600:1;6593:15;6627:4;6624:1;6617:15;6643:127;6704:10;6699:3;6695:20;6692:1;6685:31;6735:4;6732:1;6725:15;6759:4;6756:1;6749:15;6775:135;6814:3;6835:17;;;6832:43;;6855:18;;:::i;:::-;-1:-1:-1;6902:1:1;6891:13;;6775:135::o;7322:168::-;7395:9;;;7426;;7443:15;;;7437:22;;7423:37;7413:71;;7464:18;;:::i;7495:217::-;7535:1;7561;7551:132;;7605:10;7600:3;7596:20;7593:1;7586:31;7640:4;7637:1;7630:15;7668:4;7665:1;7658:15;7551:132;-1:-1:-1;7697:9:1;;7495:217::o;11340:125::-;11405:9;;;11426:10;;;11423:36;;;11439:18;;:::i;11874:128::-;11941:9;;;11962:11;;;11959:37;;;11976:18;;:::i;12418:251::-;12488:6;12541:2;12529:9;12520:7;12516:23;12512:32;12509:52;;;12557:1;12554;12547:12;12509:52;12589:9;12583:16;12608:31;12633:5;12608:31;:::i;12674:980::-;12936:4;12984:3;12973:9;12969:19;13015:6;13004:9;12997:25;13041:2;13079:6;13074:2;13063:9;13059:18;13052:34;13122:3;13117:2;13106:9;13102:18;13095:31;13146:6;13181;13175:13;13212:6;13204;13197:22;13250:3;13239:9;13235:19;13228:26;;13289:2;13281:6;13277:15;13263:29;;13310:1;13320:195;13334:6;13331:1;13328:13;13320:195;;;13399:13;;-1:-1:-1;;;;;13395:39:1;13383:52;;13490:15;;;;13455:12;;;;13431:1;13349:9;13320:195;;;-1:-1:-1;;;;;;;13571:32:1;;;;13566:2;13551:18;;13544:60;-1:-1:-1;;;13635:3:1;13620:19;13613:35;13532:3;12674:980;-1:-1:-1;;;12674:980:1:o

Swarm Source

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