ETH Price: $3,483.03 (+2.43%)
Gas: 3 Gwei

Token

YOLO (NFA)
 

Overview

Max Total Supply

7,443,912,282.721195793 NFA

Holders

78

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
Yolo

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-03
*/

/**

https://t.me/YoloOnETH

*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.25; 


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    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);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract  Yolo  is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'YOLO';
    string private constant _symbol = 'NFA';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 7777777777 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 100; // 10000;
    uint256 private _maxTransferPercent = 100;
    uint256 private _maxWalletPercent = 100;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 100;
    uint256 private developmentFee = 100;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 3500;
    uint256 private transferFee = 3500;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 232 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x2E8e7AaB8449D57c3Bf5c4AaE30B9225Cf569118; 
    address internal constant marketing_receiver = 0x2E8e7AaB8449D57c3Bf5c4AaE30B9225Cf569118;
    address internal constant liquidity_receiver = 0x2E8e7AaB8449D57c3Bf5c4AaE30B9225Cf569118;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    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 startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(4) && sellFee <= denominator.div(4), "totalFee and sellFee cannot be more than 25%");
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 20000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 30000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

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

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(1) && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].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);
    }

}

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":"address","name":"owner","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":"_maxTransferAmount","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":"_maxWalletToken","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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526100106009600a6103ee565b61001f906401cf977871610403565b60018181556064600281905560038190556004819055600a805460ff60a01b191690555f600b819055600c829055600d91909155600e556109c4600f55610dac60108190556011556127106012556013805460ff19169091179055620186a09061008a9060e8610403565b610094919061041a565b601655620186a0600154600a6100aa9190610403565b6100b4919061041a565b6017553480156100c2575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015610126573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014a9190610439565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610195573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b99190610439565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610203573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102279190610439565b600980546001600160a01b038581166001600160a01b031992831617909255600a805492841692909116919091179055305f908152600760209081526040808320805460ff1990811660019081179092557fd8146a9da12a93a8dd86b41ce04c28d30129166367710d4e5c5d6f34494ae3ce8054821683179055338086528386208054909216831790915590546005845282852081905591519182529394507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505061045f565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561034657815f190482111561032c5761032c6102f8565b8085161561033957918102915b93841c9390800290610311565b509250929050565b5f8261035c575060016103e8565b8161036857505f6103e8565b816001811461037e5760028114610388576103a4565b60019150506103e8565b60ff841115610399576103996102f8565b50506001821b6103e8565b5060208310610133831016604e8410600b84101617156103c7575081810a6103e8565b6103d1838361030c565b805f19048211156103e4576103e46102f8565b0290505b92915050565b5f6103fc60ff84168361034e565b9392505050565b80820281158282048414176103e8576103e86102f8565b5f8261043457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610449575f80fd5b81516001600160a01b03811681146103fc575f80fd5b611a0c8061046c5f395ff3fe608060405260043610610134575f3560e01c806348ff2b8b116100a85780638c41180e1161006d5780638c41180e1461037657806395d89b4114610395578063a8aa1b31146103c0578063a9059cbb146103df578063dd62ed3e146103fe578063f2fde38b14610442575f80fd5b806348ff2b8b146102cb57806370a08231146102ea57806378109e541461031e5780637d1db4a514610332578063893d20e814610346575f80fd5b806323b872dd116100f957806323b872dd14610203578063293230b8146102225780632f54bf6e14610236578063313ce5671461026357806334c5d2ce1461027e5780633f4218e01461029d575f80fd5b8063044019301461013f57806306fdde0314610160578063095ea7b31461019e57806318160ddd146101cd5780631f976b7e146101ef575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5061015e6101593660046116ad565b610461565b005b34801561016b575f80fd5b50604080518082019091526004815263594f4c4f60e01b60208201525b60405161019591906116f4565b60405180910390f35b3480156101a9575f80fd5b506101bd6101b8366004611740565b61054e565b6040519015158152602001610195565b3480156101d8575f80fd5b506101e1610564565b604051908152602001610195565b3480156101fa575f80fd5b506101e16105d4565b34801561020e575f80fd5b506101bd61021d36600461176a565b6105f7565b34801561022d575f80fd5b5061015e61065f565b348015610241575f80fd5b506101bd6102503660046117a8565b5f546001600160a01b0391821691161490565b34801561026e575f80fd5b5060405160098152602001610195565b348015610289575f80fd5b5061015e6102983660046117c3565b61069d565b3480156102a8575f80fd5b506101bd6102b73660046117a8565b60076020525f908152604090205460ff1681565b3480156102d6575f80fd5b5061015e6102e53660046117ec565b6107df565b3480156102f5575f80fd5b506101e16103043660046117a8565b6001600160a01b03165f9081526005602052604090205490565b348015610329575f80fd5b506101e1610832565b34801561033d575f80fd5b506101e1610841565b348015610351575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610195565b348015610381575f80fd5b5061015e6103903660046117ec565b610850565b3480156103a0575f80fd5b506040805180820190915260038152624e464160e81b6020820152610188565b3480156103cb575f80fd5b50600a5461035e906001600160a01b031681565b3480156103ea575f80fd5b506101bd6103f9366004611740565b6108a3565b348015610409575f80fd5b506101e1610418366004611827565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b34801561044d575f80fd5b5061015e61045c3660046117a8565b6108af565b5f546001600160a01b031633146104935760405162461bcd60e51b815260040161048a90611853565b60405180910390fd5b600b879055600c869055600e859055600d849055600f839055601082905560118190556012546104c490600461092b565b600f54111580156104e457506012546104de90600461092b565b60105411155b6105455760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032352560a01b606482015260840161048a565b50505050505050565b5f61055a338484610936565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead5f9081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926105cf9290916105c99190610a59565b90610a59565b905090565b5f6012546003546105e3610564565b6105ed9190611887565b6105cf919061189e565b5f610603848484610a64565b610654843361064f856040518060600160405280602881526020016119af602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610b86565b610936565b5060015b9392505050565b5f546001600160a01b031633146106885760405162461bcd60e51b815260040161048a90611853565b600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106c65760405162461bcd60e51b815260040161048a90611853565b5f614e20846106d3610564565b6106dd9190611887565b6106e7919061189e565b90505f612710846106f6610564565b6107009190611887565b61070a919061189e565b90505f61753084610719610564565b6107239190611887565b61072d919061189e565b60028790556003869055600485905590505f61075e6103e86107586005610752610564565b90610bb1565b9061092b565b90508084101580156107705750808310155b801561077c5750808210155b6105455760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161048a565b5f546001600160a01b031633146108085760405162461bcd60e51b815260040161048a90611853565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f6012546004546105e3610564565b5f6012546002546105e3610564565b5f546001600160a01b031633146108795760405162461bcd60e51b815260040161048a90611853565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f61055a338484610a64565b5f546001600160a01b031633146108d85760405162461bcd60e51b815260040161048a90611853565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f610658828461189e565b6001600160a01b0383166109985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161048a565b6001600160a01b0382166109f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161048a565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61065882846118bd565b610a6f838383610bbc565b610a798383610d69565b610a84838383610dfc565b610a8e8383610eea565b610a99838383610f3f565b610aa4838383611072565b6001600160a01b0383165f90815260056020526040902054610ac69082610a59565b6001600160a01b0384165f90815260056020526040812091909155610aeb8484611096565b610af55781610b00565b610b008484846110da565b6001600160a01b0384165f90815260056020526040902054909150610b2590826111c4565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b789085815260200190565b60405180910390a350505050565b5f8184841115610ba95760405162461bcd60e51b815260040161048a91906116f4565b505050900390565b5f6106588284611887565b6001600160a01b038316610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161048a565b6001600160a01b038216610c825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161048a565b5f8111610ce35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161048a565b6001600160a01b0383165f90815260056020526040902054811115610d645760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161048a565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610da957506001600160a01b0381165f9081526007602052604090205460ff16155b15610df857600a54600160a01b900460ff16610df85760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161048a565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610e3c57506001600160a01b0382165f9081526007602052604090205460ff16155b8015610e565750600a546001600160a01b03838116911614155b8015610e6d57506001600160a01b03821661dead14155b15610d6457610e7a610832565b6001600160a01b0383165f90815260056020526040902054610e9c90836111c4565b1115610d645760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161048a565b600a546001600160a01b038281169116148015610f1f57506001600160a01b0382165f9081526007602052604090205460ff16155b15610df857600160145f828254610f3691906118d0565b90915550505050565b600a546001600160a01b03848116911614610fe357610f5c6105d4565b81111580610f8157506001600160a01b0383165f9081526007602052604090205460ff165b80610fa357506001600160a01b0382165f9081526007602052604090205460ff165b610fe35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161048a565b610feb610841565b8111158061101057506001600160a01b0383165f9081526007602052604090205460ff165b8061103257506001600160a01b0382165f9081526007602052604090205460ff165b610d645760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161048a565b61107d8383836111cf565b15610d645761108d60165461127f565b5f601455505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156106585750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f806110e685856113fd565b11156111bd575f6111086110fa86866113fd565b60125461075290869061092b565b305f9081526005602052604090205490915061112490826111c4565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111749085815260200190565b60405180910390a3600e54156111ab576111ab3061dead6111a6600e546107526012548961092b90919063ffffffff16565b610a64565b6111b58382610a59565b915050610658565b5092915050565b5f61065882846118d0565b601754601654305f9081526005602052604081205460155491938510159211159060ff16158015611202575060135460ff165b80156112175750600a54600160a01b900460ff165b80156112205750815b801561124457506001600160a01b0386165f9081526007602052604090205460ff16155b801561125d5750600a546001600160a01b038681169116145b801561126c5750600160145410155b80156112755750805b9695505050505050565b6015805460ff19166001908117909155600d54600c54600b545f936112b8936002936107529391926112b29283916111c4565b906111c4565b90505f6112d482610758600b5486610bb190919063ffffffff16565b90505f6112e18483610a59565b9050476112ed8261149c565b5f6112f84783610a59565b90505f61131a611313600b5488610a5990919063ffffffff16565b839061092b565b90505f611332600b5483610bb190919063ffffffff16565b905080156113445761134486826115ec565b600c545f9061135890610752856002610bb1565b905080156113a057604051732e8e7aab8449d57c3bf5c4aae30b9225cf5691189082156108fc029083905f818181858888f1935050505015801561139e573d5f803e3d5ffd5b505b4780156113e757604051732e8e7aab8449d57c3bf5c4aae30b9225cf5691189082156108fc029083905f818181858888f193505050501580156113e5573d5f803e3d5ffd5b505b50506015805460ff191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff168061143a57506001600160a01b0382165f9081526008602052604090205460ff165b156114545760125461144d906064610a59565b905061055e565b600a546001600160a01b0390811690831603611473575060105461055e565b600a546001600160a01b03908116908416036114925750600f5461055e565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114cf576114cf6118e3565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611526573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154a91906118f7565b8160018151811061155d5761155d6118e3565b6001600160a01b0392831660209182029290920101526009546115839130911684610936565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906115bb9085905f90869030904290600401611912565b5f604051808303815f87803b1580156115d2575f80fd5b505af11580156115e4573d5f803e3d5ffd5b505050505050565b6009546116049030906001600160a01b031684610936565b60095460405163f305d71960e01b8152306004820152602481018490525f604482018190526064820152732e8e7aab8449d57c3bf5c4aae30b9225cf56911860848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611681573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116a69190611983565b5050505050565b5f805f805f805f60e0888a0312156116c3575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461173d575f80fd5b50565b5f8060408385031215611751575f80fd5b823561175c81611729565b946020939093013593505050565b5f805f6060848603121561177c575f80fd5b833561178781611729565b9250602084013561179781611729565b929592945050506040919091013590565b5f602082840312156117b8575f80fd5b813561065881611729565b5f805f606084860312156117d5575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156117fd575f80fd5b823561180881611729565b91506020830135801515811461181c575f80fd5b809150509250929050565b5f8060408385031215611838575f80fd5b823561184381611729565b9150602083013561181c81611729565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761055e5761055e611873565b5f826118b857634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561055e5761055e611873565b8082018082111561055e5761055e611873565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611907575f80fd5b815161065881611729565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119625784516001600160a01b03168352938301939183019160010161193d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611995575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa518e8c2d1810d0eadd36cadc88fb895d32e296d83ea4029a1ed635db1a793364736f6c63430008190033

Deployed Bytecode

0x608060405260043610610134575f3560e01c806348ff2b8b116100a85780638c41180e1161006d5780638c41180e1461037657806395d89b4114610395578063a8aa1b31146103c0578063a9059cbb146103df578063dd62ed3e146103fe578063f2fde38b14610442575f80fd5b806348ff2b8b146102cb57806370a08231146102ea57806378109e541461031e5780637d1db4a514610332578063893d20e814610346575f80fd5b806323b872dd116100f957806323b872dd14610203578063293230b8146102225780632f54bf6e14610236578063313ce5671461026357806334c5d2ce1461027e5780633f4218e01461029d575f80fd5b8063044019301461013f57806306fdde0314610160578063095ea7b31461019e57806318160ddd146101cd5780631f976b7e146101ef575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5061015e6101593660046116ad565b610461565b005b34801561016b575f80fd5b50604080518082019091526004815263594f4c4f60e01b60208201525b60405161019591906116f4565b60405180910390f35b3480156101a9575f80fd5b506101bd6101b8366004611740565b61054e565b6040519015158152602001610195565b3480156101d8575f80fd5b506101e1610564565b604051908152602001610195565b3480156101fa575f80fd5b506101e16105d4565b34801561020e575f80fd5b506101bd61021d36600461176a565b6105f7565b34801561022d575f80fd5b5061015e61065f565b348015610241575f80fd5b506101bd6102503660046117a8565b5f546001600160a01b0391821691161490565b34801561026e575f80fd5b5060405160098152602001610195565b348015610289575f80fd5b5061015e6102983660046117c3565b61069d565b3480156102a8575f80fd5b506101bd6102b73660046117a8565b60076020525f908152604090205460ff1681565b3480156102d6575f80fd5b5061015e6102e53660046117ec565b6107df565b3480156102f5575f80fd5b506101e16103043660046117a8565b6001600160a01b03165f9081526005602052604090205490565b348015610329575f80fd5b506101e1610832565b34801561033d575f80fd5b506101e1610841565b348015610351575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610195565b348015610381575f80fd5b5061015e6103903660046117ec565b610850565b3480156103a0575f80fd5b506040805180820190915260038152624e464160e81b6020820152610188565b3480156103cb575f80fd5b50600a5461035e906001600160a01b031681565b3480156103ea575f80fd5b506101bd6103f9366004611740565b6108a3565b348015610409575f80fd5b506101e1610418366004611827565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b34801561044d575f80fd5b5061015e61045c3660046117a8565b6108af565b5f546001600160a01b031633146104935760405162461bcd60e51b815260040161048a90611853565b60405180910390fd5b600b879055600c869055600e859055600d849055600f839055601082905560118190556012546104c490600461092b565b600f54111580156104e457506012546104de90600461092b565b60105411155b6105455760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032352560a01b606482015260840161048a565b50505050505050565b5f61055a338484610936565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead5f9081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926105cf9290916105c99190610a59565b90610a59565b905090565b5f6012546003546105e3610564565b6105ed9190611887565b6105cf919061189e565b5f610603848484610a64565b610654843361064f856040518060600160405280602881526020016119af602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610b86565b610936565b5060015b9392505050565b5f546001600160a01b031633146106885760405162461bcd60e51b815260040161048a90611853565b600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106c65760405162461bcd60e51b815260040161048a90611853565b5f614e20846106d3610564565b6106dd9190611887565b6106e7919061189e565b90505f612710846106f6610564565b6107009190611887565b61070a919061189e565b90505f61753084610719610564565b6107239190611887565b61072d919061189e565b60028790556003869055600485905590505f61075e6103e86107586005610752610564565b90610bb1565b9061092b565b90508084101580156107705750808310155b801561077c5750808210155b6105455760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161048a565b5f546001600160a01b031633146108085760405162461bcd60e51b815260040161048a90611853565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f6012546004546105e3610564565b5f6012546002546105e3610564565b5f546001600160a01b031633146108795760405162461bcd60e51b815260040161048a90611853565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f61055a338484610a64565b5f546001600160a01b031633146108d85760405162461bcd60e51b815260040161048a90611853565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f610658828461189e565b6001600160a01b0383166109985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161048a565b6001600160a01b0382166109f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161048a565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61065882846118bd565b610a6f838383610bbc565b610a798383610d69565b610a84838383610dfc565b610a8e8383610eea565b610a99838383610f3f565b610aa4838383611072565b6001600160a01b0383165f90815260056020526040902054610ac69082610a59565b6001600160a01b0384165f90815260056020526040812091909155610aeb8484611096565b610af55781610b00565b610b008484846110da565b6001600160a01b0384165f90815260056020526040902054909150610b2590826111c4565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b789085815260200190565b60405180910390a350505050565b5f8184841115610ba95760405162461bcd60e51b815260040161048a91906116f4565b505050900390565b5f6106588284611887565b6001600160a01b038316610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161048a565b6001600160a01b038216610c825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161048a565b5f8111610ce35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161048a565b6001600160a01b0383165f90815260056020526040902054811115610d645760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161048a565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610da957506001600160a01b0381165f9081526007602052604090205460ff16155b15610df857600a54600160a01b900460ff16610df85760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161048a565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610e3c57506001600160a01b0382165f9081526007602052604090205460ff16155b8015610e565750600a546001600160a01b03838116911614155b8015610e6d57506001600160a01b03821661dead14155b15610d6457610e7a610832565b6001600160a01b0383165f90815260056020526040902054610e9c90836111c4565b1115610d645760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161048a565b600a546001600160a01b038281169116148015610f1f57506001600160a01b0382165f9081526007602052604090205460ff16155b15610df857600160145f828254610f3691906118d0565b90915550505050565b600a546001600160a01b03848116911614610fe357610f5c6105d4565b81111580610f8157506001600160a01b0383165f9081526007602052604090205460ff165b80610fa357506001600160a01b0382165f9081526007602052604090205460ff165b610fe35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161048a565b610feb610841565b8111158061101057506001600160a01b0383165f9081526007602052604090205460ff165b8061103257506001600160a01b0382165f9081526007602052604090205460ff165b610d645760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161048a565b61107d8383836111cf565b15610d645761108d60165461127f565b5f601455505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156106585750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f806110e685856113fd565b11156111bd575f6111086110fa86866113fd565b60125461075290869061092b565b305f9081526005602052604090205490915061112490826111c4565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111749085815260200190565b60405180910390a3600e54156111ab576111ab3061dead6111a6600e546107526012548961092b90919063ffffffff16565b610a64565b6111b58382610a59565b915050610658565b5092915050565b5f61065882846118d0565b601754601654305f9081526005602052604081205460155491938510159211159060ff16158015611202575060135460ff165b80156112175750600a54600160a01b900460ff165b80156112205750815b801561124457506001600160a01b0386165f9081526007602052604090205460ff16155b801561125d5750600a546001600160a01b038681169116145b801561126c5750600160145410155b80156112755750805b9695505050505050565b6015805460ff19166001908117909155600d54600c54600b545f936112b8936002936107529391926112b29283916111c4565b906111c4565b90505f6112d482610758600b5486610bb190919063ffffffff16565b90505f6112e18483610a59565b9050476112ed8261149c565b5f6112f84783610a59565b90505f61131a611313600b5488610a5990919063ffffffff16565b839061092b565b90505f611332600b5483610bb190919063ffffffff16565b905080156113445761134486826115ec565b600c545f9061135890610752856002610bb1565b905080156113a057604051732e8e7aab8449d57c3bf5c4aae30b9225cf5691189082156108fc029083905f818181858888f1935050505015801561139e573d5f803e3d5ffd5b505b4780156113e757604051732e8e7aab8449d57c3bf5c4aae30b9225cf5691189082156108fc029083905f818181858888f193505050501580156113e5573d5f803e3d5ffd5b505b50506015805460ff191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff168061143a57506001600160a01b0382165f9081526008602052604090205460ff165b156114545760125461144d906064610a59565b905061055e565b600a546001600160a01b0390811690831603611473575060105461055e565b600a546001600160a01b03908116908416036114925750600f5461055e565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114cf576114cf6118e3565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611526573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154a91906118f7565b8160018151811061155d5761155d6118e3565b6001600160a01b0392831660209182029290920101526009546115839130911684610936565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906115bb9085905f90869030904290600401611912565b5f604051808303815f87803b1580156115d2575f80fd5b505af11580156115e4573d5f803e3d5ffd5b505050505050565b6009546116049030906001600160a01b031684610936565b60095460405163f305d71960e01b8152306004820152602481018490525f604482018190526064820152732e8e7aab8449d57c3bf5c4aae30b9225cf56911860848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611681573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116a69190611983565b5050505050565b5f805f805f805f60e0888a0312156116c3575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461173d575f80fd5b50565b5f8060408385031215611751575f80fd5b823561175c81611729565b946020939093013593505050565b5f805f6060848603121561177c575f80fd5b833561178781611729565b9250602084013561179781611729565b929592945050506040919091013590565b5f602082840312156117b8575f80fd5b813561065881611729565b5f805f606084860312156117d5575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156117fd575f80fd5b823561180881611729565b91506020830135801515811461181c575f80fd5b809150509250929050565b5f8060408385031215611838575f80fd5b823561184381611729565b9150602083013561181c81611729565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761055e5761055e611873565b5f826118b857634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561055e5761055e611873565b8082018082111561055e5761055e611873565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611907575f80fd5b815161065881611729565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119625784516001600160a01b03168352938301939183019160010161193d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611995575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa518e8c2d1810d0eadd36cadc88fb895d32e296d83ea4029a1ed635db1a793364736f6c63430008190033

Deployed Bytecode Sourcemap

4648:11608:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9889:527;;;;;;;;;;-1:-1:-1;9889:527:0;;;;;:::i;:::-;;:::i;:::-;;6985:67;;;;;;;;;;-1:-1:-1;7045:5:0;;;;;;;;;;;;-1:-1:-1;;;7045:5:0;;;;6985:67;;;;;;;:::i;:::-;;;;;;;;8105:133;;;;;;;;;;-1:-1:-1;8105:133:0;;;;;:::i;:::-;;:::i;:::-;;;1655:14:1;;1648:22;1630:41;;1618:2;1603:18;8105:133:0;1490:187:1;8244:132:0;;;;;;;;;;;;;:::i;:::-;;;1828:25:1;;;1816:2;1801:18;8244:132:0;1682:177:1;8621:119:0;;;;;;;;;;;;;:::i;15599:309::-;;;;;;;;;;-1:-1:-1;15599:309:0;;;;;:::i;:::-;;:::i;7208:67::-;;;;;;;;;;;;;:::i;3028:87::-;;;;;;;;;;-1:-1:-1;3028:87:0;;;;;:::i;:::-;3083:4;3108:5;-1:-1:-1;;;;;3097:16:0;;;3108:5;;3097:16;;3028:87;7135:67;;;;;;;;;;-1:-1:-1;7135:67:0;;4849:1;2719:36:1;;2707:2;2692:18;7135:67:0;2577:184:1;10424:584:0;;;;;;;;;;-1:-1:-1;10424:584:0;;;;;:::i;:::-;;:::i;5198:44::-;;;;;;;;;;-1:-1:-1;5198:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7991:108;;;;;;;;;;-1:-1:-1;7991:108:0;;;;;:::i;:::-;;:::i;7365:103::-;;;;;;;;;;-1:-1:-1;7365:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7448:18:0;7431:7;7448:18;;;:9;:18;;;;;;;7365:103;8382:114;;;;;;;;;;;;;:::i;8502:113::-;;;;;;;;;;;;;:::i;7281:78::-;;;;;;;;;;-1:-1:-1;7333:7:0;7351:5;-1:-1:-1;;;;;7351:5:0;7281:78;;;-1:-1:-1;;;;;3672:32:1;;;3654:51;;3642:2;3627:18;7281:78:0;3508:203:1;7886:99:0;;;;;;;;;;-1:-1:-1;7886:99:0;;;;;:::i;:::-;;:::i;7058:71::-;;;;;;;;;;-1:-1:-1;7120:7:0;;;;;;;;;;;;-1:-1:-1;;;7120:7:0;;;;7058:71;;5316:19;;;;;;;;;;-1:-1:-1;5316:19:0;;;;-1:-1:-1;;;;;5316:19:0;;;7474:139;;;;;;;;;;-1:-1:-1;7474:139:0;;;;;:::i;:::-;;:::i;7619:127::-;;;;;;;;;;-1:-1:-1;7619:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7717:18:0;;;7700:7;7717:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7619:127;3121:111;;;;;;;;;;-1:-1:-1;3121:111:0;;;;;:::i;:::-;;:::i;9889:527::-;3083:4;3108:5;-1:-1:-1;;;;;3108:5:0;2995:10;3097:16;2979:38;;;;-1:-1:-1;;;2979:38:0;;;;;;;:::i;:::-;;;;;;;;;10065:12:::1;:25:::0;;;10101:12:::1;:25:::0;;;10137:7:::1;:15:::0;;;10163:14:::1;:29:::0;;;10203:8:::1;:17:::0;;;10231:7:::1;:15:::0;;;10257:11:::1;:20:::0;;;10308:11:::1;::::0;:18:::1;::::0;10324:1:::1;10308:15;:18::i;:::-;10296:8;;:30;;:63;;;;-1:-1:-1::0;10341:11:0::1;::::0;:18:::1;::::0;10357:1:::1;10341:15;:18::i;:::-;10330:7;;:29;;10296:63;10288:120;;;::::0;-1:-1:-1;;;10288:120:0;;4905:2:1;10288:120:0::1;::::0;::::1;4887:21:1::0;4944:2;4924:18;;;4917:30;4983:34;4963:18;;;4956:62;-1:-1:-1;;;5034:18:1;;;5027:42;5086:19;;10288:120:0::1;4703:408:1::0;10288:120:0::1;9889:527:::0;;;;;;;:::o;8105:133::-;8180:4;8187:37;8196:10;8208:7;8217:6;8187:8;:37::i;:::-;-1:-1:-1;8232:4:0;8105:133;;;;;:::o;8244:132::-;7448:9;:18;;;;6040:42;8297:7;7448:18;;;;;8314:12;;8297:7;;8314:60;;7448:18;;8314:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8307:67;;8244:132;:::o;8621:119::-;8672:7;8727:11;;8705:19;;8689:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;15599:309::-;15697:4;15714:36;15724:6;15732:9;15743:6;15714:9;:36::i;:::-;15761:117;15770:6;15778:10;15790:87;15826:6;15790:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15790:19:0;;;;;;:11;:19;;;;;;;;15810:10;15790:31;;;;;;;;;:87;:35;:87::i;:::-;15761:8;:117::i;:::-;-1:-1:-1;15896:4:0;15599:309;;;;;;:::o;7208:67::-;3083:4;3108:5;-1:-1:-1;;;;;3108:5:0;2995:10;3097:16;2979:38;;;;-1:-1:-1;;;2979:38:0;;;;;;;:::i;:::-;7252:14:::1;:21:::0;;-1:-1:-1;;;;7252:21:0::1;-1:-1:-1::0;;;7252:21:0::1;::::0;;7208:67::o;10424:584::-;3083:4;3108:5;-1:-1:-1;;;;;3108:5:0;2995:10;3097:16;2979:38;;;;-1:-1:-1;;;2979:38:0;;;;;;;:::i;:::-;10524:13:::1;10565:5;10557:4;10541:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10540:30;;;;:::i;:::-;10524:46;;10581:19;10630:5;10620:6;10604:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10603:32;;;;:::i;:::-;10581:54;;10646:17;10694:5;10683:7;10667:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10666:33;;;;:::i;:::-;10710:19;:26:::0;;;10747:19:::1;:28:::0;;;10786:17:::1;:27:::0;;;10646:53;-1:-1:-1;;10840:30:0::1;10865:4;10840:20;10858:1;10840:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;10824:46;;10898:5;10889;:14;;:38;;;;;10922:5;10907:11;:20;;10889:38;:60;;;;;10944:5;10931:9;:18;;10889:60;10881:119;;;::::0;-1:-1:-1;;;10881:119:0;;5845:2:1;10881:119:0::1;::::0;::::1;5827:21:1::0;5884:2;5864:18;;;5857:30;5923:34;5903:18;;;5896:62;-1:-1:-1;;;5974:18:1;;;5967:44;6028:19;;10881:119:0::1;5643:410:1::0;7991:108:0;3083:4;3108:5;-1:-1:-1;;;;;3108:5:0;2995:10;3097:16;2979:38;;;;-1:-1:-1;;;2979:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8065:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8065:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7991:108::o;8382:114::-;8430:7;8483:11;;8463:17;;8447:13;:11;:13::i;8502:113::-;8547:7;8602:11;;8580:19;;8564:13;:11;:13::i;7886:99::-;3083:4;3108:5;-1:-1:-1;;;;;3108:5:0;2995:10;3097:16;2979:38;;;;-1:-1:-1;;;2979:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7957:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;7957:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7886:99::o;7474:139::-;7552:4;7559:40;7569:10;7581:9;7592:6;7559:9;:40::i;3121:111::-;3083:4;3108:5;-1:-1:-1;;;;;3108:5:0;2995:10;3097:16;2979:38;;;;-1:-1:-1;;;2979:38:0;;;;;;;:::i;:::-;3187:5:::1;:11:::0;;-1:-1:-1;;;;;;3187:11:0::1;-1:-1:-1::0;;;;;3187:11:0;::::1;::::0;;::::1;::::0;;;3205:25:::1;::::0;3654:51:1;;;3205:25:0::1;::::0;3642:2:1;3627:18;3205:25:0::1;;;;;;;3121:111:::0;:::o;390:82::-;448:7;465:5;469:1;465;:5;:::i;15916:335::-;-1:-1:-1;;;;;16009:19:0;;16001:68;;;;-1:-1:-1;;;16001:68:0;;6476:2:1;16001:68:0;;;6458:21:1;6515:2;6495:18;;;6488:30;6554:34;6534:18;;;6527:62;-1:-1:-1;;;6605:18:1;;;6598:34;6649:19;;16001:68:0;6274:400:1;16001:68:0;-1:-1:-1;;;;;16088:21:0;;16080:68;;;;-1:-1:-1;;;16080:68:0;;6881:2:1;16080:68:0;;;6863:21:1;6920:2;6900:18;;;6893:30;6959:34;6939:18;;;6932:62;-1:-1:-1;;;7010:18:1;;;7003:32;7052:19;;16080:68:0;6679:398:1;16080:68:0;-1:-1:-1;;;;;16159:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16211:32;;1828:25:1;;;16211:32:0;;1801:18:1;16211:32:0;;;;;;;15916:335;;;:::o;214:82::-;272:7;289:5;293:1;289;:5;:::i;9195:686::-;9284:37;9295:6;9303:9;9314:6;9284:10;:37::i;:::-;9332:38;9352:6;9360:9;9332:19;:38::i;:::-;9381:41;9396:6;9404:9;9415:6;9381:14;:41::i;:::-;9434:35;9451:6;9459:9;9434:16;:35::i;:::-;9480:39;9493:6;9501:9;9512:6;9480:12;:39::i;:::-;9531:35;9540:6;9548:9;9559:6;9531:8;:35::i;:::-;-1:-1:-1;;;;;9597:17:0;;;;;;:9;:17;;;;;;:29;;9619:6;9597:21;:29::i;:::-;-1:-1:-1;;;;;9577:17:0;;;;;;:9;:17;;;;;:49;;;;9662:32;9587:6;9684:9;9662:13;:32::i;:::-;:78;;9734:6;9662:78;;;9697:34;9705:6;9713:9;9724:6;9697:7;:34::i;:::-;-1:-1:-1;;;;;9774:20:0;;;;;;:9;:20;;;;;;9637:103;;-1:-1:-1;9774:40:0;;9637:103;9774:24;:40::i;:::-;-1:-1:-1;;;;;9751:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9830:43;;;;;;;;;;9858:14;1828:25:1;;1816:2;1801:18;;1682:177;9830:43:0;;;;;;;;9273:608;9195:686;;;:::o;1427:162::-;1513:7;1559:12;1551:6;;;;1543:29;;;;-1:-1:-1;;;1543:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1581:5:0;;;1427:162::o;302:82::-;360:7;377:5;381:1;377;:5;:::i;8748:439::-;-1:-1:-1;;;;;8852:20:0;;8844:70;;;;-1:-1:-1;;;8844:70:0;;7417:2:1;8844:70:0;;;7399:21:1;7456:2;7436:18;;;7429:30;7495:34;7475:18;;;7468:62;-1:-1:-1;;;7546:18:1;;;7539:35;7591:19;;8844:70:0;7215:401:1;8844:70:0;-1:-1:-1;;;;;8933:23:0;;8925:71;;;;-1:-1:-1;;;8925:71:0;;7823:2:1;8925:71:0;;;7805:21:1;7862:2;7842:18;;;7835:30;7901:34;7881:18;;;7874:62;-1:-1:-1;;;7952:18:1;;;7945:33;7995:19;;8925:71:0;7621:399:1;8925:71:0;9032:1;9015:6;:19;9007:73;;;;-1:-1:-1;;;9007:73:0;;8227:2:1;9007:73:0;;;8209:21:1;8266:2;8246:18;;;8239:30;8305:34;8285:18;;;8278:62;-1:-1:-1;;;8356:18:1;;;8349:39;8405:19;;9007:73:0;8025:405:1;9007:73:0;-1:-1:-1;;;;;7448:18:0;;7431:7;7448:18;;;:9;:18;;;;;;9099:6;:27;;9091:88;;;;-1:-1:-1;;;9091:88:0;;8637:2:1;9091:88:0;;;8619:21:1;8676:2;8656:18;;;8649:30;8715:34;8695:18;;;8688:62;-1:-1:-1;;;8766:18:1;;;8759:47;8823:19;;9091:88:0;8435:413:1;9091:88:0;8748:439;;;:::o;11016:191::-;-1:-1:-1;;;;;11109:19:0;;;;;;:11;:19;;;;;;;;11108:20;:47;;;;-1:-1:-1;;;;;;11133:22:0;;;;;;:11;:22;;;;;;;;11132:23;11108:47;11105:95;;;11165:14;;-1:-1:-1;;;11165:14:0;;;;11157:41;;;;-1:-1:-1;;;11157:41:0;;9055:2:1;11157:41:0;;;9037:21:1;9094:2;9074:18;;;9067:30;-1:-1:-1;;;9113:18:1;;;9106:44;9167:18;;11157:41:0;8853:338:1;11157:41:0;11016:191;;:::o;11219:333::-;-1:-1:-1;;;;;11323:19:0;;;;;;:11;:19;;;;;;;;11322:20;:47;;;;-1:-1:-1;;;;;;11347:22:0;;;;;;:11;:22;;;;;;;;11346:23;11322:47;:77;;;;-1:-1:-1;11394:4:0;;-1:-1:-1;;;;;11373:26:0;;;11394:4;;11373:26;;11322:77;:107;;;;-1:-1:-1;;;;;;11403:26:0;;6040:42;11403:26;;11322:107;11319:226;;;11491:17;:15;:17::i;:::-;-1:-1:-1;;;;;11454:20:0;;;;;;:9;:20;;;;;;:32;;11479:6;11454:24;:32::i;:::-;11453:55;;11445:98;;;;-1:-1:-1;;;11445:98:0;;9398:2:1;11445:98:0;;;9380:21:1;9437:2;9417:18;;;9410:30;9476:32;9456:18;;;9449:60;9526:18;;11445:98:0;9196:354:1;11560:159:0;11657:4;;-1:-1:-1;;;;;11644:17:0;;;11657:4;;11644:17;:41;;;;-1:-1:-1;;;;;;11666:19:0;;;;;;:11;:19;;;;;;;;11665:20;11644:41;11641:71;;;11708:1;11687:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11560:159:0;;:::o;11727:349::-;11838:4;;-1:-1:-1;;;;;11828:14:0;;;11838:4;;11828:14;11825:130;;11862:20;:18;:20::i;:::-;11852:6;:30;;:53;;;-1:-1:-1;;;;;;11886:19:0;;;;;;:11;:19;;;;;;;;11852:53;:79;;;-1:-1:-1;;;;;;11909:22:0;;;;;;:11;:22;;;;;;;;11852:79;11844:109;;;;-1:-1:-1;;;11844:109:0;;9887:2:1;11844:109:0;;;9869:21:1;9926:2;9906:18;;;9899:30;-1:-1:-1;;;9945:18:1;;;9938:47;10002:18;;11844:109:0;9685:341:1;11844:109:0;11983:14;:12;:14::i;:::-;11973:6;:24;;:47;;;-1:-1:-1;;;;;;12001:19:0;;;;;;:11;:19;;;;;;;;11973:47;:73;;;-1:-1:-1;;;;;;12024:22:0;;;;;;:11;:22;;;;;;;;11973:73;11965:103;;;;-1:-1:-1;;;11965:103:0;;9887:2:1;11965:103:0;;;9869:21:1;9926:2;9906:18;;;9899:30;-1:-1:-1;;;9945:18:1;;;9938:47;10002:18;;11965:103:0;9685:341:1;14359:197:0;14451:41;14466:6;14474:9;14485:6;14451:14;:41::i;:::-;14448:101;;;14494:29;14509:13;;14494:14;:29::i;:::-;14545:1;14525:9;:22;14359:197;;;:::o;14564:160::-;-1:-1:-1;;;;;14670:19:0;;14645:4;14670:19;;;:11;:19;;;;;;;;14669:20;:47;;;;-1:-1:-1;;;;;;;14694:22:0;;;;;:11;:22;;;;;;;;14693:23;;14564:160;-1:-1:-1;14564:160:0:o;15045:546::-;15131:7;15187:1;15154:30;15166:6;15174:9;15154:11;:30::i;:::-;:34;15151:418;;;15200:17;15220:59;15248:30;15260:6;15268:9;15248:11;:30::i;:::-;15231:11;;15220:23;;:6;;:10;:23::i;:59::-;15335:4;15317:24;;;;:9;:24;;;;;;15200:79;;-1:-1:-1;15317:39:0;;15200:79;15317:28;:39::i;:::-;15308:4;15290:24;;;;:9;:24;;;;;;;:66;;;;15372:42;;-1:-1:-1;;;;;15372:42:0;;;;;;;15404:9;1828:25:1;;1816:2;1801:18;;1682:177;15372:42:0;;;;;;;;15428:7;;:20;15425:104;;15450:77;15468:4;6040:42;15490:36;15518:7;;15490:23;15501:11;;15490:6;:10;;:23;;;;:::i;:36::-;15450:9;:77::i;:::-;15546:21;:6;15557:9;15546:10;:21::i;:::-;15539:28;;;;;15151:418;-1:-1:-1;15577:6:0;15045:546;-1:-1:-1;;15045:546:0:o;126:82::-;184:7;201:5;205:1;201;:5;:::i;13951:400::-;14092:15;;14168:13;;14158:4;14049;7448:18;;;:9;:18;;;;;;14200:8;;14049:4;;14082:25;;;;-1:-1:-1;14140:41:0;;14200:8;;14199:9;:24;;;;-1:-1:-1;14212:11:0;;;;14199:24;:42;;;;-1:-1:-1;14227:14:0;;-1:-1:-1;;;14227:14:0;;;;14199:42;:54;;;;;14245:8;14199:54;:78;;;;-1:-1:-1;;;;;;14258:19:0;;;;;;:11;:19;;;;;;;;14257:20;14199:78;:99;;;;-1:-1:-1;14294:4:0;;-1:-1:-1;;;;;14281:17:0;;;14294:4;;14281:17;14199:99;:126;;;;;14323:1;14302:9;;:23;;14199:126;:144;;;;;14329:14;14199:144;14192:151;13951:400;-1:-1:-1;;;;;;13951:400:0:o;12084:1066::-;5961:8;:15;;-1:-1:-1;;5961:15:0;5972:4;5961:15;;;;;;12221:14:::1;::::0;12203:12:::1;::::0;12179::::1;::::0;5961:8;;12178:66:::1;::::0;12242:1:::1;::::0;12179:57:::1;::::0;12221:14;;12179:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12178:66::-;12155:89;;12255:32;12290:42;12319:12;12290:24;12301:12;;12290:6;:10;;:24;;;;:::i;:42::-;12255:77:::0;-1:-1:-1;12343:14:0::1;12360:36;:6:::0;12255:77;12360:10:::1;:36::i;:::-;12343:53:::0;-1:-1:-1;12432:21:0::1;12464:24;12343:53:::0;12464:16:::1;:24::i;:::-;12499:20;12522:41;:21;12548:14:::0;12522:25:::1;:41::i;:::-;12499:64;;12574:19;12595:48;12612:30;12629:12;;12612;:16;;:30;;;;:::i;:::-;12595:12:::0;;:16:::1;:48::i;:::-;12574:69;;12654:29;12686;12702:12;;12686:11;:15;;:29;;;;:::i;:::-;12654:61:::0;-1:-1:-1;12729:34:0;;12726:103:::1;;12765:61;12778:24;12804:21;12765:12;:61::i;:::-;12885:12;::::0;12839:20:::1;::::0;12862:36:::1;::::0;:18:::1;:11:::0;12878:1:::1;12862:15;:18::i;:36::-;12839:59:::0;-1:-1:-1;12912:16:0;;12909:73:::1;;12930:50;::::0;6235:42:::1;::::0;12930:50;::::1;;;::::0;12967:12;;12930:50:::1;::::0;;;12967:12;6235:42;12930:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12909:73;13019:21;13054:29:::0;;13051:92:::1;;13085:56;::::0;6138:42:::1;::::0;13085:56;::::1;;;::::0;13124:16;;13085:56:::1;::::0;;;13124:16;6138:42;13085:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13051:92;-1:-1:-1::0;;5981:8:0;:16;;-1:-1:-1;;5981:16:0;;;-1:-1:-1;;;;;;;;12084:1066:0:o;14732:305::-;-1:-1:-1;;;;;14834:13:0;;14811:7;14834:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;14851:16:0;;;;;;:5;:16;;;;;;;;14834:33;14831:76;;;14876:11;;:29;;14900:3;14876:15;:29::i;:::-;14869:36;;;;14831:76;14933:4;;-1:-1:-1;;;;;14933:4:0;;;14920:17;;;;14917:38;;-1:-1:-1;14946:7:0;;14939:14;;14917:38;14978:4;;-1:-1:-1;;;;;14978:4:0;;;14968:14;;;;14965:36;;-1:-1:-1;14991:8:0;;14984:15;;14965:36;-1:-1:-1;15018:11:0;;14732:305;;;;:::o;13509:434::-;13599:16;;;13613:1;13599:16;;;;;;;;13575:21;;13599:16;;;;;;;;;;-1:-1:-1;13599:16:0;13575:40;;13644:4;13626;13631:1;13626:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13626:23:0;;;:7;;;;;;;;;;:23;;;;13670:6;;:13;;;-1:-1:-1;;;13670:13:0;;;;:6;;;;;:11;;:13;;;;;13626:7;;13670:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13660:4;13665:1;13660:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13660:23:0;;;:7;;;;;;;;;:23;13726:6;;13694:53;;13711:4;;13726:6;13735:11;13694:8;:53::i;:::-;13758:6;;:177;;-1:-1:-1;;;13758:177:0;;-1:-1:-1;;;;;13758:6:0;;;;:57;;:177;;13830:11;;13758:6;;13872:4;;13899;;13919:15;;13758:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13564:379;13509:434;:::o;13158:343::-;13271:6;;13239:53;;13256:4;;-1:-1:-1;;;;;13271:6:0;13280:11;13239:8;:53::i;:::-;13303:6;;:190;;-1:-1:-1;;;13303:190:0;;13366:4;13303:190;;;11877:34:1;11927:18;;;11920:34;;;13303:6:0;11970:18:1;;;11963:34;;;12013:18;;;12006:34;6331:42:0;12056:19:1;;;12049:44;13477:15:0;12109:19:1;;;12102:35;-1:-1:-1;;;;;13303:6:0;;;;:22;;13333:9;;11811:19:1;;13303:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13158:343;;:::o;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:418::-;760:2;749:9;742:21;723:4;792:6;786:13;835:6;830:2;819:9;815:18;808:34;894:6;889:2;881:6;877:15;872:2;861:9;857:18;851:50;950:1;945:2;936:6;925:9;921:22;917:31;910:42;1020:2;1013;1009:7;1004:2;996:6;992:15;988:29;977:9;973:45;969:54;961:62;;;611:418;;;;:::o;1034:131::-;-1:-1:-1;;;;;1109:31:1;;1099:42;;1089:70;;1155:1;1152;1145:12;1089:70;1034:131;:::o;1170:315::-;1238:6;1246;1299:2;1287:9;1278:7;1274:23;1270:32;1267:52;;;1315:1;1312;1305:12;1267:52;1354:9;1341:23;1373:31;1398:5;1373:31;:::i;:::-;1423:5;1475:2;1460:18;;;;1447:32;;-1:-1:-1;;;1170:315:1:o;1864:456::-;1941:6;1949;1957;2010:2;1998:9;1989:7;1985:23;1981:32;1978:52;;;2026:1;2023;2016:12;1978:52;2065:9;2052:23;2084:31;2109:5;2084:31;:::i;:::-;2134:5;-1:-1:-1;2191:2:1;2176:18;;2163:32;2204:33;2163:32;2204:33;:::i;:::-;1864:456;;2256:7;;-1:-1:-1;;;2310:2:1;2295:18;;;;2282:32;;1864:456::o;2325:247::-;2384:6;2437:2;2425:9;2416:7;2412:23;2408:32;2405:52;;;2453:1;2450;2443:12;2405:52;2492:9;2479:23;2511:31;2536:5;2511:31;:::i;2766:316::-;2843:6;2851;2859;2912:2;2900:9;2891:7;2887:23;2883:32;2880:52;;;2928:1;2925;2918:12;2880:52;-1:-1:-1;;2951:23:1;;;3021:2;3006:18;;2993:32;;-1:-1:-1;3072:2:1;3057:18;;;3044:32;;2766:316;-1:-1:-1;2766:316:1:o;3087:416::-;3152:6;3160;3213:2;3201:9;3192:7;3188:23;3184:32;3181:52;;;3229:1;3226;3219:12;3181:52;3268:9;3255:23;3287:31;3312:5;3287:31;:::i;:::-;3337:5;-1:-1:-1;3394:2:1;3379:18;;3366:32;3436:15;;3429:23;3417:36;;3407:64;;3467:1;3464;3457:12;3407:64;3490:7;3480:17;;;3087:416;;;;;:::o;3716:388::-;3784:6;3792;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3900:9;3887:23;3919:31;3944:5;3919:31;:::i;:::-;3969:5;-1:-1:-1;4026:2:1;4011:18;;3998:32;4039:33;3998:32;4039:33;:::i;4369:329::-;4571:2;4553:21;;;4610:1;4590:18;;;4583:29;-1:-1:-1;;;4643:2:1;4628:18;;4621:36;4689:2;4674:18;;4369:329::o;5116:127::-;5177:10;5172:3;5168:20;5165:1;5158:31;5208:4;5205:1;5198:15;5232:4;5229:1;5222:15;5248:168;5321:9;;;5352;;5369:15;;;5363:22;;5349:37;5339:71;;5390:18;;:::i;5421:217::-;5461:1;5487;5477:132;;5531:10;5526:3;5522:20;5519:1;5512:31;5566:4;5563:1;5556:15;5594:4;5591:1;5584:15;5477:132;-1:-1:-1;5623:9:1;;5421:217::o;7082:128::-;7149:9;;;7170:11;;;7167:37;;;7184:18;;:::i;9555:125::-;9620:9;;;9641:10;;;9638:36;;;9654:18;;:::i;10163:127::-;10224:10;10219:3;10215:20;10212:1;10205:31;10255:4;10252:1;10245:15;10279:4;10276:1;10269:15;10295:251;10365:6;10418:2;10406:9;10397:7;10393:23;10389:32;10386:52;;;10434:1;10431;10424:12;10386:52;10466:9;10460:16;10485:31;10510:5;10485:31;:::i;10551:980::-;10813:4;10861:3;10850:9;10846:19;10892:6;10881:9;10874:25;10918:2;10956:6;10951:2;10940:9;10936:18;10929:34;10999:3;10994:2;10983:9;10979:18;10972:31;11023:6;11058;11052:13;11089:6;11081;11074:22;11127:3;11116:9;11112:19;11105:26;;11166:2;11158:6;11154:15;11140:29;;11187:1;11197:195;11211:6;11208:1;11205:13;11197:195;;;11276:13;;-1:-1:-1;;;;;11272:39:1;11260:52;;11367:15;;;;11332:12;;;;11308:1;11226:9;11197:195;;;-1:-1:-1;;;;;;;11448:32:1;;;;11443:2;11428:18;;11421:60;-1:-1:-1;;;11512:3:1;11497:19;11490:35;11409:3;10551:980;-1:-1:-1;;;10551:980:1:o;12148:306::-;12236:6;12244;12252;12305:2;12293:9;12284:7;12280:23;12276:32;12273:52;;;12321:1;12318;12311:12;12273:52;12350:9;12344:16;12334:26;;12400:2;12389:9;12385:18;12379:25;12369:35;;12444:2;12433:9;12429:18;12423:25;12413:35;;12148:306;;;;;:::o

Swarm Source

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