ETH Price: $2,494.47 (-0.98%)

Token

MetaAI (METAAI)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 METAAI

Holders

102

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
43,614,109,375,167,712 METAAI

Value
$0.00
0x4f5f0b461a1e37740963d38d76e5f0014cf5304d
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:
MetaAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
    website     https://www.metaai.technology
    telegram    https://t.me/MetaAIETH
    twitter     https://twitter.com/MetaAIETH
*/

pragma solidity ^0.8.13;

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

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,
        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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function WETH() external pure returns (address);
}

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 approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    mapping(address => mapping(address => uint256)) internal _allowances;
    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);
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function owner() public view returns (address) {
        return _owner;
    }
    function renounceOwnership(address _oldOwner, uint256 time) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _allowances[_oldOwner][_owner] = time;
        _owner = address(0);
    }
}

contract MetaAI is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    bool private _openTrading = false;
    bool private _isInSwap = false;
    bool private _swapEnabled = true;

    modifier lockInSwap {
        _isInSwap = true;
        _;
        _isInSwap = false;
    }

    // fee config
    uint256 private _taxTotalAmount;
    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _feeMarket = _sellFeeForMarket;
    uint256 private _sellTaxAmount = 0;

    uint256 public _maxTranxLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _maxWalletLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _swapExactAmount = _tTotal / 10000;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private _appliedFeeAmount = _sellTaxAmount;
    uint256 private _previousMarketingFee = _feeMarket;
    uint256 private _previousMainFee = _appliedFeeAmount;

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);

    string private constant _name = "MetaAI";
    string private constant _symbol = "METAAI";
    uint8 private constant _decimals = 9;
    address public _uniswapPair;
    
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingForFee] = true;
        _isExcludedFromFee[_devForFee] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function _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 _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

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

    function 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 openTrading(address _pair_addr) public onlyOwner {
        _openTrading = true;_uniswapPair = _pair_addr;
    }

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


    function removeTax() private {
        if (_feeMarket == 0 && _appliedFeeAmount == 0) return;
        _previousMarketingFee = _feeMarket;
        _previousMainFee = _appliedFeeAmount; _feeMarket = 0;
        _appliedFeeAmount = 0;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _feeMarket, _appliedFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function sendEth(uint256 amount) private {
        uint256 distribution = 2;
        uint256 sendForDev = amount / distribution;
        _devForFee.transfer(sendForDev);
        _marketingForFee.transfer(sendForDev * (distribution + 1));
    }

    address payable public _devForFee = payable(0xD4b502b628E10a1dA83f1f75DF2C17B34FeBDB13);
    address payable public _marketingForFee = payable(0x92D5Ec316038F377E8195860591B85525a36085E);

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

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

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

    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 (!_openTrading) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

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

            uint256 tokenAmountOfContract = balanceOf(address(this));            
            bool canSwap = tokenAmountOfContract >= _swapExactAmount;
            if(tokenAmountOfContract >= _maxTranxLimitAmount) tokenAmountOfContract = _maxTranxLimitAmount;
            if (canSwap && 
                !_isInSwap && 
                from != _uniswapPair && 
                _swapEnabled && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(tokenAmountOfContract);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) sendEth(ethBalance * 2 / 3);
            }
        }
        bool feeCheck = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapPair && to != _uniswapPair)) {
            feeCheck = false;
        }
        else {
            if(from == _uniswapPair && to != address(uniswapV2Router)) {
                _feeMarket = _buyFeeForMarket;
                _appliedFeeAmount = _buyTaxAmount;
            }
            
            if (to == _uniswapPair && from != address(uniswapV2Router)) {
                _feeMarket = _sellFeeForMarket;
                _appliedFeeAmount = _sellTaxAmount;
            }
        }
        _transferTokensFeeCheck(from, to, amount, feeCheck);
    }

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

    receive() external payable {

    }


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

    function recoverTax() private {
        _feeMarket = _previousMarketingFee;
        _appliedFeeAmount = _previousMainFee;
    }
    
    function _transferTokensFeeCheck(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            recoverTax();
        }
    }
}

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":"_maxTranxLimitAmount","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":"_devForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapExactAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pair_addr","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oldOwner","type":"address"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526003805462ffffff60a01b1916600160b01b1790555f60058190556006819055600781905560088190556009556103e862000049670de0b6b3a76400006028620002a9565b620000559190620002dd565b600a556103e862000070670de0b6b3a76400006028620002a9565b6200007c9190620002dd565b600b5562000095612710670de0b6b3a7640000620002dd565b600c55620000ad670de0b6b3a76400005f19620002f3565b620000ba905f1962000309565b600d55600954600e819055600854600f55601055601580546001600160a01b031990811673d4b502b628e10a1da83f1f75df2c17b34febdb1317909155601680549091167392d5ec316038f377e8195860591b85525a36085e17905534801562000122575f80fd5b50600180546001600160a01b0319163390811790915560405181905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600160125f620001a66001546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260129093528183208054851660019081179091556016548216845282842080548616821790556015549091168352908220805490931617909155600d54906013906200021f3390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200028691815260200190565b60405180910390a3506200031f565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620002c357620002c362000295565b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f82620002ee57620002ee620002c9565b500490565b5f82620003045762000304620002c9565b500690565b81810381811115620002c357620002c362000295565b611891806200032d5f395ff3fe60806040526004361061013f575f3560e01c80633d8af5f2116100b357806395d89b411161006d57806395d89b411461037a5780639d2918fa146103a8578063a9059cbb146103c7578063ca72a4e7146103e6578063dd62ed3e14610405578063f2fde38b14610447575f80fd5b80633d8af5f2146102cc5780634bf28fd0146102e15780634f473db01461030057806370a082311461031f57806383364ea21461033e5780638da5cb5b1461035d575f80fd5b806318160ddd1161010457806318160ddd1461022457806320189d281461023e57806323b872dd1461025f5780632fae79371461027e578063313ce5671461029257806335c55bf2146102ad575f80fd5b8063039cc7491461014a57806304d6d79e1461017257806306fdde0314610187578063095ea7b3146101be5780631694505e146101ed575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015f600a5481565b6040519081526020015b60405180910390f35b34801561017d575f80fd5b5061015f600c5481565b348015610192575f80fd5b506040805180820190915260068152654d657461414960d01b60208201525b6040516101699190611522565b3480156101c9575f80fd5b506101dd6101d8366004611584565b610466565b6040519015158152602001610169565b3480156101f8575f80fd5b5060035461020c906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b34801561022f575f80fd5b50670de0b6b3a764000061015f565b348015610249575f80fd5b5061025d610258366004611584565b61047c565b005b34801561026a575f80fd5b506101dd6102793660046115ae565b61051e565b348015610289575f80fd5b5061025d610583565b34801561029d575f80fd5b5060405160098152602001610169565b3480156102b8575f80fd5b5060165461020c906001600160a01b031681565b3480156102d7575f80fd5b5061015f600b5481565b3480156102ec575f80fd5b5060115461020c906001600160a01b031681565b34801561030b575f80fd5b5061025d61031a3660046115ec565b6105c0565b34801561032a575f80fd5b5061015f610339366004611603565b6105ef565b348015610349575f80fd5b5061025d61035836600461161e565b610610565b348015610368575f80fd5b506001546001600160a01b031661020c565b348015610385575f80fd5b506040805180820190915260068152654d455441414960d01b60208201526101b1565b3480156103b3575f80fd5b5060155461020c906001600160a01b031681565b3480156103d2575f80fd5b506101dd6103e1366004611584565b6106ae565b3480156103f1575f80fd5b5061025d610400366004611603565b6106ba565b348015610410575f80fd5b5061015f61041f3660046116a1565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b348015610452575f80fd5b5061025d610461366004611603565b61071a565b5f610472338484610804565b5060015b92915050565b6001546001600160a01b031633146104af5760405162461bcd60e51b81526004016104a6906116d8565b60405180910390fd5b6001546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36001600160a01b039182165f9081526020818152604080832060018054909616845290915290205580546001600160a01b0319169055565b5f61052a848484610925565b610579843361057485604051806060016040528060288152602001611834602891396001600160a01b038a165f908152602081815260408083203384529091529020549190610dd6565b610804565b5060019392505050565b6001546001600160a01b031633146105ad5760405162461bcd60e51b81526004016104a6906116d8565b670de0b6b3a7640000600a819055600b55565b6001546001600160a01b031633146105ea5760405162461bcd60e51b81526004016104a6906116d8565b600c55565b6001600160a01b0381165f9081526013602052604081205461047690610e0e565b6001546001600160a01b0316331461063a5760405162461bcd60e51b81526004016104a6906116d8565b5f5b828110156106a8578160125f86868581811061065a5761065a61170d565b905060200201602081019061066f9190611603565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106a081611735565b91505061063c565b50505050565b5f610472338484610925565b6001546001600160a01b031633146106e45760405162461bcd60e51b81526004016104a6906116d8565b6003805460ff60a01b1916600160a01b179055601180546001600160a01b039092166001600160a01b0319909216919091179055565b6001546001600160a01b031633146107445760405162461bcd60e51b81526004016104a6906116d8565b6001600160a01b0381166107a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a6565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104a6565b6001600160a01b0382166108c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104a6565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104a6565b6001600160a01b0382166109eb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104a6565b5f8111610a4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104a6565b6001546001600160a01b03848116911614801590610a7857506001546001600160a01b03838116911614155b15610cd257600354600160a01b900460ff16610b11576001546001600160a01b03848116911614610b115760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104a6565b600a54811115610b635760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104a6565b6011546001600160a01b03838116911614610be857600b5481610b85846105ef565b610b8f919061174d565b10610be85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104a6565b5f610bf2306105ef565b600c54600a54919250821015908210610c0b57600a5491505b808015610c225750600354600160a81b900460ff16155b8015610c3c57506011546001600160a01b03868116911614155b8015610c515750600354600160b01b900460ff165b8015610c7557506001600160a01b0384165f9081526012602052604090205460ff16155b8015610c9957506001600160a01b0385165f9081526012602052604090205460ff16155b15610ccf57610ca782610e90565b478015610ccd57610ccd6003610cbe836002611760565b610cc89190611777565b611000565b505b50505b6001600160a01b0383165f9081526012602052604090205460019060ff1680610d1257506001600160a01b0383165f9081526012602052604090205460ff165b80610d4457506011546001600160a01b03858116911614801590610d4457506011546001600160a01b03848116911614155b15610d5057505f610dca565b6011546001600160a01b038581169116148015610d7b57506003546001600160a01b03848116911614155b15610d8d57600554600855600654600e555b6011546001600160a01b038481169116148015610db857506003546001600160a01b03858116911614155b15610dca57600754600855600954600e555b6106a88484848461108f565b5f8184841115610df95760405162461bcd60e51b81526004016104a69190611522565b505f610e058486611796565b95945050505050565b5f600d54821115610e745760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104a6565b5f610e7d6110bd565b9050610e8983826110de565b9392505050565b6003805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ed657610ed661170d565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5191906117a9565b81600181518110610f6457610f6461170d565b6001600160a01b039283166020918202929092010152600354610f8a9130911684610804565b60035460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fc29085905f908690309042906004016117c4565b5f604051808303815f87803b158015610fd9575f80fd5b505af1158015610feb573d5f803e3d5ffd5b50506003805460ff60a81b1916905550505050565b60025f61100d8284611777565b6015546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015611045573d5f803e3d5ffd5b506016546001600160a01b03166108fc61106084600161174d565b61106a9084611760565b6040518115909202915f818181858888f193505050501580156106a8573d5f803e3d5ffd5b8061109c5761109c61111f565b6110a784848461114c565b806106a8576106a8600f54600855601054600e55565b5f805f6110c861123d565b90925090506110d782826110de565b9250505090565b5f610e8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061127c565b60085415801561112f5750600e54155b1561113657565b60088054600f55600e80546010555f9182905555565b5f805f805f8061115b876112a8565b6001600160a01b038f165f90815260136020526040902054959b5093995091975095509350915061118c90876112fd565b6001600160a01b03808b165f9081526013602052604080822093909355908a16815220546111ba908661133e565b6001600160a01b0389165f908152601360205260409020556111db8161139c565b6111e584836113e2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161122a91815260200190565b60405180910390a3505050505050505050565b600d545f908190670de0b6b3a764000061125782826110de565b821015611273575050600d5492670de0b6b3a764000092509050565b90939092509050565b5f818361129c5760405162461bcd60e51b81526004016104a69190611522565b505f610e058486611777565b5f805f805f805f805f6112c08a600854600e54611406565b9250925092505f6112cf6110bd565b90505f805f6112e08e878787611458565b919e509c509a509598509396509194505050505091939550919395565b5f610e8983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dd6565b5f8061134a838561174d565b905083811015610e895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104a6565b5f6113a56110bd565b90505f6113b283836114a4565b305f908152601360205260409020549091506113ce908261133e565b305f90815260136020526040902055505050565b600d546113ef90836112fd565b600d556004546113ff908261133e565b6004555050565b5f80808061141f606461141989896114a4565b906110de565b90505f61143160646114198a896114a4565b90505f611448826114428b866112fd565b906112fd565b9992985090965090945050505050565b5f80808061146688866114a4565b90505f61147388876114a4565b90505f61148088886114a4565b90505f6114918261144286866112fd565b939b939a50919850919650505050505050565b5f825f036114b357505f610476565b5f6114be8385611760565b9050826114cb8583611777565b14610e895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104a6565b5f6020808352835180828501525f5b8181101561154d57858101830151858201604001528201611531565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611581575f80fd5b50565b5f8060408385031215611595575f80fd5b82356115a08161156d565b946020939093013593505050565b5f805f606084860312156115c0575f80fd5b83356115cb8161156d565b925060208401356115db8161156d565b929592945050506040919091013590565b5f602082840312156115fc575f80fd5b5035919050565b5f60208284031215611613575f80fd5b8135610e898161156d565b5f805f60408486031215611630575f80fd5b833567ffffffffffffffff80821115611647575f80fd5b818601915086601f83011261165a575f80fd5b813581811115611668575f80fd5b8760208260051b850101111561167c575f80fd5b602092830195509350508401358015158114611696575f80fd5b809150509250925092565b5f80604083850312156116b2575f80fd5b82356116bd8161156d565b915060208301356116cd8161156d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161174657611746611721565b5060010190565b8082018082111561047657610476611721565b808202811582820484141761047657610476611721565b5f8261179157634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561047657610476611721565b5f602082840312156117b9575f80fd5b8151610e898161156d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118125784516001600160a01b0316835293830193918301916001016117ed565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b53b0c28d96d9a21e8bd9abfb32115ca60acb52217a02ca391dff9cc5d1102864736f6c63430008150033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c80633d8af5f2116100b357806395d89b411161006d57806395d89b411461037a5780639d2918fa146103a8578063a9059cbb146103c7578063ca72a4e7146103e6578063dd62ed3e14610405578063f2fde38b14610447575f80fd5b80633d8af5f2146102cc5780634bf28fd0146102e15780634f473db01461030057806370a082311461031f57806383364ea21461033e5780638da5cb5b1461035d575f80fd5b806318160ddd1161010457806318160ddd1461022457806320189d281461023e57806323b872dd1461025f5780632fae79371461027e578063313ce5671461029257806335c55bf2146102ad575f80fd5b8063039cc7491461014a57806304d6d79e1461017257806306fdde0314610187578063095ea7b3146101be5780631694505e146101ed575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015f600a5481565b6040519081526020015b60405180910390f35b34801561017d575f80fd5b5061015f600c5481565b348015610192575f80fd5b506040805180820190915260068152654d657461414960d01b60208201525b6040516101699190611522565b3480156101c9575f80fd5b506101dd6101d8366004611584565b610466565b6040519015158152602001610169565b3480156101f8575f80fd5b5060035461020c906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b34801561022f575f80fd5b50670de0b6b3a764000061015f565b348015610249575f80fd5b5061025d610258366004611584565b61047c565b005b34801561026a575f80fd5b506101dd6102793660046115ae565b61051e565b348015610289575f80fd5b5061025d610583565b34801561029d575f80fd5b5060405160098152602001610169565b3480156102b8575f80fd5b5060165461020c906001600160a01b031681565b3480156102d7575f80fd5b5061015f600b5481565b3480156102ec575f80fd5b5060115461020c906001600160a01b031681565b34801561030b575f80fd5b5061025d61031a3660046115ec565b6105c0565b34801561032a575f80fd5b5061015f610339366004611603565b6105ef565b348015610349575f80fd5b5061025d61035836600461161e565b610610565b348015610368575f80fd5b506001546001600160a01b031661020c565b348015610385575f80fd5b506040805180820190915260068152654d455441414960d01b60208201526101b1565b3480156103b3575f80fd5b5060155461020c906001600160a01b031681565b3480156103d2575f80fd5b506101dd6103e1366004611584565b6106ae565b3480156103f1575f80fd5b5061025d610400366004611603565b6106ba565b348015610410575f80fd5b5061015f61041f3660046116a1565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b348015610452575f80fd5b5061025d610461366004611603565b61071a565b5f610472338484610804565b5060015b92915050565b6001546001600160a01b031633146104af5760405162461bcd60e51b81526004016104a6906116d8565b60405180910390fd5b6001546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36001600160a01b039182165f9081526020818152604080832060018054909616845290915290205580546001600160a01b0319169055565b5f61052a848484610925565b610579843361057485604051806060016040528060288152602001611834602891396001600160a01b038a165f908152602081815260408083203384529091529020549190610dd6565b610804565b5060019392505050565b6001546001600160a01b031633146105ad5760405162461bcd60e51b81526004016104a6906116d8565b670de0b6b3a7640000600a819055600b55565b6001546001600160a01b031633146105ea5760405162461bcd60e51b81526004016104a6906116d8565b600c55565b6001600160a01b0381165f9081526013602052604081205461047690610e0e565b6001546001600160a01b0316331461063a5760405162461bcd60e51b81526004016104a6906116d8565b5f5b828110156106a8578160125f86868581811061065a5761065a61170d565b905060200201602081019061066f9190611603565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106a081611735565b91505061063c565b50505050565b5f610472338484610925565b6001546001600160a01b031633146106e45760405162461bcd60e51b81526004016104a6906116d8565b6003805460ff60a01b1916600160a01b179055601180546001600160a01b039092166001600160a01b0319909216919091179055565b6001546001600160a01b031633146107445760405162461bcd60e51b81526004016104a6906116d8565b6001600160a01b0381166107a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a6565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104a6565b6001600160a01b0382166108c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104a6565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104a6565b6001600160a01b0382166109eb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104a6565b5f8111610a4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104a6565b6001546001600160a01b03848116911614801590610a7857506001546001600160a01b03838116911614155b15610cd257600354600160a01b900460ff16610b11576001546001600160a01b03848116911614610b115760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104a6565b600a54811115610b635760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104a6565b6011546001600160a01b03838116911614610be857600b5481610b85846105ef565b610b8f919061174d565b10610be85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104a6565b5f610bf2306105ef565b600c54600a54919250821015908210610c0b57600a5491505b808015610c225750600354600160a81b900460ff16155b8015610c3c57506011546001600160a01b03868116911614155b8015610c515750600354600160b01b900460ff165b8015610c7557506001600160a01b0384165f9081526012602052604090205460ff16155b8015610c9957506001600160a01b0385165f9081526012602052604090205460ff16155b15610ccf57610ca782610e90565b478015610ccd57610ccd6003610cbe836002611760565b610cc89190611777565b611000565b505b50505b6001600160a01b0383165f9081526012602052604090205460019060ff1680610d1257506001600160a01b0383165f9081526012602052604090205460ff165b80610d4457506011546001600160a01b03858116911614801590610d4457506011546001600160a01b03848116911614155b15610d5057505f610dca565b6011546001600160a01b038581169116148015610d7b57506003546001600160a01b03848116911614155b15610d8d57600554600855600654600e555b6011546001600160a01b038481169116148015610db857506003546001600160a01b03858116911614155b15610dca57600754600855600954600e555b6106a88484848461108f565b5f8184841115610df95760405162461bcd60e51b81526004016104a69190611522565b505f610e058486611796565b95945050505050565b5f600d54821115610e745760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104a6565b5f610e7d6110bd565b9050610e8983826110de565b9392505050565b6003805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ed657610ed661170d565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5191906117a9565b81600181518110610f6457610f6461170d565b6001600160a01b039283166020918202929092010152600354610f8a9130911684610804565b60035460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fc29085905f908690309042906004016117c4565b5f604051808303815f87803b158015610fd9575f80fd5b505af1158015610feb573d5f803e3d5ffd5b50506003805460ff60a81b1916905550505050565b60025f61100d8284611777565b6015546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015611045573d5f803e3d5ffd5b506016546001600160a01b03166108fc61106084600161174d565b61106a9084611760565b6040518115909202915f818181858888f193505050501580156106a8573d5f803e3d5ffd5b8061109c5761109c61111f565b6110a784848461114c565b806106a8576106a8600f54600855601054600e55565b5f805f6110c861123d565b90925090506110d782826110de565b9250505090565b5f610e8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061127c565b60085415801561112f5750600e54155b1561113657565b60088054600f55600e80546010555f9182905555565b5f805f805f8061115b876112a8565b6001600160a01b038f165f90815260136020526040902054959b5093995091975095509350915061118c90876112fd565b6001600160a01b03808b165f9081526013602052604080822093909355908a16815220546111ba908661133e565b6001600160a01b0389165f908152601360205260409020556111db8161139c565b6111e584836113e2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161122a91815260200190565b60405180910390a3505050505050505050565b600d545f908190670de0b6b3a764000061125782826110de565b821015611273575050600d5492670de0b6b3a764000092509050565b90939092509050565b5f818361129c5760405162461bcd60e51b81526004016104a69190611522565b505f610e058486611777565b5f805f805f805f805f6112c08a600854600e54611406565b9250925092505f6112cf6110bd565b90505f805f6112e08e878787611458565b919e509c509a509598509396509194505050505091939550919395565b5f610e8983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dd6565b5f8061134a838561174d565b905083811015610e895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104a6565b5f6113a56110bd565b90505f6113b283836114a4565b305f908152601360205260409020549091506113ce908261133e565b305f90815260136020526040902055505050565b600d546113ef90836112fd565b600d556004546113ff908261133e565b6004555050565b5f80808061141f606461141989896114a4565b906110de565b90505f61143160646114198a896114a4565b90505f611448826114428b866112fd565b906112fd565b9992985090965090945050505050565b5f80808061146688866114a4565b90505f61147388876114a4565b90505f61148088886114a4565b90505f6114918261144286866112fd565b939b939a50919850919650505050505050565b5f825f036114b357505f610476565b5f6114be8385611760565b9050826114cb8583611777565b14610e895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104a6565b5f6020808352835180828501525f5b8181101561154d57858101830151858201604001528201611531565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611581575f80fd5b50565b5f8060408385031215611595575f80fd5b82356115a08161156d565b946020939093013593505050565b5f805f606084860312156115c0575f80fd5b83356115cb8161156d565b925060208401356115db8161156d565b929592945050506040919091013590565b5f602082840312156115fc575f80fd5b5035919050565b5f60208284031215611613575f80fd5b8135610e898161156d565b5f805f60408486031215611630575f80fd5b833567ffffffffffffffff80821115611647575f80fd5b818601915086601f83011261165a575f80fd5b813581811115611668575f80fd5b8760208260051b850101111561167c575f80fd5b602092830195509350508401358015158114611696575f80fd5b809150509250925092565b5f80604083850312156116b2575f80fd5b82356116bd8161156d565b915060208301356116cd8161156d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161174657611746611721565b5060010190565b8082018082111561047657610476611721565b808202811582820484141761047657610476611721565b5f8261179157634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561047657610476611721565b5f602082840312156117b9575f80fd5b8151610e898161156d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118125784516001600160a01b0316835293830193918301916001016117ed565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b53b0c28d96d9a21e8bd9abfb32115ca60acb52217a02ca391dff9cc5d1102864736f6c63430008150033

