ETH Price: $3,040.38 (-6.82%)
Gas: 15 Gwei

Token

Etherpets (EPETS)
 

Overview

Max Total Supply

99,999,999.999999998 EPETS

Holders

713 ( -0.559%)

Total Transfers

-

Market

Price

$0.01 @ 0.000003 ETH (-11.54%)

Onchain Market Cap

$797,384.25

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Etherpets is a DeFi project focused on collecting, training, and evolving living digital pets, earning experience through blockchain transactions in your DeFi wallet. Etherpets is also developing a unique 3D PVP blockchain strategy game.

Market

Volume (24H):$12,920.61
Market Capitalization:$0.00
Circulating Supply:0.00 EPETS
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Etherpets

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-29
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.22;

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

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

}

contract Ownable is Context {
    address private _owner;
    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);
    }

}

interface IUniswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

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

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

interface Collection {
    function mintTo(address to) external;
}

contract Etherpets is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;
    address payable private _deadWallet = payable(0x000000000000000000000000000000000000dEaD);
    uint256 firstBlock;

    uint256 private _initialBuyTax=25;
    uint256 private _initialSellTax=35;
    uint256 private _finalBuyTax=3;
    uint256 private _finalSellTax=3;
    uint256 private _reduceBuyTaxAt=50;
    uint256 private _reduceSellTaxAt=50;
    uint256 private _preventSwapBefore=25;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Etherpets";
    string private constant _symbol = unicode"EPETS";
    uint256 public _maxTxAmount =   2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 500000 * 10**_decimals;
    uint256 public _maxTaxSwap= 500000 * 10**_decimals;
    uint256 public _mintingCost = 10000 * 10**_decimals; 

    IUniswapV2Router02 private uniswapV2Router;
    Collection private NFTContract;
    IUniswapV2Pair private Pair;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = 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 view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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 _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");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (to != uniswapV2Pair && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"Trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        Pair = IUniswapV2Pair(uniswapV2Pair);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    function setNFTContract(address ca) external onlyOwner() {
        NFTContract = Collection(ca);
    }

    function burn(uint256 amount, address from) private {
        _transfer(from, _deadWallet, amount);
        _tTotal = _tTotal.sub(amount);
    }

    function payTokensToMint(uint256 amount) public {
        require(tradingOpen, "Cannot mint before trading is open");
        require(amount != _mintingCost, "Wrong amount to mint a single NFT");
        burn(amount, msg.sender);
        NFTContract.mintTo(msg.sender);
    }

    function payTokensToMintUSD() public {
        //Minting requires $100 worth of tokens
        require(tradingOpen, "Cannot mint before trading is open");
        (uint256 res0, uint256 res1, uint32 _blockTimestamp) = Pair.getReserves();
        uint256 poolPrice = res0.mul(103).div(100).div(res1);
        IUniswapV2Pair USDPair =  IUniswapV2Pair(0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc);
        (uint resUSD, uint256 resETH, uint32 _timestamp) = USDPair.getReserves();
        uint256 ethPrice = res0.mul(1003).div(1000).div(res1);
        uint256 usdAmtIn = 100;
        uint256 tokenAmtRequired = usdAmtIn.div(ethPrice).mul(poolPrice);
        require(tokenAmtRequired > balanceOf(msg.sender), "Too few tokens held for a single mint."); 
        burn(tokenAmtRequired, msg.sender);
        NFTContract.mintTo(msg.sender);
    }

    receive() external payable {}
}

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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mintingCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"payTokensToMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"payTokensToMintUSD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ca","type":"address"}],"name":"setNFTContract","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":"view","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600580546001600160a01b03191661dead17905560196007819055602360085560036009818155600a9182556032600b819055600c55600d929092555f600e5562000050919062000360565b62000060906305f5e10062000377565b600f55620000716009600a62000360565b6200008090621e848062000377565b601055620000916009600a62000360565b620000a090621e848062000377565b601155620000b16009600a62000360565b620000c0906207a12062000377565b601255620000d16009600a62000360565b620000e0906207a12062000377565b601355620000f16009600a62000360565b620000ff9061271062000377565b6014556018805461ffff60a81b191690553480156200011c575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b03191633908117909155600f545f918252600160208190526040832091909155906003906200019e5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454909116835291208054909216179055620001fc3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516200024391815260200190565b60405180910390a362000391565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002a557815f190482111562000289576200028962000251565b808516156200029757918102915b93841c93908002906200026a565b509250929050565b5f82620002bd575060016200035a565b81620002cb57505f6200035a565b8160018114620002e45760028114620002ef576200030f565b60019150506200035a565b60ff84111562000303576200030362000251565b50506001821b6200035a565b5060208310610133831016604e8410600b841016171562000334575081810a6200035a565b62000340838362000265565b805f190482111562000356576200035662000251565b0290505b92915050565b5f6200037060ff841683620002ad565b9392505050565b80820281158282048414176200035a576200035a62000251565b611b05806200039f5f395ff3fe608060405260043610610129575f3560e01c80637d1db4a5116100a8578063a7ccabdf1161006d578063a7ccabdf14610317578063a9059cbb14610336578063bf474bed14610355578063c07bab3a1461036a578063c9567bf914610389578063dd62ed3e1461039d575f80fd5b80637d1db4a5146102865780638da5cb5b1461029b5780638f9a55c0146102c15780639581662e146102d657806395d89b41146102ea575f80fd5b806323b872dd116100ee57806323b872dd146101ee578063313ce5671461020d57806370a0823114610228578063715018a61461025c578063751039fc14610272575f80fd5b806303e9edff1461013457806306fdde031461015c578063095ea7b3146101965780630faee56f146101c557806318160ddd146101da575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5061014960145481565b6040519081526020015b60405180910390f35b348015610167575f80fd5b5060408051808201909152600981526845746865727065747360b81b60208201525b6040516101539190611723565b3480156101a1575f80fd5b506101b56101b0366004611786565b6103e1565b6040519015158152602001610153565b3480156101d0575f80fd5b5061014960135481565b3480156101e5575f80fd5b50600f54610149565b3480156101f9575f80fd5b506101b56102083660046117b0565b6103f7565b348015610218575f80fd5b5060405160098152602001610153565b348015610233575f80fd5b506101496102423660046117ee565b6001600160a01b03165f9081526001602052604090205490565b348015610267575f80fd5b5061027061045e565b005b34801561027d575f80fd5b506102706104d8565b348015610291575f80fd5b5061014960105481565b3480156102a6575f80fd5b505f546040516001600160a01b039091168152602001610153565b3480156102cc575f80fd5b5061014960115481565b3480156102e1575f80fd5b50610270610543565b3480156102f5575f80fd5b50604080518082019091526005815264455045545360d81b6020820152610189565b348015610322575f80fd5b506102706103313660046117ee565b6107ab565b348015610341575f80fd5b506101b5610350366004611786565b6107f6565b348015610360575f80fd5b5061014960125481565b348015610375575f80fd5b50610270610384366004611809565b610802565b348015610394575f80fd5b506102706108eb565b3480156103a8575f80fd5b506101496103b7366004611820565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103ed338484610c94565b5060015b92915050565b5f610403848484610db7565b610454843361044f85604051806060016040528060288152602001611aa8602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061136f565b610c94565b5060019392505050565b5f546001600160a01b031633146104905760405162461bcd60e51b815260040161048790611857565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105015760405162461bcd60e51b815260040161048790611857565b600f54601081905560118190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b601854600160a01b900460ff1661056c5760405162461bcd60e51b81526004016104879061188c565b5f805f60175f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156105bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e391906118e9565b6001600160701b0392831695509116925090505f61060f836106096064818860676113a7565b9061142c565b90505f73b4e16d0168e52d35cacd2c6185b44281ec28c9dc90505f805f836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610668573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068c91906118e9565b6001600160701b0392831695509116925090505f6106b4886106096103e8818d6103eb6113a7565b905060645f6106cd886106c7848661142c565b906113a7565b335f90815260016020526040902054909150811161073c5760405162461bcd60e51b815260206004820152602660248201527f546f6f2066657720746f6b656e732068656c6420666f7220612073696e676c656044820152651036b4b73a1760d11b6064820152608401610487565b610746813361146d565b60165460405163755edd1760e01b81523360048201526001600160a01b039091169063755edd17906024015f604051808303815f87803b158015610788575f80fd5b505af115801561079a573d5f803e3d5ffd5b505050505050505050505050505050565b5f546001600160a01b031633146107d45760405162461bcd60e51b815260040161048790611857565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f6103ed338484610db7565b601854600160a01b900460ff1661082b5760405162461bcd60e51b81526004016104879061188c565b60145481036108865760405162461bcd60e51b815260206004820152602160248201527f57726f6e6720616d6f756e7420746f206d696e7420612073696e676c65204e466044820152601560fa1b6064820152608401610487565b610890813361146d565b60165460405163755edd1760e01b81523360048201526001600160a01b039091169063755edd17906024015f604051808303815f87803b1580156108d2575f80fd5b505af11580156108e4573d5f803e3d5ffd5b5050505050565b5f546001600160a01b031633146109145760405162461bcd60e51b815260040161048790611857565b601854600160a01b900460ff161561096e5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610487565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600f546109a5913091610c94565b60155f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a199190611935565b6001600160a01b031663c9c653963060155f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9c9190611935565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ae6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611935565b601880546001600160a01b039283166001600160a01b031991821681179092556017805490911690911790556015541663f305d7194730610b5f816001600160a01b03165f9081526001602052604090205490565b5f80610b725f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610bd8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bfd9190611950565b505060185460155460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c76919061197b565b506018805462ff00ff60a01b19166201000160a01b17905543600655565b6001600160a01b038316610cf65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610487565b6001600160a01b038216610d575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610487565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610487565b6001600160a01b038216610e7d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610487565b5f8111610ede5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610487565b5f80546001600160a01b03858116911614801590610f0957505f546001600160a01b03848116911614155b1561123257610f346064610609600b54600e5411610f2957600754610f2d565b6009545b85906113a7565b6018549091506001600160a01b038581169116148015610f6257506015546001600160a01b03848116911614155b8015610f8657506001600160a01b0383165f9081526003602052604090205460ff16155b1561108d57601054821115610fdd5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610487565b60115482610fff856001600160a01b03165f9081526001602052604090205490565b61100991906119ae565b11156110575760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610487565b43600654600361106791906119ae565b111561107857823b15611078575f80fd5b600e8054905f611087836119c1565b91905055505b6018546001600160a01b038481169116148015906110c357506001600160a01b0383165f9081526003602052604090205460ff16155b1561114257601154826110ea856001600160a01b03165f9081526001602052604090205490565b6110f491906119ae565b11156111425760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610487565b6018546001600160a01b03848116911614801561116857506001600160a01b0384163014155b15611195576111926064610609600c54600e541161118857600854610f2d565b600a5485906113a7565b90505b305f90815260016020526040902054601854600160a81b900460ff161580156111cb57506018546001600160a01b038581169116145b80156111e05750601854600160b01b900460ff165b80156111ed575060125481115b80156111fc5750600d54600e54115b156112305761121e6112198461121484601354611499565b611499565b6114ad565b47801561122e5761122e4761161d565b505b505b80156112aa57305f908152600160205260409020546112519082611658565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112a19085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546112cc90836116b6565b6001600160a01b0385165f9081526001602052604090205561130f6112f183836116b6565b6001600160a01b0385165f9081526001602052604090205490611658565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61135885856116b6565b60405190815260200160405180910390a350505050565b5f81848411156113925760405162461bcd60e51b81526004016104879190611723565b505f61139e84866119d9565b95945050505050565b5f825f036113b657505f6103f1565b5f6113c183856119ec565b9050826113ce8583611a03565b146114255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610487565b9392505050565b5f61142583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116f7565b6005546114859082906001600160a01b031684610db7565b600f5461149290836116b6565b600f555050565b5f8183116114a75782611425565b50919050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106114f3576114f3611a22565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190611935565b8160018151811061158157611581611a22565b6001600160a01b0392831660209182029290920101526015546115a79130911684610c94565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906115df9085905f90869030904290600401611a36565b5f604051808303815f87803b1580156115f6575f80fd5b505af1158015611608573d5f803e3d5ffd5b50506018805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611654573d5f803e3d5ffd5b5050565b5f8061166483856119ae565b9050838110156114255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610487565b5f61142583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061136f565b5f81836117175760405162461bcd60e51b81526004016104879190611723565b505f61139e8486611a03565b5f602080835283518060208501525f5b8181101561174f57858101830151858201604001528201611733565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611783575f80fd5b50565b5f8060408385031215611797575f80fd5b82356117a28161176f565b946020939093013593505050565b5f805f606084860312156117c2575f80fd5b83356117cd8161176f565b925060208401356117dd8161176f565b929592945050506040919091013590565b5f602082840312156117fe575f80fd5b81356114258161176f565b5f60208284031215611819575f80fd5b5035919050565b5f8060408385031215611831575f80fd5b823561183c8161176f565b9150602083013561184c8161176f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f43616e6e6f74206d696e74206265666f72652074726164696e67206973206f7060408201526132b760f11b606082015260800190565b80516001600160701b03811681146118e4575f80fd5b919050565b5f805f606084860312156118fb575f80fd5b611904846118ce565b9250611912602085016118ce565b9150604084015163ffffffff8116811461192a575f80fd5b809150509250925092565b5f60208284031215611945575f80fd5b81516114258161176f565b5f805f60608486031215611962575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561198b575f80fd5b81518015158114611425575f80fd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156103f1576103f161199a565b5f600182016119d2576119d261199a565b5060010190565b818103818111156103f1576103f161199a565b80820281158282048414176103f1576103f161199a565b5f82611a1d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a865784516001600160a01b031683529383019391830191600101611a61565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122060ff2bd1b553430d45d9fbb69305b47615de6e1e95a031714f8327590a68dd7f64736f6c63430008160033

