ETH Price: $2,444.23 (+1.78%)

Token

Catereum (CATE)
 

Overview

Max Total Supply

1,000,000,000 CATE

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,935,234.150961286 CATE

Value
$0.00
0x00375c6ff668f7709e066da645d45b2df12482f2
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:
CATE

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
https://t.me/CatereumETH
*/
// 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 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 CATE is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Catereum";
    string private constant _symbol = "CATE";
    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 = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0x68661161CF7a2C5F48066F233Ca47bd69c420f3B);
    address payable private _marketingAddress = payable(0x68661161CF7a2C5F48066F233Ca47bd69c420f3B);

    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*4/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[_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 (_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()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

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

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

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

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 50000000000000000) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            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 {
        _marketingAddress.transfer(amount);
    }

    function manualsend() external {
        sendETHToFee(address(this).balance);
    }

    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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 10);
    }

    //Set maximum transaction
    function setMaxTxnAmount(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);
    }

}

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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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"}]

60806040526200001a670de0b6b3a7640000600019620003d3565b620000289060001962000400565b600655600060088190556005600955600a8190556014600b819055600c829055600d819055600e91909155600f819055601080547368661161cf7a2c5f48066f233ca47bd69c420f3b6001600160a01b031991821681179092556011805490911690911790556013805462ffffff60a01b19166201000160a01b179055670de0b6b3a764000090819055606490620000c29060026200041a565b620000ce91906200043c565b6015556103e8620000e9670de0b6b3a764000060046200041a565b620000f591906200043c565b6016553480156200010557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b158015620001be57600080fd5b505afa158015620001d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f9919062000453565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024257600080fd5b505afa15801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d919062000453565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002c657600080fd5b505af1158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000301919062000453565b601380546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601154909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620003ae91815260200190565b60405180910390a35062000485565b634e487b7160e01b600052601260045260246000fd5b600082620003e557620003e5620003bd565b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620004155762000415620003ea565b500390565b6000816000190483118215151615620004375762000437620003ea565b500290565b6000826200044e576200044e620003bd565b500490565b6000602082840312156200046657600080fd5b81516001600160a01b03811681146200047e57600080fd5b9392505050565b6117e380620004956000396000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab57806395d89b411161006f57806395d89b4114610332578063a2a957bb1461035f578063a9059cbb1461037f578063dd62ed3e1461039f578063ea1644d5146103e5578063f2fde38b1461040557600080fd5b8063715018a6146102b357806374010ece146102c85780637d1db4a5146102e85780638da5cb5b146102fe5780638f9a55c01461031c57600080fd5b80632fd689e3116100f25780632fd689e31461022a578063313ce5671461024057806349bd5a5e1461025c5780636fc3eaec1461027c57806370a082311461029357600080fd5b806306fdde031461013a578063095ea7b31461017d5780631694505e146101ad57806318160ddd146101e557806323b872dd1461020a57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b50604080518082019091526008815267436174657265756d60c01b60208201525b60405161017491906114ae565b60405180910390f35b34801561018957600080fd5b5061019d610198366004611518565b610425565b6040519015158152602001610174565b3480156101b957600080fd5b506012546101cd906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b3480156101f157600080fd5b50670de0b6b3a76400005b604051908152602001610174565b34801561021657600080fd5b5061019d610225366004611544565b61043c565b34801561023657600080fd5b506101fc60165481565b34801561024c57600080fd5b5060405160098152602001610174565b34801561026857600080fd5b506013546101cd906001600160a01b031681565b34801561028857600080fd5b506102916104a5565b005b34801561029f57600080fd5b506101fc6102ae366004611585565b6104b0565b3480156102bf57600080fd5b506102916104d2565b3480156102d457600080fd5b506102916102e33660046115a2565b61054f565b3480156102f457600080fd5b506101fc60145481565b34801561030a57600080fd5b506000546001600160a01b03166101cd565b34801561032857600080fd5b506101fc60155481565b34801561033e57600080fd5b506040805180820190915260048152634341544560e01b6020820152610167565b34801561036b57600080fd5b5061029161037a3660046115bb565b6105be565b34801561038b57600080fd5b5061019d61039a366004611518565b61062d565b3480156103ab57600080fd5b506101fc6103ba3660046115ed565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156103f157600080fd5b506102916104003660046115a2565b61063a565b34801561041157600080fd5b50610291610420366004611585565b6106a6565b6000610432338484610790565b5060015b92915050565b60006104498484846108b4565b61049b843361049685604051806060016040528060288152602001611786602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d73565b610790565b5060019392505050565b6104ae47610dad565b565b6001600160a01b03811660009081526002602052604081205461043690610deb565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004016104fc90611626565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105795760405162461bcd60e51b81526004016104fc90611626565b606461058d82670de0b6b3a7640000611671565b6105979190611690565b6014556105ad6064670de0b6b3a7640000611690565b60145410156105bb57600080fd5b50565b6000546001600160a01b031633146105e85760405162461bcd60e51b81526004016104fc90611626565b6008849055600a8381556009839055600b829055818361060886886116b2565b61061291906116b2565b61061c91906116b2565b111561062757600080fd5b50505050565b60006104323384846108b4565b6000546001600160a01b031633146106645760405162461bcd60e51b81526004016104fc90611626565b606461067882670de0b6b3a7640000611671565b6106829190611690565b6015556106986064670de0b6b3a7640000611690565b60155410156105bb57600080fd5b6000546001600160a01b031633146106d05760405162461bcd60e51b81526004016104fc90611626565b6001600160a01b0381166107355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104fc565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104fc565b6001600160a01b0382166108535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104fc565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109185760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104fc565b6001600160a01b03821661097a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104fc565b600081116109dc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104fc565b6000546001600160a01b03848116911614801590610a0857506000546001600160a01b03838116911614155b15610c6c57601354600160a01b900460ff16610aa1576000546001600160a01b03848116911614610aa15760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104fc565b601454811115610af35760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104fc565b6013546001600160a01b03838116911614610b785760155481610b15846104b0565b610b1f91906116b2565b10610b785760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104fc565b6000610b83306104b0565b6016549091508082101590610b99906002611671565b8210610bb057601654610bad906002611671565b91505b808015610bc75750601354600160a81b900460ff16155b8015610be157506013546001600160a01b03868116911614155b8015610bf65750601354600160b01b900460ff165b8015610c1b57506001600160a01b03851660009081526005602052604090205460ff16155b8015610c4057506001600160a01b03841660009081526005602052604090205460ff16155b15610c6957610c4e82610e6f565b4766b1a2bc2ec50000811115610c6757610c6781610dad565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610cae57506001600160a01b03831660009081526005602052604090205460ff165b80610ce057506013546001600160a01b03858116911614801590610ce057506013546001600160a01b03848116911614155b15610ced57506000610d67565b6013546001600160a01b038581169116148015610d1857506012546001600160a01b03848116911614155b15610d2a57600854600c55600954600d555b6013546001600160a01b038481169116148015610d5557506012546001600160a01b03858116911614155b15610d6757600a54600c55600b54600d555b61062784848484610ff8565b60008184841115610d975760405162461bcd60e51b81526004016104fc91906114ae565b506000610da484866116ca565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610de7573d6000803e3d6000fd5b5050565b6000600654821115610e525760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104fc565b6000610e5c611026565b9050610e688382611049565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610eb757610eb76116e1565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610f0b57600080fd5b505afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4391906116f7565b81600181518110610f5657610f566116e1565b6001600160a01b039283166020918202929092010152601254610f7c9130911684610790565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fb5908590600090869030904290600401611714565b600060405180830381600087803b158015610fcf57600080fd5b505af1158015610fe3573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b806110055761100561108b565b6110108484846110b9565b8061062757610627600e54600c55600f54600d55565b60008060006110336111b0565b90925090506110428282611049565b9250505090565b6000610e6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111f0565b600c5415801561109b5750600d54155b156110a257565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806110cb8761121e565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110fd908761127b565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461112c90866112bd565b6001600160a01b03891660009081526002602052604090205561114e8161131c565b6111588483611366565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119d91815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a76400006111cb8282611049565b8210156111e757505060065492670de0b6b3a764000092509050565b90939092509050565b600081836112115760405162461bcd60e51b81526004016104fc91906114ae565b506000610da48486611690565b600080600080600080600080600061123b8a600c54600d5461138a565b925092509250600061124b611026565b9050600080600061125e8e8787876113df565b919e509c509a509598509396509194505050505091939550919395565b6000610e6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d73565b6000806112ca83856116b2565b905083811015610e685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104fc565b6000611326611026565b90506000611334838361142f565b3060009081526002602052604090205490915061135190826112bd565b30600090815260026020526040902055505050565b600654611373908361127b565b60065560075461138390826112bd565b6007555050565b60008080806113a4606461139e898961142f565b90611049565b905060006113b7606461139e8a8961142f565b905060006113cf826113c98b8661127b565b9061127b565b9992985090965090945050505050565b60008080806113ee888661142f565b905060006113fc888761142f565b9050600061140a888861142f565b9050600061141c826113c9868661127b565b939b939a50919850919650505050505050565b60008261143e57506000610436565b600061144a8385611671565b9050826114578583611690565b14610e685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104fc565b600060208083528351808285015260005b818110156114db578581018301518582016040015282016114bf565b818111156114ed576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146105bb57600080fd5b6000806040838503121561152b57600080fd5b823561153681611503565b946020939093013593505050565b60008060006060848603121561155957600080fd5b833561156481611503565b9250602084013561157481611503565b929592945050506040919091013590565b60006020828403121561159757600080fd5b8135610e6881611503565b6000602082840312156115b457600080fd5b5035919050565b600080600080608085870312156115d157600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561160057600080fd5b823561160b81611503565b9150602083013561161b81611503565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561168b5761168b61165b565b500290565b6000826116ad57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156116c5576116c561165b565b500190565b6000828210156116dc576116dc61165b565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561170957600080fd5b8151610e6881611503565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117645784516001600160a01b03168352938301939183019160010161173f565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c7faa49fe55ea0062dcbb7ecc03e90aba25c4d9567aad657f521b7e0816f3f1f64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063715018a6116100ab57806395d89b411161006f57806395d89b4114610332578063a2a957bb1461035f578063a9059cbb1461037f578063dd62ed3e1461039f578063ea1644d5146103e5578063f2fde38b1461040557600080fd5b8063715018a6146102b357806374010ece146102c85780637d1db4a5146102e85780638da5cb5b146102fe5780638f9a55c01461031c57600080fd5b80632fd689e3116100f25780632fd689e31461022a578063313ce5671461024057806349bd5a5e1461025c5780636fc3eaec1461027c57806370a082311461029357600080fd5b806306fdde031461013a578063095ea7b31461017d5780631694505e146101ad57806318160ddd146101e557806323b872dd1461020a57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b50604080518082019091526008815267436174657265756d60c01b60208201525b60405161017491906114ae565b60405180910390f35b34801561018957600080fd5b5061019d610198366004611518565b610425565b6040519015158152602001610174565b3480156101b957600080fd5b506012546101cd906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b3480156101f157600080fd5b50670de0b6b3a76400005b604051908152602001610174565b34801561021657600080fd5b5061019d610225366004611544565b61043c565b34801561023657600080fd5b506101fc60165481565b34801561024c57600080fd5b5060405160098152602001610174565b34801561026857600080fd5b506013546101cd906001600160a01b031681565b34801561028857600080fd5b506102916104a5565b005b34801561029f57600080fd5b506101fc6102ae366004611585565b6104b0565b3480156102bf57600080fd5b506102916104d2565b3480156102d457600080fd5b506102916102e33660046115a2565b61054f565b3480156102f457600080fd5b506101fc60145481565b34801561030a57600080fd5b506000546001600160a01b03166101cd565b34801561032857600080fd5b506101fc60155481565b34801561033e57600080fd5b506040805180820190915260048152634341544560e01b6020820152610167565b34801561036b57600080fd5b5061029161037a3660046115bb565b6105be565b34801561038b57600080fd5b5061019d61039a366004611518565b61062d565b3480156103ab57600080fd5b506101fc6103ba3660046115ed565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156103f157600080fd5b506102916104003660046115a2565b61063a565b34801561041157600080fd5b50610291610420366004611585565b6106a6565b6000610432338484610790565b5060015b92915050565b60006104498484846108b4565b61049b843361049685604051806060016040528060288152602001611786602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d73565b610790565b5060019392505050565b6104ae47610dad565b565b6001600160a01b03811660009081526002602052604081205461043690610deb565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004016104fc90611626565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105795760405162461bcd60e51b81526004016104fc90611626565b606461058d82670de0b6b3a7640000611671565b6105979190611690565b6014556105ad6064670de0b6b3a7640000611690565b60145410156105bb57600080fd5b50565b6000546001600160a01b031633146105e85760405162461bcd60e51b81526004016104fc90611626565b6008849055600a8381556009839055600b829055818361060886886116b2565b61061291906116b2565b61061c91906116b2565b111561062757600080fd5b50505050565b60006104323384846108b4565b6000546001600160a01b031633146106645760405162461bcd60e51b81526004016104fc90611626565b606461067882670de0b6b3a7640000611671565b6106829190611690565b6015556106986064670de0b6b3a7640000611690565b60155410156105bb57600080fd5b6000546001600160a01b031633146106d05760405162461bcd60e51b81526004016104fc90611626565b6001600160a01b0381166107355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104fc565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104fc565b6001600160a01b0382166108535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104fc565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109185760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104fc565b6001600160a01b03821661097a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104fc565b600081116109dc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104fc565b6000546001600160a01b03848116911614801590610a0857506000546001600160a01b03838116911614155b15610c6c57601354600160a01b900460ff16610aa1576000546001600160a01b03848116911614610aa15760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104fc565b601454811115610af35760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104fc565b6013546001600160a01b03838116911614610b785760155481610b15846104b0565b610b1f91906116b2565b10610b785760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104fc565b6000610b83306104b0565b6016549091508082101590610b99906002611671565b8210610bb057601654610bad906002611671565b91505b808015610bc75750601354600160a81b900460ff16155b8015610be157506013546001600160a01b03868116911614155b8015610bf65750601354600160b01b900460ff165b8015610c1b57506001600160a01b03851660009081526005602052604090205460ff16155b8015610c4057506001600160a01b03841660009081526005602052604090205460ff16155b15610c6957610c4e82610e6f565b4766b1a2bc2ec50000811115610c6757610c6781610dad565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610cae57506001600160a01b03831660009081526005602052604090205460ff165b80610ce057506013546001600160a01b03858116911614801590610ce057506013546001600160a01b03848116911614155b15610ced57506000610d67565b6013546001600160a01b038581169116148015610d1857506012546001600160a01b03848116911614155b15610d2a57600854600c55600954600d555b6013546001600160a01b038481169116148015610d5557506012546001600160a01b03858116911614155b15610d6757600a54600c55600b54600d555b61062784848484610ff8565b60008184841115610d975760405162461bcd60e51b81526004016104fc91906114ae565b506000610da484866116ca565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610de7573d6000803e3d6000fd5b5050565b6000600654821115610e525760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104fc565b6000610e5c611026565b9050610e688382611049565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610eb757610eb76116e1565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610f0b57600080fd5b505afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4391906116f7565b81600181518110610f5657610f566116e1565b6001600160a01b039283166020918202929092010152601254610f7c9130911684610790565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fb5908590600090869030904290600401611714565b600060405180830381600087803b158015610fcf57600080fd5b505af1158015610fe3573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b806110055761100561108b565b6110108484846110b9565b8061062757610627600e54600c55600f54600d55565b60008060006110336111b0565b90925090506110428282611049565b9250505090565b6000610e6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111f0565b600c5415801561109b5750600d54155b156110a257565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806110cb8761121e565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110fd908761127b565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461112c90866112bd565b6001600160a01b03891660009081526002602052604090205561114e8161131c565b6111588483611366565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119d91815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a76400006111cb8282611049565b8210156111e757505060065492670de0b6b3a764000092509050565b90939092509050565b600081836112115760405162461bcd60e51b81526004016104fc91906114ae565b506000610da48486611690565b600080600080600080600080600061123b8a600c54600d5461138a565b925092509250600061124b611026565b9050600080600061125e8e8787876113df565b919e509c509a509598509396509194505050505091939550919395565b6000610e6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d73565b6000806112ca83856116b2565b905083811015610e685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104fc565b6000611326611026565b90506000611334838361142f565b3060009081526002602052604090205490915061135190826112bd565b30600090815260026020526040902055505050565b600654611373908361127b565b60065560075461138390826112bd565b6007555050565b60008080806113a4606461139e898961142f565b90611049565b905060006113b7606461139e8a8961142f565b905060006113cf826113c98b8661127b565b9061127b565b9992985090965090945050505050565b60008080806113ee888661142f565b905060006113fc888761142f565b9050600061140a888861142f565b9050600061141c826113c9868661127b565b939b939a50919850919650505050505050565b60008261143e57506000610436565b600061144a8385611671565b9050826114578583611690565b14610e685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104fc565b600060208083528351808285015260005b818110156114db578581018301518582016040015282016114bf565b818111156114ed576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146105bb57600080fd5b6000806040838503121561152b57600080fd5b823561153681611503565b946020939093013593505050565b60008060006060848603121561155957600080fd5b833561156481611503565b9250602084013561157481611503565b929592945050506040919091013590565b60006020828403121561159757600080fd5b8135610e6881611503565b6000602082840312156115b457600080fd5b5035919050565b600080600080608085870312156115d157600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561160057600080fd5b823561160b81611503565b9150602083013561161b81611503565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561168b5761168b61165b565b500290565b6000826116ad57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156116c5576116c561165b565b500190565b6000828210156116dc576116dc61165b565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561170957600080fd5b8151610e6881611503565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117645784516001600160a01b03168352938301939183019160010161173f565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c7faa49fe55ea0062dcbb7ecc03e90aba25c4d9567aad657f521b7e0816f3f1f64736f6c63430008090033

