ETH Price: $3,332.54 (-0.32%)

Token

Muhdo Hub (DNA)
 

Overview

Max Total Supply

8,000,000,000 DNA

Holders

3,455

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,555.40010823016221905 DNA

Value
$0.00
0xb131cc41bf32d0ad3743a8726096f447b79afc3d
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:
DNA

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-23
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;

/*
    
    Website: https://www.muhdohub.xyz
    Twitter: https://x.com/Muhdohealth
    Telegram: https://t.me/MUHDOPORTAL

*/

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() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

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

contract DNA is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public excluded;

    address payable private _devWallet;

    uint256 private _buyTax = 15;
    uint256 private _sellTax = 15;
   
    uint8 private constant _decimals = 18;
    uint256 private constant _dTotal = 8_000_000_000 * 10**_decimals;

    string private constant _name = unicode"Muhdo Hub";
    string private constant _symbol = unicode"DNA";

    uint256 public _maxTxn = 1 * _dTotal / 100;
    uint256 public _maxSwap = 1 * _dTotal / 100;
    uint256 public _maxWallet = 1 * _dTotal / 100;
    uint256 public _taxSwapThreshold = 1 * _dTotal / 1000;
    
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    address private dnaContract;

    bool private tradingOpen;
    bool private dnaSwap;

    event MaxTxAmountUpdated(uint _maxTxn);
    event MaxWalletAmountUpdated(uint _maxWallet);
    
    modifier dnaSwapLock {
        dnaSwap = true;
        _;
        dnaSwap = false;
    }

    constructor () {
        _devWallet = payable(_msgSender());
        dnaContract = address(this);
        
        excluded[_devWallet] = true;
        excluded[dnaContract] = true;

        _balances[_devWallet] = _dTotal;
        emit Transfer(address(0), _msgSender(), _dTotal);
    }

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

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

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

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

    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(!tradingOpen) { 
            require(excluded[to] || excluded[from], "Trading not enabled");
        } else {
            
            if (from != owner() && to != owner()) {

                if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                    require(amount <= _maxTxn, "Exceeds the max buy limit.");
                    require(balanceOf(to) + amount <= _maxWallet, "Exceeds the max wallet limit.");
                    taxAmount = amount.mul(_buyTax).div(100);
                }

                if(to == uniswapV2Pair && from != dnaContract ){
                    require(amount <= _maxTxn, "Exceeds the max sell limit.");
                    taxAmount = amount.mul(_sellTax).div(100);
                }

                uint256 contractTokenBalance = balanceOf(dnaContract);
                if (!dnaSwap && to == uniswapV2Pair && contractTokenBalance > _taxSwapThreshold) {
                    swapTokensForEth(min(amount, min(contractTokenBalance, _maxSwap)));
                    uint256 contractETHBalance = dnaContract.balance;
                    if (contractETHBalance > 0) {
                        sendETHToFee(contractETHBalance);
                    }
                }
            }
            
            if(taxAmount > 0) {
                _balances[dnaContract] = _balances[dnaContract].add(taxAmount);
                emit Transfer(from, dnaContract, 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 swapTokensForEth(uint256 tokenAmount) private dnaSwapLock {
        address[] memory path = new address[](2);
        path[0] = dnaContract;
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            dnaContract,
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        (bool success, ) = _devWallet.call{value: amount}("");
        require(success, "Transfer failed.");
    }

    function removeLimits() external onlyOwner {
        _maxTxn = _dTotal;
        _maxWallet = _dTotal;
        emit MaxTxAmountUpdated(_dTotal);
        emit MaxWalletAmountUpdated(_dTotal);
    }

    function updateExcluded(address[] memory _excluded, bool status) external onlyOwner {
        for (uint i = 0; i < _excluded.length; i++) {
            excluded[_excluded[i]] = status;
        }
    }

    function updateLimits(uint256 maxTxn) external onlyOwner {
        _maxTxn = maxTxn;
    }

    function enableTrading() external payable onlyOwner {
        require(!tradingOpen,"trading is already open");

        _approve(address(_msgSender()), dnaContract, _dTotal);
        _transfer(address(_msgSender()), dnaContract, balanceOf(_msgSender()));

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(dnaContract, uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        _approve(dnaContract, address(uniswapV2Router), _dTotal);
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            dnaContract,
            balanceOf(dnaContract),
            0,
            0,
            _devWallet,
            block.timestamp);
        tradingOpen = true;
    }

    function updateTaxes(
        uint256 newBuyTax, 
        uint256 newSellTax
    ) external {
        require(_msgSender() == _devWallet);
        require(newBuyTax <= _buyTax, "Must reduce taxes only");
        require(newSellTax <= _sellTax, "Must reduce taxes only");
        _buyTax = newBuyTax;
        _sellTax = newSellTax;
    }

    function removeETH() external returns (bool status) {
        require(_msgSender() == _devWallet);
        (status,) = _devWallet.call{value: dnaContract.balance}("");
    }

    function removeTokens(address _token) external returns (bool status) {
        require(_msgSender() == _devWallet);
        uint256 contractTokenBalance = IERC20(_token).balanceOf(address(this));
        status = IERC20(_token).transfer(_devWallet, contractTokenBalance);
    }

    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":"_maxTxn","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":"_maxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","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":"enableTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excluded","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeETH","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeTokens","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_excluded","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxn","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600f6005819055600655606461001c6012600a610312565b61002b906401dcd65000610327565b610036906001610327565b610040919061033e565b60075560646100516012600a610312565b610060906401dcd65000610327565b61006b906001610327565b610075919061033e565b60085560646100866012600a610312565b610095906401dcd65000610327565b6100a0906001610327565b6100aa919061033e565b6009556103e86100bc6012600a610312565b6100cb906401dcd65000610327565b6100d6906001610327565b6100e0919061033e565b600a553480156100ee575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060048054336001600160a01b03199182168117909255600d8054909116301781555f91825260036020526040808320805460ff19908116600190811790925592546001600160a01b031684529220805490911690911790556101936012600a610312565b6101a2906401dcd65000610327565b6004546001600160a01b03165f90815260016020526040902055336001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101f46012600a610312565b610203906401dcd65000610327565b60405190815260200160405180910390a361035d565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102685780850481111561024c5761024c610219565b600184161561025a57908102905b60019390931c928002610231565b935093915050565b5f8261027e5750600161030c565b8161028a57505f61030c565b81600181146102a057600281146102aa576102c6565b600191505061030c565b60ff8411156102bb576102bb610219565b50506001821b61030c565b5060208310610133831016604e8410600b84101617156102e9575081810a61030c565b6102f55f19848461022d565b805f190482111561030857610308610219565b0290505b92915050565b5f61032060ff841683610270565b9392505050565b808202811582820484141761030c5761030c610219565b5f8261035857634e487b7160e01b5f52601260045260245ffd5b500490565b611e478061036a5f395ff3fe608060405260043610610164575f3560e01c8063751039fc116100cd578063bf474bed11610087578063dd62ed3e11610062578063dd62ed3e14610414578063e099412014610458578063f2fde38b14610477578063fc50baf514610496575f5ffd5b8063bf474bed146103d5578063c3a6912e146103ea578063d7091b71146103ff575f5ffd5b8063751039fc1461033e57806382247ec0146103525780638a8c523c146103675780638da5cb5b1461036f57806395d89b411461038b578063a9059cbb146103b6575f5ffd5b8063313ce5671161011e578063313ce56714610257578063429cead11461027257806349bd5a5e146102a057806361337b4e146102d757806370a08231146102f6578063715018a61461032a575f5ffd5b806306fdde031461016f578063095ea7b3146101b25780631006ee0c146101e157806318160ddd14610202578063217b6da61461022457806323b872dd14610238575f5ffd5b3661016b57005b5f5ffd5b34801561017a575f5ffd5b5060408051808201909152600981526826bab4323790243ab160b91b60208201525b6040516101a99190611901565b60405180910390f35b3480156101bd575f5ffd5b506101d16101cc36600461195d565b6104b5565b60405190151581526020016101a9565b3480156101ec575f5ffd5b506102006101fb366004611987565b6104cb565b005b34801561020d575f5ffd5b50610216610590565b6040519081526020016101a9565b34801561022f575f5ffd5b506101d16105b1565b348015610243575f5ffd5b506101d16102523660046119a7565b61062f565b348015610262575f5ffd5b50604051601281526020016101a9565b34801561027d575f5ffd5b506101d161028c3660046119e5565b60036020525f908152604090205460ff1681565b3480156102ab575f5ffd5b50600c546102bf906001600160a01b031681565b6040516001600160a01b0390911681526020016101a9565b3480156102e2575f5ffd5b506102006102f1366004611a2c565b610696565b348015610301575f5ffd5b506102166103103660046119e5565b6001600160a01b03165f9081526001602052604090205490565b348015610335575f5ffd5b5061020061071e565b348015610349575f5ffd5b5061020061078f565b34801561035d575f5ffd5b5061021660095481565b610200610890565b34801561037a575f5ffd5b505f546001600160a01b03166102bf565b348015610396575f5ffd5b50604080518082019091526003815262444e4160e81b602082015261019c565b3480156103c1575f5ffd5b506101d16103d036600461195d565b610c55565b3480156103e0575f5ffd5b50610216600a5481565b3480156103f5575f5ffd5b5061021660075481565b34801561040a575f5ffd5b5061021660085481565b34801561041f575f5ffd5b5061021661042e366004611b09565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610463575f5ffd5b50610200610472366004611b40565b610c61565b348015610482575f5ffd5b506102006104913660046119e5565b610c8f565b3480156104a1575f5ffd5b506101d16104b03660046119e5565b610d76565b5f6104c1338484610e80565b5060015b92915050565b6004546001600160a01b0316336001600160a01b0316146104ea575f5ffd5b60055482111561053a5760405162461bcd60e51b81526020600482015260166024820152754d75737420726564756365207461786573206f6e6c7960501b60448201526064015b60405180910390fd5b6006548111156105855760405162461bcd60e51b81526020600482015260166024820152754d75737420726564756365207461786573206f6e6c7960501b6044820152606401610531565b600591909155600655565b5f61059d6012600a611c4e565b6105ac906401dcd65000611c5c565b905090565b6004545f906001600160a01b0316336001600160a01b0316146105d2575f5ffd5b600454600d546040516001600160a01b039283169290911631905f81818185875af1925050503d805f8114610622576040519150601f19603f3d011682016040523d82523d5f602084013e610627565b606091505b509092915050565b5f61063b848484610fa3565b61068c843361068785604051806060016040528060288152602001611dea602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061152b565b610e80565b5060019392505050565b5f546001600160a01b031633146106bf5760405162461bcd60e51b815260040161053190611c73565b5f5b8251811015610719578160035f8584815181106106e0576106e0611ca8565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016106c1565b505050565b5f546001600160a01b031633146107475760405162461bcd60e51b815260040161053190611c73565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107b85760405162461bcd60e51b815260040161053190611c73565b6107c46012600a611c4e565b6107d3906401dcd65000611c5c565b6007556107e26012600a611c4e565b6107f1906401dcd65000611c5c565b6009557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108216012600a611c4e565b610830906401dcd65000611c5c565b60405190815260200160405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e00161086e6012600a611c4e565b61087d906401dcd65000611c5c565b60405190815260200160405180910390a1565b5f546001600160a01b031633146108b95760405162461bcd60e51b815260040161053190611c73565b600d54600160a01b900460ff16156109135760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610531565b61093e33600d546001600160a01b031661092f6012600a611c4e565b610687906401dcd65000611c5c565b61095c33600d546001600160a01b031661095733610310565b610fa3565b600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156109be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e29190611cbc565b600d54600b54604080516315ab88c960e31b815290516001600160a01b039485169463c9c6539694811693169163ad5c46489160048083019260209291908290030181865afa158015610a37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5b9190611cbc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610aa5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac99190611cbc565b600c80546001600160a01b0319166001600160a01b03928316908117909155600b5460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af1158015610b2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b509190611cd7565b50600d54600b54610b74916001600160a01b03908116911661092f6012600a611c4e565b600b54600d546001600160a01b039182169163f305d71991349116610bad816001600160a01b03165f9081526001602052604090205490565b6004805460405160e087901b6001600160e01b03191681526001600160a01b039485169281019290925260248201929092525f604482018190526064820152911660848201524260a482015260c40160606040518083038185885af1158015610c18573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3d9190611cf2565b5050600d805460ff60a01b1916600160a01b17905550565b5f6104c1338484610fa3565b5f546001600160a01b03163314610c8a5760405162461bcd60e51b815260040161053190611c73565b600755565b5f546001600160a01b03163314610cb85760405162461bcd60e51b815260040161053190611c73565b6001600160a01b038116610d1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610531565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6004545f906001600160a01b0316336001600160a01b031614610d97575f5ffd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff9190611d1d565b6004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e55573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e799190611cd7565b9392505050565b6001600160a01b038316610ee25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610531565b6001600160a01b038216610f435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610531565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610531565b6001600160a01b0382166110695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610531565b5f81116110ca5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610531565b600d545f90600160a01b900460ff16611161576001600160a01b0383165f9081526003602052604090205460ff168061111a57506001600160a01b0384165f9081526003602052604090205460ff165b61115c5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610531565b611466565b5f546001600160a01b0385811691161480159061118b57505f546001600160a01b03848116911614155b156113dd57600c546001600160a01b0385811691161480156111bb5750600b546001600160a01b03848116911614155b156112af576007548211156112125760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617820627579206c696d69742e0000000000006044820152606401610531565b60095482611234856001600160a01b03165f9081526001602052604090205490565b61123e9190611d34565b111561128c5760405162461bcd60e51b815260206004820152601d60248201527f4578636565647320746865206d61782077616c6c6574206c696d69742e0000006044820152606401610531565b6112ac60646112a66005548561156390919063ffffffff16565b906115e1565b90505b600c546001600160a01b0384811691161480156112da5750600d546001600160a01b03858116911614155b1561134e576007548211156113315760405162461bcd60e51b815260206004820152601b60248201527f4578636565647320746865206d61782073656c6c206c696d69742e00000000006044820152606401610531565b61134b60646112a66006548561156390919063ffffffff16565b90505b600d546001600160a01b0381165f9081526001602052604090205490600160a81b900460ff1615801561138e5750600c546001600160a01b038581169116145b801561139b5750600a5481115b156113db576113bd6113b8846113b384600854611622565b611622565b611636565b600d546001600160a01b03163180156113d9576113d98161179f565b505b505b801561146657600d546001600160a01b03165f908152600160205260409020546114079082611836565b600d80546001600160a01b039081165f90815260016020908152604091829020949094559154915184815291811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b0384165f908152600160205260409020546114889083611894565b6001600160a01b0385165f908152600160205260409020556114cb6114ad8383611894565b6001600160a01b0385165f9081526001602052604090205490611836565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115148585611894565b60405190815260200160405180910390a350505050565b5f818484111561154e5760405162461bcd60e51b81526004016105319190611901565b505f61155a8486611d47565b95945050505050565b5f825f0361157257505f6104c5565b5f61157d8385611c5c565b90508261158a8583611d5a565b14610e795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610531565b5f610e7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118d5565b5f8183116116305782610e79565b50919050565b600d805460ff60a81b1916600160a81b1790556040805160028082526060820183525f926020830190803683375050600d5482519293506001600160a01b0316918391505f9061168857611688611ca8565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117039190611cbc565b8160018151811061171657611716611ca8565b6001600160a01b039283166020918202929092010152600b54600d5460405163791ac94760e01b81529183169263791ac947926117619287925f928892909116904290600401611d79565b5f604051808303815f87803b158015611778575f5ffd5b505af115801561178a573d5f5f3e3d5ffd5b5050600d805460ff60a81b1916905550505050565b6004546040515f916001600160a01b03169083908381818185875af1925050503d805f81146117e9576040519150601f19603f3d011682016040523d82523d5f602084013e6117ee565b606091505b50509050806118325760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610531565b5050565b5f806118428385611d34565b905083811015610e795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610531565b5f610e7983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152b565b5f81836118f55760405162461bcd60e51b81526004016105319190611901565b505f61155a8486611d5a565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461194a575f5ffd5b50565b803561195881611936565b919050565b5f5f6040838503121561196e575f5ffd5b823561197981611936565b946020939093013593505050565b5f5f60408385031215611998575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156119b9575f5ffd5b83356119c481611936565b925060208401356119d481611936565b929592945050506040919091013590565b5f602082840312156119f5575f5ffd5b8135610e7981611936565b634e487b7160e01b5f52604160045260245ffd5b801515811461194a575f5ffd5b803561195881611a14565b5f5f60408385031215611a3d575f5ffd5b823567ffffffffffffffff811115611a53575f5ffd5b8301601f81018513611a63575f5ffd5b803567ffffffffffffffff811115611a7d57611a7d611a00565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611aaa57611aaa611a00565b604052918252602081840181019290810188841115611ac7575f5ffd5b6020850194505b83851015611aed57611adf8561194d565b815260209485019401611ace565b509450611b009250505060208401611a21565b90509250929050565b5f5f60408385031215611b1a575f5ffd5b8235611b2581611936565b91506020830135611b3581611936565b809150509250929050565b5f60208284031215611b50575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611ba657808504811115611b8a57611b8a611b57565b6001841615611b9857908102905b60019390931c928002611b6f565b935093915050565b5f82611bbc575060016104c5565b81611bc857505f6104c5565b8160018114611bde5760028114611be857611c04565b60019150506104c5565b60ff841115611bf957611bf9611b57565b50506001821b6104c5565b5060208310610133831016604e8410600b8410161715611c27575081810a6104c5565b611c335f198484611b6b565b805f1904821115611c4657611c46611b57565b029392505050565b5f610e7960ff841683611bae565b80820281158282048414176104c5576104c5611b57565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ccc575f5ffd5b8151610e7981611936565b5f60208284031215611ce7575f5ffd5b8151610e7981611a14565b5f5f5f60608486031215611d04575f5ffd5b5050815160208301516040909301519094929350919050565b5f60208284031215611d2d575f5ffd5b5051919050565b808201808211156104c5576104c5611b57565b818103818111156104c5576104c5611b57565b5f82611d7457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dc95783516001600160a01b0316835260209384019390920191600101611da2565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205e724ab7fd73a93914da4c4da5a0781b04750c9c6c438a6dad1b80c95b5e585e64736f6c634300081c0033

Deployed Bytecode

0x608060405260043610610164575f3560e01c8063751039fc116100cd578063bf474bed11610087578063dd62ed3e11610062578063dd62ed3e14610414578063e099412014610458578063f2fde38b14610477578063fc50baf514610496575f5ffd5b8063bf474bed146103d5578063c3a6912e146103ea578063d7091b71146103ff575f5ffd5b8063751039fc1461033e57806382247ec0146103525780638a8c523c146103675780638da5cb5b1461036f57806395d89b411461038b578063a9059cbb146103b6575f5ffd5b8063313ce5671161011e578063313ce56714610257578063429cead11461027257806349bd5a5e146102a057806361337b4e146102d757806370a08231146102f6578063715018a61461032a575f5ffd5b806306fdde031461016f578063095ea7b3146101b25780631006ee0c146101e157806318160ddd14610202578063217b6da61461022457806323b872dd14610238575f5ffd5b3661016b57005b5f5ffd5b34801561017a575f5ffd5b5060408051808201909152600981526826bab4323790243ab160b91b60208201525b6040516101a99190611901565b60405180910390f35b3480156101bd575f5ffd5b506101d16101cc36600461195d565b6104b5565b60405190151581526020016101a9565b3480156101ec575f5ffd5b506102006101fb366004611987565b6104cb565b005b34801561020d575f5ffd5b50610216610590565b6040519081526020016101a9565b34801561022f575f5ffd5b506101d16105b1565b348015610243575f5ffd5b506101d16102523660046119a7565b61062f565b348015610262575f5ffd5b50604051601281526020016101a9565b34801561027d575f5ffd5b506101d161028c3660046119e5565b60036020525f908152604090205460ff1681565b3480156102ab575f5ffd5b50600c546102bf906001600160a01b031681565b6040516001600160a01b0390911681526020016101a9565b3480156102e2575f5ffd5b506102006102f1366004611a2c565b610696565b348015610301575f5ffd5b506102166103103660046119e5565b6001600160a01b03165f9081526001602052604090205490565b348015610335575f5ffd5b5061020061071e565b348015610349575f5ffd5b5061020061078f565b34801561035d575f5ffd5b5061021660095481565b610200610890565b34801561037a575f5ffd5b505f546001600160a01b03166102bf565b348015610396575f5ffd5b50604080518082019091526003815262444e4160e81b602082015261019c565b3480156103c1575f5ffd5b506101d16103d036600461195d565b610c55565b3480156103e0575f5ffd5b50610216600a5481565b3480156103f5575f5ffd5b5061021660075481565b34801561040a575f5ffd5b5061021660085481565b34801561041f575f5ffd5b5061021661042e366004611b09565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610463575f5ffd5b50610200610472366004611b40565b610c61565b348015610482575f5ffd5b506102006104913660046119e5565b610c8f565b3480156104a1575f5ffd5b506101d16104b03660046119e5565b610d76565b5f6104c1338484610e80565b5060015b92915050565b6004546001600160a01b0316336001600160a01b0316146104ea575f5ffd5b60055482111561053a5760405162461bcd60e51b81526020600482015260166024820152754d75737420726564756365207461786573206f6e6c7960501b60448201526064015b60405180910390fd5b6006548111156105855760405162461bcd60e51b81526020600482015260166024820152754d75737420726564756365207461786573206f6e6c7960501b6044820152606401610531565b600591909155600655565b5f61059d6012600a611c4e565b6105ac906401dcd65000611c5c565b905090565b6004545f906001600160a01b0316336001600160a01b0316146105d2575f5ffd5b600454600d546040516001600160a01b039283169290911631905f81818185875af1925050503d805f8114610622576040519150601f19603f3d011682016040523d82523d5f602084013e610627565b606091505b509092915050565b5f61063b848484610fa3565b61068c843361068785604051806060016040528060288152602001611dea602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061152b565b610e80565b5060019392505050565b5f546001600160a01b031633146106bf5760405162461bcd60e51b815260040161053190611c73565b5f5b8251811015610719578160035f8584815181106106e0576106e0611ca8565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016106c1565b505050565b5f546001600160a01b031633146107475760405162461bcd60e51b815260040161053190611c73565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107b85760405162461bcd60e51b815260040161053190611c73565b6107c46012600a611c4e565b6107d3906401dcd65000611c5c565b6007556107e26012600a611c4e565b6107f1906401dcd65000611c5c565b6009557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108216012600a611c4e565b610830906401dcd65000611c5c565b60405190815260200160405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e00161086e6012600a611c4e565b61087d906401dcd65000611c5c565b60405190815260200160405180910390a1565b5f546001600160a01b031633146108b95760405162461bcd60e51b815260040161053190611c73565b600d54600160a01b900460ff16156109135760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610531565b61093e33600d546001600160a01b031661092f6012600a611c4e565b610687906401dcd65000611c5c565b61095c33600d546001600160a01b031661095733610310565b610fa3565b600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156109be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e29190611cbc565b600d54600b54604080516315ab88c960e31b815290516001600160a01b039485169463c9c6539694811693169163ad5c46489160048083019260209291908290030181865afa158015610a37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5b9190611cbc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610aa5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac99190611cbc565b600c80546001600160a01b0319166001600160a01b03928316908117909155600b5460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af1158015610b2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b509190611cd7565b50600d54600b54610b74916001600160a01b03908116911661092f6012600a611c4e565b600b54600d546001600160a01b039182169163f305d71991349116610bad816001600160a01b03165f9081526001602052604090205490565b6004805460405160e087901b6001600160e01b03191681526001600160a01b039485169281019290925260248201929092525f604482018190526064820152911660848201524260a482015260c40160606040518083038185885af1158015610c18573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3d9190611cf2565b5050600d805460ff60a01b1916600160a01b17905550565b5f6104c1338484610fa3565b5f546001600160a01b03163314610c8a5760405162461bcd60e51b815260040161053190611c73565b600755565b5f546001600160a01b03163314610cb85760405162461bcd60e51b815260040161053190611c73565b6001600160a01b038116610d1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610531565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6004545f906001600160a01b0316336001600160a01b031614610d97575f5ffd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff9190611d1d565b6004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e55573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e799190611cd7565b9392505050565b6001600160a01b038316610ee25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610531565b6001600160a01b038216610f435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610531565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610531565b6001600160a01b0382166110695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610531565b5f81116110ca5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610531565b600d545f90600160a01b900460ff16611161576001600160a01b0383165f9081526003602052604090205460ff168061111a57506001600160a01b0384165f9081526003602052604090205460ff165b61115c5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610531565b611466565b5f546001600160a01b0385811691161480159061118b57505f546001600160a01b03848116911614155b156113dd57600c546001600160a01b0385811691161480156111bb5750600b546001600160a01b03848116911614155b156112af576007548211156112125760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617820627579206c696d69742e0000000000006044820152606401610531565b60095482611234856001600160a01b03165f9081526001602052604090205490565b61123e9190611d34565b111561128c5760405162461bcd60e51b815260206004820152601d60248201527f4578636565647320746865206d61782077616c6c6574206c696d69742e0000006044820152606401610531565b6112ac60646112a66005548561156390919063ffffffff16565b906115e1565b90505b600c546001600160a01b0384811691161480156112da5750600d546001600160a01b03858116911614155b1561134e576007548211156113315760405162461bcd60e51b815260206004820152601b60248201527f4578636565647320746865206d61782073656c6c206c696d69742e00000000006044820152606401610531565b61134b60646112a66006548561156390919063ffffffff16565b90505b600d546001600160a01b0381165f9081526001602052604090205490600160a81b900460ff1615801561138e5750600c546001600160a01b038581169116145b801561139b5750600a5481115b156113db576113bd6113b8846113b384600854611622565b611622565b611636565b600d546001600160a01b03163180156113d9576113d98161179f565b505b505b801561146657600d546001600160a01b03165f908152600160205260409020546114079082611836565b600d80546001600160a01b039081165f90815260016020908152604091829020949094559154915184815291811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b0384165f908152600160205260409020546114889083611894565b6001600160a01b0385165f908152600160205260409020556114cb6114ad8383611894565b6001600160a01b0385165f9081526001602052604090205490611836565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115148585611894565b60405190815260200160405180910390a350505050565b5f818484111561154e5760405162461bcd60e51b81526004016105319190611901565b505f61155a8486611d47565b95945050505050565b5f825f0361157257505f6104c5565b5f61157d8385611c5c565b90508261158a8583611d5a565b14610e795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610531565b5f610e7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118d5565b5f8183116116305782610e79565b50919050565b600d805460ff60a81b1916600160a81b1790556040805160028082526060820183525f926020830190803683375050600d5482519293506001600160a01b0316918391505f9061168857611688611ca8565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117039190611cbc565b8160018151811061171657611716611ca8565b6001600160a01b039283166020918202929092010152600b54600d5460405163791ac94760e01b81529183169263791ac947926117619287925f928892909116904290600401611d79565b5f604051808303815f87803b158015611778575f5ffd5b505af115801561178a573d5f5f3e3d5ffd5b5050600d805460ff60a81b1916905550505050565b6004546040515f916001600160a01b03169083908381818185875af1925050503d805f81146117e9576040519150601f19603f3d011682016040523d82523d5f602084013e6117ee565b606091505b50509050806118325760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610531565b5050565b5f806118428385611d34565b905083811015610e795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610531565b5f610e7983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152b565b5f81836118f55760405162461bcd60e51b81526004016105319190611901565b505f61155a8486611d5a565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461194a575f5ffd5b50565b803561195881611936565b919050565b5f5f6040838503121561196e575f5ffd5b823561197981611936565b946020939093013593505050565b5f5f60408385031215611998575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156119b9575f5ffd5b83356119c481611936565b925060208401356119d481611936565b929592945050506040919091013590565b5f602082840312156119f5575f5ffd5b8135610e7981611936565b634e487b7160e01b5f52604160045260245ffd5b801515811461194a575f5ffd5b803561195881611a14565b5f5f60408385031215611a3d575f5ffd5b823567ffffffffffffffff811115611a53575f5ffd5b8301601f81018513611a63575f5ffd5b803567ffffffffffffffff811115611a7d57611a7d611a00565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611aaa57611aaa611a00565b604052918252602081840181019290810188841115611ac7575f5ffd5b6020850194505b83851015611aed57611adf8561194d565b815260209485019401611ace565b509450611b009250505060208401611a21565b90509250929050565b5f5f60408385031215611b1a575f5ffd5b8235611b2581611936565b91506020830135611b3581611936565b809150509250929050565b5f60208284031215611b50575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611ba657808504811115611b8a57611b8a611b57565b6001841615611b9857908102905b60019390931c928002611b6f565b935093915050565b5f82611bbc575060016104c5565b81611bc857505f6104c5565b8160018114611bde5760028114611be857611c04565b60019150506104c5565b60ff841115611bf957611bf9611b57565b50506001821b6104c5565b5060208310610133831016604e8410600b8410161715611c27575081810a6104c5565b611c335f198484611b6b565b805f1904821115611c4657611c46611b57565b029392505050565b5f610e7960ff841683611bae565b80820281158282048414176104c5576104c5611b57565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ccc575f5ffd5b8151610e7981611936565b5f60208284031215611ce7575f5ffd5b8151610e7981611a14565b5f5f5f60608486031215611d04575f5ffd5b5050815160208301516040909301519094929350919050565b5f60208284031215611d2d575f5ffd5b5051919050565b808201808211156104c5576104c5611b57565b818103818111156104c5576104c5611b57565b5f82611d7457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dc95783516001600160a01b0316835260209384019390920191600101611da2565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205e724ab7fd73a93914da4c4da5a0781b04750c9c6c438a6dad1b80c95b5e585e64736f6c634300081c0033

Deployed Bytecode Sourcemap

3864:8148:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5378:85;;;;;;;;;;-1:-1:-1;5450:5:0;;;;;;;;;;;;-1:-1:-1;;;5450:5:0;;;;5378:85;;;;;;;:::i;:::-;;;;;;;;6217:161;;;;;;;;;;-1:-1:-1;6217:161:0;;;;;:::i;:::-;;:::i;:::-;;;1249:14:1;;1242:22;1224:41;;1212:2;1197:18;6217:161:0;1084:187:1;11154:345:0;;;;;;;;;;-1:-1:-1;11154:345:0;;;;;:::i;:::-;;:::i;:::-;;5661:95;;;;;;;;;;;;;:::i;:::-;;;1773:25:1;;;1761:2;1746:18;5661:95:0;1627:177:1;11507:176:0;;;;;;;;;;;;;:::i;6386:313::-;;;;;;;;;;-1:-1:-1;6386:313:0;;;;;:::i;:::-;;:::i;5568:85::-;;;;;;;;;;-1:-1:-1;5568:85:0;;4280:2;2464:36:1;;2452:2;2437:18;5568:85:0;2322:184:1;4076:41:0;;;;;;;;;;-1:-1:-1;4076:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4740:28;;;;;;;;;;-1:-1:-1;4740:28:0;;;;-1:-1:-1;;;;;4740:28:0;;;;;;-1:-1:-1;;;;;2927:32:1;;;2909:51;;2897:2;2882:18;4740:28:0;2763:203:1;9968:204:0;;;;;;;;;;-1:-1:-1;9968:204:0;;;;;:::i;:::-;;:::i;5764:119::-;;;;;;;;;;-1:-1:-1;5764:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5857:18:0;5830:7;5857:18;;;:9;:18;;;;;;;5764:119;2689:150;;;;;;;;;;;;;:::i;9760:200::-;;;;;;;;;;;;;:::i;4573:45::-;;;;;;;;;;;;;;;;10280:866;;;:::i;2475:79::-;;;;;;;;;;-1:-1:-1;2513:7:0;2540:6;-1:-1:-1;;;;;2540:6:0;2475:79;;5471:89;;;;;;;;;;-1:-1:-1;5545:7:0;;;;;;;;;;;;-1:-1:-1;;;5545:7:0;;;;5471:89;;5891:167;;;;;;;;;;-1:-1:-1;5891:167:0;;;;;:::i;:::-;;:::i;4625:53::-;;;;;;;;;;;;;;;;4474:42;;;;;;;;;;;;;;;;4523:43;;;;;;;;;;;;;;;;6066:143;;;;;;;;;;-1:-1:-1;6066:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6174:18:0;;;6147:7;6174:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6066:143;10180:92;;;;;;;;;;-1:-1:-1;10180:92:0;;;;;:::i;:::-;;:::i;2847:246::-;;;;;;;;;;-1:-1:-1;2847:246:0;;;;;:::i;:::-;;:::i;11691:281::-;;;;;;;;;;-1:-1:-1;11691:281:0;;;;;:::i;:::-;;:::i;6217:161::-;6292:4;6309:39;310:10;6332:7;6341:6;6309:8;:39::i;:::-;-1:-1:-1;6366:4:0;6217:161;;;;;:::o;11154:345::-;11284:10;;-1:-1:-1;;;;;11284:10:0;310;-1:-1:-1;;;;;11268:26:0;;11260:35;;;;;;11327:7;;11314:9;:20;;11306:55;;;;-1:-1:-1;;;11306:55:0;;5397:2:1;11306:55:0;;;5379:21:1;5436:2;5416:18;;;5409:30;-1:-1:-1;;;5455:18:1;;;5448:52;5517:18;;11306:55:0;;;;;;;;;11394:8;;11380:10;:22;;11372:57;;;;-1:-1:-1;;;11372:57:0;;5397:2:1;11372:57:0;;;5379:21:1;5436:2;5416:18;;;5409:30;-1:-1:-1;;;5455:18:1;;;5448:52;5517:18;;11372:57:0;5195:346:1;11372:57:0;11440:7;:19;;;;11470:8;:21;11154:345::o;5661:95::-;5714:7;4340:13;4280:2;4340;:13;:::i;:::-;4324:29;;:13;:29;:::i;:::-;5734:14;;5661:95;:::o;11507:176::-;11594:10;;11546:11;;-1:-1:-1;;;;;11594:10:0;310;-1:-1:-1;;;;;11578:26:0;;11570:35;;;;;;11628:10;;11651:11;;11628:47;;-1:-1:-1;;;;;11628:10:0;;;;11651:11;;;:19;;11628:47;;;;11651:19;11628:10;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11616:59:0;;11507:176;-1:-1:-1;;11507:176:0:o;6386:313::-;6484:4;6501:36;6511:6;6519:9;6530:6;6501:9;:36::i;:::-;6548:121;6557:6;310:10;6579:89;6617:6;6579:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6579:19:0;;;;;;:11;:19;;;;;;;;310:10;6579:33;;;;;;;;;;:37;:89::i;:::-;6548:8;:121::i;:::-;-1:-1:-1;6687:4:0;6386:313;;;;;:::o;9968:204::-;2602:6;;-1:-1:-1;;;;;2602:6:0;310:10;2602:22;2594:67;;;;-1:-1:-1;;;2594:67:0;;;;;;;:::i;:::-;10068:6:::1;10063:102;10084:9;:16;10080:1;:20;10063:102;;;10147:6;10122:8;:22;10131:9;10141:1;10131:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10122:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10122:22:0;:31;;-1:-1:-1;;10122:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10102:3:0::1;10063:102;;;;9968:204:::0;;:::o;2689:150::-;2602:6;;-1:-1:-1;;;;;2602:6:0;310:10;2602:22;2594:67;;;;-1:-1:-1;;;2594:67:0;;;;;;;:::i;:::-;2798:1:::1;2782:6:::0;;2761:40:::1;::::0;-1:-1:-1;;;;;2782:6:0;;::::1;::::0;2761:40:::1;::::0;2798:1;;2761:40:::1;2829:1;2812:19:::0;;-1:-1:-1;;;;;;2812:19:0::1;::::0;;2689:150::o;9760:200::-;2602:6;;-1:-1:-1;;;;;2602:6:0;310:10;2602:22;2594:67;;;;-1:-1:-1;;;2594:67:0;;;;;;;:::i;:::-;4340:13:::1;4280:2;4340;:13;:::i;:::-;4324:29;::::0;:13:::1;:29;:::i;:::-;9814:7;:17:::0;4340:13:::1;4280:2;4340;:13;:::i;:::-;4324:29;::::0;:13:::1;:29;:::i;:::-;9842:10;:20:::0;9878:27:::1;4340:13;4280:2;4340;:13;:::i;:::-;4324:29;::::0;:13:::1;:29;:::i;:::-;9878:27;::::0;1773:25:1;;;1761:2;1746:18;9878:27:0::1;;;;;;;9921:31;4340:13;4280:2;4340;:13;:::i;:::-;4324:29;::::0;:13:::1;:29;:::i;:::-;9921:31;::::0;1773:25:1;;;1761:2;1746:18;9921:31:0::1;;;;;;;9760:200::o:0;10280:866::-;2602:6;;-1:-1:-1;;;;;2602:6:0;310:10;2602:22;2594:67;;;;-1:-1:-1;;;2594:67:0;;;;;;;:::i;:::-;10352:11:::1;::::0;-1:-1:-1;;;10352:11:0;::::1;;;10351:12;10343:47;;;::::0;-1:-1:-1;;;10343:47:0;;8188:2:1;10343:47:0::1;::::0;::::1;8170:21:1::0;8227:2;8207:18;;;8200:30;8266:25;8246:18;;;8239:53;8309:18;;10343:47:0::1;7986:347:1::0;10343:47:0::1;10403:53;310:10:::0;10435:11:::1;::::0;-1:-1:-1;;;;;10435:11:0::1;4340:13;4280:2;4340;:13;:::i;:::-;4324:29;::::0;:13:::1;:29;:::i;10403:53::-;10467:70;310:10:::0;10500:11:::1;::::0;-1:-1:-1;;;;;10500:11:0::1;10513:23;310:10:::0;10523:12:::1;230:98:::0;10513:23:::1;10467:9;:70::i;:::-;10550:15;:80:::0;;-1:-1:-1;;;;;;10550:80:0::1;10587:42;10550:80:::0;;::::1;::::0;;;10675:25:::1;::::0;;-1:-1:-1;;;10675:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;10587:42;10675:25:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10713:11;::::0;10726:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10726:22:0;;;;-1:-1:-1;;;;;10657:55:0;;::::1;::::0;::::1;::::0;10713:11;::::1;::::0;10726:15:::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:22:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10657:92;::::0;-1:-1:-1;;;;;;10657:92:0::1;::::0;;;;;;-1:-1:-1;;;;;8786:32:1;;;10657:92:0::1;::::0;::::1;8768:51:1::0;8855:32;;8835:18;;;8828:60;8741:18;;10657:92:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10641:13;:108:::0;;-1:-1:-1;;;;;;10641:108:0::1;-1:-1:-1::0;;;;;10641:108:0;;::::1;::::0;;::::1;::::0;;;10798:15:::1;::::0;10760:71:::1;::::0;-1:-1:-1;;;10760:71:0;;10798:15;::::1;10760:71;::::0;::::1;9073:51:1::0;-1:-1:-1;;9140:18:1;;;9133:34;10641:108:0;10760:29:::1;::::0;9046:18:1;;10760:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10851:11:0::1;::::0;10872:15:::1;::::0;10842:56:::1;::::0;-1:-1:-1;;;;;10851:11:0;;::::1;::::0;10872:15:::1;4340:13;4280:2;4340;:13;:::i;10842:56::-;10909:15;::::0;10973:11:::1;::::0;-1:-1:-1;;;;;10909:15:0;;::::1;::::0;:31:::1;::::0;10948:9:::1;::::0;10973:11:::1;10999:22;10973:11:::0;-1:-1:-1;;;;;5857:18:0;5830:7;5857:18;;;:9;:18;;;;;;;5764:119;10999:22:::1;11068:10;::::0;;10909:200:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10909:200:0;;;-1:-1:-1;;;;;9757:32:1;;;10909:200:0;;::::1;9739:51:1::0;;;;9806:18;;;9799:34;;;;11036:1:0::1;9849:18:1::0;;;9842:34;;;9892:18;;;9885:34;11068:10:0;::::1;9935:19:1::0;;;9928:61;11093:15:0::1;10005:19:1::0;;;9998:35;9711:19;;10909:200:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11120:11:0::1;:18:::0;;-1:-1:-1;;;;11120:18:0::1;-1:-1:-1::0;;;11120:18:0::1;::::0;;-1:-1:-1;10280:866:0:o;5891:167::-;5969:4;5986:42;310:10;6010:9;6021:6;5986:9;:42::i;10180:92::-;2602:6;;-1:-1:-1;;;;;2602:6:0;310:10;2602:22;2594:67;;;;-1:-1:-1;;;2594:67:0;;;;;;;:::i;:::-;10248:7:::1;:16:::0;10180:92::o;2847:246::-;2602:6;;-1:-1:-1;;;;;2602:6:0;310:10;2602:22;2594:67;;;;-1:-1:-1;;;2594:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2938:22:0;::::1;2930:73;;;::::0;-1:-1:-1;;;2930:73:0;;10707:2:1;2930:73:0::1;::::0;::::1;10689:21:1::0;10746:2;10726:18;;;10719:30;10785:34;10765:18;;;10758:62;-1:-1:-1;;;10836:18:1;;;10829:36;10882:19;;2930:73:0::1;10505:402:1::0;2930:73:0::1;3040:6;::::0;;3019:38:::1;::::0;-1:-1:-1;;;;;3019:38:0;;::::1;::::0;3040:6;::::1;::::0;3019:38:::1;::::0;::::1;3068:6;:17:::0;;-1:-1:-1;;;;;;3068:17:0::1;-1:-1:-1::0;;;;;3068:17:0;;;::::1;::::0;;;::::1;::::0;;2847:246::o;11691:281::-;11795:10;;11747:11;;-1:-1:-1;;;;;11795:10:0;310;-1:-1:-1;;;;;11779:26:0;;11771:35;;;;;;11848:39;;-1:-1:-1;;;11848:39:0;;11881:4;11848:39;;;2909:51:1;11817:28:0;;-1:-1:-1;;;;;11848:24:0;;;;;2882:18:1;;11848:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11931:10;;;11907:57;;-1:-1:-1;;;11907:57:0;;-1:-1:-1;;;;;11931:10:0;;;11907:57;;;9073:51:1;;;;9140:18;;;9133:34;;;11817:70:0;;-1:-1:-1;11907:23:0;;;;;;9046:18:1;;11907:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11898:66;11691:281;-1:-1:-1;;;11691:281:0:o;6707:335::-;-1:-1:-1;;;;;6800:19:0;;6792:68;;;;-1:-1:-1;;;6792:68:0;;11636:2:1;6792:68:0;;;11618:21:1;11675:2;11655:18;;;11648:30;11714:34;11694:18;;;11687:62;-1:-1:-1;;;11765:18:1;;;11758:34;11809:19;;6792:68:0;11434:400:1;6792:68:0;-1:-1:-1;;;;;6879:21:0;;6871:68;;;;-1:-1:-1;;;6871:68:0;;12041:2:1;6871:68:0;;;12023:21:1;12080:2;12060:18;;;12053:30;12119:34;12099:18;;;12092:62;-1:-1:-1;;;12170:18:1;;;12163:32;12212:19;;6871:68:0;11839:398:1;6871:68:0;-1:-1:-1;;;;;6950:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7002:32;;1773:25:1;;;7002:32:0;;1746:18:1;7002:32:0;;;;;;;6707:335;;;:::o;7050:2009::-;-1:-1:-1;;;;;7138:18:0;;7130:68;;;;-1:-1:-1;;;7130:68:0;;12444:2:1;7130:68:0;;;12426:21:1;12483:2;12463:18;;;12456:30;12522:34;12502:18;;;12495:62;-1:-1:-1;;;12573:18:1;;;12566:35;12618:19;;7130:68:0;12242:401:1;7130:68:0;-1:-1:-1;;;;;7217:16:0;;7209:64;;;;-1:-1:-1;;;7209:64:0;;12850:2:1;7209:64:0;;;12832:21:1;12889:2;12869:18;;;12862:30;12928:34;12908:18;;;12901:62;-1:-1:-1;;;12979:18:1;;;12972:33;13022:19;;7209:64:0;12648:399:1;7209:64:0;7301:1;7292:6;:10;7284:64;;;;-1:-1:-1;;;7284:64:0;;13254:2:1;7284:64:0;;;13236:21:1;13293:2;13273:18;;;13266:30;13332:34;13312:18;;;13305:62;-1:-1:-1;;;13383:18:1;;;13376:39;13432:19;;7284:64:0;13052:405:1;7284:64:0;7399:11;;7361:17;;-1:-1:-1;;;7399:11:0;;;;7395:1473;;-1:-1:-1;;;;;7436:12:0;;;;;;:8;:12;;;;;;;;;:30;;-1:-1:-1;;;;;;7452:14:0;;;;;;:8;:14;;;;;;;;7436:30;7428:62;;;;-1:-1:-1;;;7428:62:0;;13664:2:1;7428:62:0;;;13646:21:1;13703:2;13683:18;;;13676:30;-1:-1:-1;;;13722:18:1;;;13715:49;13781:18;;7428:62:0;13462:343:1;7428:62:0;7395:1473;;;2513:7;2540:6;-1:-1:-1;;;;;7541:15:0;;;2540:6;;7541:15;;;;:32;;-1:-1:-1;2513:7:0;2540:6;-1:-1:-1;;;;;7560:13:0;;;2540:6;;7560:13;;7541:32;7537:1115;;;7608:13;;-1:-1:-1;;;;;7600:21:0;;;7608:13;;7600:21;:55;;;;-1:-1:-1;7639:15:0;;-1:-1:-1;;;;;7625:30:0;;;7639:15;;7625:30;;7600:55;7596:324;;;7698:7;;7688:6;:17;;7680:56;;;;-1:-1:-1;;;7680:56:0;;14012:2:1;7680:56:0;;;13994:21:1;14051:2;14031:18;;;14024:30;14090:28;14070:18;;;14063:56;14136:18;;7680:56:0;13810:350:1;7680:56:0;7793:10;;7783:6;7767:13;7777:2;-1:-1:-1;;;;;5857:18:0;5830:7;5857:18;;;:9;:18;;;;;;;5764:119;7767:13;:22;;;;:::i;:::-;:36;;7759:78;;;;-1:-1:-1;;;7759:78:0;;14497:2:1;7759:78:0;;;14479:21:1;14536:2;14516:18;;;14509:30;14575:31;14555:18;;;14548:59;14624:18;;7759:78:0;14295:353:1;7759:78:0;7872:28;7896:3;7872:19;7883:7;;7872:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;7860:40;;7596:324;7949:13;;-1:-1:-1;;;;;7943:19:0;;;7949:13;;7943:19;:42;;;;-1:-1:-1;7974:11:0;;-1:-1:-1;;;;;7966:19:0;;;7974:11;;7966:19;;7943:42;7940:211;;;8028:7;;8018:6;:17;;8010:57;;;;-1:-1:-1;;;8010:57:0;;14855:2:1;8010:57:0;;;14837:21:1;14894:2;14874:18;;;14867:30;14933:29;14913:18;;;14906:57;14980:18;;8010:57:0;14653:351:1;8010:57:0;8102:29;8127:3;8102:20;8113:8;;8102:6;:10;;:20;;;;:::i;:29::-;8090:41;;7940:211;8212:11;;-1:-1:-1;;;;;8212:11:0;;8171:28;5857:18;;;:9;:18;;;;;;;-1:-1:-1;;;8248:7:0;;;;8247:8;:31;;;;-1:-1:-1;8265:13:0;;-1:-1:-1;;;;;8259:19:0;;;8265:13;;8259:19;8247:31;:75;;;;;8305:17;;8282:20;:40;8247:75;8243:394;;;8347:66;8364:48;8368:6;8376:35;8380:20;8402:8;;8376:3;:35::i;:::-;8364:3;:48::i;:::-;8347:16;:66::i;:::-;8465:11;;-1:-1:-1;;;;;8465:11:0;:19;8511:22;;8507:111;;8562:32;8575:18;8562:12;:32::i;:::-;8324:313;8243:394;7575:1077;7537:1115;8683:13;;8680:177;;8752:11;;-1:-1:-1;;;;;8752:11:0;8742:22;;;;:9;:22;;;;;;:37;;8769:9;8742:26;:37::i;:::-;8727:11;;;-1:-1:-1;;;;;8727:11:0;;;8717:22;;;;:9;:22;;;;;;;;;:62;;;;8818:11;;8803:38;;1773:25:1;;;8818:11:0;;;;8803:38;;;;;;1746:18:1;8803:38:0;;;;;;;8680:177;-1:-1:-1;;;;;8898:15:0;;;;;;:9;:15;;;;;;:27;;8918:6;8898:19;:27::i;:::-;-1:-1:-1;;;;;8880:15:0;;;;;;:9;:15;;;;;:45;8952:40;8970:21;:6;8981:9;8970:10;:21::i;:::-;-1:-1:-1;;;;;8952:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;8936:13:0;;;;;;;:9;:13;;;;;:56;;;;9010:41;;;9029:21;:6;9040:9;9029:10;:21::i;:::-;9010:41;;1773:25:1;;;1761:2;1746:18;9010:41:0;;;;;;;7119:1940;7050:2009;;;:::o;1367:190::-;1453:7;1489:12;1481:6;;;;1473:29;;;;-1:-1:-1;;;1473:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1513:9:0;1525:5;1529:1;1525;:5;:::i;:::-;1513:17;1367:190;-1:-1:-1;;;;;1367:190:0:o;1565:246::-;1623:7;1647:1;1652;1647:6;1643:47;;-1:-1:-1;1677:1:0;1670:8;;1643:47;1700:9;1712:5;1716:1;1712;:5;:::i;:::-;1700:17;-1:-1:-1;1745:1:0;1736:5;1740:1;1700:17;1736:5;:::i;:::-;:10;1728:56;;;;-1:-1:-1;;;1728:56:0;;15566:2:1;1728:56:0;;;15548:21:1;15605:2;15585:18;;;15578:30;15644:34;15624:18;;;15617:62;-1:-1:-1;;;15695:18:1;;;15688:31;15736:19;;1728:56:0;15364:397:1;1819:132:0;1877:7;1904:39;1908:1;1911;1904:39;;;;;;;;;;;;;;;;;:3;:39::i;9067:98::-;9124:7;9151:1;9149;:3;9148:9;;9156:1;9148:9;;;-1:-1:-1;9154:1:0;9067:98;-1:-1:-1;9067:98:0:o;9173:406::-;5006:7;:14;;-1:-1:-1;;;;5006:14:0;-1:-1:-1;;;5006:14:0;;;9275:16:::1;::::0;;9289:1:::1;9275:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9275:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;9312:11:0::1;::::0;9302:7;;;;-1:-1:-1;;;;;;9312:11:0::1;::::0;9302:7;;-1:-1:-1;9312:11:0::1;::::0;9302:7:::1;;;;:::i;:::-;-1:-1:-1::0;;;;;9302:21:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:21;;;;9344:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9344:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9302:7;;9344:22;;;;;:15;:22:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9334:4;9339:1;9334:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9334:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9377:15:::1;::::0;9519:11:::1;::::0;9377:194:::1;::::0;-1:-1:-1;;;9377:194:0;;:15;;::::1;::::0;:66:::1;::::0;:194:::1;::::0;9458:11;;9377:15:::1;::::0;9500:4;;9519:11;;::::1;::::0;9545:15:::1;::::0;9377:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;5043:7:0;:15;;-1:-1:-1;;;;5043:15:0;;;-1:-1:-1;;;;9173:406:0:o;9587:165::-;9663:10;;:34;;9645:12;;-1:-1:-1;;;;;9663:10:0;;9686:6;;9645:12;9663:34;9645:12;9663:34;9686:6;9663:10;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9644:53;;;9716:7;9708:36;;;;-1:-1:-1;;;9708:36:0;;16932:2:1;9708:36:0;;;16914:21:1;16971:2;16951:18;;;16944:30;-1:-1:-1;;;16990:18:1;;;16983:46;17046:18;;9708:36:0;16730:340:1;9708:36:0;9633:119;9587:165;:::o;1036:179::-;1094:7;;1126:5;1130:1;1126;:5;:::i;:::-;1114:17;;1155:1;1150;:6;;1142:46;;;;-1:-1:-1;;;1142:46:0;;17277:2:1;1142:46:0;;;17259:21:1;17316:2;17296:18;;;17289:30;17355:29;17335:18;;;17328:57;17402:18;;1142:46:0;17075:351:1;1223:136:0;1281:7;1308:43;1312:1;1315;1308:43;;;;;;;;;;;;;;;;;:3;:43::i;1959:189::-;2045:7;2080:12;2073:5;2065:28;;;;-1:-1:-1;;;2065:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2104:9:0;2116:5;2120:1;2116;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:134::-;641:20;;670:31;641:20;670:31;:::i;:::-;573:134;;;:::o;712:367::-;780:6;788;841:2;829:9;820:7;816:23;812:32;809:52;;;857:1;854;847:12;809:52;896:9;883:23;915:31;940:5;915:31;:::i;:::-;965:5;1043:2;1028:18;;;;1015:32;;-1:-1:-1;;;712:367:1:o;1276:346::-;1344:6;1352;1405:2;1393:9;1384:7;1380:23;1376:32;1373:52;;;1421:1;1418;1411:12;1373:52;-1:-1:-1;;1466:23:1;;;1586:2;1571:18;;;1558:32;;-1:-1:-1;1276:346:1:o;1809:508::-;1886:6;1894;1902;1955:2;1943:9;1934:7;1930:23;1926:32;1923:52;;;1971:1;1968;1961:12;1923:52;2010:9;1997:23;2029:31;2054:5;2029:31;:::i;:::-;2079:5;-1:-1:-1;2136:2:1;2121:18;;2108:32;2149:33;2108:32;2149:33;:::i;:::-;1809:508;;2201:7;;-1:-1:-1;;;2281:2:1;2266:18;;;;2253:32;;1809:508::o;2511:247::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2678:9;2665:23;2697:31;2722:5;2697:31;:::i;2971:127::-;3032:10;3027:3;3023:20;3020:1;3013:31;3063:4;3060:1;3053:15;3087:4;3084:1;3077:15;3103:118;3189:5;3182:13;3175:21;3168:5;3165:32;3155:60;;3211:1;3208;3201:12;3226:128;3291:20;;3320:28;3291:20;3320:28;:::i;3359:1207::-;3449:6;3457;3510:2;3498:9;3489:7;3485:23;3481:32;3478:52;;;3526:1;3523;3516:12;3478:52;3566:9;3553:23;3599:18;3591:6;3588:30;3585:50;;;3631:1;3628;3621:12;3585:50;3654:22;;3707:4;3699:13;;3695:27;-1:-1:-1;3685:55:1;;3736:1;3733;3726:12;3685:55;3776:2;3763:16;3802:18;3794:6;3791:30;3788:56;;;3824:18;;:::i;:::-;3870:6;3867:1;3863:14;3906:2;3900:9;3969:2;3965:7;3960:2;3956;3952:11;3948:25;3940:6;3936:38;4040:6;4028:10;4025:22;4004:18;3992:10;3989:34;3986:62;3983:88;;;4051:18;;:::i;:::-;4087:2;4080:22;4137;;;4187:4;4219:11;;;4215:22;;;4137;4175:17;;4249:19;;;4246:39;;;4281:1;4278;4271:12;4246:39;4313:4;4309:2;4305:13;4294:24;;4327:152;4343:6;4338:3;4335:15;4327:152;;;4411:23;4430:3;4411:23;:::i;:::-;4399:36;;4464:4;4360:14;;;;4455;4327:152;;;-1:-1:-1;4498:6:1;-1:-1:-1;4523:37:1;;-1:-1:-1;;;4554:4:1;4539:20;;4523:37;:::i;:::-;4513:47;;3359:1207;;;;;:::o;4571:388::-;4639:6;4647;4700:2;4688:9;4679:7;4675:23;4671:32;4668:52;;;4716:1;4713;4706:12;4668:52;4755:9;4742:23;4774:31;4799:5;4774:31;:::i;:::-;4824:5;-1:-1:-1;4881:2:1;4866:18;;4853:32;4894:33;4853:32;4894:33;:::i;:::-;4946:7;4936:17;;;4571:388;;;;;:::o;4964:226::-;5023:6;5076:2;5064:9;5055:7;5051:23;5047:32;5044:52;;;5092:1;5089;5082:12;5044:52;-1:-1:-1;5137:23:1;;4964:226;-1:-1:-1;4964:226:1:o;5546:127::-;5607:10;5602:3;5598:20;5595:1;5588:31;5638:4;5635:1;5628:15;5662:4;5659:1;5652:15;5678:375;5766:1;5784:5;5798:249;5819:1;5809:8;5806:15;5798:249;;;5869:4;5864:3;5860:14;5854:4;5851:24;5848:50;;;5878:18;;:::i;:::-;5928:1;5918:8;5914:16;5911:49;;;5942:16;;;;5911:49;6025:1;6021:16;;;;;5981:15;;5798:249;;;5678:375;;;;;;:::o;6058:902::-;6107:5;6137:8;6127:80;;-1:-1:-1;6178:1:1;6192:5;;6127:80;6226:4;6216:76;;-1:-1:-1;6263:1:1;6277:5;;6216:76;6308:4;6326:1;6321:59;;;;6394:1;6389:174;;;;6301:262;;6321:59;6351:1;6342:10;;6365:5;;;6389:174;6426:3;6416:8;6413:17;6410:43;;;6433:18;;:::i;:::-;-1:-1:-1;;6489:1:1;6475:16;;6548:5;;6301:262;;6647:2;6637:8;6634:16;6628:3;6622:4;6619:13;6615:36;6609:2;6599:8;6596:16;6591:2;6585:4;6582:12;6578:35;6575:77;6572:203;;;-1:-1:-1;6684:19:1;;;6760:5;;6572:203;6807:42;-1:-1:-1;;6832:8:1;6826:4;6807:42;:::i;:::-;6885:6;6881:1;6877:6;6873:19;6864:7;6861:32;6858:58;;;6896:18;;:::i;:::-;6934:20;;6058:902;-1:-1:-1;;;6058:902:1:o;6965:140::-;7023:5;7052:47;7093:4;7083:8;7079:19;7073:4;7052:47;:::i;7110:168::-;7183:9;;;7214;;7231:15;;;7225:22;;7211:37;7201:71;;7252:18;;:::i;7493:356::-;7695:2;7677:21;;;7714:18;;;7707:30;7773:34;7768:2;7753:18;;7746:62;7840:2;7825:18;;7493:356::o;7854:127::-;7915:10;7910:3;7906:20;7903:1;7896:31;7946:4;7943:1;7936:15;7970:4;7967:1;7960:15;8338:251;8408:6;8461:2;8449:9;8440:7;8436:23;8432:32;8429:52;;;8477:1;8474;8467:12;8429:52;8509:9;8503:16;8528:31;8553:5;8528:31;:::i;9178:245::-;9245:6;9298:2;9286:9;9277:7;9273:23;9269:32;9266:52;;;9314:1;9311;9304:12;9266:52;9346:9;9340:16;9365:28;9387:5;9365:28;:::i;10044:456::-;10132:6;10140;10148;10201:2;10189:9;10180:7;10176:23;10172:32;10169:52;;;10217:1;10214;10207:12;10169:52;-1:-1:-1;;10262:16:1;;10368:2;10353:18;;10347:25;10464:2;10449:18;;;10443:25;10262:16;;10347:25;;-1:-1:-1;10443:25:1;10044:456;-1:-1:-1;10044:456:1:o;10912:230::-;10982:6;11035:2;11023:9;11014:7;11010:23;11006:32;11003:52;;;11051:1;11048;11041:12;11003:52;-1:-1:-1;11096:16:1;;10912:230;-1:-1:-1;10912:230:1:o;14165:125::-;14230:9;;;14251:10;;;14248:36;;;14264:18;;:::i;15009:128::-;15076:9;;;15097:11;;;15094:37;;;15111:18;;:::i;15142:217::-;15182:1;15208;15198:132;;15252:10;15247:3;15243:20;15240:1;15233:31;15287:4;15284:1;15277:15;15315:4;15312:1;15305:15;15198:132;-1:-1:-1;15344:9:1;;15142:217::o;15766:959::-;16028:4;16076:3;16065:9;16061:19;16107:6;16096:9;16089:25;16150:6;16145:2;16134:9;16130:18;16123:34;16193:3;16188:2;16177:9;16173:18;16166:31;16217:6;16252;16246:13;16283:6;16275;16268:22;16321:3;16310:9;16306:19;16299:26;;16360:2;16352:6;16348:15;16334:29;;16381:1;16391:195;16405:6;16402:1;16399:13;16391:195;;;16470:13;;-1:-1:-1;;;;;16466:39:1;16454:52;;16535:2;16561:15;;;;16526:12;;;;16502:1;16420:9;16391:195;;;-1:-1:-1;;;;;;;16642:32:1;;;;16637:2;16622:18;;16615:60;-1:-1:-1;;16706:3:1;16691:19;16684:35;16603:3;15766:959;-1:-1:-1;;;15766:959:1:o

Swarm Source

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