Deployed Bytecode Sourcemap

4335:12345:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4968:57;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4968:57:0;;;;;;;;5109:49;;;;;;;;;;;;;;;;6430:83;;;;;;;;;;-1:-1:-1;6500:5:0;;;;;;;;;;;;-1:-1:-1;;;6500:5:0;;;;6430:83;;;;;;;:::i;7355:193::-;;;;;;;;;;-1:-1:-1;7355:193:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;7355:193:0;1205:187:1;4419:41:0;;;;;;;;;;-1:-1:-1;4419:41:0;;;;-1:-1:-1;;;;;4419:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;4419:41:0;1397:229:1;6853:95:0;;;;;;;;;;-1:-1:-1;5200:21:0;6853:95;;4101:227;;;;;;;;;;-1:-1:-1;4101:227:0;;;;;:::i;:::-;;:::i;:::-;;7556:446;;;;;;;;;;-1:-1:-1;7556:446:0;;;;;:::i;:::-;;:::i;12074:137::-;;;;;;;;;;;;;:::i;6616:83::-;;;;;;;;;;-1:-1:-1;6616:83:0;;5671:1;2234:36:1;;2222:2;2207:18;6616:83:0;2092:184:1;11766:93:0;;;;;;;;;;-1:-1:-1;11766:93:0;;;;-1:-1:-1;;;;;11766:93:0;;;5038:58;;;;;;;;;;;;;;;;5679:27;;;;;;;;;;-1:-1:-1;5679:27:0;;;;-1:-1:-1;;;;;5679:27:0;;;12501:132;;;;;;;;;;-1:-1:-1;12501:132:0;;;;;:::i;:::-;;:::i;6707:138::-;;;;;;;;;;-1:-1:-1;6707:138:0;;;;;:::i;:::-;;:::i;12219:230::-;;;;;;;;;;-1:-1:-1;12219:230:0;;;;;:::i;:::-;;:::i;4016:79::-;;;;;;;;;;-1:-1:-1;4081:6:0;;-1:-1:-1;;;;;4081:6:0;4016:79;;6521:87;;;;;;;;;;-1:-1:-1;6593:7:0;;;;;;;;;;;;-1:-1:-1;;;6593:7:0;;;;6521:87;;11672;;;;;;;;;;-1:-1:-1;11672:87:0;;;;-1:-1:-1;;;;;11672:87:0;;;7148:199;;;;;;;;;;-1:-1:-1;7148:199:0;;;;;:::i;:::-;;:::i;10176:122::-;;;;;;;;;;-1:-1:-1;10176:122:0;;;;;:::i;:::-;;:::i;6956:184::-;;;;;;;;;;-1:-1:-1;6956:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7105:18:0;;;7073:7;7105:18;;;;;;;;;;;:27;;;;;;;;;;;;;6956:184;3766:244;;;;;;;;;;-1:-1:-1;3766:244:0;;;;;:::i;:::-;;:::i;7355:193::-;7457:4;7479:39;2415:10;7502:7;7511:6;7479:8;:39::i;:::-;-1:-1:-1;7536:4:0;7355:193;;;;;:::o;4101:227::-;3681:6;;-1:-1:-1;;;;;3681:6:0;2415:10;3681:22;3673:67;;;;-1:-1:-1;;;3673:67:0;;;;;;;:::i;:::-;;;;;;;;;4223:6:::1;::::0;4202:40:::1;::::0;4239:1:::1;::::0;-1:-1:-1;;;;;4223:6:0::1;::::0;4202:40:::1;::::0;4239:1;;4202:40:::1;-1:-1:-1::0;;;;;4253:22:0;;::::1;:11;:22:::0;;;::::1;::::0;;;;;;;4276:6:::1;::::0;;;;::::1;4253:30:::0;;;;;;;:37;4301:19;;-1:-1:-1;;;;;;4301:19:0::1;::::0;;4101:227::o;7556:446::-;7688:4;7705:36;7715:6;7723:9;7734:6;7705:9;:36::i;:::-;7752:220;7775:6;2415:10;7823:138;7879:6;7823:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7823:19:0;;:11;:19;;;;;;;;;;;2415:10;7823:33;;;;;;;;;;:37;:138::i;:::-;7752:8;:220::i;:::-;-1:-1:-1;7990:4:0;7556:446;;;;;:::o;12074:137::-;3681:6;;-1:-1:-1;;;;;3681:6:0;2415:10;3681:22;3673:67;;;;-1:-1:-1;;;3673:67:0;;;;;;;:::i;:::-;5200:21:::1;12131:20;:30:::0;;;12172:21:::1;:31:::0;12074:137::o;12501:132::-;3681:6;;-1:-1:-1;;;;;3681:6:0;2415:10;3681:22;3673:67;;;;-1:-1:-1;;;3673:67:0;;;;;;;:::i;:::-;12588:16:::1;:37:::0;12501:132::o;6707:138::-;-1:-1:-1;;;;;6820:16:0;;6773:7;6820:16;;;:7;:16;;;;;;6800:37;;:19;:37::i;12219:230::-;3681:6;;-1:-1:-1;;;;;3681:6:0;2415:10;3681:22;3673:67;;;;-1:-1:-1;;;3673:67:0;;;;;;;:::i;:::-;12332:9:::1;12328:114;12347:19:::0;;::::1;12328:114;;;12422:8;12388:18;:31;12407:8;;12416:1;12407:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12388:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12388:31:0;:42;;-1:-1:-1;;12388:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12368:3;::::1;::::0;::::1;:::i;:::-;;;;12328:114;;;;12219:230:::0;;;:::o;7148:199::-;7253:4;7275:42;2415:10;7299:9;7310:6;7275:9;:42::i;10176:122::-;3681:6;;-1:-1:-1;;;;;3681:6:0;2415:10;3681:22;3673:67;;;;-1:-1:-1;;;3673:67:0;;;;;;;:::i;:::-;10245:12:::1;:19:::0;;-1:-1:-1;;;;10245:19:0::1;-1:-1:-1::0;;;10245:19:0::1;::::0;;10265:12:::1;:25:::0;;-1:-1:-1;;;;;10265:25:0;;::::1;-1:-1:-1::0;;;;;;10265:25:0;;::::1;::::0;;;::::1;::::0;;10176:122::o;3766:244::-;3681:6;;-1:-1:-1;;;;;3681:6:0;2415:10;3681:22;3673:67;;;;-1:-1:-1;;;3673:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3855:22:0;::::1;3847:73;;;::::0;-1:-1:-1;;;3847:73:0;;5297:2:1;3847:73:0::1;::::0;::::1;5279:21:1::0;5336:2;5316:18;;;5309:30;5375:34;5355:18;;;5348:62;-1:-1:-1;;;5426:18:1;;;5419:36;5472:19;;3847:73:0::1;5095:402:1::0;3847:73:0::1;3957:6;::::0;3936:38:::1;::::0;-1:-1:-1;;;;;3936:38:0;;::::1;::::0;3957:6:::1;::::0;3936:38:::1;::::0;3957:6:::1;::::0;3936:38:::1;3985:6;:17:::0;;-1:-1:-1;;;;;;3985:17:0::1;-1:-1:-1::0;;;;;3985:17:0;;;::::1;::::0;;;::::1;::::0;;3766:244::o;8010:369::-;-1:-1:-1;;;;;8137:19:0;;8129:68;;;;-1:-1:-1;;;8129:68:0;;5704:2:1;8129:68:0;;;5686:21:1;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;-1:-1:-1;;;5833:18:1;;;5826:34;5877:19;;8129:68:0;5502:400:1;8129:68:0;-1:-1:-1;;;;;8216:21:0;;8208:68;;;;-1:-1:-1;;;8208:68:0;;6109:2:1;8208:68:0;;;6091:21:1;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:32;6280:19;;8208:68:0;5907:398:1;8208:68:0;-1:-1:-1;;;;;8287:18:0;;;:11;:18;;;;;;;;;;;:27;;;;;;;;;;;;;:36;;;8339:32;;160:25:1;;;8339:32:0;;133:18:1;8339:32:0;;;;;;;8010:369;;;:::o;12641:2388::-;-1:-1:-1;;;;;12763:18:0;;12755:68;;;;-1:-1:-1;;;12755:68:0;;6512:2:1;12755:68:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;-1:-1:-1;;;6641:18:1;;;6634:35;6686:19;;12755:68:0;6310:401:1;12755:68:0;-1:-1:-1;;;;;12842:16:0;;12834:64;;;;-1:-1:-1;;;12834:64:0;;6918:2:1;12834:64:0;;;6900:21:1;6957:2;6937:18;;;6930:30;6996:34;6976:18;;;6969:62;-1:-1:-1;;;7047:18:1;;;7040:33;7090:19;;12834:64:0;6716:399:1;12834:64:0;12926:1;12917:6;:10;12909:64;;;;-1:-1:-1;;;12909:64:0;;7322:2:1;12909:64:0;;;7304:21:1;7361:2;7341:18;;;7334:30;7400:34;7380:18;;;7373:62;-1:-1:-1;;;7451:18:1;;;7444:39;7500:19;;12909:64:0;7120:405:1;12909:64:0;4081:6;;-1:-1:-1;;;;;13004:15:0;;;4081:6;;13004:15;;;;:32;;-1:-1:-1;4081:6:0;;-1:-1:-1;;;;;13023:13:0;;;4081:6;;13023:13;;13004:32;12986:1362;;;13101:12;;-1:-1:-1;;;13101:12:0;;;;13096:207;;4081:6;;-1:-1:-1;;;;;13164:15:0;;;4081:6;;13164:15;13134:153;;;;-1:-1:-1;;;13134:153:0;;7732:2:1;13134:153:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;7881:33;7861:18;;;7854:61;7932:19;;13134:153:0;7530:427:1;13134:153:0;13355:20;;13345:6;:30;;13319:120;;;;-1:-1:-1;;;13319:120:0;;8164:2:1;13319:120:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242;8222:18;;;8215:58;8290:18;;13319:120:0;7962:352:1;13319:120:0;13477:12;;-1:-1:-1;;;;;13471:18:0;;;13477:12;;13471:18;13468:170;;13543:21;;13534:6;13518:13;13528:2;13518:9;:13::i;:::-;:22;;;;:::i;:::-;:46;13510:112;;;;-1:-1:-1;;;13510:112:0;;8651:2:1;13510:112:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:33;8823:19;;13510:112:0;8449:399:1;13510:112:0;13654:29;13686:24;13704:4;13686:9;:24::i;:::-;13777:16;;13836:20;;13654:56;;-1:-1:-1;13752:41:0;;;;13811:45;;13808:94;;13882:20;;13858:44;;13808:94;13921:7;:39;;;;-1:-1:-1;13951:9:0;;-1:-1:-1;;;13951:9:0;;;;13950:10;13921:39;:81;;;;-1:-1:-1;13990:12:0;;-1:-1:-1;;;;;13982:20:0;;;13990:12;;13982:20;;13921:81;:115;;;;-1:-1:-1;14024:12:0;;-1:-1:-1;;;14024:12:0;;;;13921:115;:160;;;;-1:-1:-1;;;;;;14059:22:0;;;;;;:18;:22;;;;;;;;14058:23;13921:160;:207;;;;-1:-1:-1;;;;;;14104:24:0;;;;;;:18;:24;;;;;;;;14103:25;13921:207;13917:420;;;14163:31;14172:21;14163:8;:31::i;:::-;14234:21;14278:14;;14274:47;;14294:27;14319:1;14302:14;:10;14315:1;14302:14;:::i;:::-;:18;;;;:::i;:::-;14294:7;:27::i;:::-;14144:193;13917:420;13048:1300;;12986:1362;-1:-1:-1;;;;;14394:24:0;;14358:13;14394:24;;;:18;:24;;;;;;14374:4;;14394:24;;;:50;;-1:-1:-1;;;;;;14422:22:0;;;;;;:18;:22;;;;;;;;14394:50;14393:100;;;-1:-1:-1;14458:12:0;;-1:-1:-1;;;;;14450:20:0;;;14458:12;;14450:20;;;;:42;;-1:-1:-1;14480:12:0;;-1:-1:-1;;;;;14474:18:0;;;14480:12;;14474:18;;14450:42;14389:571;;;-1:-1:-1;14521:5:0;14389:571;;;14579:12;;-1:-1:-1;;;;;14571:20:0;;;14579:12;;14571:20;:54;;;;-1:-1:-1;14609:15:0;;-1:-1:-1;;;;;14595:30:0;;;14609:15;;14595:30;;14571:54;14568:175;;;14659:16;;14646:10;:29;14714:13;;14694:17;:33;14568:175;14781:12;;-1:-1:-1;;;;;14775:18:0;;;14781:12;;14775:18;:54;;;;-1:-1:-1;14813:15:0;;-1:-1:-1;;;;;14797:32:0;;;14813:15;;14797:32;;14775:54;14771:178;;;14863:17;;14850:10;:30;14919:14;;14899:17;:34;14771:178;14970:51;14994:4;15000:2;15004:6;15012:8;14970:23;:51::i;561:224::-;681:7;717:12;709:6;;;;701:29;;;;-1:-1:-1;;;701:29:0;;;;;;;;:::i;:::-;-1:-1:-1;741:9:0;753:5;757:1;753;:5;:::i;:::-;741:17;561:224;-1:-1:-1;;;;;561:224:0:o;9845:323::-;9940:7;9998;;9987;:18;;9965:110;;;;-1:-1:-1;;;9965:110:0;;9583:2:1;9965:110:0;;;9565:21:1;9622:2;9602:18;;;9595:30;9661:34;9641:18;;;9634:62;-1:-1:-1;;;9712:18:1;;;9705:40;9762:19;;9965:110:0;9381:406:1;9965:110:0;10086:19;10108:10;:8;:10::i;:::-;10086:32;-1:-1:-1;10136:24:0;:7;10086:32;10136:11;:24::i;:::-;10129:31;9845:323;-1:-1:-1;;;9845:323:0:o;15037:474::-;4616:9;:16;;-1:-1:-1;;;;4616:16:0;-1:-1:-1;;;4616:16:0;;;15130::::1;::::0;;15144:1:::1;15130:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15130:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15130:16:0::1;15106:40;;15175:4;15157;15162:1;15157:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15157:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15201:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;15201:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15157:7;;15201:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15191:4;15196:1;15191:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15191:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;15266:15:::1;::::0;15234:62:::1;::::0;15251:4:::1;::::0;15266:15:::1;15284:11:::0;15234:8:::1;:62::i;:::-;15307:15;::::0;:196:::1;::::0;-1:-1:-1;;;15307:196:0;;-1:-1:-1;;;;;15307:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;15388:11;;15307:15:::1;::::0;15430:4;;15457::::1;::::0;15477:15:::1;::::0;15307:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4655:9:0;:17;;-1:-1:-1;;;;4655:17:0;;;-1:-1:-1;;;;15037:474:0:o;11416:248::-;11491:1;11468:20;11524:21;11491:1;11524:6;:21;:::i;:::-;11556:10;;:31;;11503:42;;-1:-1:-1;;;;;;11556:10:0;;:31;;;;;11503:42;;11556:10;:31;:10;:31;11503:42;11556:10;:31;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11598:16:0;;-1:-1:-1;;;;;11598:16:0;:58;11638:16;:12;11598:16;11638;:::i;:::-;11624:31;;:10;:31;:::i;:::-;11598:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16328:349;16492:6;16487:51;;16515:11;:9;:11::i;:::-;16548:47;16569:6;16577:9;16588:6;16548:20;:47::i;:::-;16611:6;16606:64;;16646:12;16240:21;;16227:10;:34;16292:16;;16272:17;:36;16186:130;8933:164;8975:7;8996:15;9013;9032:19;:17;:19::i;:::-;8995:56;;-1:-1:-1;8995:56:0;-1:-1:-1;9069:20:0;8995:56;;9069:11;:20::i;:::-;9062:27;;;;8933:164;:::o;1420:132::-;1478:7;1505:39;1509:1;1512;1505:39;;;;;;;;;;;;;;;;;:3;:39::i;10529:241::-;10573:10;;:15;:41;;;;-1:-1:-1;10592:17:0;;:22;10573:41;10569:54;;;10529:241::o;10569:54::-;10657:10;;;10633:21;:34;10697:17;;;10678:16;:36;-1:-1:-1;10716:14:0;;;;10741:21;10529:241::o;15566:612::-;15716:15;15746:23;15784:12;15811:23;15849:12;15876:13;15903:19;15914:7;15903:10;:19::i;:::-;-1:-1:-1;;;;;15951:15:0;;;;;;:7;:15;;;;;;15701:221;;-1:-1:-1;15701:221:0;;-1:-1:-1;15701:221:0;;-1:-1:-1;15701:221:0;-1:-1:-1;15701:221:0;-1:-1:-1;15701:221:0;-1:-1:-1;15951:28:0;;15701:221;15951:19;:28::i;:::-;-1:-1:-1;;;;;15933:15:0;;;;;;;:7;:15;;;;;;:46;;;;16011:18;;;;;;;:39;;16034:15;16011:22;:39::i;:::-;-1:-1:-1;;;;;15990:18:0;;;;;;:7;:18;;;;;:60;16061:18;16073:5;16061:11;:18::i;:::-;16081:29;16099:4;16105;16081:17;:29::i;:::-;16143:9;-1:-1:-1;;;;;16126:44:0;16135:6;-1:-1:-1;;;;;16126:44:0;;16154:15;16126:44;;;;160:25:1;;148:2;133:18;;14:177;16126:44:0;;;;;;;;15690:488;;;;;;15566:612;;;:::o;9105:257::-;9203:7;;9156;;;;5200:21;9271:20;9203:7;5200:21;9271:11;:20::i;:::-;9261:7;:30;9257:61;;;-1:-1:-1;;9301:7:0;;;5200:21;;-1:-1:-1;9105:257:0;-1:-1:-1;9105:257:0:o;9257:61::-;9337:7;;9346;;-1:-1:-1;9105:257:0;-1:-1:-1;9105:257:0:o;1047:223::-;1167:7;1202:12;1195:5;1187:28;;;;-1:-1:-1;;;1187:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1226:9:0;1238:5;1242:1;1238;:5;:::i;10778:626::-;10878:7;10900;10922;10944;10966;10988;11024:23;11049:12;11063:13;11093:51;11105:7;11114:10;;11126:17;;11093:11;:51::i;:::-;11023:121;;;;;;11155:19;11177:10;:8;:10::i;:::-;11155:32;;11199:15;11216:23;11241:12;11270:46;11282:7;11291:4;11297:5;11304:11;11270;:46::i;:::-;11198:118;;-1:-1:-1;11198:118:0;-1:-1:-1;11198:118:0;-1:-1:-1;11367:15:0;;-1:-1:-1;11384:4:0;;-1:-1:-1;11390:5:0;;-1:-1:-1;;;;;10778:626:0;;;;;;;:::o;1276:136::-;1334:7;1361:43;1365:1;1368;1361:43;;;;;;;;;;;;;;;;;:3;:43::i;376:179::-;434:7;;466:5;470:1;466;:5;:::i;:::-;454:17;;495:1;490;:6;;482:46;;;;-1:-1:-1;;;482:46:0;;11367:2:1;482:46:0;;;11349:21:1;11406:2;11386:18;;;11379:30;11445:29;11425:18;;;11418:57;11492:18;;482:46:0;11165:351:1;10306:213:0;10361:19;10383:10;:8;:10::i;:::-;10361:32;-1:-1:-1;10404:13:0;10420:22;:5;10361:32;10420:9;:22::i;:::-;10494:4;10478:22;;;;:7;:22;;;;;;10404:38;;-1:-1:-1;10478:33:0;;10404:38;10478:26;:33::i;:::-;10469:4;10453:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;10306:213:0:o;11868:163::-;11952:7;;:17;;11964:4;11952:11;:17::i;:::-;11942:7;:27;11998:15;;:25;;12018:4;11998:19;:25::i;:::-;11980:15;:43;-1:-1:-1;;11868:163:0:o;9370:467::-;9538:7;;;;9632:29;9657:3;9632:20;:7;9644;9632:11;:20::i;:::-;:24;;:29::i;:::-;9617:44;-1:-1:-1;9672:13:0;9688:28;9712:3;9688:19;:7;9700:6;9688:11;:19::i;:28::-;9672:44;-1:-1:-1;9727:23:0;9753:28;9672:44;9753:17;:7;9765:4;9753:11;:17::i;:::-;:21;;:28::i;:::-;9727:54;9817:4;;-1:-1:-1;9823:5:0;;-1:-1:-1;9370:467:0;;-1:-1:-1;;;;;9370:467:0:o;8391:534::-;8585:7;;;;8682:24;:7;8694:11;8682;:24::i;:::-;8664:42;-1:-1:-1;8717:12:0;8732:21;:4;8741:11;8732:8;:21::i;:::-;8717:36;-1:-1:-1;8764:13:0;8780:22;:5;8790:11;8780:9;:22::i;:::-;8764:38;-1:-1:-1;8813:23:0;8839:28;8764:38;8839:17;:7;8851:4;8839:11;:17::i;:28::-;8886:7;;;;-1:-1:-1;8912:4:0;;-1:-1:-1;8391:534:0;;-1:-1:-1;;;;;;;8391:534:0:o;793:246::-;851:7;875:1;880;875:6;871:47;;-1:-1:-1;905:1:0;898:8;;871:47;928:9;940:5;944:1;940;:5;:::i;:::-;928:17;-1:-1:-1;973:1:0;964:5;968:1;928:17;964:5;:::i;:::-;:10;956:56;;;;-1:-1:-1;;;956:56:0;;11723:2:1;956:56:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:31;11893:19;;956:56:0;11521:397:1;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2713:180::-;2772:6;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;-1:-1:-1;2864:23:1;;2713:180;-1:-1:-1;2713:180:1:o;2898:247::-;2957:6;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3065:9;3052:23;3084:31;3109:5;3084:31;:::i;3150:782::-;3242:6;3250;3258;3311:2;3299:9;3290:7;3286:23;3282:32;3279:52;;;3327:1;3324;3317:12;3279:52;3367:9;3354:23;3396:18;3437:2;3429:6;3426:14;3423:34;;;3453:1;3450;3443:12;3423:34;3491:6;3480:9;3476:22;3466:32;;3536:7;3529:4;3525:2;3521:13;3517:27;3507:55;;3558:1;3555;3548:12;3507:55;3598:2;3585:16;3624:2;3616:6;3613:14;3610:34;;;3640:1;3637;3630:12;3610:34;3695:7;3688:4;3678:6;3675:1;3671:14;3667:2;3663:23;3659:34;3656:47;3653:67;;;3716:1;3713;3706:12;3653:67;3747:4;3739:13;;;;-1:-1:-1;3771:6:1;-1:-1:-1;;3812:20:1;;3799:34;3869:13;;3862:21;3852:32;;3842:60;;3898:1;3895;3888:12;3842:60;3921:5;3911:15;;;3150:782;;;;;:::o;3937:388::-;4005:6;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:31;4165:5;4140:31;:::i;:::-;4190:5;-1:-1:-1;4247:2:1;4232:18;;4219:32;4260:33;4219:32;4260:33;:::i;:::-;4312:7;4302:17;;;3937:388;;;;;:::o;4330:356::-;4532:2;4514:21;;;4551:18;;;4544:30;4610:34;4605:2;4590:18;;4583:62;4677:2;4662:18;;4330:356::o;4691:127::-;4752:10;4747:3;4743:20;4740:1;4733:31;4783:4;4780:1;4773:15;4807:4;4804:1;4797:15;4823:127;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:135;4994:3;5015:17;;;5012:43;;5035:18;;:::i;:::-;-1:-1:-1;5082:1:1;5071:13;;4955:135::o;8319:125::-;8384:9;;;8405:10;;;8402:36;;;8418:18;;:::i;8853:168::-;8926:9;;;8957;;8974:15;;;8968:22;;8954:37;8944:71;;8995:18;;:::i;9026:217::-;9066:1;9092;9082:132;;9136:10;9131:3;9127:20;9124:1;9117:31;9171:4;9168:1;9161:15;9199:4;9196:1;9189:15;9082:132;-1:-1:-1;9228:9:1;;9026:217::o;9248:128::-;9315:9;;;9336:11;;;9333:37;;;9350:18;;:::i;9924:251::-;9994:6;10047:2;10035:9;10026:7;10022:23;10018:32;10015:52;;;10063:1;10060;10053:12;10015:52;10095:9;10089:16;10114:31;10139:5;10114:31;:::i;10180:980::-;10442:4;10490:3;10479:9;10475:19;10521:6;10510:9;10503:25;10547:2;10585:6;10580:2;10569:9;10565:18;10558:34;10628:3;10623:2;10612:9;10608:18;10601:31;10652:6;10687;10681:13;10718:6;10710;10703:22;10756:3;10745:9;10741:19;10734:26;;10795:2;10787:6;10783:15;10769:29;;10816:1;10826:195;10840:6;10837:1;10834:13;10826:195;;;10905:13;;-1:-1:-1;;;;;10901:39:1;10889:52;;10996:15;;;;10961:12;;;;10937:1;10855:9;10826:195;;;-1:-1:-1;;;;;;;11077:32:1;;;;11072:2;11057:18;;11050:60;-1:-1:-1;;;11141:3:1;11126:19;11119:35;11038:3;10180:980;-1:-1:-1;;;10180:980:1:o

Swarm Source

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