Deployed Bytecode

0x608060405260043610610129575f3560e01c80637d1db4a5116100a8578063a7ccabdf1161006d578063a7ccabdf14610317578063a9059cbb14610336578063bf474bed14610355578063c07bab3a1461036a578063c9567bf914610389578063dd62ed3e1461039d575f80fd5b80637d1db4a5146102865780638da5cb5b1461029b5780638f9a55c0146102c15780639581662e146102d657806395d89b41146102ea575f80fd5b806323b872dd116100ee57806323b872dd146101ee578063313ce5671461020d57806370a0823114610228578063715018a61461025c578063751039fc14610272575f80fd5b806303e9edff1461013457806306fdde031461015c578063095ea7b3146101965780630faee56f146101c557806318160ddd146101da575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5061014960145481565b6040519081526020015b60405180910390f35b348015610167575f80fd5b5060408051808201909152600981526845746865727065747360b81b60208201525b6040516101539190611723565b3480156101a1575f80fd5b506101b56101b0366004611786565b6103e1565b6040519015158152602001610153565b3480156101d0575f80fd5b5061014960135481565b3480156101e5575f80fd5b50600f54610149565b3480156101f9575f80fd5b506101b56102083660046117b0565b6103f7565b348015610218575f80fd5b5060405160098152602001610153565b348015610233575f80fd5b506101496102423660046117ee565b6001600160a01b03165f9081526001602052604090205490565b348015610267575f80fd5b5061027061045e565b005b34801561027d575f80fd5b506102706104d8565b348015610291575f80fd5b5061014960105481565b3480156102a6575f80fd5b505f546040516001600160a01b039091168152602001610153565b3480156102cc575f80fd5b5061014960115481565b3480156102e1575f80fd5b50610270610543565b3480156102f5575f80fd5b50604080518082019091526005815264455045545360d81b6020820152610189565b348015610322575f80fd5b506102706103313660046117ee565b6107ab565b348015610341575f80fd5b506101b5610350366004611786565b6107f6565b348015610360575f80fd5b5061014960125481565b348015610375575f80fd5b50610270610384366004611809565b610802565b348015610394575f80fd5b506102706108eb565b3480156103a8575f80fd5b506101496103b7366004611820565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103ed338484610c94565b5060015b92915050565b5f610403848484610db7565b610454843361044f85604051806060016040528060288152602001611aa8602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061136f565b610c94565b5060019392505050565b5f546001600160a01b031633146104905760405162461bcd60e51b815260040161048790611857565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105015760405162461bcd60e51b815260040161048790611857565b600f54601081905560118190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b601854600160a01b900460ff1661056c5760405162461bcd60e51b81526004016104879061188c565b5f805f60175f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156105bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e391906118e9565b6001600160701b0392831695509116925090505f61060f836106096064818860676113a7565b9061142c565b90505f73b4e16d0168e52d35cacd2c6185b44281ec28c9dc90505f805f836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610668573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068c91906118e9565b6001600160701b0392831695509116925090505f6106b4886106096103e8818d6103eb6113a7565b905060645f6106cd886106c7848661142c565b906113a7565b335f90815260016020526040902054909150811161073c5760405162461bcd60e51b815260206004820152602660248201527f546f6f2066657720746f6b656e732068656c6420666f7220612073696e676c656044820152651036b4b73a1760d11b6064820152608401610487565b610746813361146d565b60165460405163755edd1760e01b81523360048201526001600160a01b039091169063755edd17906024015f604051808303815f87803b158015610788575f80fd5b505af115801561079a573d5f803e3d5ffd5b505050505050505050505050505050565b5f546001600160a01b031633146107d45760405162461bcd60e51b815260040161048790611857565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f6103ed338484610db7565b601854600160a01b900460ff1661082b5760405162461bcd60e51b81526004016104879061188c565b60145481036108865760405162461bcd60e51b815260206004820152602160248201527f57726f6e6720616d6f756e7420746f206d696e7420612073696e676c65204e466044820152601560fa1b6064820152608401610487565b610890813361146d565b60165460405163755edd1760e01b81523360048201526001600160a01b039091169063755edd17906024015f604051808303815f87803b1580156108d2575f80fd5b505af11580156108e4573d5f803e3d5ffd5b5050505050565b5f546001600160a01b031633146109145760405162461bcd60e51b815260040161048790611857565b601854600160a01b900460ff161561096e5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610487565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600f546109a5913091610c94565b60155f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a199190611935565b6001600160a01b031663c9c653963060155f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9c9190611935565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ae6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611935565b601880546001600160a01b039283166001600160a01b031991821681179092556017805490911690911790556015541663f305d7194730610b5f816001600160a01b03165f9081526001602052604090205490565b5f80610b725f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610bd8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bfd9190611950565b505060185460155460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c76919061197b565b506018805462ff00ff60a01b19166201000160a01b17905543600655565b6001600160a01b038316610cf65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610487565b6001600160a01b038216610d575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610487565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610487565b6001600160a01b038216610e7d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610487565b5f8111610ede5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610487565b5f80546001600160a01b03858116911614801590610f0957505f546001600160a01b03848116911614155b1561123257610f346064610609600b54600e5411610f2957600754610f2d565b6009545b85906113a7565b6018549091506001600160a01b038581169116148015610f6257506015546001600160a01b03848116911614155b8015610f8657506001600160a01b0383165f9081526003602052604090205460ff16155b1561108d57601054821115610fdd5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610487565b60115482610fff856001600160a01b03165f9081526001602052604090205490565b61100991906119ae565b11156110575760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610487565b43600654600361106791906119ae565b111561107857823b15611078575f80fd5b600e8054905f611087836119c1565b91905055505b6018546001600160a01b038481169116148015906110c357506001600160a01b0383165f9081526003602052604090205460ff16155b1561114257601154826110ea856001600160a01b03165f9081526001602052604090205490565b6110f491906119ae565b11156111425760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610487565b6018546001600160a01b03848116911614801561116857506001600160a01b0384163014155b15611195576111926064610609600c54600e541161118857600854610f2d565b600a5485906113a7565b90505b305f90815260016020526040902054601854600160a81b900460ff161580156111cb57506018546001600160a01b038581169116145b80156111e05750601854600160b01b900460ff165b80156111ed575060125481115b80156111fc5750600d54600e54115b156112305761121e6112198461121484601354611499565b611499565b6114ad565b47801561122e5761122e4761161d565b505b505b80156112aa57305f908152600160205260409020546112519082611658565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112a19085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546112cc90836116b6565b6001600160a01b0385165f9081526001602052604090205561130f6112f183836116b6565b6001600160a01b0385165f9081526001602052604090205490611658565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61135885856116b6565b60405190815260200160405180910390a350505050565b5f81848411156113925760405162461bcd60e51b81526004016104879190611723565b505f61139e84866119d9565b95945050505050565b5f825f036113b657505f6103f1565b5f6113c183856119ec565b9050826113ce8583611a03565b146114255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610487565b9392505050565b5f61142583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116f7565b6005546114859082906001600160a01b031684610db7565b600f5461149290836116b6565b600f555050565b5f8183116114a75782611425565b50919050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106114f3576114f3611a22565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190611935565b8160018151811061158157611581611a22565b6001600160a01b0392831660209182029290920101526015546115a79130911684610c94565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906115df9085905f90869030904290600401611a36565b5f604051808303815f87803b1580156115f6575f80fd5b505af1158015611608573d5f803e3d5ffd5b50506018805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611654573d5f803e3d5ffd5b5050565b5f8061166483856119ae565b9050838110156114255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610487565b5f61142583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061136f565b5f81836117175760405162461bcd60e51b81526004016104879190611723565b505f61139e8486611a03565b5f602080835283518060208501525f5b8181101561174f57858101830151858201604001528201611733565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611783575f80fd5b50565b5f8060408385031215611797575f80fd5b82356117a28161176f565b946020939093013593505050565b5f805f606084860312156117c2575f80fd5b83356117cd8161176f565b925060208401356117dd8161176f565b929592945050506040919091013590565b5f602082840312156117fe575f80fd5b81356114258161176f565b5f60208284031215611819575f80fd5b5035919050565b5f8060408385031215611831575f80fd5b823561183c8161176f565b9150602083013561184c8161176f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f43616e6e6f74206d696e74206265666f72652074726164696e67206973206f7060408201526132b760f11b606082015260800190565b80516001600160701b03811681146118e4575f80fd5b919050565b5f805f606084860312156118fb575f80fd5b611904846118ce565b9250611912602085016118ce565b9150604084015163ffffffff8116811461192a575f80fd5b809150509250925092565b5f60208284031215611945575f80fd5b81516114258161176f565b5f805f60608486031215611962575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561198b575f80fd5b81518015158114611425575f80fd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156103f1576103f161199a565b5f600182016119d2576119d261199a565b5060010190565b818103818111156103f1576103f161199a565b80820281158282048414176103f1576103f161199a565b5f82611a1d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a865784516001600160a01b031683529383019391830191600101611a61565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122060ff2bd1b553430d45d9fbb69305b47615de6e1e95a031714f8327590a68dd7f64736f6c63430008160033

