ETH Price: $3,443.39 (+0.03%)
Gas: 2 Gwei

Token

Emerging Assets Group (EAG)
 

Overview

Max Total Supply

12,075,000 EAG

Holders

376 (0.00%)

Market

Price

$0.02 @ 0.000005 ETH (-0.01%)

Onchain Market Cap

$191,634.79

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
25,910.790576908506403134 EAG

Value
$411.21 ( ~0.11948244306809 Eth) [0.2146%]
0x9697364bef639fee1823067fdbb93687a5e35d90
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

EAG is bringing commodity and hard asset trading to the present, and beyond.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EAG

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 12075 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-04
*/

/*

    
                    ███████  █████   ██████  
                    ██      ██   ██ ██       
                    █████   ███████ ██   ███ 
                    ██      ██   ██ ██    ██ 
                    ███████ ██   ██  ██████  

                    Emerging Assets Group

 Revolutionizing the Trading of Commodities and Alternative Hard Assets
                             
-> Website  : https://www.eag.network/
-> Telegram : https://t.me/EAG_Official

*/

// SPDX-License-Identifier:MIT

pragma solidity ^0.8.20;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

interface IREWARD {
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
}

contract EAG is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Emerging Assets Group"; 
    string private _symbol = "EAG"; 
    uint8 private _decimals = 18; 
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public ischargepair;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isDividendExempt;

    uint256 private _totalSupply = 12_075_000 * 10**_decimals;
    uint256 public swapThreshold = 6000 * 10**_decimals;

    address private deployer;

    bool public swapEnabled = true;
    bool public swapByLimit = true;

    IREWARD public rewardDividend;

    IDexSwapRouter public DexRouter;
    address public DexPair;

    bool inSwap;
    
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyGuard {
        require(msg.sender == deployer);
        _;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        deployer = msg.sender;
        
        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        DexPair = IDexSwapFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        DexRouter = _dexRouter;

        ischargepair[address(this)] = true;
        ischargepair[address(0xdead)] = true;
        ischargepair[msg.sender] = true;

        isDividendExempt[DexPair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(0xdead)] = true;
        isDividendExempt[address(DexRouter)] = true;

        isMarketPair[address(DexPair)] = true;

        _allowances[address(this)][address(DexRouter)] = ~uint256(0);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        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);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0) && recipient != address(0) && amount > 0);
        
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !ischargepair[sender] &&
                !ischargepair[recipient]
                ) {
                swapBack(contractTokenBalance);
            }
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            if(!isDividendExempt[sender]){ try rewardDividend.setShare(sender, balanceOf(sender)) {} catch {} }
            if(!isDividendExempt[recipient]){ try rewardDividend.setShare(recipient, balanceOf(recipient)) {} catch {} }

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(ischargepair[sender] || ischargepair[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(3).div(100);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(3).div(100);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapBack(uint contractBalance) internal swapping {

        if(swapByLimit) {
            contractBalance = swapThreshold;
        }

        if(contractBalance == 0) return;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0) {
            try rewardDividend.deposit { value: amountReceived } () {} catch {}
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = DexRouter.WETH();

        _approve(address(this), address(DexRouter), tokenAmount);

        // make the swap
        DexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }
    
    function rescueFunds() external onlyGuard {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success, 'Token payment failed');
    }

    function clearStuckTokens(address _token, address recipient, uint256 _amount) external onlyGuard {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function enableChargePair(address _adr,bool _status) external onlyGuard {
        ischargepair[_adr] = _status;
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyGuard
    {
        if(exempt) {
            rewardDividend.setShare(holder,0);
        }
        else {
            rewardDividend.setShare(holder,balanceOf(holder));
        }
        isDividendExempt[holder] = exempt;
    }

    function setRewardDividend(address _dividend) external onlyGuard {
        rewardDividend = IREWARD(_dividend); 
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount, bool _limited)
        external
        onlyGuard
    {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        swapByLimit = _limited;
    }

}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"DexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableChargePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ischargepair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDividend","outputs":[{"internalType":"contract IREWARD","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dividend","type":"address"}],"name":"setRewardDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapByLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601560809081527f456d657267696e67204173736574732047726f7570000000000000000000000060a0526001906200003e9082620004b1565b5060408051808201909152600381526245414760e81b6020820152600290620000689082620004b1565b506003805460ff191660129081179091556200008690600a62000688565b620000959062b83ff86200069f565b600955600354620000ab9060ff16600a62000688565b620000b9906117706200069f565b600a55600b805461ffff60a01b191661010160a01b179055348015620000dd575f80fd5b50620000e933620003c2565b600b80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa1580156200014d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001739190620006b9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e59190620006b9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000230573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002569190620006b9565b600e80546001600160a01b03199081166001600160a01b03938416178255600d8054909116848416178155305f818152600660209081526040808320805460ff1990811660019081179092557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905533808652838620805483168417905588548a168652600885528386208054831684179055808652838620805483168417905586865283862080548316841790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805483168417905587548a1686528386208054831684179055975489168552600784528285208054909116909117905592825260058152828220935490951681529184528082205f199055600954838352600485528183208190559051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620006e1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200043a57607f821691505b6020821081036200045957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ac575f81815260208120601f850160051c81016020861015620004875750805b601f850160051c820191505b81811015620004a85782815560010162000493565b5050505b505050565b81516001600160401b03811115620004cd57620004cd62000411565b620004e581620004de845462000425565b846200045f565b602080601f8311600181146200051b575f8415620005035750858301515b5f19600386901b1c1916600185901b178555620004a8565b5f85815260208120601f198616915b828110156200054b578886015182559484019460019091019084016200052a565b50858210156200056957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005cd57815f1904821115620005b157620005b162000579565b80851615620005bf57918102915b93841c939080029062000592565b509250929050565b5f82620005e55750600162000682565b81620005f357505f62000682565b81600181146200060c5760028114620006175762000637565b600191505062000682565b60ff8411156200062b576200062b62000579565b50506001821b62000682565b5060208310610133831016604e8410600b84101617156200065c575081810a62000682565b6200066883836200058d565b805f19048211156200067e576200067e62000579565b0290505b92915050565b5f6200069860ff841683620005d5565b9392505050565b808202811582820484141762000682576200068262000579565b5f60208284031215620006ca575f80fd5b81516001600160a01b038116811462000698575f80fd5b611fcc80620006ef5f395ff3fe6080604052600436106101bd575f3560e01c806372460e7f116100f25780639d34a30d11610092578063dd62ed3e11610062578063dd62ed3e14610549578063e6b2603b1461058d578063f2fde38b146105a1578063f708a64f146105c0575f80fd5b80639d34a30d146104cd578063a457c2d7146104ec578063a6d3472a1461050b578063a9059cbb1461052a575f80fd5b80638ca39f5e116100cd5780638ca39f5e1461045f5780638da5cb5b1461047e57806395d89b411461049a57806398ed3bbd146104ae575f80fd5b806372460e7f146103ea578063736ce0d4146104215780637daf4b2b14610440575f80fd5b8063313ce5671161015d5780634355855a116101385780634355855a146103415780636ddd17131461036f57806370a08231146103a0578063715018a6146103d4575f80fd5b8063313ce567146102d357806339509351146102f45780633ecad27114610313575f80fd5b8063095ea7b311610198578063095ea7b3146102535780630d61f8371461027257806318160ddd146102a057806323b872dd146102b4575f80fd5b80630445b667146101c85780630634f438146101f057806306fdde0314610232575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd600a5481565b6040519081526020015b60405180910390f35b3480156101fb575f80fd5b50600b54610222907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101e7565b34801561023d575f80fd5b506102466105df565b6040516101e79190611bb8565b34801561025e575f80fd5b5061022261026d366004611c1c565b61066f565b34801561027d575f80fd5b5061022261028c366004611c46565b60066020525f908152604090205460ff1681565b3480156102ab575f80fd5b506009546101dd565b3480156102bf575f80fd5b506102226102ce366004611c61565b610685565b3480156102de575f80fd5b5060035460405160ff90911681526020016101e7565b3480156102ff575f80fd5b5061022261030e366004611c1c565b6106ee565b34801561031e575f80fd5b5061022261032d366004611c46565b60076020525f908152604090205460ff1681565b34801561034c575f80fd5b5061022261035b366004611c46565b60086020525f908152604090205460ff1681565b34801561037a575f80fd5b50600b546102229074010000000000000000000000000000000000000000900460ff1681565b3480156103ab575f80fd5b506101dd6103ba366004611c46565b6001600160a01b03165f9081526004602052604090205490565b3480156103df575f80fd5b506103e8610723565b005b3480156103f5575f80fd5b50600e54610409906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b34801561042c575f80fd5b50600d54610409906001600160a01b031681565b34801561044b575f80fd5b506103e861045a366004611cb3565b6107a6565b34801561046a575f80fd5b50600c54610409906001600160a01b031681565b348015610489575f80fd5b505f546001600160a01b0316610409565b3480156104a5575f80fd5b50610246610850565b3480156104b9575f80fd5b506103e86104c8366004611cec565b61085f565b3480156104d8575f80fd5b506103e86104e7366004611c61565b6108bd565b3480156104f7575f80fd5b50610222610506366004611c1c565b610a26565b348015610516575f80fd5b506103e8610525366004611c46565b610a73565b348015610535575f80fd5b50610222610544366004611c1c565b610ac3565b348015610554575f80fd5b506101dd610563366004611d1f565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610598575f80fd5b506103e8610acf565b3480156105ac575f80fd5b506103e86105bb366004611c46565b610b97565b3480156105cb575f80fd5b506103e86105da366004611cec565b610ca9565b6060600180546105ee90611d56565b80601f016020809104026020016040519081016040528092919081815260200182805461061a90611d56565b80156106655780601f1061063c57610100808354040283529160200191610665565b820191905f5260205f20905b81548152906001019060200180831161064857829003601f168201915b5050505050905090565b5f61067b338484610e2d565b5060015b92915050565b5f610691848484610fb8565b506106e384336106de85604051806060016040528060288152602001611f4a602891396001600160a01b038a165f908152600560209081526040808320338452909152902054919061139f565b610e2d565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b0387168452909152812054909161067b9185906106de90866113f1565b5f546001600160a01b0316331461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107a45f611469565b565b600b546001600160a01b031633146107bc575f80fd5b600b8054600a939093559015157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9315157401000000000000000000000000000000000000000002939093167fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff90921691909117919091179055565b6060600280546105ee90611d56565b600b546001600160a01b03163314610875575f80fd5b6001600160a01b03919091165f90815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600b546001600160a01b031633146108d3575f80fd5b6040516001600160a01b038381166024830152604482018390525f9190851690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516109779190611da7565b5f604051808303815f865af19150503d805f81146109b0576040519150601f19603f3d011682016040523d82523d5f602084013e6109b5565b606091505b5050905080610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50505050565b5f61067b33846106de85604051806060016040528060258152602001611f7260259139335f9081526005602090815260408083206001600160a01b038d168452909152902054919061139f565b600b546001600160a01b03163314610a89575f80fd5b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b5f6106e3338484610fb8565b600b546001600160a01b03163314610ae5575f80fd5b6040515f90339047908381818185875af1925050503d805f8114610b24576040519150601f19603f3d011682016040523d82523d5f602084013e610b29565b606091505b5050905080610b94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50565b5f546001600160a01b03163314610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610792565b6001600160a01b038116610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610792565b610b9481611469565b600b546001600160a01b03163314610cbf575f80fd5b8015610d4357600c546040517f14b6ca960000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015610d28575f80fd5b505af1158015610d3a573d5f803e3d5ffd5b50505050610de5565b600c546001600160a01b03166314b6ca9683610d73816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610dce575f80fd5b505af1158015610de0573d5f803e3d5ffd5b505050505b6001600160a01b03919091165f90815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001600160a01b038316610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038216610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841615801590610fd957506001600160a01b03831615155b8015610fe457505f82115b610fec575f80fd5b600e5474010000000000000000000000000000000000000000900460ff16156110215761101a8484846114d0565b90506106e7565b305f90815260046020526040902054600a548110801590819061105f5750600e5474010000000000000000000000000000000000000000900460ff16155b801561108357506001600160a01b0386165f9081526007602052604090205460ff16155b80156110a95750600b5474010000000000000000000000000000000000000000900460ff165b80156110cd57506001600160a01b0386165f9081526006602052604090205460ff16155b80156110f157506001600160a01b0385165f9081526006602052604090205460ff16155b156110ff576110ff826115bc565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0389165f9081526004909152919091205461115991869061139f565b6001600160a01b0387165f9081526004602052604081209190915561117e87876116d6565b6111925761118d878787611770565b611194565b845b6001600160a01b0387165f908152600460205260409020549091506111b990826113f1565b6001600160a01b038088165f90815260046020908152604080832094909455918a1681526008909152205460ff1661128957600c546001600160a01b03166314b6ca968861121b816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611276575f80fd5b505af1925050508015611287575060015b505b6001600160a01b0386165f9081526008602052604090205460ff1661134657600c546001600160a01b03166314b6ca96876112d8816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611333575f80fd5b505af1925050508015611344575060015b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161138b91815260200190565b60405180910390a3600193505050506106e7565b5f81848411156113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611def565b95945050505050565b5f806113fd8385611e02565b9050838110156106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610792565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386165f90815260049091529182205461152991849061139f565b6001600160a01b038086165f90815260046020526040808220939093559085168152205461155790836113f1565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115aa9086815260200190565b60405180910390a35060019392505050565b600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600b547501000000000000000000000000000000000000000000900460ff16156116245750600a545b80156116ab574761163482611864565b5f61163f4783611a1f565b905080156116a857600c5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611694575f80fd5b505af1935050505080156116a6575060015b505b50505b50600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6001600160a01b0382165f9081526006602052604081205460ff168061171357506001600160a01b0382165f9081526006602052604090205460ff165b156117205750600161067f565b6001600160a01b0383165f9081526007602052604090205460ff168061175d57506001600160a01b0382165f9081526007602052604090205460ff165b1561176957505f61067f565b505f61067f565b6001600160a01b0383165f90815260076020526040812054819060ff16156117af576117a860646117a2856003611a60565b90611b14565b90506117e2565b6001600160a01b0384165f9081526007602052604090205460ff16156117e2576117df60646117a2856003611a60565b90505b801561185a57305f9081526004602052604090205461180190826113f1565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118519085815260200190565b60405180910390a35b6113e88382611a1f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061189757611897611e15565b6001600160a01b03928316602091820292909201810191909152600d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611907573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192b9190611e42565b8160018151811061193e5761193e611e15565b6001600160a01b039283166020918202929092010152600d546119649130911684610e2d565b600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906119b59085905f90869030904290600401611e9f565b5f604051808303815f87803b1580156119cc575f80fd5b505af11580156119de573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a13929190611eda565b60405180910390a15050565b5f6106e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061139f565b5f825f03611a6f57505f61067f565b5f611a7a8385611efa565b905082611a878583611f11565b146106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610792565b5f6106e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611b8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611f11565b5f5b83811015611bb0578181015183820152602001611b98565b50505f910152565b602081525f8251806020840152611bd6816040850160208701611b96565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6001600160a01b0381168114610b94575f80fd5b5f8060408385031215611c2d575f80fd5b8235611c3881611c08565b946020939093013593505050565b5f60208284031215611c56575f80fd5b81356106e781611c08565b5f805f60608486031215611c73575f80fd5b8335611c7e81611c08565b92506020840135611c8e81611c08565b929592945050506040919091013590565b80358015158114611cae575f80fd5b919050565b5f805f60608486031215611cc5575f80fd5b611cce84611c9f565b925060208401359150611ce360408501611c9f565b90509250925092565b5f8060408385031215611cfd575f80fd5b8235611d0881611c08565b9150611d1660208401611c9f565b90509250929050565b5f8060408385031215611d30575f80fd5b8235611d3b81611c08565b91506020830135611d4b81611c08565b809150509250929050565b600181811c90821680611d6a57607f821691505b602082108103611da1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f8251611db8818460208701611b96565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561067f5761067f611dc2565b8082018082111561067f5761067f611dc2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611e52575f80fd5b81516106e781611c08565b5f8151808452602080850194508084015f5b83811015611e945781516001600160a01b031687529582019590820190600101611e6f565b509495945050505050565b85815284602082015260a060408201525f611ebd60a0830186611e5d565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611ef26040830184611e5d565b949350505050565b808202811582820484141761067f5761067f611dc2565b5f82611f44577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122012c0cccf1f7213e6d3158e22b6d753503c4c4c97d0d1e1db7403c19883fad45464736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c806372460e7f116100f25780639d34a30d11610092578063dd62ed3e11610062578063dd62ed3e14610549578063e6b2603b1461058d578063f2fde38b146105a1578063f708a64f146105c0575f80fd5b80639d34a30d146104cd578063a457c2d7146104ec578063a6d3472a1461050b578063a9059cbb1461052a575f80fd5b80638ca39f5e116100cd5780638ca39f5e1461045f5780638da5cb5b1461047e57806395d89b411461049a57806398ed3bbd146104ae575f80fd5b806372460e7f146103ea578063736ce0d4146104215780637daf4b2b14610440575f80fd5b8063313ce5671161015d5780634355855a116101385780634355855a146103415780636ddd17131461036f57806370a08231146103a0578063715018a6146103d4575f80fd5b8063313ce567146102d357806339509351146102f45780633ecad27114610313575f80fd5b8063095ea7b311610198578063095ea7b3146102535780630d61f8371461027257806318160ddd146102a057806323b872dd146102b4575f80fd5b80630445b667146101c85780630634f438146101f057806306fdde0314610232575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd600a5481565b6040519081526020015b60405180910390f35b3480156101fb575f80fd5b50600b54610222907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101e7565b34801561023d575f80fd5b506102466105df565b6040516101e79190611bb8565b34801561025e575f80fd5b5061022261026d366004611c1c565b61066f565b34801561027d575f80fd5b5061022261028c366004611c46565b60066020525f908152604090205460ff1681565b3480156102ab575f80fd5b506009546101dd565b3480156102bf575f80fd5b506102226102ce366004611c61565b610685565b3480156102de575f80fd5b5060035460405160ff90911681526020016101e7565b3480156102ff575f80fd5b5061022261030e366004611c1c565b6106ee565b34801561031e575f80fd5b5061022261032d366004611c46565b60076020525f908152604090205460ff1681565b34801561034c575f80fd5b5061022261035b366004611c46565b60086020525f908152604090205460ff1681565b34801561037a575f80fd5b50600b546102229074010000000000000000000000000000000000000000900460ff1681565b3480156103ab575f80fd5b506101dd6103ba366004611c46565b6001600160a01b03165f9081526004602052604090205490565b3480156103df575f80fd5b506103e8610723565b005b3480156103f5575f80fd5b50600e54610409906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b34801561042c575f80fd5b50600d54610409906001600160a01b031681565b34801561044b575f80fd5b506103e861045a366004611cb3565b6107a6565b34801561046a575f80fd5b50600c54610409906001600160a01b031681565b348015610489575f80fd5b505f546001600160a01b0316610409565b3480156104a5575f80fd5b50610246610850565b3480156104b9575f80fd5b506103e86104c8366004611cec565b61085f565b3480156104d8575f80fd5b506103e86104e7366004611c61565b6108bd565b3480156104f7575f80fd5b50610222610506366004611c1c565b610a26565b348015610516575f80fd5b506103e8610525366004611c46565b610a73565b348015610535575f80fd5b50610222610544366004611c1c565b610ac3565b348015610554575f80fd5b506101dd610563366004611d1f565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610598575f80fd5b506103e8610acf565b3480156105ac575f80fd5b506103e86105bb366004611c46565b610b97565b3480156105cb575f80fd5b506103e86105da366004611cec565b610ca9565b6060600180546105ee90611d56565b80601f016020809104026020016040519081016040528092919081815260200182805461061a90611d56565b80156106655780601f1061063c57610100808354040283529160200191610665565b820191905f5260205f20905b81548152906001019060200180831161064857829003601f168201915b5050505050905090565b5f61067b338484610e2d565b5060015b92915050565b5f610691848484610fb8565b506106e384336106de85604051806060016040528060288152602001611f4a602891396001600160a01b038a165f908152600560209081526040808320338452909152902054919061139f565b610e2d565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b0387168452909152812054909161067b9185906106de90866113f1565b5f546001600160a01b0316331461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107a45f611469565b565b600b546001600160a01b031633146107bc575f80fd5b600b8054600a939093559015157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9315157401000000000000000000000000000000000000000002939093167fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff90921691909117919091179055565b6060600280546105ee90611d56565b600b546001600160a01b03163314610875575f80fd5b6001600160a01b03919091165f90815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600b546001600160a01b031633146108d3575f80fd5b6040516001600160a01b038381166024830152604482018390525f9190851690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516109779190611da7565b5f604051808303815f865af19150503d805f81146109b0576040519150601f19603f3d011682016040523d82523d5f602084013e6109b5565b606091505b5050905080610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50505050565b5f61067b33846106de85604051806060016040528060258152602001611f7260259139335f9081526005602090815260408083206001600160a01b038d168452909152902054919061139f565b600b546001600160a01b03163314610a89575f80fd5b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b5f6106e3338484610fb8565b600b546001600160a01b03163314610ae5575f80fd5b6040515f90339047908381818185875af1925050503d805f8114610b24576040519150601f19603f3d011682016040523d82523d5f602084013e610b29565b606091505b5050905080610b94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50565b5f546001600160a01b03163314610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610792565b6001600160a01b038116610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610792565b610b9481611469565b600b546001600160a01b03163314610cbf575f80fd5b8015610d4357600c546040517f14b6ca960000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015610d28575f80fd5b505af1158015610d3a573d5f803e3d5ffd5b50505050610de5565b600c546001600160a01b03166314b6ca9683610d73816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610dce575f80fd5b505af1158015610de0573d5f803e3d5ffd5b505050505b6001600160a01b03919091165f90815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001600160a01b038316610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038216610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841615801590610fd957506001600160a01b03831615155b8015610fe457505f82115b610fec575f80fd5b600e5474010000000000000000000000000000000000000000900460ff16156110215761101a8484846114d0565b90506106e7565b305f90815260046020526040902054600a548110801590819061105f5750600e5474010000000000000000000000000000000000000000900460ff16155b801561108357506001600160a01b0386165f9081526007602052604090205460ff16155b80156110a95750600b5474010000000000000000000000000000000000000000900460ff165b80156110cd57506001600160a01b0386165f9081526006602052604090205460ff16155b80156110f157506001600160a01b0385165f9081526006602052604090205460ff16155b156110ff576110ff826115bc565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0389165f9081526004909152919091205461115991869061139f565b6001600160a01b0387165f9081526004602052604081209190915561117e87876116d6565b6111925761118d878787611770565b611194565b845b6001600160a01b0387165f908152600460205260409020549091506111b990826113f1565b6001600160a01b038088165f90815260046020908152604080832094909455918a1681526008909152205460ff1661128957600c546001600160a01b03166314b6ca968861121b816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611276575f80fd5b505af1925050508015611287575060015b505b6001600160a01b0386165f9081526008602052604090205460ff1661134657600c546001600160a01b03166314b6ca96876112d8816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611333575f80fd5b505af1925050508015611344575060015b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161138b91815260200190565b60405180910390a3600193505050506106e7565b5f81848411156113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611def565b95945050505050565b5f806113fd8385611e02565b9050838110156106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610792565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386165f90815260049091529182205461152991849061139f565b6001600160a01b038086165f90815260046020526040808220939093559085168152205461155790836113f1565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115aa9086815260200190565b60405180910390a35060019392505050565b600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600b547501000000000000000000000000000000000000000000900460ff16156116245750600a545b80156116ab574761163482611864565b5f61163f4783611a1f565b905080156116a857600c5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611694575f80fd5b505af1935050505080156116a6575060015b505b50505b50600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6001600160a01b0382165f9081526006602052604081205460ff168061171357506001600160a01b0382165f9081526006602052604090205460ff165b156117205750600161067f565b6001600160a01b0383165f9081526007602052604090205460ff168061175d57506001600160a01b0382165f9081526007602052604090205460ff165b1561176957505f61067f565b505f61067f565b6001600160a01b0383165f90815260076020526040812054819060ff16156117af576117a860646117a2856003611a60565b90611b14565b90506117e2565b6001600160a01b0384165f9081526007602052604090205460ff16156117e2576117df60646117a2856003611a60565b90505b801561185a57305f9081526004602052604090205461180190826113f1565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118519085815260200190565b60405180910390a35b6113e88382611a1f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061189757611897611e15565b6001600160a01b03928316602091820292909201810191909152600d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611907573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192b9190611e42565b8160018151811061193e5761193e611e15565b6001600160a01b039283166020918202929092010152600d546119649130911684610e2d565b600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906119b59085905f90869030904290600401611e9f565b5f604051808303815f87803b1580156119cc575f80fd5b505af11580156119de573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a13929190611eda565b60405180910390a15050565b5f6106e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061139f565b5f825f03611a6f57505f61067f565b5f611a7a8385611efa565b905082611a878583611f11565b146106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610792565b5f6106e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611b8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611f11565b5f5b83811015611bb0578181015183820152602001611b98565b50505f910152565b602081525f8251806020840152611bd6816040850160208701611b96565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6001600160a01b0381168114610b94575f80fd5b5f8060408385031215611c2d575f80fd5b8235611c3881611c08565b946020939093013593505050565b5f60208284031215611c56575f80fd5b81356106e781611c08565b5f805f60608486031215611c73575f80fd5b8335611c7e81611c08565b92506020840135611c8e81611c08565b929592945050506040919091013590565b80358015158114611cae575f80fd5b919050565b5f805f60608486031215611cc5575f80fd5b611cce84611c9f565b925060208401359150611ce360408501611c9f565b90509250925092565b5f8060408385031215611cfd575f80fd5b8235611d0881611c08565b9150611d1660208401611c9f565b90509250929050565b5f8060408385031215611d30575f80fd5b8235611d3b81611c08565b91506020830135611d4b81611c08565b809150509250929050565b600181811c90821680611d6a57607f821691505b602082108103611da1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f8251611db8818460208701611b96565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561067f5761067f611dc2565b8082018082111561067f5761067f611dc2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611e52575f80fd5b81516106e781611c08565b5f8151808452602080850194508084015f5b83811015611e945781516001600160a01b031687529582019590820190600101611e6f565b509495945050505050565b85815284602082015260a060408201525f611ebd60a0830186611e5d565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611ef26040830184611e5d565b949350505050565b808202811582820484141761067f5761067f611dc2565b5f82611f44577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122012c0cccf1f7213e6d3158e22b6d753503c4c4c97d0d1e1db7403c19883fad45464736f6c63430008150033

Deployed Bytecode Sourcemap

3696:9695:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4264:51;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4264:51:0;;;;;;;;4394:30;;;;;;;;;;-1:-1:-1;4394:30:0;;;;;;;;;;;;;;361:14:1;;354:22;336:41;;324:2;309:18;4394:30:0;196:187:1;5831:83:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7001:161::-;;;;;;;;;;-1:-1:-1;7001:161:0;;;;;:::i;:::-;;:::i;4038:45::-;;;;;;;;;;-1:-1:-1;4038:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6108:100;;;;;;;;;;-1:-1:-1;6188:12:0;;6108:100;;7775:313;;;;;;;;;;-1:-1:-1;7775:313:0;;;;;:::i;:::-;;:::i;6017:83::-;;;;;;;;;;-1:-1:-1;6083:9:0;;6017:83;;6083:9;;;;2437:36:1;;2425:2;2410:18;6017:83:0;2295:184:1;6498:218:0;;;;;;;;;;-1:-1:-1;6498:218:0;;;;;:::i;:::-;;:::i;4090:45::-;;;;;;;;;;-1:-1:-1;4090:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4142:49;;;;;;;;;;-1:-1:-1;4142:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4357:30;;;;;;;;;;-1:-1:-1;4357:30:0;;;;;;;;;;;6216:123;;;;;;;;;;-1:-1:-1;6216:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;6308:18:0;6282:7;6308:18;;;:9;:18;;;;;;;6216:123;2464:94;;;;;;;;;;;;;:::i;:::-;;4509:22;;;;;;;;;;-1:-1:-1;4509:22:0;;;;-1:-1:-1;;;;;4509:22:0;;;;;;-1:-1:-1;;;;;2648:55:1;;;2630:74;;2618:2;2603:18;4509:22:0;2484:226:1;4471:31:0;;;;;;;;;;-1:-1:-1;4471:31:0;;;;-1:-1:-1;;;;;4471:31:0;;;13160:226;;;;;;;;;;-1:-1:-1;13160:226:0;;;;;:::i;:::-;;:::i;4433:29::-;;;;;;;;;;-1:-1:-1;4433:29:0;;;;-1:-1:-1;;;;;4433:29:0;;;2155:87;;;;;;;;;;-1:-1:-1;2201:7:0;2228:6;-1:-1:-1;;;;;2228:6:0;2155:87;;5922;;;;;;;;;;;;;:::i;12573:119::-;;;;;;;;;;-1:-1:-1;12573:119:0;;;;;:::i;:::-;;:::i;12284:281::-;;;;;;;;;;-1:-1:-1;12284:281:0;;;;;:::i;:::-;;:::i;6724:269::-;;;;;;;;;;-1:-1:-1;6724:269:0;;;;;:::i;:::-;;:::i;13032:120::-;;;;;;;;;;-1:-1:-1;13032:120:0;;;;;:::i;:::-;;:::i;7600:167::-;;;;;;;;;;-1:-1:-1;7600:167:0;;;;;:::i;:::-;;:::i;6347:143::-;;;;;;;;;;-1:-1:-1;6347:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6455:18:0;;;6428:7;6455:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6347:143;12088:188;;;;;;;;;;;;;:::i;2566:229::-;;;;;;;;;;-1:-1:-1;2566:229:0;;;;;:::i;:::-;;:::i;12700:324::-;;;;;;;;;;-1:-1:-1;12700:324:0;;;;;:::i;:::-;;:::i;5831:83::-;5868:13;5901:5;5894:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5831:83;:::o;7001:161::-;7076:4;7093:39;802:10;7116:7;7125:6;7093:8;:39::i;:::-;-1:-1:-1;7150:4:0;7001:161;;;;;:::o;7775:313::-;7873:4;7890:36;7900:6;7908:9;7919:6;7890:9;:36::i;:::-;-1:-1:-1;7937:121:0;7946:6;802:10;7968:89;8006:6;7968:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7968:19:0;;;;;;:11;:19;;;;;;;;802:10;7968:33;;;;;;;;;;:37;:89::i;:::-;7937:8;:121::i;:::-;-1:-1:-1;8076:4:0;7775:313;;;;;;:::o;6498:218::-;802:10;6586:4;6635:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6635:34:0;;;;;;;;;;6586:4;;6603:83;;6626:7;;6635:50;;6674:10;6635:38;:50::i;2464:94::-;2201:7;2228:6;-1:-1:-1;;;;;2228:6:0;802:10;2376:23;2368:68;;;;;;;5057:2:1;2368:68:0;;;5039:21:1;;;5076:18;;;5069:30;5135:34;5115:18;;;5108:62;5187:18;;2368:68:0;;;;;;;;;2529:21:::1;2547:1;2529:9;:21::i;:::-;2464:94::o:0;13160:226::-;4713:8;;-1:-1:-1;;;;;4713:8:0;4699:10;:22;4691:31;;;;;;13289:11:::1;:22:::0;;13322:13:::1;:23:::0;;;;13356:22;::::1;;::::0;::::1;::::0;13289;::::1;;::::0;::::1;13356::::0;;;;;;;;;;;;;;;::::1;::::0;;13160:226::o;5922:87::-;5961:13;5994:7;5987:14;;;;;:::i;12573:119::-;4713:8;;-1:-1:-1;;;;;4713:8:0;4699:10;:22;4691:31;;;;;;-1:-1:-1;;;;;12656:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:28;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;12573:119::o;12284:281::-;4713:8;;-1:-1:-1;;;;;4713:8:0;4699:10;:22;4691:31;;;;;;12432:73:::1;::::0;-1:-1:-1;;;;;5408:55:1;;;12432:73:0::1;::::0;::::1;5390:74:1::0;5480:18;;;5473:34;;;12393:12:0::1;::::0;12411:20;;::::1;::::0;5363:18:1;;12432:73:0::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;;;::::0;;12411:95;::::1;::::0;12432:73;12411:95:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12392:114;;;12525:7;12517:40;;;::::0;::::1;::::0;;6012:2:1;12517:40:0::1;::::0;::::1;5994:21:1::0;6051:2;6031:18;;;6024:30;6090:22;6070:18;;;6063:50;6130:18;;12517:40:0::1;5810:344:1::0;12517:40:0::1;12381:184;12284:281:::0;;;:::o;6724:269::-;6817:4;6834:129;802:10;6857:7;6866:96;6905:15;6866:96;;;;;;;;;;;;;;;;;802:10;6866:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6866:34:0;;;;;;;;;;;;:38;:96::i;13032:120::-;4713:8;;-1:-1:-1;;;;;4713:8:0;4699:10;:22;4691:31;;;;;;13108:14:::1;:35:::0;;;::::1;-1:-1:-1::0;;;;;13108:35:0;;;::::1;::::0;;;::::1;::::0;;13032:120::o;7600:167::-;7678:4;7695:42;802:10;7719:9;7730:6;7695:9;:42::i;12088:188::-;4713:8;;-1:-1:-1;;;;;4713:8:0;4699:10;:22;4691:31;;;;;;12159:58:::1;::::0;12142:12:::1;::::0;12167:10:::1;::::0;12191:21:::1;::::0;12142:12;12159:58;12142:12;12159:58;12191:21;12167:10;12159:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12141:76;;;12236:7;12228:40;;;::::0;::::1;::::0;;6012:2:1;12228:40:0::1;::::0;::::1;5994:21:1::0;6051:2;6031:18;;;6024:30;6090:22;6070:18;;;6063:50;6130:18;;12228:40:0::1;5810:344:1::0;12228:40:0::1;12130:146;12088:188::o:0;2566:229::-;2201:7;2228:6;-1:-1:-1;;;;;2228:6:0;802:10;2376:23;2368:68;;;;;;;5057:2:1;2368:68:0;;;5039:21:1;;;5076:18;;;5069:30;5135:34;5115:18;;;5108:62;5187:18;;2368:68:0;4855:356:1;2368:68:0;-1:-1:-1;;;;;2669:22:0;::::1;2647:110;;;::::0;::::1;::::0;;6571:2:1;2647:110:0::1;::::0;::::1;6553:21:1::0;6610:2;6590:18;;;6583:30;6649:34;6629:18;;;6622:62;6720:8;6700:18;;;6693:36;6746:19;;2647:110:0::1;6369:402:1::0;2647:110:0::1;2768:19;2778:8;2768:9;:19::i;12700:324::-:0;4713:8;;-1:-1:-1;;;;;4713:8:0;4699:10;:22;4691:31;;;;;;12814:6:::1;12811:162;;;12837:14;::::0;:33:::1;::::0;;;;-1:-1:-1;;;;;5408:55:1;;;12837:33:0::1;::::0;::::1;5390:74:1::0;12837:14:0::1;5480:18:1::0;;;5473:34;12837:14:0;;::::1;::::0;:23:::1;::::0;5363:18:1;;12837:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12811:162;;;12912:14;::::0;-1:-1:-1;;;;;12912:14:0::1;:23;12936:6:::0;12943:17:::1;12936:6:::0;-1:-1:-1;;;;;6308:18:0;6282:7;6308:18;;;:9;:18;;;;;;;6216:123;12943:17:::1;12912:49;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;5408:55:1;;;12912:49:0::1;::::0;::::1;5390:74:1::0;5480:18;;;5473:34;5363:18;;12912:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12811:162;-1:-1:-1::0;;;;;12983:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;12700:324::o;7170:337::-;-1:-1:-1;;;;;7263:19:0;;7255:68;;;;;;;7288:2:1;7255:68:0;;;7270:21:1;7327:2;7307:18;;;7300:30;7366:34;7346:18;;;7339:62;7437:6;7417:18;;;7410:34;7461:19;;7255:68:0;7086:400:1;7255:68:0;-1:-1:-1;;;;;7342:21:0;;7334:68;;;;;;;7693:2:1;7334:68:0;;;7675:21:1;7732:2;7712:18;;;7705:30;7771:34;7751:18;;;7744:62;7842:4;7822:18;;;7815:32;7864:19;;7334:68:0;7491:398:1;7334:68:0;-1:-1:-1;;;;;7415:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7467:32;;160:25:1;;;7467:32:0;;133:18:1;7467:32:0;;;;;;;7170:337;;;:::o;8096:1438::-;8183:4;-1:-1:-1;;;;;8210:20:0;;;;;;:47;;-1:-1:-1;;;;;;8234:23:0;;;;8210:47;:61;;;;;8270:1;8261:6;:10;8210:61;8202:70;;;;;;8297:6;;;;;;;8293:1232;;;8327:41;8342:6;8350:9;8361:6;8327:14;:41::i;:::-;8320:48;;;;8293:1232;8461:4;8412:28;6308:18;;;:9;:18;;;;;;8537:13;;8513:37;;;;;;;8589:52;;-1:-1:-1;8635:6:0;;;;;;;8634:7;8589:52;:95;;;;-1:-1:-1;;;;;;8664:20:0;;;;;;:12;:20;;;;;;;;8663:21;8589:95;:128;;;;-1:-1:-1;8706:11:0;;;;;;;8589:128;:170;;;;-1:-1:-1;;;;;;8739:20:0;;;;;;:12;:20;;;;;;;;8738:21;8589:170;:215;;;;-1:-1:-1;;;;;;8781:23:0;;;;;;:12;:23;;;;;;;;8780:24;8589:215;8567:322;;;8843:30;8852:20;8843:8;:30::i;:::-;8937:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8937:17:0;;-1:-1:-1;8937:17:0;;;:9;:17;;;;;;;;:53;;8959:6;;8937:21;:53::i;:::-;-1:-1:-1;;;;;8917:17:0;;;;;;:9;:17;;;;;:73;;;;9029:34;8927:6;9053:9;9029:16;:34::i;:::-;:80;;9075:34;9083:6;9091:9;9102:6;9075:7;:34::i;:::-;9029:80;;;9066:6;9029:80;-1:-1:-1;;;;;9149:20:0;;;;;;:9;:20;;;;;;9007:102;;-1:-1:-1;9149:37:0;;9007:102;9149:24;:37::i;:::-;-1:-1:-1;;;;;9126:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;9207:24;;;;;:16;:24;;;;;;;9203:99;;9238:14;;-1:-1:-1;;;;;9238:14:0;:23;9262:6;9270:17;9262:6;-1:-1:-1;;;;;6308:18:0;6282:7;6308:18;;;:9;:18;;;;;;;6216:123;9270:17;9238:50;;;;;;;;;;-1:-1:-1;;;;;5408:55:1;;;9238:50:0;;;5390:74:1;5480:18;;;5473:34;5363:18;;9238:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9234:66;;-1:-1:-1;;;;;9320:27:0;;;;;;:16;:27;;;;;;;;9316:108;;9354:14;;-1:-1:-1;;;;;9354:14:0;:23;9378:9;9389:20;9378:9;-1:-1:-1;;;;;6308:18:0;6282:7;6308:18;;;:9;:18;;;;;;;6216:123;9389:20;9354:56;;;;;;;;;;-1:-1:-1;;;;;5408:55:1;;;9354:56:0;;;5390:74:1;5480:18;;;5473:34;5363:18;;9354:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9350:72;;9462:9;-1:-1:-1;;;;;9445:40:0;9454:6;-1:-1:-1;;;;;9445:40:0;;9473:11;9445:40;;;;160:25:1;;148:2;133:18;;14:177;9445:40:0;;;;;;;;9507:4;9500:11;;;;;;;13754:192;13840:7;13876:12;13868:6;;;;13860:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13900:9:0;13912:5;13916:1;13912;:5;:::i;:::-;13900:17;13754:192;-1:-1:-1;;;;;13754:192:0:o;13421:181::-;13479:7;;13511:5;13515:1;13511;:5;:::i;:::-;13499:17;;13540:1;13535;:6;;13527:46;;;;;;;8548:2:1;13527:46:0;;;8530:21:1;8587:2;8567:18;;;8560:30;8626:29;8606:18;;;8599:57;8673:18;;13527:46:0;8346:351:1;2803:173:0;2859:16;2878:6;;-1:-1:-1;;;;;2895:17:0;;;;;;;;;;2928:40;;2878:6;;;;;;;2928:40;;2859:16;2928:40;2848:128;2803:173;:::o;9542:330::-;9672:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9672:17:0;;9635:4;9672:17;;;:9;:17;;;;;;;:53;;9694:6;;9672:21;:53::i;:::-;-1:-1:-1;;;;;9652:17:0;;;;;;;:9;:17;;;;;;:73;;;;9759:20;;;;;;;:32;;9784:6;9759:24;:32::i;:::-;-1:-1:-1;;;;;9736:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9807:35;;;;;;;;;;9835:6;160:25:1;;148:2;133:18;;14:177;9807:35:0;;;;;;;;-1:-1:-1;9860:4:0;9542:330;;;;;:::o;10916:504::-;4595:6;:13;;;;;;;;10990:11:::1;::::0;;;::::1;4595:13:::0;10990:11:::1;10987:74;;;-1:-1:-1::0;11036:13:0::1;::::0;10987:74:::1;11073:32:::0;;11098:7:::1;11073:32;11142:21;11174:33;11191:15:::0;11174:16:::1;:33::i;:::-;11218:22;11243:41;:21;11269:14:::0;11243:25:::1;:41::i;:::-;11218:66:::0;-1:-1:-1;11300:18:0;;11297:116:::1;;11339:14;;;;;;;;;-1:-1:-1::0;;;;;11339:14:0::1;-1:-1:-1::0;;;;;11339:22:0::1;;11371:14;11339:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;11335:67:::0;::::1;10974:446;;4619:1;-1:-1:-1::0;4631:6:0;:14;;;;;;10916:504::o;9884:359::-;-1:-1:-1;;;;;9988:20:0;;9968:4;9988:20;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;10012:23:0;;;;;;:12;:23;;;;;;;;9988:47;9985:251;;;-1:-1:-1;10059:4:0;10052:11;;9985:251;-1:-1:-1;;;;;10094:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;10118:23:0;;;;;;:12;:23;;;;;;;;10094:47;10090:146;;;-1:-1:-1;10165:5:0;10158:12;;10090:146;-1:-1:-1;10219:5:0;10212:12;;10251:657;-1:-1:-1;;;;;10424:20:0;;10337:7;10424:20;;;:12;:20;;;;;;10337:7;;10424:20;;10421:213;;;10478:22;10496:3;10478:13;:6;10489:1;10478:10;:13::i;:::-;:17;;:22::i;:::-;10466:34;;10421:213;;;-1:-1:-1;;;;;10539:23:0;;;;;;:12;:23;;;;;;;;10536:98;;;10596:22;10614:3;10596:13;:6;10607:1;10596:10;:13::i;:22::-;10584:34;;10536:98;10653:13;;10650:185;;10732:4;10714:24;;;;:9;:24;;;;;;:39;;10743:9;10714:28;:39::i;:::-;10705:4;10687:24;;;;:9;:24;;;;;;;:66;;;;10777:42;;-1:-1:-1;;;;;10777:42:0;;;;;;;10809:9;160:25:1;;148:2;133:18;;14:177;10777:42:0;;;;;;;;10650:185;10858:21;:6;10869:9;10858:10;:21::i;11428:648::-;11578:16;;;11592:1;11578:16;;;;;;;;11554:21;;11578:16;;;;;;;;;;-1:-1:-1;11578:16:0;11554:40;;11623:4;11605;11610:1;11605:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11605:23:0;;;:7;;;;;;;;;;:23;;;;11649:9;;:16;;;;;;;;:9;;;;;:14;;:16;;;;;11605:7;;11649:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11639:4;11644:1;11639:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11639:26:0;;;:7;;;;;;;;;:26;11710:9;;11678:56;;11695:4;;11710:9;11722:11;11678:8;:56::i;:::-;11773:9;;:234;;;;;-1:-1:-1;;;;;11773:9:0;;;;:60;;:234;;11848:11;;11773:9;;11918:4;;11945;;11981:15;;11773:234;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12033:35;12050:11;12063:4;12033:35;;;;;;;:::i;:::-;;;;;;;;11483:593;11428:648;:::o;13610:136::-;13668:7;13695:43;13699:1;13702;13695:43;;;;;;;;;;;;;;;;;:3;:43::i;13954:250::-;14012:7;14036:1;14041;14036:6;14032:47;;-1:-1:-1;14066:1:0;14059:8;;14032:47;14091:9;14103:5;14107:1;14103;:5;:::i;:::-;14091:17;-1:-1:-1;14136:1:0;14127:5;14131:1;14091:17;14127:5;:::i;:::-;:10;14119:56;;;;;;;11426:2:1;14119:56:0;;;11408:21:1;11465:2;11445:18;;;11438:30;11504:34;11484:18;;;11477:62;11575:3;11555:18;;;11548:31;11596:19;;14119:56:0;11224:397:1;14212:132:0;14270:7;14297:39;14301:1;14304;14297:39;;;;;;;;;;;;;;;;;14438:7;14473:12;14466:5;14458:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14497:9:0;14509:5;14513:1;14509;:5;:::i;388:250:1:-;473:1;483:113;497:6;494:1;491:13;483:113;;;573:11;;;567:18;554:11;;;547:39;519:2;512:10;483:113;;;-1:-1:-1;;630:1:1;612:16;;605:27;388:250::o;643:455::-;792:2;781:9;774:21;755:4;824:6;818:13;867:6;862:2;851:9;847:18;840:34;883:79;955:6;950:2;939:9;935:18;930:2;922:6;918:15;883:79;:::i;:::-;1014:2;1002:15;1019:66;998:88;983:104;;;;1089:2;979:113;;643:455;-1:-1:-1;;643:455:1:o;1103:154::-;-1:-1:-1;;;;;1182:5:1;1178:54;1171:5;1168:65;1158:93;;1247:1;1244;1237:12;1262:315;1330:6;1338;1391:2;1379:9;1370:7;1366:23;1362:32;1359:52;;;1407:1;1404;1397:12;1359:52;1446:9;1433:23;1465:31;1490:5;1465:31;:::i;:::-;1515:5;1567:2;1552:18;;;;1539:32;;-1:-1:-1;;;1262:315:1:o;1582:247::-;1641:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;1749:9;1736:23;1768:31;1793:5;1768:31;:::i;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2968:160::-;3033:20;;3089:13;;3082:21;3072:32;;3062:60;;3118:1;3115;3108:12;3062:60;2968:160;;;:::o;3133:316::-;3204:6;3212;3220;3273:2;3261:9;3252:7;3248:23;3244:32;3241:52;;;3289:1;3286;3279:12;3241:52;3312:26;3328:9;3312:26;:::i;:::-;3302:36;;3385:2;3374:9;3370:18;3357:32;3347:42;;3408:35;3439:2;3428:9;3424:18;3408:35;:::i;:::-;3398:45;;3133:316;;;;;:::o;3700:315::-;3765:6;3773;3826:2;3814:9;3805:7;3801:23;3797:32;3794:52;;;3842:1;3839;3832:12;3794:52;3881:9;3868:23;3900:31;3925:5;3900:31;:::i;:::-;3950:5;-1:-1:-1;3974:35:1;4005:2;3990:18;;3974:35;:::i;:::-;3964:45;;3700:315;;;;;:::o;4020:388::-;4088:6;4096;4149:2;4137:9;4128:7;4124:23;4120:32;4117:52;;;4165:1;4162;4155:12;4117:52;4204:9;4191:23;4223:31;4248:5;4223:31;:::i;:::-;4273:5;-1:-1:-1;4330:2:1;4315:18;;4302:32;4343:33;4302:32;4343:33;:::i;:::-;4395:7;4385:17;;;4020:388;;;;;:::o;4413:437::-;4492:1;4488:12;;;;4535;;;4556:61;;4610:4;4602:6;4598:17;4588:27;;4556:61;4663:2;4655:6;4652:14;4632:18;4629:38;4626:218;;4700:77;4697:1;4690:88;4801:4;4798:1;4791:15;4829:4;4826:1;4819:15;4626:218;;4413:437;;;:::o;5518:287::-;5647:3;5685:6;5679:13;5701:66;5760:6;5755:3;5748:4;5740:6;5736:17;5701:66;:::i;:::-;5783:16;;;;;5518:287;-1:-1:-1;;5518:287:1:o;7894:184::-;7946:77;7943:1;7936:88;8043:4;8040:1;8033:15;8067:4;8064:1;8057:15;8083:128;8150:9;;;8171:11;;;8168:37;;;8185:18;;:::i;8216:125::-;8281:9;;;8302:10;;;8299:36;;;8315:18;;:::i;8891:184::-;8943:77;8940:1;8933:88;9040:4;9037:1;9030:15;9064:4;9061:1;9054:15;9080:251;9150:6;9203:2;9191:9;9182:7;9178:23;9174:32;9171:52;;;9219:1;9216;9209:12;9171:52;9251:9;9245:16;9270:31;9295:5;9270:31;:::i;9336:484::-;9389:3;9427:5;9421:12;9454:6;9449:3;9442:19;9480:4;9509:2;9504:3;9500:12;9493:19;;9546:2;9539:5;9535:14;9567:1;9577:218;9591:6;9588:1;9585:13;9577:218;;;9656:13;;-1:-1:-1;;;;;9652:62:1;9640:75;;9735:12;;;;9770:15;;;;9613:1;9606:9;9577:218;;;-1:-1:-1;9811:3:1;;9336:484;-1:-1:-1;;;;;9336:484:1:o;9825:605::-;10124:6;10113:9;10106:25;10167:6;10162:2;10151:9;10147:18;10140:34;10210:3;10205:2;10194:9;10190:18;10183:31;10087:4;10231:57;10283:3;10272:9;10268:19;10260:6;10231:57;:::i;:::-;-1:-1:-1;;;;;10324:55:1;;;;10319:2;10304:18;;10297:83;-1:-1:-1;10411:3:1;10396:19;10389:35;10223:65;9825:605;-1:-1:-1;;;9825:605:1:o;10435:332::-;10642:6;10631:9;10624:25;10685:2;10680;10669:9;10665:18;10658:30;10605:4;10705:56;10757:2;10746:9;10742:18;10734:6;10705:56;:::i;:::-;10697:64;10435:332;-1:-1:-1;;;;10435:332:1:o;10772:168::-;10845:9;;;10876;;10893:15;;;10887:22;;10873:37;10863:71;;10914:18;;:::i;10945:274::-;10985:1;11011;11001:189;;11046:77;11043:1;11036:88;11147:4;11144:1;11137:15;11175:4;11172:1;11165:15;11001:189;-1:-1:-1;11204:9:1;;10945:274::o

Swarm Source

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