ETH Price: $2,391.28 (+2.83%)

Token

Jesus (JESUS)
 

Overview

Max Total Supply

100,000,000 JESUS

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
440,000 JESUS

Value
$0.00
0xbc62638c3b13d891ccb81a51134ff29635681359
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:
Jesus

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-15
*/

/*  t.me/JesusERC
    JesusToken.net
    Twitter.com/JesusTokenERC
    Total tokens:  100,000,000
    Taxes: 12%
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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;
    address private _previousOwner;
    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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

abstract contract IERC20Extented is IERC20 {
    function decimals() external view virtual returns (uint8);
    function name() external view virtual returns (string memory);
    function symbol() external view virtual returns (string memory);
}

contract Jesus is Context, IERC20, IERC20Extented, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Jesus";
    string private constant _symbol = "JESUS";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 100 * 1e6 * 1e9; // 100,000,000

    uint256 private _firstBlock;
    uint256 private _notpogBlocks;
    uint256 public _maxWalletAmount;

    // fees
    uint256 public _liquidityFee = 20; // divided by 1000
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public _marketingFee = 100; // divided by 1000
    uint256 private _previousMarketingFee = _marketingFee;
    
    uint256 private _marketingPercent = 1000;
    

    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tAmount;
    }

    mapping(address => bool) private notpogs;
    address payable private _marketingAddress = payable(0x3897D607BECDa0c1ffd276A25619De3bD24B1f9f);
    address payable private _dev = payable(0xF47dB7D05e87d09A70a6A83f5776D5732f829661);
    
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private _maxTxAmount;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private trdg = true;
    bool private pairSwapped = false;

    event EndedTrdg(bool trdg);
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event FeesUpdated(uint256 _marketingFee, uint256 _liquidityFee);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
        _maxTxAmount = _tTotal; // start off transaction limit at 100% of total supply
        _maxWalletAmount = _tTotal.div(1); // 100%
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;

        _marketingFee = 0;
        _liquidityFee = 0;
    }

    function setNotpogFee() private {
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        
        _marketingFee = 1000;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _marketingFee = _previousMarketingFee;
        _liquidityFee = _previousLiquidityFee;
    }

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

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
            require(tradingOpen);
            require(amount <= _maxTxAmount);

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {//buys

                if (block.number <= _firstBlock.add(_notpogBlocks)) {
                    notpogs[to] = true;
                }             
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");

                if (notpogs[to]) {
                    setNotpogFee();
                    takeFee = true;
                }
            }
            
            if (!inSwap && from != uniswapV2Pair) { //sells, transfers
                require(!notpogs[from] && !notpogs[to]);

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > 100000 * 1e9) {
                    swapAndLiquify(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        restoreAllFee();
    }

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

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              owner(),
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLPamount = _liquidityFee.mul(contractTokenBalance).div(_marketingFee.add(_liquidityFee));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer((amount).div(8).mul(7));
        _dev.transfer((amount).div(8));
    }

    function openTrading(uint256 notpogBlocks) private {
        _firstBlock = block.number;
        _notpogBlocks = notpogBlocks;
        tradingOpen = true;
    }

    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        _transferStandard(sender, recipient, amount);
        restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        fees.tMarketing = amount.mul(_marketingFee).div(1000);
        fees.tLiquidity = amount.mul(_liquidityFee).div(1000);
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity));
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount > _tTotal.div(10000), "Amount must be greater than 0.01% of supply");
        require(maxTxAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxTxAmount = maxTxAmount;
        emit MaxTxAmountUpdated(_maxTxAmount);
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setTaxes(uint256 marketingFee, uint256 liquidityFee) external onlyOwner() {
        uint256 totalFee = marketingFee.add(liquidityFee);
        require(totalFee.div(10) < 50, "Sum of fees must be less than 50");

        _marketingFee = marketingFee;
        _liquidityFee = liquidityFee;
        
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        
        uint256 totalETHfees = _marketingFee;
        
        _marketingPercent = (_marketingFee.mul(1000)).div(totalETHfees);
        
        emit FeesUpdated(_marketingFee, _liquidityFee);   
    }

    function endTrdg(uint256 notpogBlocks) external onlyOwner() {
        require(trdg == true, "done");
        trdg = false;
        openTrading(notpogBlocks);
        emit EndedTrdg(trdg);
    }
}

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":"bool","name":"trdg","type":"bool"}],"name":"EndedTrdg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":[{"internalType":"uint256","name":"notpogBlocks","type":"uint256"}],"name":"endTrdg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setTaxes","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"},{"stateMutability":"payable","type":"receive"}]

6080604052601460088190556009556064600a819055600b556103e8600c55600e80546001600160a01b0319908116733897d607becda0c1ffd276a25619de3bd24b1f9f17909155600f805490911673f47db7d05e87d09a70a6a83f5776d5732f8296611790556013805463ffffffff1916620100001790553480156200008557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915562000105308267016345785d8a00006200039f565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016a919062000558565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001de919062000558565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000252919062000558565b601180546001600160a01b0319166001600160a01b0392831690811790915560105460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e0919062000583565b5067016345785d8a000060128190555062000313600167016345785d8a0000620004cb60201b6200098d1790919060201c565b60075533600081815260026020908152604080832067016345785d8a00009081905583546001600160a01b03168452600483528184208054600160ff1991821681179092553086528386208054909116909117905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000622565b6001600160a01b038316620004075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200046a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003fe565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006200051583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200051c60201b60201c565b9392505050565b60008183620005405760405162461bcd60e51b8152600401620003fe9190620005a7565b5060006200054f8486620005ff565b95945050505050565b6000602082840312156200056b57600080fd5b81516001600160a01b03811681146200051557600080fd5b6000602082840312156200059657600080fd5b815180151581146200051557600080fd5b600060208083528351808285015260005b81811015620005d657858101830151858201604001528201620005b8565b81811115620005e9576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200061d57634e487b7160e01b600052601260045260246000fd5b500490565b6119bb80620006326000396000f3fe60806040526004361061012e5760003560e01c80636bc87c3a116100ab578063a9059cbb1161006f578063a9059cbb1461035e578063c647b20e1461037e578063dd62ed3e1461039e578063ec28438a146103e4578063f2fde38b14610404578063f42938901461042457600080fd5b80636bc87c3a146102b05780636c0a24eb146102c657806370a08231146102dc5780638da5cb5b1461031257806395d89b411461033057600080fd5b806327a14fc2116100f257806327a14fc214610205578063313ce5671461022757806349bd5a5e1461024357806351bc3c851461027b5780635d12d79d1461029057600080fd5b806306fdde031461013a578063095ea7b31461017a57806318160ddd146101aa57806322976e0d146101cf57806323b872dd146101e557600080fd5b3661013557005b600080fd5b34801561014657600080fd5b506040805180820190915260058152644a6573757360d81b60208201525b6040516101719190611618565b60405180910390f35b34801561018657600080fd5b5061019a610195366004611682565b610439565b6040519015158152602001610171565b3480156101b657600080fd5b5067016345785d8a00005b604051908152602001610171565b3480156101db57600080fd5b506101c1600a5481565b3480156101f157600080fd5b5061019a6102003660046116ae565b610450565b34801561021157600080fd5b506102256102203660046116ef565b6104b9565b005b34801561023357600080fd5b5060405160098152602001610171565b34801561024f57600080fd5b50601154610263906001600160a01b031681565b6040516001600160a01b039091168152602001610171565b34801561028757600080fd5b5061022561058d565b34801561029c57600080fd5b506102256102ab3660046116ef565b6105d9565b3480156102bc57600080fd5b506101c160085481565b3480156102d257600080fd5b506101c160075481565b3480156102e857600080fd5b506101c16102f7366004611708565b6001600160a01b031660009081526002602052604090205490565b34801561031e57600080fd5b506000546001600160a01b0316610263565b34801561033c57600080fd5b506040805180820190915260058152644a4553555360d81b6020820152610164565b34801561036a57600080fd5b5061019a610379366004611682565b6106a6565b34801561038a57600080fd5b50610225610399366004611725565b6106b3565b3480156103aa57600080fd5b506101c16103b9366004611747565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103f057600080fd5b506102256103ff3660046116ef565b6107be565b34801561041057600080fd5b5061022561041f366004611708565b6108bb565b34801561043057600080fd5b50610225610953565b60006104463384846109d6565b5060015b92915050565b600061045d848484610afa565b6104af84336104aa8560405180606001604052806028815260200161195e602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610f22565b6109d6565b5060019392505050565b6000546001600160a01b031633146104ec5760405162461bcd60e51b81526004016104e390611780565b60405180910390fd5b6104ff67016345785d8a000060c861098d565b81116105605760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084016104e3565b67016345785d8a00008111156105885760405162461bcd60e51b81526004016104e3906117b5565b600755565b6000546001600160a01b031633146105b75760405162461bcd60e51b81526004016104e390611780565b3060009081526002602052604090205480156105d6576105d681610f5c565b50565b6000546001600160a01b031633146106035760405162461bcd60e51b81526004016104e390611780565b60135462010000900460ff1615156001146106495760405162461bcd60e51b81526004016104e390602080825260049082015263646f6e6560e01b604082015260600190565b6013805443600555600683905562ff00ff191660011790556013546040516201000090910460ff16151581527fbbd2154e443da58493f520fb1a0b04614579664458bbef399ac6a4021c401c17906020015b60405180910390a150565b6000610446338484610afa565b6000546001600160a01b031633146106dd5760405162461bcd60e51b81526004016104e390611780565b60006106e983836110d0565b905060326106f882600a61098d565b106107455760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e20353060448201526064016104e3565b600a8390556008829055600b8390556009829055826107708161076a816103e861112f565b9061098d565b600c55600a546008546040517f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1926107b092908252602082015260400190565b60405180910390a150505050565b6000546001600160a01b031633146107e85760405162461bcd60e51b81526004016104e390611780565b6107fc67016345785d8a000061271061098d565b811161085e5760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b60648201526084016104e3565b67016345785d8a00008111156108865760405162461bcd60e51b81526004016104e3906117b5565b60128190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200161069b565b6000546001600160a01b031633146108e55760405162461bcd60e51b81526004016104e390611780565b6001600160a01b03811661094a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e3565b6105d6816111ae565b6000546001600160a01b0316331461097d5760405162461bcd60e51b81526004016104e390611780565b4780156105d6576105d6816111fe565b60006109cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611292565b9392505050565b6001600160a01b038316610a385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e3565b6001600160a01b038216610a995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b5e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104e3565b6001600160a01b038216610bc05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104e3565b60008111610c225760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104e3565b6001610c366000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610c6557506000546001600160a01b03848116911614155b8015610c7a57506001600160a01b0384163014155b8015610c8f57506001600160a01b0383163014155b15610eb75760135460ff16610ca357600080fd5b601254821115610cb257600080fd5b6011546001600160a01b038581169116148015610cdd57506010546001600160a01b03848116911614155b15610e0757600654600554610cf1916110d0565b4311610d1b576001600160a01b0383166000908152600d60205260409020805460ff191660011790555b600754610d4783610d41866001600160a01b031660009081526002602052604090205490565b906110d0565b1115610dc55760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016104e3565b6001600160a01b0383166000908152600d602052604090205460ff1615610e0757610e03600a8054600b55600880546009556103e890915560009055565b5060015b601354610100900460ff16158015610e2d57506011546001600160a01b03858116911614155b15610eb7576001600160a01b0384166000908152600d602052604090205460ff16158015610e7457506001600160a01b0383166000908152600d602052604090205460ff16155b610e7d57600080fd5b30600090815260026020526040902054655af3107a4000811115610ea457610ea4816112c0565b478015610eb457610eb4476111fe565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610ef657506001600160a01b03831660009081526004602052604090205460ff165b15610eff575060005b610f0b8484848461133b565b610f1c600b54600a55600954600855565b50505050565b60008184841115610f465760405162461bcd60e51b81526004016104e39190611618565b506000610f53848661181b565b95945050505050565b6013805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610fa057610fa0611832565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d9190611848565b8160018151811061103057611030611832565b6001600160a01b03928316602091820292909201015260105461105691309116846109d6565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac9479061108f908590600090869030904290600401611865565b600060405180830381600087803b1580156110a957600080fd5b505af11580156110bd573d6000803e3d6000fd5b50506013805461ff001916905550505050565b6000806110dd83856118d6565b9050838110156109cf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104e3565b60008261113e5750600061044a565b600061114a83856118ee565b905082611157858361190d565b146109cf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104e3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e546001600160a01b03166108fc611223600761121d85600861098d565b9061112f565b6040518115909202916000818181858888f1935050505015801561124b573d6000803e3d6000fd5b50600f546001600160a01b03166108fc61126683600861098d565b6040518115909202916000818181858888f1935050505015801561128e573d6000803e3d6000fd5b5050565b600081836112b35760405162461bcd60e51b81526004016104e39190611618565b506000610f53848661190d565b6013805461ff001916610100179055600854600a546000916112f2916112e5916110d0565b60085461076a908561112f565b9050600061130182600261098d565b9050600061130f8483611353565b90504761131b82610f5c565b600061132f8361076a8661121d4787611353565b90506110bd8482611395565b806113485761134861146a565b610f0b848484611498565b60006109cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f22565b6010546113ad9030906001600160a01b0316846109d6565b6010546001600160a01b031663f305d7198230856000806113d66000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561143e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611463919061192f565b5050505050565b600a5415801561147a5750600854155b1561148157565b600a8054600b556008805460095560009182905555565b6114bc60405180606001604052806000815260200160008152602001600081525090565b6114d76103e861076a600a548561112f90919063ffffffff16565b60208201526008546114f2906103e89061076a90859061112f565b8082526020820151611510919061150a908590611353565b90611353565b6040808301919091526001600160a01b0385166000908152600260205220546115399083611353565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461156e916110d0565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516115b7916115a191906110d0565b30600090815260026020526040902054906110d0565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600060208083528351808285015260005b8181101561164557858101830151858201604001528201611629565b81811115611657576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146105d657600080fd5b6000806040838503121561169557600080fd5b82356116a08161166d565b946020939093013593505050565b6000806000606084860312156116c357600080fd5b83356116ce8161166d565b925060208401356116de8161166d565b929592945050506040919091013590565b60006020828403121561170157600080fd5b5035919050565b60006020828403121561171a57600080fd5b81356109cf8161166d565b6000806040838503121561173857600080fd5b50508035926020909101359150565b6000806040838503121561175a57600080fd5b82356117658161166d565b915060208301356117758161166d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561182d5761182d611805565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561185a57600080fd5b81516109cf8161166d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118b55784516001600160a01b031683529383019391830191600101611890565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118e9576118e9611805565b500190565b600081600019048311821515161561190857611908611805565b500290565b60008261192a57634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561194457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209fae5a60b2d3e4ca65d59de6d21b4908d4b7154e92758c35adfba6fe16be7cc064736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c80636bc87c3a116100ab578063a9059cbb1161006f578063a9059cbb1461035e578063c647b20e1461037e578063dd62ed3e1461039e578063ec28438a146103e4578063f2fde38b14610404578063f42938901461042457600080fd5b80636bc87c3a146102b05780636c0a24eb146102c657806370a08231146102dc5780638da5cb5b1461031257806395d89b411461033057600080fd5b806327a14fc2116100f257806327a14fc214610205578063313ce5671461022757806349bd5a5e1461024357806351bc3c851461027b5780635d12d79d1461029057600080fd5b806306fdde031461013a578063095ea7b31461017a57806318160ddd146101aa57806322976e0d146101cf57806323b872dd146101e557600080fd5b3661013557005b600080fd5b34801561014657600080fd5b506040805180820190915260058152644a6573757360d81b60208201525b6040516101719190611618565b60405180910390f35b34801561018657600080fd5b5061019a610195366004611682565b610439565b6040519015158152602001610171565b3480156101b657600080fd5b5067016345785d8a00005b604051908152602001610171565b3480156101db57600080fd5b506101c1600a5481565b3480156101f157600080fd5b5061019a6102003660046116ae565b610450565b34801561021157600080fd5b506102256102203660046116ef565b6104b9565b005b34801561023357600080fd5b5060405160098152602001610171565b34801561024f57600080fd5b50601154610263906001600160a01b031681565b6040516001600160a01b039091168152602001610171565b34801561028757600080fd5b5061022561058d565b34801561029c57600080fd5b506102256102ab3660046116ef565b6105d9565b3480156102bc57600080fd5b506101c160085481565b3480156102d257600080fd5b506101c160075481565b3480156102e857600080fd5b506101c16102f7366004611708565b6001600160a01b031660009081526002602052604090205490565b34801561031e57600080fd5b506000546001600160a01b0316610263565b34801561033c57600080fd5b506040805180820190915260058152644a4553555360d81b6020820152610164565b34801561036a57600080fd5b5061019a610379366004611682565b6106a6565b34801561038a57600080fd5b50610225610399366004611725565b6106b3565b3480156103aa57600080fd5b506101c16103b9366004611747565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103f057600080fd5b506102256103ff3660046116ef565b6107be565b34801561041057600080fd5b5061022561041f366004611708565b6108bb565b34801561043057600080fd5b50610225610953565b60006104463384846109d6565b5060015b92915050565b600061045d848484610afa565b6104af84336104aa8560405180606001604052806028815260200161195e602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610f22565b6109d6565b5060019392505050565b6000546001600160a01b031633146104ec5760405162461bcd60e51b81526004016104e390611780565b60405180910390fd5b6104ff67016345785d8a000060c861098d565b81116105605760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084016104e3565b67016345785d8a00008111156105885760405162461bcd60e51b81526004016104e3906117b5565b600755565b6000546001600160a01b031633146105b75760405162461bcd60e51b81526004016104e390611780565b3060009081526002602052604090205480156105d6576105d681610f5c565b50565b6000546001600160a01b031633146106035760405162461bcd60e51b81526004016104e390611780565b60135462010000900460ff1615156001146106495760405162461bcd60e51b81526004016104e390602080825260049082015263646f6e6560e01b604082015260600190565b6013805443600555600683905562ff00ff191660011790556013546040516201000090910460ff16151581527fbbd2154e443da58493f520fb1a0b04614579664458bbef399ac6a4021c401c17906020015b60405180910390a150565b6000610446338484610afa565b6000546001600160a01b031633146106dd5760405162461bcd60e51b81526004016104e390611780565b60006106e983836110d0565b905060326106f882600a61098d565b106107455760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e20353060448201526064016104e3565b600a8390556008829055600b8390556009829055826107708161076a816103e861112f565b9061098d565b600c55600a546008546040517f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1926107b092908252602082015260400190565b60405180910390a150505050565b6000546001600160a01b031633146107e85760405162461bcd60e51b81526004016104e390611780565b6107fc67016345785d8a000061271061098d565b811161085e5760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b60648201526084016104e3565b67016345785d8a00008111156108865760405162461bcd60e51b81526004016104e3906117b5565b60128190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200161069b565b6000546001600160a01b031633146108e55760405162461bcd60e51b81526004016104e390611780565b6001600160a01b03811661094a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e3565b6105d6816111ae565b6000546001600160a01b0316331461097d5760405162461bcd60e51b81526004016104e390611780565b4780156105d6576105d6816111fe565b60006109cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611292565b9392505050565b6001600160a01b038316610a385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e3565b6001600160a01b038216610a995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b5e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104e3565b6001600160a01b038216610bc05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104e3565b60008111610c225760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104e3565b6001610c366000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610c6557506000546001600160a01b03848116911614155b8015610c7a57506001600160a01b0384163014155b8015610c8f57506001600160a01b0383163014155b15610eb75760135460ff16610ca357600080fd5b601254821115610cb257600080fd5b6011546001600160a01b038581169116148015610cdd57506010546001600160a01b03848116911614155b15610e0757600654600554610cf1916110d0565b4311610d1b576001600160a01b0383166000908152600d60205260409020805460ff191660011790555b600754610d4783610d41866001600160a01b031660009081526002602052604090205490565b906110d0565b1115610dc55760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016104e3565b6001600160a01b0383166000908152600d602052604090205460ff1615610e0757610e03600a8054600b55600880546009556103e890915560009055565b5060015b601354610100900460ff16158015610e2d57506011546001600160a01b03858116911614155b15610eb7576001600160a01b0384166000908152600d602052604090205460ff16158015610e7457506001600160a01b0383166000908152600d602052604090205460ff16155b610e7d57600080fd5b30600090815260026020526040902054655af3107a4000811115610ea457610ea4816112c0565b478015610eb457610eb4476111fe565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610ef657506001600160a01b03831660009081526004602052604090205460ff165b15610eff575060005b610f0b8484848461133b565b610f1c600b54600a55600954600855565b50505050565b60008184841115610f465760405162461bcd60e51b81526004016104e39190611618565b506000610f53848661181b565b95945050505050565b6013805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610fa057610fa0611832565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d9190611848565b8160018151811061103057611030611832565b6001600160a01b03928316602091820292909201015260105461105691309116846109d6565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac9479061108f908590600090869030904290600401611865565b600060405180830381600087803b1580156110a957600080fd5b505af11580156110bd573d6000803e3d6000fd5b50506013805461ff001916905550505050565b6000806110dd83856118d6565b9050838110156109cf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104e3565b60008261113e5750600061044a565b600061114a83856118ee565b905082611157858361190d565b146109cf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104e3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e546001600160a01b03166108fc611223600761121d85600861098d565b9061112f565b6040518115909202916000818181858888f1935050505015801561124b573d6000803e3d6000fd5b50600f546001600160a01b03166108fc61126683600861098d565b6040518115909202916000818181858888f1935050505015801561128e573d6000803e3d6000fd5b5050565b600081836112b35760405162461bcd60e51b81526004016104e39190611618565b506000610f53848661190d565b6013805461ff001916610100179055600854600a546000916112f2916112e5916110d0565b60085461076a908561112f565b9050600061130182600261098d565b9050600061130f8483611353565b90504761131b82610f5c565b600061132f8361076a8661121d4787611353565b90506110bd8482611395565b806113485761134861146a565b610f0b848484611498565b60006109cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f22565b6010546113ad9030906001600160a01b0316846109d6565b6010546001600160a01b031663f305d7198230856000806113d66000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561143e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611463919061192f565b5050505050565b600a5415801561147a5750600854155b1561148157565b600a8054600b556008805460095560009182905555565b6114bc60405180606001604052806000815260200160008152602001600081525090565b6114d76103e861076a600a548561112f90919063ffffffff16565b60208201526008546114f2906103e89061076a90859061112f565b8082526020820151611510919061150a908590611353565b90611353565b6040808301919091526001600160a01b0385166000908152600260205220546115399083611353565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461156e916110d0565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516115b7916115a191906110d0565b30600090815260026020526040902054906110d0565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600060208083528351808285015260005b8181101561164557858101830151858201604001528201611629565b81811115611657576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146105d657600080fd5b6000806040838503121561169557600080fd5b82356116a08161166d565b946020939093013593505050565b6000806000606084860312156116c357600080fd5b83356116ce8161166d565b925060208401356116de8161166d565b929592945050506040919091013590565b60006020828403121561170157600080fd5b5035919050565b60006020828403121561171a57600080fd5b81356109cf8161166d565b6000806040838503121561173857600080fd5b50508035926020909101359150565b6000806040838503121561175a57600080fd5b82356117658161166d565b915060208301356117758161166d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561182d5761182d611805565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561185a57600080fd5b81516109cf8161166d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118b55784516001600160a01b031683529383019391830191600101611890565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118e9576118e9611805565b500190565b600081600019048311821515161561190857611908611805565b500290565b60008261192a57634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561194457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209fae5a60b2d3e4ca65d59de6d21b4908d4b7154e92758c35adfba6fe16be7cc064736f6c634300080a0033

Deployed Bytecode Sourcemap

7395:11975:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10009:94;;;;;;;;;;-1:-1:-1;10090:5:0;;;;;;;;;;;;-1:-1:-1;;;10090:5:0;;;;10009:94;;;;;;;:::i;:::-;;;;;;;;10885:163;;;;;;;;;;-1:-1:-1;10885:163:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;10885:163:0;1072:187:1;10319:97:0;;;;;;;;;;-1:-1:-1;7852:15:0;10319:97;;;1410:25:1;;;1398:2;1383:18;10319:97:0;1264:177:1;8133:34:0;;;;;;;;;;;;;;;;11056:312;;;;;;;;;;-1:-1:-1;11056:312:0;;;;;:::i;:::-;;:::i;18203:325::-;;;;;;;;;;-1:-1:-1;18203:325:0;;;;;:::i;:::-;;:::i;:::-;;10217:94;;;;;;;;;;-1:-1:-1;10217:94:0;;7623:1;2234:36:1;;2222:2;2207:18;10217:94:0;2092:184:1;8727:28:0;;;;;;;;;;-1:-1:-1;8727:28:0;;;;-1:-1:-1;;;;;8727:28:0;;;;;;-1:-1:-1;;;;;2445:32:1;;;2427:51;;2415:2;2400:18;8727:28:0;2281:203:1;16440:207:0;;;;;;;;;;;;;:::i;19169:198::-;;;;;;;;;;-1:-1:-1;19169:198:0;;;;;:::i;:::-;;:::i;8014:33::-;;;;;;;;;;;;;;;;7961:31;;;;;;;;;;;;;;;;10424:119;;;;;;;;;;-1:-1:-1;10424:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10517:18:0;10490:7;10517:18;;;:9;:18;;;;;;;10424:119;2498:79;;;;;;;;;;-1:-1:-1;2536:7:0;2563:6;-1:-1:-1;;;;;2563:6:0;2498:79;;10111:98;;;;;;;;;;-1:-1:-1;10194:7:0;;;;;;;;;;;;-1:-1:-1;;;10194:7:0;;;;10111:98;;10555:169;;;;;;;;;;-1:-1:-1;10555:169:0;;;;;:::i;:::-;;:::i;18536:625::-;;;;;;;;;;-1:-1:-1;18536:625:0;;;;;:::i;:::-;;:::i;10732:145::-;;;;;;;;;;-1:-1:-1;10732:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;10842:18:0;;;10815:7;10842:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10732:145;17843:352;;;;;;;;;;-1:-1:-1;17843:352:0;;;;;:::i;:::-;;:::i;2716:201::-;;;;;;;;;;-1:-1:-1;2716:201:0;;;;;:::i;:::-;;:::i;16655:209::-;;;;;;;;;;;;;:::i;10885:163::-;10962:4;10979:39;299:10;11002:7;11011:6;10979:8;:39::i;:::-;-1:-1:-1;11036:4:0;10885:163;;;;;:::o;11056:312::-;11156:4;11173:36;11183:6;11191:9;11202:6;11173:9;:36::i;:::-;11220:118;11229:6;299:10;11249:88;11287:6;11249:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11249:19:0;;;;;;:11;:19;;;;;;;;299:10;11249:33;;;;;;;;;;:37;:88::i;:::-;11220:8;:118::i;:::-;-1:-1:-1;11356:4:0;11056:312;;;;;:::o;18203:325::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;;;;;;;;;18314:16:::1;7852:15;18326:3;18314:11;:16::i;:::-;18296:15;:34;18288:89;;;::::0;-1:-1:-1;;;18288:89:0;;3950:2:1;18288:89:0::1;::::0;::::1;3932:21:1::0;3989:2;3969:18;;;3962:30;4028:34;4008:18;;;4001:62;-1:-1:-1;;;4079:18:1;;;4072:40;4129:19;;18288:89:0::1;3748:406:1::0;18288:89:0::1;7852:15;18396;:26;;18388:87;;;;-1:-1:-1::0;;;18388:87:0::1;;;;;;;:::i;:::-;18486:16;:34:::0;18203:325::o;16440:207::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;16538:4:::1;16494:23;10517:18:::0;;;:9;:18;;;;;;16559:19;;16555:85:::1;;16595:33;16612:15;16595:16;:33::i;:::-;16483:164;16440:207::o:0;19169:198::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;19248:4:::1;::::0;;;::::1;;;:12;;19256:4;19248:12;19240:29;;;;-1:-1:-1::0;;;19240:29:0::1;;;;;;4778:2:1::0;4760:21;;;4817:1;4797:18;;;4790:29;-1:-1:-1;;;4850:2:1;4835:18;;4828:34;4894:2;4879:18;;4576:327;19240:29:0::1;19280:4;:12:::0;;16344;16330:11;:26;16367:13;:28;;;-1:-1:-1;;16406:18:0;-1:-1:-1;16406:18:0;;;19354:4:::1;::::0;19344:15:::1;::::0;19354:4;;;::::1;;;1237:14:1::0;1230:22;1212:41;;19344:15:0::1;::::0;1200:2:1;1185:18;19344:15:0::1;;;;;;;;19169:198:::0;:::o;10555:169::-;10635:4;10652:42;299:10;10676:9;10687:6;10652:9;:42::i;18536:625::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;18630:16:::1;18649:30;:12:::0;18666;18649:16:::1;:30::i;:::-;18630:49:::0;-1:-1:-1;18717:2:0::1;18698:16;18630:49:::0;18711:2:::1;18698:12;:16::i;:::-;:21;18690:66;;;::::0;-1:-1:-1;;;18690:66:0;;5110:2:1;18690:66:0::1;::::0;::::1;5092:21:1::0;;;5129:18;;;5122:30;5188:34;5168:18;;;5161:62;5240:18;;18690:66:0::1;4908:356:1::0;18690:66:0::1;18769:13;:28:::0;;;18808:13:::1;:28:::0;;;18857:21:::1;:37:::0;;;18905:21:::1;:37:::0;;;18785:12;19040:43:::1;18785:12:::0;19041:23:::1;18785:12:::0;19059:4:::1;19041:17;:23::i;:::-;19040:29:::0;::::1;:43::i;:::-;19020:17;:63:::0;19121:13:::1;::::0;19136::::1;::::0;19109:41:::1;::::0;::::1;::::0;::::1;::::0;19121:13;5443:25:1;;5499:2;5484:18;;5477:34;5431:2;5416:18;;5269:248;19109:41:0::1;;;;;;;;18619:542;;18536:625:::0;;:::o;17843:352::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;17942:18:::1;7852:15;17954:5;17942:11;:18::i;:::-;17928:11;:32;17920:88;;;::::0;-1:-1:-1;;;17920:88:0;;5724:2:1;17920:88:0::1;::::0;::::1;5706:21:1::0;5763:2;5743:18;;;5736:30;5802:34;5782:18;;;5775:62;-1:-1:-1;;;5853:18:1;;;5846:41;5904:19;;17920:88:0::1;5522:407:1::0;17920:88:0::1;7852:15;18027:11;:22;;18019:83;;;;-1:-1:-1::0;;;18019:83:0::1;;;;;;;:::i;:::-;18113:12;:26:::0;;;18155:32:::1;::::0;1410:25:1;;;18155:32:0::1;::::0;1398:2:1;1383:18;18155:32:0::1;1264:177:1::0;2716:201:0;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2805:22:0;::::1;2797:73;;;::::0;-1:-1:-1;;;2797:73:0;;6136:2:1;2797:73:0::1;::::0;::::1;6118:21:1::0;6175:2;6155:18;;;6148:30;6214:34;6194:18;;;6187:62;-1:-1:-1;;;6265:18:1;;;6258:36;6311:19;;2797:73:0::1;5934:402:1::0;2797:73:0::1;2881:28;2900:8;2881:18;:28::i;16655:209::-:0;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;16738:21:::1;16774:22:::0;;16770:87:::1;;16813:32;16826:18;16813:12;:32::i;1808:132::-:0;1866:7;1893:39;1897:1;1900;1893:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1886:46;1808:132;-1:-1:-1;;;1808:132:0:o;12003:335::-;-1:-1:-1;;;;;12096:19:0;;12088:68;;;;-1:-1:-1;;;12088:68:0;;6543:2:1;12088:68:0;;;6525:21:1;6582:2;6562:18;;;6555:30;6621:34;6601:18;;;6594:62;-1:-1:-1;;;6672:18:1;;;6665:34;6716:19;;12088:68:0;6341:400:1;12088:68:0;-1:-1:-1;;;;;12175:21:0;;12167:68;;;;-1:-1:-1;;;12167:68:0;;6948:2:1;12167:68:0;;;6930:21:1;6987:2;6967:18;;;6960:30;7026:34;7006:18;;;6999:62;-1:-1:-1;;;7077:18:1;;;7070:32;7119:19;;12167:68:0;6746:398:1;12167:68:0;-1:-1:-1;;;;;12246:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12298:32;;1410:25:1;;;12298:32:0;;1383:18:1;12298:32:0;;;;;;;12003:335;;;:::o;12350:1835::-;-1:-1:-1;;;;;12438:18:0;;12430:68;;;;-1:-1:-1;;;12430:68:0;;7351:2:1;12430:68:0;;;7333:21:1;7390:2;7370:18;;;7363:30;7429:34;7409:18;;;7402:62;-1:-1:-1;;;7480:18:1;;;7473:35;7525:19;;12430:68:0;7149:401:1;12430:68:0;-1:-1:-1;;;;;12517:16:0;;12509:64;;;;-1:-1:-1;;;12509:64:0;;7757:2:1;12509:64:0;;;7739:21:1;7796:2;7776:18;;;7769:30;7835:34;7815:18;;;7808:62;-1:-1:-1;;;7886:18:1;;;7879:33;7929:19;;12509:64:0;7555:399:1;12509:64:0;12601:1;12592:6;:10;12584:64;;;;-1:-1:-1;;;12584:64:0;;8161:2:1;12584:64:0;;;8143:21:1;8200:2;8180:18;;;8173:30;8239:34;8219:18;;;8212:62;-1:-1:-1;;;8290:18:1;;;8283:39;8339:19;;12584:64:0;7959:405:1;12584:64:0;12676:4;12705:7;2536;2563:6;-1:-1:-1;;;;;2563:6:0;;2498:79;12705:7;-1:-1:-1;;;;;12697:15:0;:4;-1:-1:-1;;;;;12697:15:0;;;:32;;;;-1:-1:-1;2536:7:0;2563:6;-1:-1:-1;;;;;12716:13:0;;;2563:6;;12716:13;;12697:32;:57;;;;-1:-1:-1;;;;;;12733:21:0;;12749:4;12733:21;;12697:57;:80;;;;-1:-1:-1;;;;;;12758:19:0;;12772:4;12758:19;;12697:80;12693:1287;;;12802:11;;;;12794:20;;;;;;12847:12;;12837:6;:22;;12829:31;;;;;;12889:13;;-1:-1:-1;;;;;12881:21:0;;;12889:13;;12881:21;:55;;;;-1:-1:-1;12920:15:0;;-1:-1:-1;;;;;12906:30:0;;;12920:15;;12906:30;;12881:55;12877:502;;;13001:13;;12985:11;;:30;;:15;:30::i;:::-;12969:12;:46;12965:113;;-1:-1:-1;;;;;13040:11:0;;;;;;:7;:11;;;;;:18;;-1:-1:-1;;13040:18:0;13054:4;13040:18;;;12965:113;13146:16;;13117:25;13135:6;13117:13;13127:2;-1:-1:-1;;;;;10517:18:0;10490:7;10517:18;;;:9;:18;;;;;;;10424:119;13117:13;:17;;:25::i;:::-;:45;;13109:123;;;;-1:-1:-1;;;13109:123:0;;8571:2:1;13109:123:0;;;8553:21:1;8610:2;8590:18;;;8583:30;8649:34;8629:18;;;8622:62;8720:34;8700:18;;;8693:62;-1:-1:-1;;;8771:19:1;;;8764:32;8813:19;;13109:123:0;8369:469:1;13109:123:0;-1:-1:-1;;;;;13257:11:0;;;;;;:7;:11;;;;;;;;13253:111;;;13293:14;11708:13;;;11684:21;:37;11756:13;;;11732:21;:37;11806:4;11790:20;;;-1:-1:-1;11821:17:0;;11641:205;13293:14;-1:-1:-1;13340:4:0;13253:111;13412:6;;;;;;;13411:7;:32;;;;-1:-1:-1;13430:13:0;;-1:-1:-1;;;;;13422:21:0;;;13430:13;;13422:21;;13411:32;13407:562;;;-1:-1:-1;;;;;13492:13:0;;;;;;:7;:13;;;;;;;;13491:14;:30;;;;-1:-1:-1;;;;;;13510:11:0;;;;;;:7;:11;;;;;;;;13509:12;13491:30;13483:39;;;;;;13592:4;13543:28;10517:18;;;:9;:18;;;;;;13646:12;13623:35;;13619:120;;;13683:36;13698:20;13683:14;:36::i;:::-;13786:21;13830:22;;13826:106;;13877:35;13890:21;13877:12;:35::i;:::-;13445:524;;13407:562;-1:-1:-1;;;;;13996:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;14024:22:0;;;;;;:18;:22;;;;;;;;13996:50;13992:98;;;-1:-1:-1;14073:5:0;13992:98;14110:41;14125:4;14131:2;14135:6;14143:7;14110:14;:41::i;:::-;14162:15;11918:21;;11902:13;:37;11966:21;;11950:13;:37;11858:137;14162:15;12419:1766;12350:1835;;;:::o;1356:190::-;1442:7;1478:12;1470:6;;;;1462:29;;;;-1:-1:-1;;;1462:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1502:9:0;1514:5;1518:1;1514;:5;:::i;:::-;1502:17;1356:190;-1:-1:-1;;;;;1356:190:0:o;14193:407::-;9134:6;:13;;-1:-1:-1;;9134:13:0;;;;;14295:16:::1;::::0;;14309:1:::1;14295:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14295:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14295:16:0::1;14271:40;;14340:4;14322;14327:1;14322:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14322:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14366:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;14366:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;14322:7;;14366:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14356:4;14361:1;14356:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14356:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;14431:15:::1;::::0;14399:62:::1;::::0;14416:4:::1;::::0;14431:15:::1;14449:11:::0;14399:8:::1;:62::i;:::-;14472:15;::::0;:120:::1;::::0;-1:-1:-1;;;14472:120:0;;-1:-1:-1;;;;;14472:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;14539:11;;14472:15:::1;::::0;14555:4;;14569::::1;::::0;14576:15:::1;::::0;14472:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9170:6:0;:14;;-1:-1:-1;;9170:14:0;;;-1:-1:-1;;;;14193:407:0:o;1025:179::-;1083:7;;1115:5;1119:1;1115;:5;:::i;:::-;1103:17;;1144:1;1139;:6;;1131:46;;;;-1:-1:-1;;;1131:46:0;;10945:2:1;1131:46:0;;;10927:21:1;10984:2;10964:18;;;10957:30;11023:29;11003:18;;;10996:57;11070:18;;1131:46:0;10743:351:1;1554:246:0;1612:7;1636:6;1632:47;;-1:-1:-1;1666:1:0;1659:8;;1632:47;1689:9;1701:5;1705:1;1701;:5;:::i;:::-;1689:17;-1:-1:-1;1734:1:0;1725:5;1729:1;1689:17;1725:5;:::i;:::-;:10;1717:56;;;;-1:-1:-1;;;1717:56:0;;11696:2:1;1717:56:0;;;11678:21:1;11735:2;11715:18;;;11708:30;11774:34;11754:18;;;11747:62;-1:-1:-1;;;11825:18:1;;;11818:31;11866:19;;1717:56:0;11494:397:1;2925:191:0;2999:16;3018:6;;-1:-1:-1;;;;;3035:17:0;;;-1:-1:-1;;;;;;3035:17:0;;;;;;3068:40;;3018:6;;;;;;;3068:40;;2999:16;3068:40;2988:128;2925:191;:::o;16104:156::-;16161:17;;-1:-1:-1;;;;;16161:17:0;:50;16188:22;16208:1;16188:15;16189:6;16201:1;16188:12;:15::i;:::-;:19;;:22::i;:::-;16161:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16222:4:0;;-1:-1:-1;;;;;16222:4:0;:30;16236:15;16237:6;16249:1;16236:12;:15::i;:::-;16222:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16104:156;:::o;1948:189::-;2034:7;2069:12;2062:5;2054:28;;;;-1:-1:-1;;;2054:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2093:9:0;2105:5;2109:1;2105;:5;:::i;15082:1014::-;9134:6;:13;;-1:-1:-1;;9134:13:0;;;;;15252::::1;::::0;15234::::1;::::0;9134;;15190:77:::1;::::0;15234:32:::1;::::0;:17:::1;:32::i;:::-;15190:13;::::0;:39:::1;::::0;15208:20;15190:17:::1;:39::i;:77::-;15167:100:::0;-1:-1:-1;15331:12:0::1;15347:19;15167:100:::0;15364:1:::1;15347:16;:19::i;:::-;15331:35:::0;-1:-1:-1;15377:17:0::1;15397:30;:20:::0;15331:35;15397:24:::1;:30::i;:::-;15377:50:::0;-1:-1:-1;15730:21:0::1;15796:27;15377:50:::0;15796:16:::1;:27::i;:::-;15954:18;15975:70;16035:9:::0;15976:53:::1;16024:4:::0;15977:41:::1;:21;16003:14:::0;15977:25:::1;:41::i;15975:70::-;15954:91;;16058:30;16071:4;16077:10;16058:12;:30::i;16872:256::-:0;16985:7;16980:60;;17014:14;:12;:14::i;:::-;17050:44;17068:6;17076:9;17087:6;17050:17;:44::i;1212:136::-;1270:7;1297:43;1301:1;1304;1297:43;;;;;;;;;;;;;;;;;:3;:43::i;14612:460::-;14725:15;;14693:62;;14710:4;;-1:-1:-1;;;;;14725:15:0;14743:11;14693:8;:62::i;:::-;14798:15;;-1:-1:-1;;;;;14798:15:0;:31;14837:9;14872:4;14894:11;14798:15;;15012:7;2536;2563:6;-1:-1:-1;;;;;2563:6:0;;2498:79;15012:7;14798:266;;;;;;-1:-1:-1;;;;;;14798:266:0;;;-1:-1:-1;;;;;12255:15:1;;;14798:266:0;;;12237:34:1;12287:18;;;12280:34;;;;12330:18;;;12323:34;;;;12373:18;;;12366:34;12437:15;;;12416:19;;;12409:44;15036:15:0;12469:19:1;;;12462:35;12171:19;;14798:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14612:460;;:::o;11376:257::-;11423:13;;:18;:40;;;;-1:-1:-1;11445:13:0;;:18;11423:40;11419:53;;;11376:257::o;11419:53::-;11506:13;;;11482:21;:37;11554:13;;;11530:21;:37;-1:-1:-1;11580:17:0;;;;11608;11376:257::o;17136:654::-;17233:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;17233:24:0;17286:35;17316:4;17286:25;17297:13;;17286:6;:10;;:25;;;;:::i;:35::-;17268:15;;;:53;17361:13;;17350:35;;17380:4;;17350:25;;:6;;:10;:25::i;:35::-;17332:53;;;17432:15;;;;17421:48;;17332:53;17421:27;;:6;;:10;:27::i;:::-;:31;;:48::i;:::-;17406:12;;;;:63;;;;-1:-1:-1;;;;;17510:17:0;;;;;;:9;:17;;;;:29;;17532:6;17510:21;:29::i;:::-;-1:-1:-1;;;;;17490:17:0;;;;;;;:9;:17;;;;;;:49;;;;17598:12;;;;17573:20;;;;;;;;;;:38;;:24;:38::i;:::-;-1:-1:-1;;;;;17550:20:0;;;;;;:9;:20;;;;;;;;:61;;;;17698:15;;17678;;;;17649:66;;17678:36;;:15;:19;:36::i;:::-;17667:4;17649:24;;;;:9;:24;;;;;;;:28;:66::i;:::-;17640:4;17622:24;;;;:9;:24;;;;;;;;;:93;;;;17769:12;;;;17741:41;;1410:25:1;;;-1:-1:-1;;;;;17741:41:0;;;;;;;;;;1383:18:1;17741:41:0;;;;;;;17222:568;17136:654;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;1907:180::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;-1:-1:-1;2058:23:1;;1907:180;-1:-1:-1;1907:180:1:o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:248::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;-1:-1:-1;;2909:23:1;;;2979:2;2964:18;;;2951:32;;-1:-1:-1;2741:248:1:o;2994:388::-;3062:6;3070;3123:2;3111:9;3102:7;3098:23;3094:32;3091:52;;;3139:1;3136;3129:12;3091:52;3178:9;3165:23;3197:31;3222:5;3197:31;:::i;:::-;3247:5;-1:-1:-1;3304:2:1;3289:18;;3276:32;3317:33;3276:32;3317:33;:::i;:::-;3369:7;3359:17;;;2994:388;;;;;:::o;3387:356::-;3589:2;3571:21;;;3608:18;;;3601:30;3667:34;3662:2;3647:18;;3640:62;3734:2;3719:18;;3387:356::o;4159:412::-;4361:2;4343:21;;;4400:2;4380:18;;;4373:30;4439:34;4434:2;4419:18;;4412:62;-1:-1:-1;;;4505:2:1;4490:18;;4483:46;4561:3;4546:19;;4159:412::o;8843:127::-;8904:10;8899:3;8895:20;8892:1;8885:31;8935:4;8932:1;8925:15;8959:4;8956:1;8949:15;8975:125;9015:4;9043:1;9040;9037:8;9034:34;;;9048:18;;:::i;:::-;-1:-1:-1;9085:9:1;;8975:125::o;9237:127::-;9298:10;9293:3;9289:20;9286:1;9279:31;9329:4;9326:1;9319:15;9353:4;9350:1;9343:15;9369:251;9439:6;9492:2;9480:9;9471:7;9467:23;9463:32;9460:52;;;9508:1;9505;9498:12;9460:52;9540:9;9534:16;9559:31;9584:5;9559:31;:::i;9625:980::-;9887:4;9935:3;9924:9;9920:19;9966:6;9955:9;9948:25;9992:2;10030:6;10025:2;10014:9;10010:18;10003:34;10073:3;10068:2;10057:9;10053:18;10046:31;10097:6;10132;10126:13;10163:6;10155;10148:22;10201:3;10190:9;10186:19;10179:26;;10240:2;10232:6;10228:15;10214:29;;10261:1;10271:195;10285:6;10282:1;10279:13;10271:195;;;10350:13;;-1:-1:-1;;;;;10346:39:1;10334:52;;10441:15;;;;10406:12;;;;10382:1;10300:9;10271:195;;;-1:-1:-1;;;;;;;10522:32:1;;;;10517:2;10502:18;;10495:60;-1:-1:-1;;;10586:3:1;10571:19;10564:35;10483:3;9625:980;-1:-1:-1;;;9625:980:1:o;10610:128::-;10650:3;10681:1;10677:6;10674:1;10671:13;10668:39;;;10687:18;;:::i;:::-;-1:-1:-1;10723:9:1;;10610:128::o;11099:168::-;11139:7;11205:1;11201;11197:6;11193:14;11190:1;11187:21;11182:1;11175:9;11168:17;11164:45;11161:71;;;11212:18;;:::i;:::-;-1:-1:-1;11252:9:1;;11099:168::o;11272:217::-;11312:1;11338;11328:132;;11382:10;11377:3;11373:20;11370:1;11363:31;11417:4;11414:1;11407:15;11445:4;11442:1;11435:15;11328:132;-1:-1:-1;11474:9:1;;11272:217::o;12508:306::-;12596:6;12604;12612;12665:2;12653:9;12644:7;12640:23;12636:32;12633:52;;;12681:1;12678;12671:12;12633:52;12710:9;12704:16;12694:26;;12760:2;12749:9;12745:18;12739:25;12729:35;;12804:2;12793:9;12789:18;12783:25;12773:35;;12508:306;;;;;:::o

Swarm Source

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