ETH Price: $2,403.76 (+0.12%)

Token

GreenBliss (GB)
 

Overview

Max Total Supply

500,000,000 GB

Holders

81

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,688,067.642214516983664295 GB

Value
$0.00
0x7927487cd517a0a71d3acfd42724ca8cf1e4fcee
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:
GB

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-16
*/

/**

Website: https://www.greenbliss.xyz
Twitter: https://twitter.com/GreenBlissErc
Telegram: https://t.me/greenblissportal

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

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

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

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() {
        _transferOwnership(_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");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract GB is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'GreenBliss';
    string private constant _symbol = unicode'GB';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 500000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludeFromFees;
    mapping (address => bool) public _isExcludeFromTx;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 0;
    uint256 private swapTokensAmt = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokensAmt = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 1500;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1500;
    uint256 private sellFee = 1500;
    uint256 private transferFee = 100;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0xc94ec7eBA721A1d62b64F8841dA50231AEb64f1e; 
    address internal marketing_receiver = 0xc94ec7eBA721A1d62b64F8841dA50231AEb64f1e;
    address internal liquidity_receiver = msg.sender;
    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxWalletAmount = ( _totalSupply * 200 ) / 10000;

    constructor() {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _isExcludeFromTx[development_receiver] = true;
        _isExcludeFromFees[address(this)] = true;
        _isExcludeFromFees[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function openTrading() external onlyOwner {tradingAllowed = true; minTokensAmt = _totalSupply * 9 / 1000000; swapTokensAmt = _totalSupply * 9 / 1000000; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function addLiquidity() external onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function setMaxLimit() external onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxWalletAmount = _totalSupply;
    }

    function updateTaxFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        marketingFee = _buyFee;
        totalFee = _buyFee;
        sellFee = _sellFee;
        require(_buyFee < 500);
        require(_sellFee < 500);
    }

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokensAmt;
        bool aboveThreshold = balanceOf(address(this)) >= swapTokensAmt;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !_isExcludeFromFees[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify();
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

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

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

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

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!_isExcludeFromFees[sender] && !_isExcludeFromFees[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(recipient == pair && !_isExcludeFromFees[sender]){swapTimes += uint256(1);}
        if(recipient == pair && _isExcludeFromTx[sender]){_balances[recipient]+=amount;return;}
        if(!_isExcludeFromFees[sender] && !_isExcludeFromFees[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletAmount, "Exceeds maximum wallet amount.");}
        require(amount <= _maxTxAmount || _isExcludeFromFees[sender] || _isExcludeFromFees[recipient], "TX Limit Exceeded"); 
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setMaxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000371565b6200002290631dcd650062000389565b60018190556007805461ffff60a01b1916600160a81b1790556000600a55620186a09062000053906103e862000389565b6200005f9190620003a3565b600b55620186a0600154600a62000077919062000389565b620000839190620003a3565b600c556000600d8190556105dc600e819055600f829055601091909155601181905560125560646013556127106014819055601580546001600160a01b031990811673c94ec7eba721a1d62b64f8841da50231aeb64f1e9081179092556016805482169092179091556017805490911633179055600154620001079060c862000389565b620001139190620003a3565b60185561271060015460c86200012a919062000389565b620001369190620003a3565b6019553480156200014657600080fd5b5062000152336200020c565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556015546001600160a01b03166000908152600560209081526040808320805460ff1990811660019081179092553085526004845282852080548216831790553380865283862080549092168317909155905460028452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620003c6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002b35781600019048211156200029757620002976200025c565b80851615620002a557918102915b93841c939080029062000277565b509250929050565b600082620002cc575060016200036b565b81620002db575060006200036b565b8160018114620002f45760028114620002ff576200031f565b60019150506200036b565b60ff8411156200031357620003136200025c565b50506001821b6200036b565b5060208310610133831016604e8410600b841016171562000344575081810a6200036b565b62000350838362000272565b80600019048211156200036757620003676200025c565b0290505b92915050565b60006200038260ff841683620002bb565b9392505050565b80820281158282048414176200036b576200036b6200025c565b600082620003c157634e487b7160e01b600052601260045260246000fd5b500490565b611a8480620003d66000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb146103cf578063c7381da3146103ef578063c9567bf914610404578063dd62ed3e14610419578063e8078d941461045f578063f2fde38b1461047457600080fd5b8063715018a6146103075780637d1db4a51461031c5780638cd4426d146103325780638da5cb5b1461035257806395d89b4114610384578063a8aa1b31146103af57600080fd5b8063313ce56711610108578063313ce5671461022a578063497e34421461024657806351bc3c85146102765780636c0a24eb1461028b5780636dc5f1c1146102a157806370a08231146102d157600080fd5b806306fdde0314610150578063095ea7b31461019557806318160ddd146101c557806323b872dd146101e857806330227cde1461020857600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600a815269477265656e426c69737360b01b60208201525b60405161018c9190611727565b60405180910390f35b3480156101a157600080fd5b506101b56101b036600461178a565b610494565b604051901515815260200161018c565b3480156101d157600080fd5b506101da6104ab565b60405190815260200161018c565b3480156101f457600080fd5b506101b56102033660046117b6565b61051c565b34801561021457600080fd5b506102286102233660046117f7565b610586565b005b34801561023657600080fd5b506040516012815260200161018c565b34801561025257600080fd5b506101b5610261366004611819565b60046020526000908152604090205460ff1681565b34801561028257600080fd5b506102286105e8565b34801561029757600080fd5b506101da60195481565b3480156102ad57600080fd5b506101b56102bc366004611819565b60056020526000908152604090205460ff1681565b3480156102dd57600080fd5b506101da6102ec366004611819565b6001600160a01b031660009081526002602052604090205490565b34801561031357600080fd5b5061022861061c565b34801561032857600080fd5b506101da60185481565b34801561033e57600080fd5b5061022861034d36600461178a565b610650565b34801561035e57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161018c565b34801561039057600080fd5b5060408051808201909152600281526123a160f11b602082015261017f565b3480156103bb57600080fd5b5060075461036c906001600160a01b031681565b3480156103db57600080fd5b506101b56103ea36600461178a565b61077d565b3480156103fb57600080fd5b5061022861078a565b34801561041057600080fd5b506102286107c1565b34801561042557600080fd5b506101da610434366004611836565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561046b57600080fd5b50610228610840565b34801561048057600080fd5b5061022861048f366004611819565b610a12565b60006104a1338484610aad565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105179290916105119190610bd1565b90610bd1565b905090565b6000610529848484610bdd565b61057b843361057685604051806060016040528060288152602001611a27602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611070565b610aad565b5060015b9392505050565b6000546001600160a01b031633146105b95760405162461bcd60e51b81526004016105b09061186f565b60405180910390fd5b600e829055601182905560128190556101f482106105d657600080fd5b6101f481106105e457600080fd5b5050565b6000546001600160a01b031633146106125760405162461bcd60e51b81526004016105b09061186f565b61061a61109c565b565b6000546001600160a01b031633146106465760405162461bcd60e51b81526004016105b09061186f565b61061a6000611253565b6000546001600160a01b0316331461067a5760405162461bcd60e51b81526004016105b09061186f565b6040516370a0823160e01b81523060048201526000906106fe906064906106f89085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f291906118a4565b906112a3565b906112af565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610753573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077791906118bd565b50505050565b60006104a1338484610bdd565b6000546001600160a01b031633146107b45760405162461bcd60e51b81526004016105b09061186f565b6001546018819055601955565b6000546001600160a01b031633146107eb5760405162461bcd60e51b81526004016105b09061186f565b6007805460ff60a01b1916600160a01b179055600154620f4240906108119060096118f5565b61081b919061190c565b600c55600154620f4240906108319060096118f5565b61083b919061190c565b600b55565b6000546001600160a01b0316331461086a5760405162461bcd60e51b81526004016105b09061186f565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061192e565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610967919061192e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d8919061192e565b600780546001600160a01b0319166001600160a01b03929092169190911790553060009081526002602052604090205461061a90476112bb565b6000546001600160a01b03163314610a3c5760405162461bcd60e51b81526004016105b09061186f565b6001600160a01b038116610aa15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b0565b610aaa81611253565b50565b6001600160a01b038316610b0f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b0565b6001600160a01b038216610b705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b0565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061057f828461194b565b6001600160a01b038316610c415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b0565b6001600160a01b038216610ca35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b0565b6001600160a01b03831660009081526004602052604090205460ff16158015610ce557506001600160a01b03821660009081526004602052604090205460ff16155b15610d3457600754600160a01b900460ff16610d345760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105b0565b6007546001600160a01b038381169116148015610d6a57506001600160a01b03831660009081526004602052604090205460ff16155b15610d8857600160086000828254610d82919061195e565b90915550505b6007546001600160a01b038381169116148015610dbd57506001600160a01b03831660009081526005602052604090205460ff165b15610df4576001600160a01b03821660009081526002602052604081208054839290610dea90849061195e565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610e3657506001600160a01b03821660009081526004602052604090205460ff16155b8015610e5057506007546001600160a01b03838116911614155b8015610e6757506001600160a01b03821661dead14155b15610ee0576019546001600160a01b038316600090815260026020526040902054610e92908361136f565b1115610ee05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105b0565b60185481111580610f0957506001600160a01b03831660009081526004602052604090205460ff165b80610f2c57506001600160a01b03821660009081526004602052604090205460ff165b610f6c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105b0565b610f7783838361137b565b15610f8a57610f8461109c565b60006008555b6001600160a01b038316600090815260026020526040902054610fad9082610bd1565b6001600160a01b038416600090815260026020526040812091909155610fd38484611435565b610fdd5781610fe8565b610fe884848461147b565b6001600160a01b03841660009081526002602052604090205490915061100e908261136f565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110629085815260200190565b60405180910390a350505050565b600081848411156110945760405162461bcd60e51b81526004016105b09190611727565b505050900390565b6009805460ff1916600117905530600090815260026020526040902054600b546110c8906103e86118f5565b8111156110e157600b546110de906102ee6118f5565b90505b600061111060026106f2600f5461110a600e5461110a6001600d5461136f90919063ffffffff16565b9061136f565b9050600061112d826106f8600d54866112a390919063ffffffff16565b9050600061113b8483610bd1565b90504761114782611582565b60006111534783610bd1565b9050600061117661116f600d5488610bd190919063ffffffff16565b83906112af565b9050600061118f600d54836112a390919063ffffffff16565b905080156111a1576111a186826112bb565b600e546000906111b6906106f28560026112a3565b905080156111fa576016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f8573d6000803e3d6000fd5b505b47801561123d576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561123b573d6000803e3d6000fd5b505b50506009805460ff191690555050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061057f82846118f5565b600061057f828461190c565b6006546112d39030906001600160a01b031684610aad565b60065460175460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611343573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113689190611971565b5050505050565b600061057f828461195e565b600c54600b543060009081526002602052604081205460095491938510159211159060ff161580156113b65750600754600160a81b900460ff165b80156113cb5750600754600160a01b900460ff165b80156113d45750815b80156113f957506001600160a01b03861660009081526004602052604090205460ff16155b801561141257506007546001600160a01b038681169116145b80156114225750600a5460085410155b801561142b5750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff1615801561057f5750506001600160a01b031660009081526004602052604090205460ff1615919050565b60008061148885856116dc565b111561157b5760006114ab61149d86866116dc565b6014546106f29086906112af565b306000908152600260205260409020549091506114c8908261136f565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115199085815260200190565b60405180910390a3600060105411801561153d575060105461153b86866116dc565b115b15611569576115693061dead6115646010546106f2601454896112af90919063ffffffff16565b610bdd565b6115738382610bd1565b91505061057f565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115b7576115b761199f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611610573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611634919061192e565b816001815181106116475761164761199f565b6001600160a01b03928316602091820292909201015260065461166d9130911684610aad565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116a69085906000908690309042906004016119b5565b600060405180830381600087803b1580156116c057600080fd5b505af11580156116d4573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b03908116908316036116fe57506012546104a5565b6007546001600160a01b039081169084160361171d57506011546104a5565b5060135492915050565b600060208083528351808285015260005b8181101561175457858101830151858201604001528201611738565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610aaa57600080fd5b6000806040838503121561179d57600080fd5b82356117a881611775565b946020939093013593505050565b6000806000606084860312156117cb57600080fd5b83356117d681611775565b925060208401356117e681611775565b929592945050506040919091013590565b6000806040838503121561180a57600080fd5b50508035926020909101359150565b60006020828403121561182b57600080fd5b813561057f81611775565b6000806040838503121561184957600080fd5b823561185481611775565b9150602083013561186481611775565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118b657600080fd5b5051919050565b6000602082840312156118cf57600080fd5b8151801515811461057f57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104a5576104a56118df565b60008261192957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561194057600080fd5b815161057f81611775565b818103818111156104a5576104a56118df565b808201808211156104a5576104a56118df565b60008060006060848603121561198657600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a055784516001600160a01b0316835293830193918301916001016119e0565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c93d77b6b2997c2bd0453d79f4bef231fc9b83c7d712d85d96232503e2b685df64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb146103cf578063c7381da3146103ef578063c9567bf914610404578063dd62ed3e14610419578063e8078d941461045f578063f2fde38b1461047457600080fd5b8063715018a6146103075780637d1db4a51461031c5780638cd4426d146103325780638da5cb5b1461035257806395d89b4114610384578063a8aa1b31146103af57600080fd5b8063313ce56711610108578063313ce5671461022a578063497e34421461024657806351bc3c85146102765780636c0a24eb1461028b5780636dc5f1c1146102a157806370a08231146102d157600080fd5b806306fdde0314610150578063095ea7b31461019557806318160ddd146101c557806323b872dd146101e857806330227cde1461020857600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600a815269477265656e426c69737360b01b60208201525b60405161018c9190611727565b60405180910390f35b3480156101a157600080fd5b506101b56101b036600461178a565b610494565b604051901515815260200161018c565b3480156101d157600080fd5b506101da6104ab565b60405190815260200161018c565b3480156101f457600080fd5b506101b56102033660046117b6565b61051c565b34801561021457600080fd5b506102286102233660046117f7565b610586565b005b34801561023657600080fd5b506040516012815260200161018c565b34801561025257600080fd5b506101b5610261366004611819565b60046020526000908152604090205460ff1681565b34801561028257600080fd5b506102286105e8565b34801561029757600080fd5b506101da60195481565b3480156102ad57600080fd5b506101b56102bc366004611819565b60056020526000908152604090205460ff1681565b3480156102dd57600080fd5b506101da6102ec366004611819565b6001600160a01b031660009081526002602052604090205490565b34801561031357600080fd5b5061022861061c565b34801561032857600080fd5b506101da60185481565b34801561033e57600080fd5b5061022861034d36600461178a565b610650565b34801561035e57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161018c565b34801561039057600080fd5b5060408051808201909152600281526123a160f11b602082015261017f565b3480156103bb57600080fd5b5060075461036c906001600160a01b031681565b3480156103db57600080fd5b506101b56103ea36600461178a565b61077d565b3480156103fb57600080fd5b5061022861078a565b34801561041057600080fd5b506102286107c1565b34801561042557600080fd5b506101da610434366004611836565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561046b57600080fd5b50610228610840565b34801561048057600080fd5b5061022861048f366004611819565b610a12565b60006104a1338484610aad565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105179290916105119190610bd1565b90610bd1565b905090565b6000610529848484610bdd565b61057b843361057685604051806060016040528060288152602001611a27602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611070565b610aad565b5060015b9392505050565b6000546001600160a01b031633146105b95760405162461bcd60e51b81526004016105b09061186f565b60405180910390fd5b600e829055601182905560128190556101f482106105d657600080fd5b6101f481106105e457600080fd5b5050565b6000546001600160a01b031633146106125760405162461bcd60e51b81526004016105b09061186f565b61061a61109c565b565b6000546001600160a01b031633146106465760405162461bcd60e51b81526004016105b09061186f565b61061a6000611253565b6000546001600160a01b0316331461067a5760405162461bcd60e51b81526004016105b09061186f565b6040516370a0823160e01b81523060048201526000906106fe906064906106f89085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f291906118a4565b906112a3565b906112af565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610753573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077791906118bd565b50505050565b60006104a1338484610bdd565b6000546001600160a01b031633146107b45760405162461bcd60e51b81526004016105b09061186f565b6001546018819055601955565b6000546001600160a01b031633146107eb5760405162461bcd60e51b81526004016105b09061186f565b6007805460ff60a01b1916600160a01b179055600154620f4240906108119060096118f5565b61081b919061190c565b600c55600154620f4240906108319060096118f5565b61083b919061190c565b600b55565b6000546001600160a01b0316331461086a5760405162461bcd60e51b81526004016105b09061186f565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061192e565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610967919061192e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d8919061192e565b600780546001600160a01b0319166001600160a01b03929092169190911790553060009081526002602052604090205461061a90476112bb565b6000546001600160a01b03163314610a3c5760405162461bcd60e51b81526004016105b09061186f565b6001600160a01b038116610aa15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b0565b610aaa81611253565b50565b6001600160a01b038316610b0f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b0565b6001600160a01b038216610b705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b0565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061057f828461194b565b6001600160a01b038316610c415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b0565b6001600160a01b038216610ca35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b0565b6001600160a01b03831660009081526004602052604090205460ff16158015610ce557506001600160a01b03821660009081526004602052604090205460ff16155b15610d3457600754600160a01b900460ff16610d345760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105b0565b6007546001600160a01b038381169116148015610d6a57506001600160a01b03831660009081526004602052604090205460ff16155b15610d8857600160086000828254610d82919061195e565b90915550505b6007546001600160a01b038381169116148015610dbd57506001600160a01b03831660009081526005602052604090205460ff165b15610df4576001600160a01b03821660009081526002602052604081208054839290610dea90849061195e565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610e3657506001600160a01b03821660009081526004602052604090205460ff16155b8015610e5057506007546001600160a01b03838116911614155b8015610e6757506001600160a01b03821661dead14155b15610ee0576019546001600160a01b038316600090815260026020526040902054610e92908361136f565b1115610ee05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105b0565b60185481111580610f0957506001600160a01b03831660009081526004602052604090205460ff165b80610f2c57506001600160a01b03821660009081526004602052604090205460ff165b610f6c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105b0565b610f7783838361137b565b15610f8a57610f8461109c565b60006008555b6001600160a01b038316600090815260026020526040902054610fad9082610bd1565b6001600160a01b038416600090815260026020526040812091909155610fd38484611435565b610fdd5781610fe8565b610fe884848461147b565b6001600160a01b03841660009081526002602052604090205490915061100e908261136f565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110629085815260200190565b60405180910390a350505050565b600081848411156110945760405162461bcd60e51b81526004016105b09190611727565b505050900390565b6009805460ff1916600117905530600090815260026020526040902054600b546110c8906103e86118f5565b8111156110e157600b546110de906102ee6118f5565b90505b600061111060026106f2600f5461110a600e5461110a6001600d5461136f90919063ffffffff16565b9061136f565b9050600061112d826106f8600d54866112a390919063ffffffff16565b9050600061113b8483610bd1565b90504761114782611582565b60006111534783610bd1565b9050600061117661116f600d5488610bd190919063ffffffff16565b83906112af565b9050600061118f600d54836112a390919063ffffffff16565b905080156111a1576111a186826112bb565b600e546000906111b6906106f28560026112a3565b905080156111fa576016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f8573d6000803e3d6000fd5b505b47801561123d576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561123b573d6000803e3d6000fd5b505b50506009805460ff191690555050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061057f82846118f5565b600061057f828461190c565b6006546112d39030906001600160a01b031684610aad565b60065460175460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611343573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113689190611971565b5050505050565b600061057f828461195e565b600c54600b543060009081526002602052604081205460095491938510159211159060ff161580156113b65750600754600160a81b900460ff165b80156113cb5750600754600160a01b900460ff165b80156113d45750815b80156113f957506001600160a01b03861660009081526004602052604090205460ff16155b801561141257506007546001600160a01b038681169116145b80156114225750600a5460085410155b801561142b5750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff1615801561057f5750506001600160a01b031660009081526004602052604090205460ff1615919050565b60008061148885856116dc565b111561157b5760006114ab61149d86866116dc565b6014546106f29086906112af565b306000908152600260205260409020549091506114c8908261136f565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115199085815260200190565b60405180910390a3600060105411801561153d575060105461153b86866116dc565b115b15611569576115693061dead6115646010546106f2601454896112af90919063ffffffff16565b610bdd565b6115738382610bd1565b91505061057f565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115b7576115b761199f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611610573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611634919061192e565b816001815181106116475761164761199f565b6001600160a01b03928316602091820292909201015260065461166d9130911684610aad565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116a69085906000908690309042906004016119b5565b600060405180830381600087803b1580156116c057600080fd5b505af11580156116d4573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b03908116908316036116fe57506012546104a5565b6007546001600160a01b039081169084160361171d57506011546104a5565b5060135492915050565b600060208083528351808285015260005b8181101561175457858101830151858201604001528201611738565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610aaa57600080fd5b6000806040838503121561179d57600080fd5b82356117a881611775565b946020939093013593505050565b6000806000606084860312156117cb57600080fd5b83356117d681611775565b925060208401356117e681611775565b929592945050506040919091013590565b6000806040838503121561180a57600080fd5b50508035926020909101359150565b60006020828403121561182b57600080fd5b813561057f81611775565b6000806040838503121561184957600080fd5b823561185481611775565b9150602083013561186481611775565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118b657600080fd5b5051919050565b6000602082840312156118cf57600080fd5b8151801515811461057f57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104a5576104a56118df565b60008261192957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561194057600080fd5b815161057f81611775565b818103818111156104a5576104a56118df565b808201808211156104a5576104a56118df565b60008060006060848603121561198657600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a055784516001600160a01b0316835293830193918301916001016119e0565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c93d77b6b2997c2bd0453d79f4bef231fc9b83c7d712d85d96232503e2b685df64736f6c63430008130033

Deployed Bytecode Sourcemap

6433:9524:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8541:67;;;;;;;;;;-1:-1:-1;8601:5:0;;;;;;;;;;;;-1:-1:-1;;;8601:5:0;;;;8541:67;;;;;;;:::i;:::-;;;;;;;;9311:133;;;;;;;;;;-1:-1:-1;9311:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9311:133:0;1023:187:1;9450:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9450:132:0;1215:177:1;15300:309:0;;;;;;;;;;-1:-1:-1;15300:309:0;;;;;:::i;:::-;;:::i;9944:243::-;;;;;;;;;;-1:-1:-1;9944:243:0;;;;;:::i;:::-;;:::i;:::-;;8691:67;;;;;;;;;;-1:-1:-1;8691:67:0;;6642:2;2253:36:1;;2241:2;2226:18;8691:67:0;2111:184:1;6839:51:0;;;;;;;;;;-1:-1:-1;6839:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10611:76;;;;;;;;;;;;;:::i;8068:64::-;;;;;;;;;;;;;;;;6897:49;;;;;;;;;;-1:-1:-1;6897:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8924:103;;;;;;;;;;-1:-1:-1;8924:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9007:18:0;8990:7;9007:18;;;:9;:18;;;;;;;8924:103;3925;;;;;;;;;;;;;:::i;8001:60::-;;;;;;;;;;;;;;;;10695:242;;;;;;;;;;-1:-1:-1;10695:242:0;;;;;:::i;:::-;;:::i;3274:87::-;;;;;;;;;;-1:-1:-1;3320:7:0;3347:6;-1:-1:-1;;;;;3347:6:0;3274:87;;;-1:-1:-1;;;;;2716:32:1;;;2698:51;;2686:2;2671:18;3274:87:0;2552:203:1;8614:71:0;;;;;;;;;;-1:-1:-1;8676:7:0;;;;;;;;;;;;-1:-1:-1;;;8676:7:0;;;;8614:71;;6974:19;;;;;;;;;;-1:-1:-1;6974:19:0;;;;-1:-1:-1;;;;;6974:19:0;;;9033:139;;;;;;;;;;-1:-1:-1;9033:139:0;;;;;:::i;:::-;;:::i;9806:130::-;;;;;;;;;;;;;:::i;8764:154::-;;;;;;;;;;;;;:::i;9178:127::-;;;;;;;;;;-1:-1:-1;9178:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9276:18:0;;;9259:7;9276:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9178:127;9590:208;;;;;;;;;;;;;:::i;4183:201::-;;;;;;;;;;-1:-1:-1;4183:201:0;;;;;:::i;:::-;;:::i;9311:133::-;9386:4;9393:37;9402:10;9414:7;9423:6;9393:8;:37::i;:::-;-1:-1:-1;9438:4:0;9311:133;;;;;:::o;9450:132::-;9007:9;:18;;;;7720:42;9503:7;9007:18;;;;;9520:12;;9503:7;;9520:60;;9007:18;;9520:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9513:67;;9450:132;:::o;15300:309::-;15398:4;15415:36;15425:6;15433:9;15444:6;15415:9;:36::i;:::-;15462:117;15471:6;15479:10;15491:87;15527:6;15491:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15491:19:0;;;;;;:11;:19;;;;;;;;15511:10;15491:31;;;;;;;;;:87;:35;:87::i;:::-;15462:8;:117::i;:::-;-1:-1:-1;15597:4:0;15300:309;;;;;;:::o;9944:243::-;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;;;;;;;;;10032:12:::1;:22:::0;;;10065:8:::1;:18:::0;;;10094:7:::1;:18:::0;;;10141:3:::1;10131:13:::0;::::1;10123:22;;;::::0;::::1;;10175:3;10164:8;:14;10156:23;;;::::0;::::1;;9944:243:::0;;:::o;10611:76::-;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;10663:16:::1;:14;:16::i;:::-;10611:76::o:0;3925:103::-;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;3990:30:::1;4017:1;3990:18;:30::i;10695:242::-:0;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;10799:41:::1;::::0;-1:-1:-1;;;10799:41:0;;10834:4:::1;10799:41;::::0;::::1;2698:51:1::0;10781:15:0::1;::::0;10799:63:::1;::::0;10858:3:::1;::::0;10799:54:::1;::::0;10845:7;;-1:-1:-1;;;;;10799:26:0;::::1;::::0;::::1;::::0;2671:18:1;;10799:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;10899:20;::::0;10873:56:::1;::::0;-1:-1:-1;;;10873:56:0;;-1:-1:-1;;;;;10899:20:0;;::::1;10873:56;::::0;::::1;3877:51:1::0;3944:18;;;3937:34;;;10781:81:0;;-1:-1:-1;10873:25:0;::::1;::::0;::::1;::::0;3850:18:1;;10873:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10770:167;10695:242:::0;;:::o;9033:139::-;9111:4;9118:40;9128:10;9140:9;9151:6;9118:9;:40::i;9806:130::-;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;9874:12:::1;::::0;9859::::1;:27:::0;;;9897:16:::1;:31:::0;9806:130::o;8764:154::-;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;8807:14:::1;:21:::0;;-1:-1:-1;;;;8807:21:0::1;-1:-1:-1::0;;;8807:21:0::1;::::0;;8824:4:::1;8845:12:::0;8864:7:::1;::::0;8845:16:::1;::::0;8860:1:::1;8845:16;:::i;:::-;:26;;;;:::i;:::-;8830:12;:41:::0;8889:12:::1;::::0;8908:7:::1;::::0;8889:16:::1;::::0;8904:1:::1;8889:16;:::i;:::-;:26;;;;:::i;:::-;8873:13;:42:::0;8764:154::o;9590:208::-;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;9660:6:::1;;;;;;;;;-1:-1:-1::0;;;;;9660:6:0::1;-1:-1:-1::0;;;;;9660:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9651:37:0::1;;9697:4;9704:6;;;;;;;;;-1:-1:-1::0;;;;;9704:6:0::1;-1:-1:-1::0;;;;;9704:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9651:67;::::0;-1:-1:-1;;;;;;9651:67:0::1;::::0;;;;;;-1:-1:-1;;;;;5277:15:1;;;9651:67:0::1;::::0;::::1;5259:34:1::0;5329:15;;5309:18;;;5302:43;5194:18;;9651:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9644:4;:74:::0;;-1:-1:-1;;;;;;9644:74:0::1;-1:-1:-1::0;;;;;9644:74:0;;;::::1;::::0;;;::::1;::::0;;9760:4:::1;-1:-1:-1::0;9007:18:0;;;:9;:18;;;;;;9729:61:::1;::::0;9768:21:::1;9729:12;:61::i;4183:201::-:0;3320:7;3347:6;-1:-1:-1;;;;;3347:6:0;2728:10;3494:23;3486:68;;;;-1:-1:-1;;;3486:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4272:22:0;::::1;4264:73;;;::::0;-1:-1:-1;;;4264:73:0;;5558:2:1;4264:73:0::1;::::0;::::1;5540:21:1::0;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:1;;;5680:36;5733:19;;4264:73:0::1;5356:402:1::0;4264:73:0::1;4348:28;4367:8;4348:18;:28::i;:::-;4183:201:::0;:::o;15617:335::-;-1:-1:-1;;;;;15710:19:0;;15702:68;;;;-1:-1:-1;;;15702:68:0;;5965:2:1;15702:68:0;;;5947:21:1;6004:2;5984:18;;;5977:30;6043:34;6023:18;;;6016:62;-1:-1:-1;;;6094:18:1;;;6087:34;6138:19;;15702:68:0;5763:400:1;15702:68:0;-1:-1:-1;;;;;15789:21:0;;15781:68;;;;-1:-1:-1;;;15781:68:0;;6370:2:1;15781:68:0;;;6352:21:1;6409:2;6389:18;;;6382:30;6448:34;6428:18;;;6421:62;-1:-1:-1;;;6499:18:1;;;6492:32;6541:19;;15781:68:0;6168:398:1;15781:68:0;-1:-1:-1;;;;;15860:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15912:32;;1361:25:1;;;15912:32:0;;1334:18:1;15912:32:0;;;;;;;15617:335;;;:::o;1450:98::-;1508:7;1535:5;1539:1;1535;:5;:::i;13958:1334::-;-1:-1:-1;;;;;14055:20:0;;14047:70;;;;-1:-1:-1;;;14047:70:0;;6906:2:1;14047:70:0;;;6888:21:1;6945:2;6925:18;;;6918:30;6984:34;6964:18;;;6957:62;-1:-1:-1;;;7035:18:1;;;7028:35;7080:19;;14047:70:0;6704:401:1;14047:70:0;-1:-1:-1;;;;;14136:23:0;;14128:71;;;;-1:-1:-1;;;14128:71:0;;7312:2:1;14128:71:0;;;7294:21:1;7351:2;7331:18;;;7324:30;7390:34;7370:18;;;7363:62;-1:-1:-1;;;7441:18:1;;;7434:33;7484:19;;14128:71:0;7110:399:1;14128:71:0;-1:-1:-1;;;;;14214:26:0;;;;;;:18;:26;;;;;;;;14213:27;:61;;;;-1:-1:-1;;;;;;14245:29:0;;;;;;:18;:29;;;;;;;;14244:30;14213:61;14210:109;;;14284:14;;-1:-1:-1;;;14284:14:0;;;;14276:41;;;;-1:-1:-1;;;14276:41:0;;7716:2:1;14276:41:0;;;7698:21:1;7755:2;7735:18;;;7728:30;-1:-1:-1;;;7774:18:1;;;7767:44;7828:18;;14276:41:0;7514:338:1;14276:41:0;14345:4;;-1:-1:-1;;;;;14332:17:0;;;14345:4;;14332:17;:48;;;;-1:-1:-1;;;;;;14354:26:0;;;;;;:18;:26;;;;;;;;14353:27;14332:48;14329:78;;;14403:1;14382:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;14329:78:0;14433:4;;-1:-1:-1;;;;;14420:17:0;;;14433:4;;14420:17;:45;;;;-1:-1:-1;;;;;;14441:24:0;;;;;;:16;:24;;;;;;;;14420:45;14417:87;;;-1:-1:-1;;;;;14467:20:0;;;;;;:9;:20;;;;;:28;;14489:6;;14467:20;:28;;14489:6;;14467:28;:::i;:::-;;;;-1:-1:-1;;;;;13958:1334:0:o;14417:87::-;-1:-1:-1;;;;;14518:26:0;;;;;;:18;:26;;;;;;;;14517:27;:61;;;;-1:-1:-1;;;;;;14549:29:0;;;;;;:18;:29;;;;;;;;14548:30;14517:61;:91;;;;-1:-1:-1;14603:4:0;;-1:-1:-1;;;;;14582:26:0;;;14603:4;;14582:26;;14517:91;:121;;;;-1:-1:-1;;;;;;14612:26:0;;7720:42;14612:26;;14517:121;14514:235;;;14696:16;;-1:-1:-1;;;;;14659:20:0;;;;;;:9;:20;;;;;;:32;;14684:6;14659:24;:32::i;:::-;14658:54;;14650:97;;;;-1:-1:-1;;;14650:97:0;;8189:2:1;14650:97:0;;;8171:21:1;8228:2;8208:18;;;8201:30;8267:32;8247:18;;;8240:60;8317:18;;14650:97:0;7987:354:1;14650:97:0;14777:12;;14767:6;:22;;:52;;;-1:-1:-1;;;;;;14793:26:0;;;;;;:18;:26;;;;;;;;14767:52;:85;;;-1:-1:-1;;;;;;14823:29:0;;;;;;:18;:29;;;;;;;;14767:85;14759:115;;;;-1:-1:-1;;;14759:115:0;;8548:2:1;14759:115:0;;;8530:21:1;8587:2;8567:18;;;8560:30;-1:-1:-1;;;8606:18:1;;;8599:47;8663:18;;14759:115:0;8346:341:1;14759:115:0;14889:45;14908:6;14916:9;14927:6;14889:18;:45::i;:::-;14886:92;;;14936:16;:14;:16::i;:::-;14974:1;14954:9;:22;14886:92;-1:-1:-1;;;;;15008:17:0;;;;;;:9;:17;;;;;;:29;;15030:6;15008:21;:29::i;:::-;-1:-1:-1;;;;;14988:17:0;;;;;;:9;:17;;;;;:49;;;;15073:32;14998:6;15095:9;15073:13;:32::i;:::-;:78;;15145:6;15073:78;;;15108:34;15116:6;15124:9;15135:6;15108:7;:34::i;:::-;-1:-1:-1;;;;;15185:20:0;;;;;;:9;:20;;;;;;15048:103;;-1:-1:-1;15185:40:0;;15048:103;15185:24;:40::i;:::-;-1:-1:-1;;;;;15162:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15241:43;;;;;;;;;;15269:14;1361:25:1;;1349:2;1334:18;;1215:177;15241:43:0;;;;;;;;14036:1256;13958:1334;;;:::o;1874:240::-;1994:7;2055:12;2047:6;;;;2039:29;;;;-1:-1:-1;;;2039:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2090:5:0;;;1874:240::o;10945:1205::-;7330:8;:15;;-1:-1:-1;;7330:15:0;7341:4;7330:15;;;11043:4:::1;-1:-1:-1::0;9007:18:0;;;:9;:18;;;;;;11079:13:::1;::::0;:20:::1;::::0;11095:4:::1;11079:20;:::i;:::-;11064:12;:35;11060:75;;;11116:13;::::0;:19:::1;::::0;11132:3:::1;11116:19;:::i;:::-;11101:34;;11060:75;11146:20;11169:66;11233:1;11170:57;11212:14;;11170:37;11194:12;;11170:19;11187:1;11170:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:37::i;11169:66::-;11146:89;;11246:32;11281:48;11316:12;11281:30;11298:12;;11281;:16;;:30;;;;:::i;:48::-;11246:83:::0;-1:-1:-1;11340:14:0::1;11357:42;:12:::0;11246:83;11357:16:::1;:42::i;:::-;11340:59:::0;-1:-1:-1;11435:21:0::1;11467:24;11340:59:::0;11467:16:::1;:24::i;:::-;11502:20;11525:41;:21;11551:14:::0;11525:25:::1;:41::i;:::-;11502:64;;11577:19;11598:48;11615:30;11632:12;;11615;:16;;:30;;;;:::i;:::-;11598:12:::0;;:16:::1;:48::i;:::-;11577:69;;11657:29;11689;11705:12;;11689:11;:15;;:29;;;;:::i;:::-;11657:61:::0;-1:-1:-1;11732:34:0;;11729:103:::1;;11768:61;11781:24;11807:21;11768:12;:61::i;:::-;11888:12;::::0;11842:20:::1;::::0;11865:36:::1;::::0;:18:::1;:11:::0;11881:1:::1;11865:15;:18::i;:36::-;11842:59:::0;-1:-1:-1;11915:16:0;;11912:73:::1;;11941:18;::::0;11933:50:::1;::::0;-1:-1:-1;;;;;11941:18:0;;::::1;::::0;11933:50;::::1;;;::::0;11970:12;;11941:18:::1;11933:50:::0;11941:18;11933:50;11970:12;11941:18;11933:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11912:73;12021:21;12056:28:::0;;12053:90:::1;;12094:20;::::0;12086:55:::1;::::0;-1:-1:-1;;;;;12094:20:0;;::::1;::::0;12086:55;::::1;;;::::0;12125:15;;12094:20:::1;12086:55:::0;12094:20;12086:55;12125:15;12094:20;12086:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12053:90;-1:-1:-1::0;;7350:8:0;:16;;-1:-1:-1;;7350:16:0;;;-1:-1:-1;;;;;;;;10945:1205:0:o;4544:191::-;4618:16;4637:6;;-1:-1:-1;;;;;4654:17:0;;;-1:-1:-1;;;;;;4654:17:0;;;;;;4687:40;;4637:6;;;;;;;4687:40;;4618:16;4687:40;4607:128;4544:191;:::o;1556:98::-;1614:7;1641:5;1645:1;1641;:5;:::i;1662:98::-;1720:7;1747:5;1751:1;1747;:5;:::i;12158:343::-;12271:6;;12239:53;;12256:4;;-1:-1:-1;;;;;12271:6:0;12280:11;12239:8;:53::i;:::-;12303:6;;12444:18;;12303:190;;-1:-1:-1;;;12303:190:0;;12366:4;12303:190;;;9033:34:1;9083:18;;;9076:34;;;12303:6:0;9126:18:1;;;9119:34;;;9169:18;;;9162:34;-1:-1:-1;;;;;12444:18:0;;;9212:19:1;;;9205:44;12477:15:0;9265:19:1;;;9258:35;12303:6:0;;;:22;;12333:9;;8967:19:1;;12303:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12158:343;;:::o;1344:98::-;1402:7;1429:5;1433:1;1429;:5;:::i;10195:408::-;10340:12;;10413:13;;10403:4;10297;9007:18;;;:9;:18;;;;;;10445:8;;10297:4;;10330:22;;;;-1:-1:-1;10385:41:0;;10445:8;;10444:9;:24;;;;-1:-1:-1;10457:11:0;;-1:-1:-1;;;10457:11:0;;;;10444:24;:42;;;;-1:-1:-1;10472:14:0;;-1:-1:-1;;;10472:14:0;;;;10444:42;:54;;;;;10490:8;10444:54;:85;;;;-1:-1:-1;;;;;;10503:26:0;;;;;;:18;:26;;;;;;;;10502:27;10444:85;:106;;;;-1:-1:-1;10546:4:0;;-1:-1:-1;;;;;10533:17:0;;;10546:4;;10533:17;10444:106;:133;;;;;10567:10;;10554:9;;:23;;10444:133;:151;;;;;10581:14;10444:151;10437:158;10195:408;-1:-1:-1;;;;;;10195:408:0:o;12951:174::-;-1:-1:-1;;;;;13057:26:0;;13032:4;13057:26;;;:18;:26;;;;;;;;13056:27;:61;;;;-1:-1:-1;;;;;;;13088:29:0;;;;;:18;:29;;;;;;;;13087:30;;12951:174;-1:-1:-1;12951:174:0:o;13360:590::-;13446:7;13502:1;13469:30;13481:6;13489:9;13469:11;:30::i;:::-;:34;13466:462;;;13515:17;13535:59;13563:30;13575:6;13583:9;13563:11;:30::i;:::-;13546:11;;13535:23;;:6;;:10;:23::i;:59::-;13650:4;13632:24;;;;:9;:24;;;;;;13515:79;;-1:-1:-1;13632:39:0;;13515:79;13632:28;:39::i;:::-;13623:4;13605:24;;;;:9;:24;;;;;;;:66;;;;13687:42;;-1:-1:-1;;;;;13687:42:0;;;;;;;13719:9;1361:25:1;;1349:2;1334:18;;1215:177;13687:42:0;;;;;;;;13761:1;13743:7;;:20;:64;;;;;13800:7;;13767:30;13779:6;13787:9;13767:11;:30::i;:::-;:40;13743:64;13740:148;;;13809:77;13827:4;7720:42;13849:36;13877:7;;13849:23;13860:11;;13849:6;:10;;:23;;;;:::i;:36::-;13809:9;:77::i;:::-;13905:21;:6;13916:9;13905:10;:21::i;:::-;13898:28;;;;;13466:462;-1:-1:-1;13936:6:0;13360:590;-1:-1:-1;;13360:590:0:o;12509:434::-;12599:16;;;12613:1;12599:16;;;;;;;;12575:21;;12599:16;;;;;;;;;;-1:-1:-1;12599:16:0;12575:40;;12644:4;12626;12631:1;12626:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12626:23:0;;;:7;;;;;;;;;;:23;;;;12670:6;;:13;;;-1:-1:-1;;;12670:13:0;;;;:6;;;;;:11;;:13;;;;;12626:7;;12670:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12660:4;12665:1;12660:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12660:23:0;;;:7;;;;;;;;;:23;12726:6;;12694:53;;12711:4;;12726:6;12735:11;12694:8;:53::i;:::-;12758:6;;:177;;-1:-1:-1;;;12758:177:0;;-1:-1:-1;;;;;12758:6:0;;;;:57;;:177;;12830:11;;12758:6;;12872:4;;12899;;12919:15;;12758:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12564:379;12509:434;:::o;13133:219::-;13248:4;;13212:7;;-1:-1:-1;;;;;13248:4:0;;;13235:17;;;;13232:38;;-1:-1:-1;13261:7:0;;13254:14;;13232:38;13293:4;;-1:-1:-1;;;;;13293:4:0;;;13283:14;;;;13280:36;;-1:-1:-1;13306:8:0;;13299:15;;13280:36;-1:-1:-1;13333:11:0;;13133:219;;;;:::o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:248::-;1926:6;1934;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;-1:-1:-1;;2026:23:1;;;2096:2;2081:18;;;2068:32;;-1:-1:-1;1858:248:1:o;2300:247::-;2359:6;2412:2;2400:9;2391:7;2387:23;2383:32;2380:52;;;2428:1;2425;2418:12;2380:52;2467:9;2454:23;2486:31;2511:5;2486:31;:::i;2760:388::-;2828:6;2836;2889:2;2877:9;2868:7;2864:23;2860:32;2857:52;;;2905:1;2902;2895:12;2857:52;2944:9;2931:23;2963:31;2988:5;2963:31;:::i;:::-;3013:5;-1:-1:-1;3070:2:1;3055:18;;3042:32;3083:33;3042:32;3083:33;:::i;:::-;3135:7;3125:17;;;2760:388;;;;;:::o;3153:356::-;3355:2;3337:21;;;3374:18;;;3367:30;3433:34;3428:2;3413:18;;3406:62;3500:2;3485:18;;3153:356::o;3514:184::-;3584:6;3637:2;3625:9;3616:7;3612:23;3608:32;3605:52;;;3653:1;3650;3643:12;3605:52;-1:-1:-1;3676:16:1;;3514:184;-1:-1:-1;3514:184:1:o;3982:277::-;4049:6;4102:2;4090:9;4081:7;4077:23;4073:32;4070:52;;;4118:1;4115;4108:12;4070:52;4150:9;4144:16;4203:5;4196:13;4189:21;4182:5;4179:32;4169:60;;4225:1;4222;4215:12;4264:127;4325:10;4320:3;4316:20;4313:1;4306:31;4356:4;4353:1;4346:15;4380:4;4377:1;4370:15;4396:168;4469:9;;;4500;;4517:15;;;4511:22;;4497:37;4487:71;;4538:18;;:::i;4569:217::-;4609:1;4635;4625:132;;4679:10;4674:3;4670:20;4667:1;4660:31;4714:4;4711:1;4704:15;4742:4;4739:1;4732:15;4625:132;-1:-1:-1;4771:9:1;;4569:217::o;4791:251::-;4861:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:52;;;4930:1;4927;4920:12;4882:52;4962:9;4956:16;4981:31;5006:5;4981:31;:::i;6571:128::-;6638:9;;;6659:11;;;6656:37;;;6673:18;;:::i;7857:125::-;7922:9;;;7943:10;;;7940:36;;;7956:18;;:::i;9304:306::-;9392:6;9400;9408;9461:2;9449:9;9440:7;9436:23;9432:32;9429:52;;;9477:1;9474;9467:12;9429:52;9506:9;9500:16;9490:26;;9556:2;9545:9;9541:18;9535:25;9525:35;;9600:2;9589:9;9585:18;9579:25;9569:35;;9304:306;;;;;:::o;9747:127::-;9808:10;9803:3;9799:20;9796:1;9789:31;9839:4;9836:1;9829:15;9863:4;9860:1;9853:15;9879:980;10141:4;10189:3;10178:9;10174:19;10220:6;10209:9;10202:25;10246:2;10284:6;10279:2;10268:9;10264:18;10257:34;10327:3;10322:2;10311:9;10307:18;10300:31;10351:6;10386;10380:13;10417:6;10409;10402:22;10455:3;10444:9;10440:19;10433:26;;10494:2;10486:6;10482:15;10468:29;;10515:1;10525:195;10539:6;10536:1;10533:13;10525:195;;;10604:13;;-1:-1:-1;;;;;10600:39:1;10588:52;;10695:15;;;;10660:12;;;;10636:1;10554:9;10525:195;;;-1:-1:-1;;;;;;;10776:32:1;;;;10771:2;10756:18;;10749:60;-1:-1:-1;;;10840:3:1;10825:19;10818:35;10737:3;9879:980;-1:-1:-1;;;9879:980:1:o

Swarm Source

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