Deployed Bytecode Sourcemap

3693:9150:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4908:51;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4908:51:0;;;;;;;;5714:83;;;;;;;;;;-1:-1:-1;5784:5:0;;;;;;;;;;;;-1:-1:-1;;;5784:5:0;;;;5714:83;;;;;;;:::i;6547:161::-;;;;;;;;;;-1:-1:-1;6547:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;6547:161:0;1205:187:1;4851:50:0;;;;;;;;;;;;;;;;5991:95;;;;;;;;;;-1:-1:-1;6071:7:0;;5991:95;;6716:313;;;;;;;;;;-1:-1:-1;6716:313:0;;;;;:::i;:::-;;:::i;5900:83::-;;;;;;;;;;-1:-1:-1;5900:83:0;;4486:1;2000:36:1;;1988:2;1973:18;5900:83:0;1858:184:1;6094:119:0;;;;;;;;;;-1:-1:-1;6094:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6187:18:0;6160:7;6187:18;;;:9;:18;;;;;;;6094:119;2554:148;;;;;;;;;;;;;:::i;:::-;;10370:159;;;;;;;;;;;;;:::i;4664:55::-;;;;;;;;;;;;;;;;2340:79;;;;;;;;;;-1:-1:-1;2378:7:0;2405:6;2340:79;;-1:-1:-1;;;;;2405:6:0;;;2445:51:1;;2433:2;2418:18;2340:79:0;2299:203:1;4726:55:0;;;;;;;;;;;;;;;;11954:849;;;;;;;;;;;;;:::i;5805:87::-;;;;;;;;;;-1:-1:-1;5877:7:0;;;;;;;;;;;;-1:-1:-1;;;5877:7:0;;;;5805:87;;11399:104;;;;;;;;;;-1:-1:-1;11399:104:0;;;;;:::i;:::-;;:::i;6221:167::-;;;;;;;;;;-1:-1:-1;6221:167:0;;;;;:::i;:::-;;:::i;4788:56::-;;;;;;;;;;;;;;;;11666:280;;;;;;;;;;-1:-1:-1;11666:280:0;;;;;:::i;:::-;;:::i;10637:754::-;;;;;;;;;;;;;:::i;6396:143::-;;;;;;;;;;-1:-1:-1;6396:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6504:18:0;;;6477:7;6504:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6396:143;6547:161;6622:4;6639:39;175:10;6662:7;6671:6;6639:8;:39::i;:::-;-1:-1:-1;6696:4:0;6547:161;;;;;:::o;6716:313::-;6814:4;6831:36;6841:6;6849:9;6860:6;6831:9;:36::i;:::-;6878:121;6887:6;175:10;6909:89;6947:6;6909:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6909:19:0;;;;;;:11;:19;;;;;;;;175:10;6909:33;;;;;;;;;;:37;:89::i;:::-;6878:8;:121::i;:::-;-1:-1:-1;7017:4:0;6716:313;;;;;:::o;2554:148::-;2467:6;;-1:-1:-1;;;;;2467:6:0;175:10;2467:22;2459:67;;;;-1:-1:-1;;;2459:67:0;;;;;;;:::i;:::-;;;;;;;;;2661:1:::1;2645:6:::0;;2624:40:::1;::::0;-1:-1:-1;;;;;2645:6:0;;::::1;::::0;2624:40:::1;::::0;2661:1;;2624:40:::1;2692:1;2675:19:::0;;-1:-1:-1;;;;;;2675:19:0::1;::::0;;2554:148::o;10370:159::-;2467:6;;-1:-1:-1;;;;;2467:6:0;175:10;2467:22;2459:67;;;;-1:-1:-1;;;2459:67:0;;;;;;;:::i;:::-;10438:7:::1;::::0;10423:12:::1;:22:::0;;;10456:14:::1;:22:::0;;;10494:27:::1;::::0;160:25:1;;;10494:27:0::1;::::0;148:2:1;133:18;10494:27:0::1;;;;;;;10370:159::o:0;11954:849::-;12059:11;;-1:-1:-1;;;12059:11:0;;;;12051:58;;;;-1:-1:-1;;;12051:58:0;;;;;;;:::i;:::-;12121:12;12135;12149:22;12175:4;;;;;;;;;-1:-1:-1;;;;;12175:4:0;-1:-1:-1;;;;;12175:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12120:73:0;;;;-1:-1:-1;12120:73:0;;;-1:-1:-1;12120:73:0;-1:-1:-1;12204:17:0;12224:32;12120:73;12224:22;12242:3;12224:22;12120:73;12233:3;12224:8;:13::i;:::-;:17;;:22::i;:32::-;12204:52;;12267:22;12308:42;12267:84;;12363:11;12376:14;12392:17;12413:7;-1:-1:-1;;;;;12413:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12362:72:0;;;;-1:-1:-1;12362:72:0;;;-1:-1:-1;12362:72:0;-1:-1:-1;12445:16:0;12464:34;12493:4;12464:24;12483:4;12464:24;:4;12473;12464:8;:14::i;:34::-;12445:53;-1:-1:-1;12528:3:0;12509:16;12569:37;12596:9;12569:22;12528:3;12445:53;12569:12;:22::i;:::-;:26;;:37::i;:::-;12654:10;6160:7;6187:18;;;:9;:18;;;;;;12542:64;;-1:-1:-1;12625:16:0;:40;12617:91;;;;-1:-1:-1;;;12617:91:0;;4699:2:1;12617:91:0;;;4681:21:1;4738:2;4718:18;;;4711:30;4777:34;4757:18;;;4750:62;-1:-1:-1;;;4828:18:1;;;4821:36;4874:19;;12617:91:0;4497:402:1;12617:91:0;12720:34;12725:16;12743:10;12720:4;:34::i;:::-;12765:11;;:30;;-1:-1:-1;;;12765:30:0;;12784:10;12765:30;;;2445:51:1;-1:-1:-1;;;;;12765:11:0;;;;:18;;2418::1;;12765:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11991:812;;;;;;;;;;;11954:849::o;11399:104::-;2467:6;;-1:-1:-1;;;;;2467:6:0;175:10;2467:22;2459:67;;;;-1:-1:-1;;;2459:67:0;;;;;;;:::i;:::-;11467:11:::1;:28:::0;;-1:-1:-1;;;;;;11467:28:0::1;-1:-1:-1::0;;;;;11467:28:0;;;::::1;::::0;;;::::1;::::0;;11399:104::o;6221:167::-;6299:4;6316:42;175:10;6340:9;6351:6;6316:9;:42::i;11666:280::-;11733:11;;-1:-1:-1;;;11733:11:0;;;;11725:58;;;;-1:-1:-1;;;11725:58:0;;;;;;;:::i;:::-;11812:12;;11802:6;:22;11794:68;;;;-1:-1:-1;;;11794:68:0;;5106:2:1;11794:68:0;;;5088:21:1;5145:2;5125:18;;;5118:30;5184:34;5164:18;;;5157:62;-1:-1:-1;;;5235:18:1;;;5228:31;5276:19;;11794:68:0;4904:397:1;11794:68:0;11873:24;11878:6;11886:10;11873:4;:24::i;:::-;11908:11;;:30;;-1:-1:-1;;;11908:30:0;;11927:10;11908:30;;;2445:51:1;-1:-1:-1;;;;;11908:11:0;;;;:18;;2418::1;;11908:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11666:280;:::o;10637:754::-;2467:6;;-1:-1:-1;;;;;2467:6:0;175:10;2467:22;2459:67;;;;-1:-1:-1;;;2459:67:0;;;;;;;:::i;:::-;10701:11:::1;::::0;-1:-1:-1;;;10701:11:0;::::1;;;10700:12;10692:47;;;::::0;-1:-1:-1;;;10692:47:0;;5508:2:1;10692:47:0::1;::::0;::::1;5490:21:1::0;5547:2;5527:18;;;5520:30;5586:25;5566:18;;;5559:53;5629:18;;10692:47:0::1;5306:347:1::0;10692:47:0::1;10750:15;:80:::0;;-1:-1:-1;;;;;;10750:80:0::1;10787:42;10750:80:::0;;::::1;::::0;;;10891:7:::1;::::0;10841:58:::1;::::0;10858:4:::1;::::0;10841:8:::1;:58::i;:::-;10944:15;;;;;;;;;-1:-1:-1::0;;;;;10944:15:0::1;-1:-1:-1::0;;;;;10944:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10926:55:0::1;;10990:4;10997:15;;;;;;;;;-1:-1:-1::0;;;;;10997:15:0::1;-1:-1:-1::0;;;;;10997:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10926:94;::::0;-1:-1:-1;;;;;;10926:94:0::1;::::0;;;;;;-1:-1:-1;;;;;6144:15:1;;;10926:94:0::1;::::0;::::1;6126:34:1::0;6196:15;;6176:18;;;6169:43;6061:18;;10926:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10910:13;:110:::0;;-1:-1:-1;;;;;10910:110:0;;::::1;-1:-1:-1::0;;;;;;10910:110:0;;::::1;::::0;::::1;::::0;;;11031:4:::1;:36:::0;;;;::::1;::::0;;::::1;::::0;;11078:15:::1;::::0;::::1;:31;11117:21;11148:4;11154:24;11148:4:::0;-1:-1:-1;;;;;6187:18:0;6160:7;6187:18;;;:9;:18;;;;;;;6094:119;11154:24:::1;11179:1;11181::::0;11183:7:::1;2378::::0;2405:6;-1:-1:-1;;;;;2405:6:0;;2340:79;11183:7:::1;11078:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11078:129:0;;;-1:-1:-1;;;;;6582:15:1;;;11078:129:0::1;::::0;::::1;6564:34:1::0;6614:18;;;6607:34;;;;6657:18;;;6650:34;;;;6700:18;;;6693:34;6764:15;;;6743:19;;;6736:44;11191:15:0::1;6796:19:1::0;;;6789:35;6498:19;;11078:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11225:13:0::1;::::0;11256:15:::1;::::0;11218:71:::1;::::0;-1:-1:-1;;;11218:71:0;;-1:-1:-1;;;;;11256:15:0;;::::1;11218:71;::::0;::::1;7320:51:1::0;-1:-1:-1;;7387:18:1;;;7380:34;11225:13:0;::::1;::::0;-1:-1:-1;11218:29:0::1;::::0;7293:18:1;;11218:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11300:11:0::1;:18:::0;;-1:-1:-1;;;;11329:18:0;-1:-1:-1;;;11329:18:0;;;11371:12:::1;11358:10;:25:::0;10637:754::o;7037:335::-;-1:-1:-1;;;;;7130:19:0;;7122:68;;;;-1:-1:-1;;;7122:68:0;;7909:2:1;7122:68:0;;;7891:21:1;7948:2;7928:18;;;7921:30;7987:34;7967:18;;;7960:62;-1:-1:-1;;;8038:18:1;;;8031:34;8082:19;;7122:68:0;7707:400:1;7122:68:0;-1:-1:-1;;;;;7209:21:0;;7201:68;;;;-1:-1:-1;;;7201:68:0;;8314:2:1;7201:68:0;;;8296:21:1;8353:2;8333:18;;;8326:30;8392:34;8372:18;;;8365:62;-1:-1:-1;;;8443:18:1;;;8436:32;8485:19;;7201:68:0;8112:398:1;7201:68:0;-1:-1:-1;;;;;7280:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7332:32;;160:25:1;;;7332:32:0;;133:18:1;7332:32:0;;;;;;;7037:335;;;:::o;7380:2180::-;-1:-1:-1;;;;;7468:18:0;;7460:68;;;;-1:-1:-1;;;7460:68:0;;8717:2:1;7460:68:0;;;8699:21:1;8756:2;8736:18;;;8729:30;8795:34;8775:18;;;8768:62;-1:-1:-1;;;8846:18:1;;;8839:35;8891:19;;7460:68:0;8515:401:1;7460:68:0;-1:-1:-1;;;;;7547:16:0;;7539:64;;;;-1:-1:-1;;;7539:64:0;;9123:2:1;7539:64:0;;;9105:21:1;9162:2;9142:18;;;9135:30;9201:34;9181:18;;;9174:62;-1:-1:-1;;;9252:18:1;;;9245:33;9295:19;;7539:64:0;8921:399:1;7539:64:0;7631:1;7622:6;:10;7614:64;;;;-1:-1:-1;;;7614:64:0;;9527:2:1;7614:64:0;;;9509:21:1;9566:2;9546:18;;;9539:30;9605:34;9585:18;;;9578:62;-1:-1:-1;;;9656:18:1;;;9649:39;9705:19;;7614:64:0;9325:405:1;7614:64:0;7689:17;2405:6;;-1:-1:-1;;;;;7723:15:0;;;2405:6;;7723:15;;;;:32;;-1:-1:-1;2378:7:0;2405:6;-1:-1:-1;;;;;7742:13:0;;;2405:6;;7742:13;;7723:32;7719:1485;;;7784:76;7856:3;7784:67;7806:15;;7796:9;;:25;7795:55;;7836:14;;7795:55;;;7823:12;;7795:55;7784:6;;:10;:67::i;:76::-;7889:13;;7772:88;;-1:-1:-1;;;;;;7881:21:0;;;7889:13;;7881:21;:55;;;;-1:-1:-1;7920:15:0;;-1:-1:-1;;;;;7906:30:0;;;7920:15;;7906:30;;7881:55;:83;;;;-1:-1:-1;;;;;;7942:22:0;;;;;;:18;:22;;;;;;;;7940:24;7881:83;7877:436;;;8004:12;;7994:6;:22;;7986:60;;;;-1:-1:-1;;;7986:60:0;;9937:2:1;7986:60:0;;;9919:21:1;9976:2;9956:18;;;9949:30;10015:27;9995:18;;;9988:55;10060:18;;7986:60:0;9735:349:1;7986:60:0;8099:14;;8089:6;8073:13;8083:2;-1:-1:-1;;;;;6187:18:0;6160:7;6187:18;;;:9;:18;;;;;;;6094:119;8073:13;:22;;;;:::i;:::-;:40;;8065:79;;;;-1:-1:-1;;;8065:79:0;;10553:2:1;8065:79:0;;;10535:21:1;10592:2;10572:18;;;10565:30;10631:28;10611:18;;;10604:56;10677:18;;8065:79:0;10351:350:1;8065:79:0;8187:12;8169:10;;8182:1;8169:14;;;;:::i;:::-;:30;8165:103;;;9807:20;;9855:8;8224:24;;;;;;8286:9;:11;;;:9;:11;;;:::i;:::-;;;;;;7877:436;8339:13;;-1:-1:-1;;;;;8333:19:0;;;8339:13;;8333:19;;;;:47;;-1:-1:-1;;;;;;8358:22:0;;;;;;:18;:22;;;;;;;;8356:24;8333:47;8329:167;;;8435:14;;8425:6;8409:13;8419:2;-1:-1:-1;;;;;6187:18:0;6160:7;6187:18;;;:9;:18;;;;;;;6094:119;8409:13;:22;;;;:::i;:::-;:40;;8401:79;;;;-1:-1:-1;;;8401:79:0;;10553:2:1;8401:79:0;;;10535:21:1;10592:2;10572:18;;;10565:30;10631:28;10611:18;;;10604:56;10677:18;;8401:79:0;10351:350:1;8401:79:0;8521:13;;-1:-1:-1;;;;;8515:19:0;;;8521:13;;8515:19;:43;;;;-1:-1:-1;;;;;;8538:20:0;;8553:4;8538:20;;8515:43;8512:174;;;8591:79;8666:3;8591:70;8613:16;;8603:9;;:26;8602:58;;8645:15;;8602:58;;;8631:13;;8591:6;;:10;:70::i;:79::-;8579:91;;8512:174;8751:4;8702:28;6187:18;;;:9;:18;;;;;;8777:6;;-1:-1:-1;;;8777:6:0;;;;8776:7;:32;;;;-1:-1:-1;8795:13:0;;-1:-1:-1;;;;;8787:21:0;;;8795:13;;8787:21;8776:32;:47;;;;-1:-1:-1;8812:11:0;;-1:-1:-1;;;8812:11:0;;;;8776:47;:89;;;;;8848:17;;8827:20;:38;8776:89;:121;;;;;8879:18;;8869:9;;:28;8776:121;8772:421;;;8918:67;8935:49;8939:6;8946:37;8950:20;8971:11;;8946:3;:37::i;:::-;8935:3;:49::i;:::-;8918:16;:67::i;:::-;9033:21;9076:22;;9073:105;;9123:35;9136:21;9123:12;:35::i;:::-;8899:294;8772:421;7757:1447;7719:1485;9219:11;;9216:161;;9287:4;9269:24;;;;:9;:24;;;;;;:39;;9298:9;9269:28;:39::i;:::-;9262:4;9244:24;;;;:9;:24;;;;;;;:64;;;;9326:39;;-1:-1:-1;;;;;9326:39:0;;;;;;;9355:9;160:25:1;;148:2;133:18;;14:177;9326:39:0;;;;;;;;9216:161;-1:-1:-1;;;;;9403:15:0;;;;;;:9;:15;;;;;;:27;;9423:6;9403:19;:27::i;:::-;-1:-1:-1;;;;;9387:15:0;;;;;;:9;:15;;;;;:43;9455:40;9473:21;:6;9484:9;9473:10;:21::i;:::-;-1:-1:-1;;;;;9455:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9441:13:0;;;;;;;:9;:13;;;;;:54;;;;9511:41;;;9530:21;:6;9541:9;9530:10;:21::i;:::-;9511:41;;160:25:1;;;148:2;133:18;9511:41:0;;;;;;;7449:2111;7380:2180;;;:::o;1232:190::-;1318:7;1354:12;1346:6;;;;1338:29;;;;-1:-1:-1;;;1338:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1378:9:0;1390:5;1394:1;1390;:5;:::i;:::-;1378:17;1232:190;-1:-1:-1;;;;;1232:190:0:o;1430:246::-;1488:7;1512:1;1517;1512:6;1508:47;;-1:-1:-1;1542:1:0;1535:8;;1508:47;1565:9;1577:5;1581:1;1577;:5;:::i;:::-;1565:17;-1:-1:-1;1610:1:0;1601:5;1605:1;1565:17;1601:5;:::i;:::-;:10;1593:56;;;;-1:-1:-1;;;1593:56:0;;11576:2:1;1593:56:0;;;11558:21:1;11615:2;11595:18;;;11588:30;11654:34;11634:18;;;11627:62;-1:-1:-1;;;11705:18:1;;;11698:31;11746:19;;1593:56:0;11374:397:1;1593:56:0;1667:1;1430:246;-1:-1:-1;;;1430:246:0:o;1684:132::-;1742:7;1769:39;1773:1;1776;1769:39;;;;;;;;;;;;;;;;;:3;:39::i;11511:147::-;11590:11;;11574:36;;11584:4;;-1:-1:-1;;;;;11590:11:0;11603:6;11574:9;:36::i;:::-;11631:7;;:19;;11643:6;11631:11;:19::i;:::-;11621:7;:29;-1:-1:-1;;11511:147:0:o;9570:98::-;9627:7;9654:1;9652;:3;9651:9;;9659:1;9651:9;;;-1:-1:-1;9657:1:0;9570:98;-1:-1:-1;9570:98:0:o;9879:483::-;5313:6;:13;;-1:-1:-1;;;;5313:13:0;-1:-1:-1;;;5313:13:0;;;9981:16:::1;::::0;;9995:1:::1;9981:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9981:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9981:16:0::1;9957:40;;10026:4;10008;10013:1;10008:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10008:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10052:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10052:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10008:7;;10052:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10042:4;10047:1;10042:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10042:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10117:15:::1;::::0;10085:62:::1;::::0;10102:4:::1;::::0;10117:15:::1;10135:11:::0;10085:8:::1;:62::i;:::-;10158:15;::::0;:196:::1;::::0;-1:-1:-1;;;10158:196:0;;-1:-1:-1;;;;;10158:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10239:11;;10158:15:::1;::::0;10281:4;;10308::::1;::::0;10328:15:::1;::::0;10158:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5349:6:0;:14;;-1:-1:-1;;;;5349:14:0;;;-1:-1:-1;;;;9879:483:0:o;10537:92::-;10594:10;;:27;;-1:-1:-1;;;;;10594:10:0;;;;:27;;;;;10614:6;;10594:10;:27;:10;:27;10614:6;10594:10;:27;;;;;;;;;;;;;;;;;;;;;10537:92;:::o;901:179::-;959:7;;991:5;995:1;991;:5;:::i;:::-;979:17;;1020:1;1015;:6;;1007:46;;;;-1:-1:-1;;;1007:46:0;;13227:2:1;1007:46:0;;;13209:21:1;13266:2;13246:18;;;13239:30;13305:29;13285:18;;;13278:57;13352:18;;1007:46:0;13025:351:1;1088:136:0;1146:7;1173:43;1177:1;1180;1173:43;;;;;;;;;;;;;;;;;:3;:43::i;1824:189::-;1910:7;1945:12;1938:5;1930:28;;;;-1:-1:-1;;;1930:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1969:9:0;1981:5;1985:1;1981;:5;:::i;196:548:1:-;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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:356::-;3287:2;3269:21;;;3306:18;;;3299:30;3365:34;3360:2;3345:18;;3338:62;3432:2;3417:18;;3085:356::o;3446:398::-;3648:2;3630:21;;;3687:2;3667:18;;;3660:30;3726:34;3721:2;3706:18;;3699:62;-1:-1:-1;;;3792:2:1;3777:18;;3770:32;3834:3;3819:19;;3446:398::o;3849:188::-;3928:13;;-1:-1:-1;;;;;3970:42:1;;3960:53;;3950:81;;4027:1;4024;4017:12;3950:81;3849:188;;;:::o;4042:450::-;4129:6;4137;4145;4198:2;4186:9;4177:7;4173:23;4169:32;4166:52;;;4214:1;4211;4204:12;4166:52;4237:40;4267:9;4237:40;:::i;:::-;4227:50;;4296:49;4341:2;4330:9;4326:18;4296:49;:::i;:::-;4286:59;;4388:2;4377:9;4373:18;4367:25;4432:10;4425:5;4421:22;4414:5;4411:33;4401:61;;4458:1;4455;4448:12;4401:61;4481:5;4471:15;;;4042:450;;;;;:::o;5658:251::-;5728:6;5781:2;5769:9;5760:7;5756:23;5752:32;5749:52;;;5797:1;5794;5787:12;5749:52;5829:9;5823:16;5848:31;5873:5;5848:31;:::i;6835:306::-;6923:6;6931;6939;6992:2;6980:9;6971:7;6967:23;6963:32;6960:52;;;7008:1;7005;6998:12;6960:52;7037:9;7031:16;7021:26;;7087:2;7076:9;7072:18;7066:25;7056:35;;7131:2;7120:9;7116:18;7110:25;7100:35;;6835:306;;;;;:::o;7425:277::-;7492:6;7545:2;7533:9;7524:7;7520:23;7516:32;7513:52;;;7561:1;7558;7551:12;7513:52;7593:9;7587:16;7646:5;7639:13;7632:21;7625:5;7622:32;7612:60;;7668:1;7665;7658:12;10089:127;10150:10;10145:3;10141:20;10138:1;10131:31;10181:4;10178:1;10171:15;10205:4;10202:1;10195:15;10221:125;10286:9;;;10307:10;;;10304:36;;;10320:18;;:::i;10706:135::-;10745:3;10766:17;;;10763:43;;10786:18;;:::i;:::-;-1:-1:-1;10833:1:1;10822:13;;10706:135::o;10846:128::-;10913:9;;;10934:11;;;10931:37;;;10948:18;;:::i;10979:168::-;11052:9;;;11083;;11100:15;;;11094:22;;11080:37;11070:71;;11121:18;;:::i;11152:217::-;11192:1;11218;11208:132;;11262:10;11257:3;11253:20;11250:1;11243:31;11297:4;11294:1;11287:15;11325:4;11322:1;11315:15;11208:132;-1:-1:-1;11354:9:1;;11152:217::o;11908:127::-;11969:10;11964:3;11960:20;11957:1;11950:31;12000:4;11997:1;11990:15;12024:4;12021:1;12014:15;12040:980;12302:4;12350:3;12339:9;12335:19;12381:6;12370:9;12363:25;12407:2;12445:6;12440:2;12429:9;12425:18;12418:34;12488:3;12483:2;12472:9;12468:18;12461:31;12512:6;12547;12541:13;12578:6;12570;12563:22;12616:3;12605:9;12601:19;12594:26;;12655:2;12647:6;12643:15;12629:29;;12676:1;12686:195;12700:6;12697:1;12694:13;12686:195;;;12765:13;;-1:-1:-1;;;;;12761:39:1;12749:52;;12856:15;;;;12821:12;;;;12797:1;12715:9;12686:195;;;-1:-1:-1;;;;;;;12937:32:1;;;;12932:2;12917:18;;12910:60;-1:-1:-1;;;13001:3:1;12986:19;12979:35;12898:3;12040:980;-1:-1:-1;;;12040:980:1:o

Swarm Source

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