Deployed Bytecode Sourcemap

4103:12123:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6442:83;;;;;;;;;;-1:-1:-1;6512:5:0;;;;;;;;;;;;-1:-1:-1;;;6512:5:0;;;;6442:83;;;;;;;:::i;:::-;;;;;;;;7367:193;;;;;;;;;;-1:-1:-1;7367:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7367:193:0;1072:187:1;5353:41:0;;;;;;;;;;-1:-1:-1;5353:41:0;;;;-1:-1:-1;;;;;5353:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;5353:41:0;1264:229:1;6719:95:0;;;;;;;;;;-1:-1:-1;4646:18:0;6719:95;;;1644:25:1;;;1632:2;1617:18;6719:95:0;1498:177:1;7568:446:0;;;;;;;;;;-1:-1:-1;7568:446:0;;;;;:::i;:::-;;:::i;5646:51::-;;;;;;;;;;;;;;;;6628:83;;;;;;;;;;-1:-1:-1;6628:83:0;;4320:1;2283:36:1;;2271:2;2256:18;6628:83:0;2141:184:1;5401:28:0;;;;;;;;;;-1:-1:-1;5401:28:0;;;;-1:-1:-1;;;;;5401:28:0;;;11962:85;;;;;;;;;;;;;:::i;:::-;;6822:138;;;;;;;;;;-1:-1:-1;6822:138:0;;;;;:::i;:::-;;:::i;1590:148::-;;;;;;;;;;;;;:::i;15867:168::-;;;;;;;;;;-1:-1:-1;15867:168:0;;;;;:::i;:::-;;:::i;5550:37::-;;;;;;;;;;;;;;;;1376:79;;;;;;;;;;-1:-1:-1;1414:7:0;1441:6;-1:-1:-1;;;;;1441:6:0;1376:79;;5594:45;;;;;;;;;;;;;;;;6533:87;;;;;;;;;;-1:-1:-1;6605:7:0;;;;;;;;;;;;-1:-1:-1;;;6605:7:0;;;;6533:87;;15453:375;;;;;;;;;;-1:-1:-1;15453:375:0;;;;;:::i;:::-;;:::i;6968:199::-;;;;;;;;;;-1:-1:-1;6968:199:0;;;;;:::i;:::-;;:::i;7175:184::-;;;;;;;;;;-1:-1:-1;7175:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7324:18:0;;;7292:7;7324:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7175:184;16043:178;;;;;;;;;;-1:-1:-1;16043:178:0;;;;;:::i;:::-;;:::i;1746:244::-;;;;;;;;;;-1:-1:-1;1746:244:0;;;;;:::i;:::-;;:::i;7367:193::-;7469:4;7491:39;215:10;7514:7;7523:6;7491:8;:39::i;:::-;-1:-1:-1;7548:4:0;7367:193;;;;;:::o;7568:446::-;7700:4;7717:36;7727:6;7735:9;7746:6;7717:9;:36::i;:::-;7764:220;7787:6;215:10;7835:138;7891:6;7835:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7835:19:0;;;;;;:11;:19;;;;;;;;215:10;7835:33;;;;;;;;;;:37;:138::i;:::-;7764:8;:220::i;:::-;-1:-1:-1;8002:4:0;7568:446;;;;;:::o;11962:85::-;12004:35;12017:21;12004:12;:35::i;:::-;11962:85::o;6822:138::-;-1:-1:-1;;;;;6935:16:0;;6888:7;6935:16;;;:7;:16;;;;;;6915:37;;:19;:37::i;1590:148::-;1503:6;;-1:-1:-1;;;;;1503:6:0;215:10;1503:22;1495:67;;;;-1:-1:-1;;;1495:67:0;;;;;;;:::i;:::-;;;;;;;;;1697:1:::1;1681:6:::0;;1660:40:::1;::::0;-1:-1:-1;;;;;1681:6:0;;::::1;::::0;1660:40:::1;::::0;1697:1;;1660:40:::1;1728:1;1711:19:::0;;-1:-1:-1;;;;;;1711:19:0::1;::::0;;1590:148::o;15867:168::-;1503:6;;-1:-1:-1;;;;;1503:6:0;215:10;1503:22;1495:67;;;;-1:-1:-1;;;1495:67:0;;;;;;;:::i;:::-;15976:3:::1;15956:19;15964:11:::0;4646:18:::1;15956:19;:::i;:::-;:23;;;;:::i;:::-;15941:12;:38:::0;16015:11:::1;16023:3;4646:18;16015:11;:::i;:::-;15999:12;;:27;;15990:37;;;::::0;::::1;;15867:168:::0;:::o;15453:375::-;1503:6;;-1:-1:-1;;;;;1503:6:0;215:10;1503:22;1495:67;;;;-1:-1:-1;;;1495:67:0;;;;;;;:::i;:::-;15587:14:::1;:30:::0;;;15628:15:::1;:32:::0;;;15671:12:::1;:26:::0;;;15708:13:::1;:28:::0;;;15724:12;15686:11;15756:30:::1;15646:14:::0;15604:13;15756:30:::1;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;15747:73;;;::::0;::::1;;15453:375:::0;;;;:::o;6968:199::-;7073:4;7095:42;215:10;7119:9;7130:6;7095:9;:42::i;16043:178::-;1503:6;;-1:-1:-1;;;;;1503:6:0;215:10;1503:22;1495:67;;;;-1:-1:-1;;;1495:67:0;;;;;;;:::i;:::-;16159:3:::1;16137:21;16145:13:::0;4646:18:::1;16137:21;:::i;:::-;:25;;;;:::i;:::-;16120:14;:42:::0;16201:11:::1;16209:3;4646:18;16201:11;:::i;:::-;16183:14;;:29;;16174:39;;;::::0;::::1;1746:244:::0;1503:6;;-1:-1:-1;;;;;1503:6:0;215:10;1503:22;1495:67;;;;-1:-1:-1;;;1495:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1835:22:0;::::1;1827:73;;;::::0;-1:-1:-1;;;1827:73:0;;4981:2:1;1827:73:0::1;::::0;::::1;4963:21:1::0;5020:2;5000:18;;;4993:30;5059:34;5039:18;;;5032:62;-1:-1:-1;;;5110:18:1;;;5103:36;5156:19;;1827:73:0::1;4779:402:1::0;1827:73:0::1;1937:6;::::0;;1916:38:::1;::::0;-1:-1:-1;;;;;1916:38:0;;::::1;::::0;1937:6;::::1;::::0;1916:38:::1;::::0;::::1;1965:6;:17:::0;;-1:-1:-1;;;;;;1965:17:0::1;-1:-1:-1::0;;;;;1965:17:0;;;::::1;::::0;;;::::1;::::0;;1746:244::o;8705:369::-;-1:-1:-1;;;;;8832:19:0;;8824:68;;;;-1:-1:-1;;;8824:68:0;;5388:2:1;8824:68:0;;;5370:21:1;5427:2;5407:18;;;5400:30;5466:34;5446:18;;;5439:62;-1:-1:-1;;;5517:18:1;;;5510:34;5561:19;;8824:68:0;5186:400:1;8824:68:0;-1:-1:-1;;;;;8911:21:0;;8903:68;;;;-1:-1:-1;;;8903:68:0;;5793:2:1;8903:68:0;;;5775:21:1;5832:2;5812:18;;;5805:30;5871:34;5851:18;;;5844:62;-1:-1:-1;;;5922:18:1;;;5915:32;5964:19;;8903:68:0;5591:398:1;8903:68:0;-1:-1:-1;;;;;8982:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9034:32;;1644:25:1;;;9034:32:0;;1617:18:1;9034:32:0;;;;;;;8705:369;;;:::o;9082:2274::-;-1:-1:-1;;;;;9204:18:0;;9196:68;;;;-1:-1:-1;;;9196:68:0;;6196:2:1;9196:68:0;;;6178:21:1;6235:2;6215:18;;;6208:30;6274:34;6254:18;;;6247:62;-1:-1:-1;;;6325:18:1;;;6318:35;6370:19;;9196:68:0;5994:401:1;9196:68:0;-1:-1:-1;;;;;9283:16:0;;9275:64;;;;-1:-1:-1;;;9275:64:0;;6602:2:1;9275:64:0;;;6584:21:1;6641:2;6621:18;;;6614:30;6680:34;6660:18;;;6653:62;-1:-1:-1;;;6731:18:1;;;6724:33;6774:19;;9275:64:0;6400:399:1;9275:64:0;9367:1;9358:6;:10;9350:64;;;;-1:-1:-1;;;9350:64:0;;7006:2:1;9350:64:0;;;6988:21:1;7045:2;7025:18;;;7018:30;7084:34;7064:18;;;7057:62;-1:-1:-1;;;7135:18:1;;;7128:39;7184:19;;9350:64:0;6804:405:1;9350:64:0;1414:7;1441:6;-1:-1:-1;;;;;9431:15:0;;;1441:6;;9431:15;;;;:32;;-1:-1:-1;1414:7:0;1441:6;-1:-1:-1;;;;;9450:13:0;;;1441:6;;9450:13;;9431:32;9427:1203;;;9520:11;;-1:-1:-1;;;9520:11:0;;;;9515:144;;1414:7;1441:6;-1:-1:-1;;;;;9560:15:0;;;1441:6;;9560:15;9552:91;;;;-1:-1:-1;;;9552:91:0;;7416:2:1;9552:91:0;;;7398:21:1;7455:2;7435:18;;;7428:30;7494:34;7474:18;;;7467:62;7565:33;7545:18;;;7538:61;7616:19;;9552:91:0;7214:427:1;9552:91:0;9693:12;;9683:6;:22;;9675:63;;;;-1:-1:-1;;;9675:63:0;;7848:2:1;9675:63:0;;;7830:21:1;7887:2;7867:18;;;7860:30;7926;7906:18;;;7899:58;7974:18;;9675:63:0;7646:352:1;9675:63:0;9764:13;;-1:-1:-1;;;;;9758:19:0;;;9764:13;;9758:19;9755:146;;9831:14;;9822:6;9806:13;9816:2;9806:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9798:87;;;;-1:-1:-1;;;9798:87:0;;8205:2:1;9798:87:0;;;8187:21:1;8244:2;8224:18;;;8217:30;8283:34;8263:18;;;8256:62;-1:-1:-1;;;8334:18:1;;;8327:33;8377:19;;9798:87:0;8003:399:1;9798:87:0;9917:28;9948:24;9966:4;9948:9;:24::i;:::-;10026:19;;9917:55;;-1:-1:-1;10002:43:0;;;;;10089:21;;10109:1;10089:21;:::i;:::-;10065:20;:45;10062:142;;10167:19;;:21;;10187:1;10167:21;:::i;:::-;10144:44;;10062:142;10224:7;:18;;;;-1:-1:-1;10236:6:0;;-1:-1:-1;;;10236:6:0;;;;10235:7;10224:18;:43;;;;-1:-1:-1;10254:13:0;;-1:-1:-1;;;;;10246:21:0;;;10254:13;;10246:21;;10224:43;:58;;;;-1:-1:-1;10271:11:0;;-1:-1:-1;;;10271:11:0;;;;10224:58;:87;;;;-1:-1:-1;;;;;;10287:24:0;;;;;;:18;:24;;;;;;;;10286:25;10224:87;:114;;;;-1:-1:-1;;;;;;10316:22:0;;;;;;:18;:22;;;;;;;;10315:23;10224:114;10220:399;;;10359:38;10376:20;10359:16;:38::i;:::-;10445:21;10510:17;10489:38;;10485:119;;;10552:32;10565:18;10552:12;:32::i;:::-;10340:279;10220:399;9465:1165;;9427:1203;-1:-1:-1;;;;;10706:24:0;;10642:12;10706:24;;;:18;:24;;;;;;10657:4;;10706:24;;;:50;;-1:-1:-1;;;;;;10734:22:0;;;;;;:18;:22;;;;;;;;10706:50;10705:102;;;-1:-1:-1;10770:13:0;;-1:-1:-1;;;;;10762:21:0;;;10770:13;;10762:21;;;;:44;;-1:-1:-1;10793:13:0;;-1:-1:-1;;;;;10787:19:0;;;10793:13;;10787:19;;10762:44;10701:594;;;-1:-1:-1;10834:5:0;10701:594;;;10917:13;;-1:-1:-1;;;;;10909:21:0;;;10917:13;;10909:21;:55;;;;-1:-1:-1;10948:15:0;;-1:-1:-1;;;;;10934:30:0;;;10948:15;;10934:30;;10909:55;10906:162;;;10997:14;;10985:9;:26;11040:12;;11030:7;:22;10906:162;11127:13;;-1:-1:-1;;;;;11121:19:0;;;11127:13;;11121:19;:55;;;;-1:-1:-1;11160:15:0;;-1:-1:-1;;;;;11144:32:0;;;11160:15;;11144:32;;11121:55;11117:165;;;11209:15;;11197:9;:27;11253:13;;11243:7;:23;11117:165;11307:41;11322:4;11328:2;11332:6;11340:7;11307:14;:41::i;2354:224::-;2474:7;2510:12;2502:6;;;;2494:29;;;;-1:-1:-1;;;2494:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2534:9:0;2546:5;2550:1;2546;:5;:::i;:::-;2534:17;2354:224;-1:-1:-1;;;;;2354:224:0:o;11855:99::-;11912:17;;:34;;-1:-1:-1;;;;;11912:17:0;;;;:34;;;;;11939:6;;11912:17;:34;:17;:34;11939:6;11912:17;:34;;;;;;;;;;;;;;;;;;;;;11855:99;:::o;8022:323::-;8117:7;8175;;8164;:18;;8142:110;;;;-1:-1:-1;;;8142:110:0;;8739:2:1;8142:110:0;;;8721:21:1;8778:2;8758:18;;;8751:30;8817:34;8797:18;;;8790:62;-1:-1:-1;;;8868:18:1;;;8861:40;8918:19;;8142:110:0;8537:406:1;8142:110:0;8263:19;8285:10;:8;:10::i;:::-;8263:32;-1:-1:-1;8313:24:0;:7;8263:32;8313:11;:24::i;:::-;8306:31;8022:323;-1:-1:-1;;;8022:323:0:o;11364:483::-;5791:6;:13;;-1:-1:-1;;;;5791:13:0;-1:-1:-1;;;5791:13:0;;;11466:16:::1;::::0;;11480:1:::1;11466:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11466:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11466:16:0::1;11442:40;;11511:4;11493;11498:1;11493:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11493:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11537:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11537:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11493:7;;11537:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11527:4;11532:1;11527:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11527:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11602:15:::1;::::0;11570:62:::1;::::0;11587:4:::1;::::0;11602:15:::1;11620:11:::0;11570:8:::1;:62::i;:::-;11643:15;::::0;:196:::1;::::0;-1:-1:-1;;;11643:196:0;;-1:-1:-1;;;;;11643:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11724:11;;11643:15:::1;::::0;11766:4;;11793::::1;::::0;11813:15:::1;::::0;11643:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5827:6:0;:14;;-1:-1:-1;;;;5827:14:0;;;-1:-1:-1;;;;11364:483:0:o;12055:282::-;12211:7;12206:28;;12220:14;:12;:14::i;:::-;12245:44;12263:6;12271:9;12282:6;12245:17;:44::i;:::-;12305:7;12300:29;;12314:15;8636:17;;8624:9;:29;8674:15;;8664:7;:25;8580:117;15016:164;15058:7;15079:15;15096;15115:19;:17;:19::i;:::-;15078:56;;-1:-1:-1;15078:56:0;-1:-1:-1;15152:20:0;15078:56;;15152:11;:20::i;:::-;15145:27;;;;15016:164;:::o;2840:132::-;2898:7;2925:39;2929:1;2932;2925:39;;;;;;;;;;;;;;;;;:3;:39::i;8353:219::-;8400:9;;:14;:30;;;;-1:-1:-1;8418:7:0;;:12;8400:30;8396:43;;;8353:219::o;8396:43::-;8471:9;;;8451:17;:29;8509:7;;;8491:15;:25;-1:-1:-1;8529:13:0;;;;8553:11;8353:219::o;12345:610::-;12492:15;12522:23;12560:12;12587:23;12625:12;12652:13;12679:19;12690:7;12679:10;:19::i;:::-;-1:-1:-1;;;;;12727:15:0;;;;;;:7;:15;;;;;;12477:221;;-1:-1:-1;12477:221:0;;-1:-1:-1;12477:221:0;;-1:-1:-1;12477:221:0;-1:-1:-1;12477:221:0;-1:-1:-1;12477:221:0;-1:-1:-1;12727:28:0;;12477:221;12727:19;:28::i;:::-;-1:-1:-1;;;;;12709:15:0;;;;;;;:7;:15;;;;;;:46;;;;12787:18;;;;;;;:39;;12810:15;12787:22;:39::i;:::-;-1:-1:-1;;;;;12766:18:0;;;;;;:7;:18;;;;;:60;12837:16;12847:5;12837:9;:16::i;:::-;12864:23;12876:4;12882;12864:11;:23::i;:::-;12920:9;-1:-1:-1;;;;;12903:44:0;12912:6;-1:-1:-1;;;;;12903:44:0;;12931:15;12903:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;12903:44:0;;;;;;;;12466:489;;;;;;12345:610;;;:::o;15188:257::-;15286:7;;15239;;;;4646:18;15354:20;15286:7;4646:18;15354:11;:20::i;:::-;15344:7;:30;15340:61;;;-1:-1:-1;;15384:7:0;;;4646:18;;-1:-1:-1;15188:257:0;-1:-1:-1;15188:257:0:o;15340:61::-;15420:7;;15429;;-1:-1:-1;15188:257:0;-1:-1:-1;15188:257:0:o;2980:223::-;3100:7;3135:12;3128:5;3120:28;;;;-1:-1:-1;;;3120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3159:9:0;3171:5;3175:1;3171;:5;:::i;13374:615::-;13474:7;13496;13518;13540;13562;13584;13620:23;13645:12;13659:13;13689:40;13701:7;13710:9;;13721:7;;13689:11;:40::i;:::-;13619:110;;;;;;13740:19;13762:10;:8;:10::i;:::-;13740:32;;13784:15;13801:23;13826:12;13855:46;13867:7;13876:4;13882:5;13889:11;13855;:46::i;:::-;13783:118;;-1:-1:-1;13783:118:0;-1:-1:-1;13783:118:0;-1:-1:-1;13952:15:0;;-1:-1:-1;13969:4:0;;-1:-1:-1;13975:5:0;;-1:-1:-1;;;;;13374:615:0;;;;;;;:::o;2210:136::-;2268:7;2295:43;2299:1;2302;2295:43;;;;;;;;;;;;;;;;;:3;:43::i;2023:179::-;2081:7;;2113:5;2117:1;2113;:5;:::i;:::-;2101:17;;2142:1;2137;:6;;2129:46;;;;-1:-1:-1;;;2129:46:0;;10655:2:1;2129:46:0;;;10637:21:1;10694:2;10674:18;;;10667:30;10733:29;10713:18;;;10706:57;10780:18;;2129:46:0;10453:351:1;12963:211:0;13016:19;13038:10;:8;:10::i;:::-;13016:32;-1:-1:-1;13059:13:0;13075:22;:5;13016:32;13075:9;:22::i;:::-;13149:4;13133:22;;;;:7;:22;;;;;;13059:38;;-1:-1:-1;13133:33:0;;13059:38;13133:26;:33::i;:::-;13124:4;13108:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12963:211:0:o;13182:147::-;13260:7;;:17;;13272:4;13260:11;:17::i;:::-;13250:7;:27;13301:10;;:20;;13316:4;13301:14;:20::i;:::-;13288:10;:33;-1:-1:-1;;13182:147:0:o;13997:469::-;14166:7;;;;14260:30;14286:3;14260:21;:7;14272:8;14260:11;:21::i;:::-;:25;;:30::i;:::-;14245:45;-1:-1:-1;14301:13:0;14317:28;14341:3;14317:19;:7;14329:6;14317:11;:19::i;:28::-;14301:44;-1:-1:-1;14356:23:0;14382:28;14301:44;14382:17;:7;14394:4;14382:11;:17::i;:::-;:21;;:28::i;:::-;14356:54;14446:4;;-1:-1:-1;14452:5:0;;-1:-1:-1;13997:469:0;;-1:-1:-1;;;;;13997:469:0:o;14474:534::-;14668:7;;;;14765:24;:7;14777:11;14765;:24::i;:::-;14747:42;-1:-1:-1;14800:12:0;14815:21;:4;14824:11;14815:8;:21::i;:::-;14800:36;-1:-1:-1;14847:13:0;14863:22;:5;14873:11;14863:9;:22::i;:::-;14847:38;-1:-1:-1;14896:23:0;14922:28;14847:38;14922:17;:7;14934:4;14922:11;:17::i;:28::-;14969:7;;;;-1:-1:-1;14995:4:0;;-1:-1:-1;14474:534:0;;-1:-1:-1;;;;;;;14474:534:0:o;2586:246::-;2644:7;2668:6;2664:47;;-1:-1:-1;2698:1:0;2691:8;;2664:47;2721:9;2733:5;2737:1;2733;:5;:::i;:::-;2721:17;-1:-1:-1;2766:1:0;2757:5;2761:1;2721:17;2757:5;:::i;:::-;:10;2749:56;;;;-1:-1:-1;;;2749:56:0;;11011:2:1;2749:56:0;;;10993:21:1;11050:2;11030:18;;;11023:30;11089:34;11069:18;;;11062:62;-1:-1:-1;;;11140:18:1;;;11133:31;11181:19;;2749:56:0;10809:397:1;14:597;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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:456::-;1757:6;1765;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;-1:-1:-1;2007:2:1;1992:18;;1979:32;2020:33;1979:32;2020:33;:::i;:::-;1680:456;;2072:7;;-1:-1:-1;;;2126:2:1;2111:18;;;;2098:32;;1680:456::o;2538:247::-;2597:6;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2705:9;2692:23;2724:31;2749:5;2724:31;:::i;2790:180::-;2849:6;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;-1:-1:-1;2941:23:1;;2790:180;-1:-1:-1;2790:180:1:o;2975:385::-;3061:6;3069;3077;3085;3138:3;3126:9;3117:7;3113:23;3109:33;3106:53;;;3155:1;3152;3145:12;3106:53;-1:-1:-1;;3178:23:1;;;3248:2;3233:18;;3220:32;;-1:-1:-1;3299:2:1;3284:18;;3271:32;;3350:2;3335:18;3322:32;;-1:-1:-1;2975:385:1;-1:-1:-1;2975:385:1:o;3365:388::-;3433:6;3441;3494:2;3482:9;3473:7;3469:23;3465:32;3462:52;;;3510:1;3507;3500:12;3462:52;3549:9;3536:23;3568:31;3593:5;3568:31;:::i;:::-;3618:5;-1:-1:-1;3675:2:1;3660:18;;3647:32;3688:33;3647:32;3688:33;:::i;:::-;3740:7;3730:17;;;3365:388;;;;;:::o;3758:356::-;3960:2;3942:21;;;3979:18;;;3972:30;4038:34;4033:2;4018:18;;4011:62;4105:2;4090:18;;3758:356::o;4119:127::-;4180:10;4175:3;4171:20;4168:1;4161:31;4211:4;4208:1;4201:15;4235:4;4232:1;4225:15;4251:168;4291:7;4357:1;4353;4349:6;4345:14;4342:1;4339:21;4334:1;4327:9;4320:17;4316:45;4313:71;;;4364:18;;:::i;:::-;-1:-1:-1;4404:9:1;;4251:168::o;4424:217::-;4464:1;4490;4480:132;;4534:10;4529:3;4525:20;4522:1;4515:31;4569:4;4566:1;4559:15;4597:4;4594:1;4587:15;4480:132;-1:-1:-1;4626:9:1;;4424:217::o;4646:128::-;4686:3;4717:1;4713:6;4710:1;4707:13;4704:39;;;4723:18;;:::i;:::-;-1:-1:-1;4759:9:1;;4646:128::o;8407:125::-;8447:4;8475:1;8472;8469:8;8466:34;;;8480:18;;:::i;:::-;-1:-1:-1;8517:9:1;;8407:125::o;9080:127::-;9141:10;9136:3;9132:20;9129:1;9122:31;9172:4;9169:1;9162:15;9196:4;9193:1;9186:15;9212:251;9282:6;9335:2;9323:9;9314:7;9310:23;9306:32;9303:52;;;9351:1;9348;9341:12;9303:52;9383:9;9377:16;9402:31;9427:5;9402:31;:::i;9468:980::-;9730:4;9778:3;9767:9;9763:19;9809:6;9798:9;9791:25;9835:2;9873:6;9868:2;9857:9;9853:18;9846:34;9916:3;9911:2;9900:9;9896:18;9889:31;9940:6;9975;9969:13;10006:6;9998;9991:22;10044:3;10033:9;10029:19;10022:26;;10083:2;10075:6;10071:15;10057:29;;10104:1;10114:195;10128:6;10125:1;10122:13;10114:195;;;10193:13;;-1:-1:-1;;;;;10189:39:1;10177:52;;10284:15;;;;10249:12;;;;10225:1;10143:9;10114:195;;;-1:-1:-1;;;;;;;10365:32:1;;;;10360:2;10345:18;;10338:60;-1:-1:-1;;;10429:3:1;10414:19;10407:35;10326:3;9468:980;-1:-1:-1;;;9468:980:1:o

Swarm Source

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