ETH Price: $3,389.89 (-2.01%)
Gas: 6 Gwei

Token

GPU-Block AI (GPU-Block AI)
 

Overview

Max Total Supply

100,000,000 GPU-Block AI

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
295,896.913927604 GPU-Block AI

Value
$0.00
0xdf6b160f628423d632e5e797519ec677f239b2a4
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:
GPUBlockAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
 ____ ____ ____ ____ ____ ____ ____ ____ ____ _________ ____ ____ 
||G |||P |||U |||- |||B |||l |||o |||c |||k |||       |||A |||I ||
||__|||__|||__|||__|||__|||__|||__|||__|||__|||_______|||__|||__||
|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_______\|/__\|/__\|

Fueling the Need for Cutting-Edge AI Solutions

GPU-Block is a groundbreaking decentralized platform designed to facilitate access to GPU, Blockchain and AI resources, enabling users to participate, contribute, and benefit from the evolving landscape of artificial intelligence.

Telegram : https://t.me/gpublockai
Website  : https://gpublock-ai.io
Twitter  : https://twitter.com/gpublockai
Medium   : https://medium.com/@gpublockai
Github   : https://github.com/gpublockai

*/

pragma solidity ^0.8.18;

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

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

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

}

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

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

contract GPUBlockAI  is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "GPU-Block AI";
    string private constant _symbol = "GPU-Block AI";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x46822291f0989682698F914B6810592296874D9E);
    address payable private _marketingAddress = payable(0x46822291f0989682698F914B6810592296874D9E);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 1000000 * 10**9;
    uint256 public _maxWalletSize = 2000000 * 10**9;
    uint256 public _swapTokensAtAmount = 500000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a67016345785d8a000060001962000369565b62000028906000196200038c565b6006556000600881905560146009819055600a829055600b819055600c829055600d819055600e91909155600f55601280546001600160a01b03199081167346822291f0989682698f914b6810592296874d9e9081179092556013805490911690911790556015805461ffff60a81b1916600160b01b17905566038d7ea4c6800060165566071afd498d00006017556601c6bf52634000601855348015620000cf57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b39190620003b4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002279190620003b4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029b9190620003b4565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200035a91815260200190565b60405180910390a350620003e6565b6000826200038757634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620003ae57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620003c757600080fd5b81516001600160a01b0381168114620003df57600080fd5b9392505050565b6119b780620003f66000396000f3fe6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd8014610467578063dd62ed3e1461047c578063ea1644d5146104c2578063f2fde38b146104e257600080fd5b8063a2a957bb146103f7578063a9059cbb14610417578063bfd792841461043757600080fd5b80637d1db4a5146103605780637f2feddc146103765780638da5cb5b146103a35780638f70ccf7146103c15780638f9a55c0146103e157806395d89b411461019157600080fd5b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec146102f657806370a082311461030b578063715018a61461032b57806374010ece1461034057600080fd5b8063313ce5671461029857806349bd5a5e146102b45780636d8aa8f8146102d457600080fd5b806306fdde0314610191578063095ea7b3146101d55780631694505e1461020557806318160ddd1461023d57806323b872dd146102625780632fd689e31461028257600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b50604080518082018252600c81526b4750552d426c6f636b20414960a01b602082015290516101cc9190611678565b60405180910390f35b3480156101e157600080fd5b506101f56101f03660046116db565b610502565b60405190151581526020016101cc565b34801561021157600080fd5b50601454610225906001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b34801561024957600080fd5b5067016345785d8a00005b6040519081526020016101cc565b34801561026e57600080fd5b506101f561027d366004611707565b610519565b34801561028e57600080fd5b5061025460185481565b3480156102a457600080fd5b50604051600981526020016101cc565b3480156102c057600080fd5b50601554610225906001600160a01b031681565b3480156102e057600080fd5b506102f46102ef366004611748565b610582565b005b34801561030257600080fd5b506102f46105d3565b34801561031757600080fd5b5061025461032636600461176a565b61061e565b34801561033757600080fd5b506102f4610640565b34801561034c57600080fd5b506102f461035b366004611787565b6106b4565b34801561036c57600080fd5b5061025460165481565b34801561038257600080fd5b5061025461039136600461176a565b60116020526000908152604090205481565b3480156103af57600080fd5b506000546001600160a01b0316610225565b3480156103cd57600080fd5b506102f46103dc366004611748565b6106e3565b3480156103ed57600080fd5b5061025460175481565b34801561040357600080fd5b506102f46104123660046117a0565b61072b565b34801561042357600080fd5b506101f56104323660046116db565b610769565b34801561044357600080fd5b506101f561045236600461176a565b60106020526000908152604090205460ff1681565b34801561047357600080fd5b506102f4610776565b34801561048857600080fd5b506102546104973660046117d2565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156104ce57600080fd5b506102f46104dd366004611787565b6107ca565b3480156104ee57600080fd5b506102f46104fd36600461176a565b6107f9565b600061050f3384846108e3565b5060015b92915050565b6000610526848484610a07565b61057884336105738560405180606001604052806028815260200161195a602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f49565b6108e3565b5060019392505050565b6000546001600160a01b031633146105b55760405162461bcd60e51b81526004016105ac9061180b565b60405180910390fd5b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061060857506013546001600160a01b0316336001600160a01b0316145b61061157600080fd5b4761061b81610f83565b50565b6001600160a01b03811660009081526002602052604081205461051390610fc1565b6000546001600160a01b0316331461066a5760405162461bcd60e51b81526004016105ac9061180b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106de5760405162461bcd60e51b81526004016105ac9061180b565b601655565b6000546001600160a01b0316331461070d5760405162461bcd60e51b81526004016105ac9061180b565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107555760405162461bcd60e51b81526004016105ac9061180b565b600893909355600a91909155600955600b55565b600061050f338484610a07565b6012546001600160a01b0316336001600160a01b031614806107ab57506013546001600160a01b0316336001600160a01b0316145b6107b457600080fd5b60006107bf3061061e565b905061061b81611045565b6000546001600160a01b031633146107f45760405162461bcd60e51b81526004016105ac9061180b565b601755565b6000546001600160a01b031633146108235760405162461bcd60e51b81526004016105ac9061180b565b6001600160a01b0381166108885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109455760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ac565b6001600160a01b0382166109a65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ac565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ac565b6001600160a01b038216610acd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ac565b60008111610b2f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ac565b6000546001600160a01b03848116911614801590610b5b57506000546001600160a01b03838116911614155b15610e3c57601554600160a01b900460ff16610bf4576000546001600160a01b03848116911614610bf45760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105ac565b601654811115610c465760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105ac565b6001600160a01b03831660009081526010602052604090205460ff16158015610c8857506001600160a01b03821660009081526010602052604090205460ff16155b610ce05760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105ac565b6015546001600160a01b03838116911614610d655760175481610d028461061e565b610d0c9190611856565b10610d655760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105ac565b6000610d703061061e565b601854601654919250821015908210610d895760165491505b808015610da05750601554600160a81b900460ff16155b8015610dba57506015546001600160a01b03868116911614155b8015610dcf5750601554600160b01b900460ff165b8015610df457506001600160a01b03851660009081526005602052604090205460ff16155b8015610e1957506001600160a01b03841660009081526005602052604090205460ff16155b15610e3957610e2782611045565b478015610e3757610e3747610f83565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610e7e57506001600160a01b03831660009081526005602052604090205460ff165b80610eb057506015546001600160a01b03858116911614801590610eb057506015546001600160a01b03848116911614155b15610ebd57506000610f37565b6015546001600160a01b038581169116148015610ee857506014546001600160a01b03848116911614155b15610efa57600854600c55600954600d555b6015546001600160a01b038481169116148015610f2557506014546001600160a01b03858116911614155b15610f3757600a54600c55600b54600d555b610f43848484846111bf565b50505050565b60008184841115610f6d5760405162461bcd60e51b81526004016105ac9190611678565b506000610f7a8486611869565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fbd573d6000803e3d6000fd5b5050565b60006006548211156110285760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105ac565b60006110326111ed565b905061103e8382611210565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061108d5761108d61187c565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110a9190611892565b8160018151811061111d5761111d61187c565b6001600160a01b03928316602091820292909201015260145461114391309116846108e3565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061117c9085906000908690309042906004016118af565b600060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b806111cc576111cc611252565b6111d7848484611280565b80610f4357610f43600e54600c55600f54600d55565b60008060006111fa611377565b90925090506112098282611210565b9250505090565b600061103e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113b7565b600c541580156112625750600d54155b1561126957565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611292876113e5565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112c49087611442565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546112f39086611484565b6001600160a01b038916600090815260026020526040902055611315816114e3565b61131f848361152d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161136491815260200190565b60405180910390a3505050505050505050565b600654600090819067016345785d8a00006113928282611210565b8210156113ae5750506006549267016345785d8a000092509050565b90939092509050565b600081836113d85760405162461bcd60e51b81526004016105ac9190611678565b506000610f7a8486611920565b60008060008060008060008060006114028a600c54600d54611551565b92509250925060006114126111ed565b905060008060006114258e8787876115a6565b919e509c509a509598509396509194505050505091939550919395565b600061103e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f49565b6000806114918385611856565b90508381101561103e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ac565b60006114ed6111ed565b905060006114fb83836115f6565b306000908152600260205260409020549091506115189082611484565b30600090815260026020526040902055505050565b60065461153a9083611442565b60065560075461154a9082611484565b6007555050565b600080808061156b606461156589896115f6565b90611210565b9050600061157e60646115658a896115f6565b90506000611596826115908b86611442565b90611442565b9992985090965090945050505050565b60008080806115b588866115f6565b905060006115c388876115f6565b905060006115d188886115f6565b905060006115e3826115908686611442565b939b939a50919850919650505050505050565b60008260000361160857506000610513565b60006116148385611942565b9050826116218583611920565b1461103e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ac565b600060208083528351808285015260005b818110156116a557858101830151858201604001528201611689565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461061b57600080fd5b600080604083850312156116ee57600080fd5b82356116f9816116c6565b946020939093013593505050565b60008060006060848603121561171c57600080fd5b8335611727816116c6565b92506020840135611737816116c6565b929592945050506040919091013590565b60006020828403121561175a57600080fd5b8135801515811461103e57600080fd5b60006020828403121561177c57600080fd5b813561103e816116c6565b60006020828403121561179957600080fd5b5035919050565b600080600080608085870312156117b657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156117e557600080fd5b82356117f0816116c6565b91506020830135611800816116c6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561051357610513611840565b8181038181111561051357610513611840565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118a457600080fd5b815161103e816116c6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118ff5784516001600160a01b0316835293830193918301916001016118da565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261193d57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105135761051361184056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b7618059eb6aee805977c3cd839b89ee65b286a541e9645d3e597041a850040564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd8014610467578063dd62ed3e1461047c578063ea1644d5146104c2578063f2fde38b146104e257600080fd5b8063a2a957bb146103f7578063a9059cbb14610417578063bfd792841461043757600080fd5b80637d1db4a5146103605780637f2feddc146103765780638da5cb5b146103a35780638f70ccf7146103c15780638f9a55c0146103e157806395d89b411461019157600080fd5b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec146102f657806370a082311461030b578063715018a61461032b57806374010ece1461034057600080fd5b8063313ce5671461029857806349bd5a5e146102b45780636d8aa8f8146102d457600080fd5b806306fdde0314610191578063095ea7b3146101d55780631694505e1461020557806318160ddd1461023d57806323b872dd146102625780632fd689e31461028257600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b50604080518082018252600c81526b4750552d426c6f636b20414960a01b602082015290516101cc9190611678565b60405180910390f35b3480156101e157600080fd5b506101f56101f03660046116db565b610502565b60405190151581526020016101cc565b34801561021157600080fd5b50601454610225906001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b34801561024957600080fd5b5067016345785d8a00005b6040519081526020016101cc565b34801561026e57600080fd5b506101f561027d366004611707565b610519565b34801561028e57600080fd5b5061025460185481565b3480156102a457600080fd5b50604051600981526020016101cc565b3480156102c057600080fd5b50601554610225906001600160a01b031681565b3480156102e057600080fd5b506102f46102ef366004611748565b610582565b005b34801561030257600080fd5b506102f46105d3565b34801561031757600080fd5b5061025461032636600461176a565b61061e565b34801561033757600080fd5b506102f4610640565b34801561034c57600080fd5b506102f461035b366004611787565b6106b4565b34801561036c57600080fd5b5061025460165481565b34801561038257600080fd5b5061025461039136600461176a565b60116020526000908152604090205481565b3480156103af57600080fd5b506000546001600160a01b0316610225565b3480156103cd57600080fd5b506102f46103dc366004611748565b6106e3565b3480156103ed57600080fd5b5061025460175481565b34801561040357600080fd5b506102f46104123660046117a0565b61072b565b34801561042357600080fd5b506101f56104323660046116db565b610769565b34801561044357600080fd5b506101f561045236600461176a565b60106020526000908152604090205460ff1681565b34801561047357600080fd5b506102f4610776565b34801561048857600080fd5b506102546104973660046117d2565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156104ce57600080fd5b506102f46104dd366004611787565b6107ca565b3480156104ee57600080fd5b506102f46104fd36600461176a565b6107f9565b600061050f3384846108e3565b5060015b92915050565b6000610526848484610a07565b61057884336105738560405180606001604052806028815260200161195a602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f49565b6108e3565b5060019392505050565b6000546001600160a01b031633146105b55760405162461bcd60e51b81526004016105ac9061180b565b60405180910390fd5b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061060857506013546001600160a01b0316336001600160a01b0316145b61061157600080fd5b4761061b81610f83565b50565b6001600160a01b03811660009081526002602052604081205461051390610fc1565b6000546001600160a01b0316331461066a5760405162461bcd60e51b81526004016105ac9061180b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106de5760405162461bcd60e51b81526004016105ac9061180b565b601655565b6000546001600160a01b0316331461070d5760405162461bcd60e51b81526004016105ac9061180b565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107555760405162461bcd60e51b81526004016105ac9061180b565b600893909355600a91909155600955600b55565b600061050f338484610a07565b6012546001600160a01b0316336001600160a01b031614806107ab57506013546001600160a01b0316336001600160a01b0316145b6107b457600080fd5b60006107bf3061061e565b905061061b81611045565b6000546001600160a01b031633146107f45760405162461bcd60e51b81526004016105ac9061180b565b601755565b6000546001600160a01b031633146108235760405162461bcd60e51b81526004016105ac9061180b565b6001600160a01b0381166108885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109455760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ac565b6001600160a01b0382166109a65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ac565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ac565b6001600160a01b038216610acd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ac565b60008111610b2f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ac565b6000546001600160a01b03848116911614801590610b5b57506000546001600160a01b03838116911614155b15610e3c57601554600160a01b900460ff16610bf4576000546001600160a01b03848116911614610bf45760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105ac565b601654811115610c465760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105ac565b6001600160a01b03831660009081526010602052604090205460ff16158015610c8857506001600160a01b03821660009081526010602052604090205460ff16155b610ce05760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105ac565b6015546001600160a01b03838116911614610d655760175481610d028461061e565b610d0c9190611856565b10610d655760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105ac565b6000610d703061061e565b601854601654919250821015908210610d895760165491505b808015610da05750601554600160a81b900460ff16155b8015610dba57506015546001600160a01b03868116911614155b8015610dcf5750601554600160b01b900460ff165b8015610df457506001600160a01b03851660009081526005602052604090205460ff16155b8015610e1957506001600160a01b03841660009081526005602052604090205460ff16155b15610e3957610e2782611045565b478015610e3757610e3747610f83565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610e7e57506001600160a01b03831660009081526005602052604090205460ff165b80610eb057506015546001600160a01b03858116911614801590610eb057506015546001600160a01b03848116911614155b15610ebd57506000610f37565b6015546001600160a01b038581169116148015610ee857506014546001600160a01b03848116911614155b15610efa57600854600c55600954600d555b6015546001600160a01b038481169116148015610f2557506014546001600160a01b03858116911614155b15610f3757600a54600c55600b54600d555b610f43848484846111bf565b50505050565b60008184841115610f6d5760405162461bcd60e51b81526004016105ac9190611678565b506000610f7a8486611869565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fbd573d6000803e3d6000fd5b5050565b60006006548211156110285760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105ac565b60006110326111ed565b905061103e8382611210565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061108d5761108d61187c565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110a9190611892565b8160018151811061111d5761111d61187c565b6001600160a01b03928316602091820292909201015260145461114391309116846108e3565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061117c9085906000908690309042906004016118af565b600060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b806111cc576111cc611252565b6111d7848484611280565b80610f4357610f43600e54600c55600f54600d55565b60008060006111fa611377565b90925090506112098282611210565b9250505090565b600061103e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113b7565b600c541580156112625750600d54155b1561126957565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611292876113e5565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112c49087611442565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546112f39086611484565b6001600160a01b038916600090815260026020526040902055611315816114e3565b61131f848361152d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161136491815260200190565b60405180910390a3505050505050505050565b600654600090819067016345785d8a00006113928282611210565b8210156113ae5750506006549267016345785d8a000092509050565b90939092509050565b600081836113d85760405162461bcd60e51b81526004016105ac9190611678565b506000610f7a8486611920565b60008060008060008060008060006114028a600c54600d54611551565b92509250925060006114126111ed565b905060008060006114258e8787876115a6565b919e509c509a509598509396509194505050505091939550919395565b600061103e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f49565b6000806114918385611856565b90508381101561103e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ac565b60006114ed6111ed565b905060006114fb83836115f6565b306000908152600260205260409020549091506115189082611484565b30600090815260026020526040902055505050565b60065461153a9083611442565b60065560075461154a9082611484565b6007555050565b600080808061156b606461156589896115f6565b90611210565b9050600061157e60646115658a896115f6565b90506000611596826115908b86611442565b90611442565b9992985090965090945050505050565b60008080806115b588866115f6565b905060006115c388876115f6565b905060006115d188886115f6565b905060006115e3826115908686611442565b939b939a50919850919650505050505050565b60008260000361160857506000610513565b60006116148385611942565b9050826116218583611920565b1461103e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ac565b600060208083528351808285015260005b818110156116a557858101830151858201604001528201611689565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461061b57600080fd5b600080604083850312156116ee57600080fd5b82356116f9816116c6565b946020939093013593505050565b60008060006060848603121561171c57600080fd5b8335611727816116c6565b92506020840135611737816116c6565b929592945050506040919091013590565b60006020828403121561175a57600080fd5b8135801515811461103e57600080fd5b60006020828403121561177c57600080fd5b813561103e816116c6565b60006020828403121561179957600080fd5b5035919050565b600080600080608085870312156117b657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156117e557600080fd5b82356117f0816116c6565b91506020830135611800816116c6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561051357610513611840565b8181038181111561051357610513611840565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118a457600080fd5b815161103e816116c6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118ff5784516001600160a01b0316835293830193918301916001016118da565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261193d57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105135761051361184056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b7618059eb6aee805977c3cd839b89ee65b286a541e9645d3e597041a850040564736f6c63430008120033

Deployed Bytecode Sourcemap

4833:12795:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7339:83;;;;;;;;;;-1:-1:-1;7409:5:0;;;;;;;;;;;-1:-1:-1;;;7409:5:0;;;;7339:83;;;;7409:5;7339:83;:::i;:::-;;;;;;;;8264:193;;;;;;;;;;-1:-1:-1;8264:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8264:193:0;1023:187:1;6190:41:0;;;;;;;;;;-1:-1:-1;6190:41:0;;;;-1:-1:-1;;;;;6190:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;6190:41:0;1215:229:1;7616:95:0;;;;;;;;;;-1:-1:-1;5395:17:0;7616:95;;;1595:25:1;;;1583:2;1568:18;7616:95:0;1449:177:1;8465:446:0;;;;;;;;;;-1:-1:-1;8465:446:0;;;;;:::i;:::-;;:::i;6486:51::-;;;;;;;;;;;;;;;;7525:83;;;;;;;;;;-1:-1:-1;7525:83:0;;5069:1;2234:36:1;;2222:2;2207:18;7525:83:0;2092:184:1;6238:28:0;;;;;;;;;;-1:-1:-1;6238:28:0;;;;-1:-1:-1;;;;;6238:28:0;;;17252:101;;;;;;;;;;-1:-1:-1;17252:101:0;;;;;:::i;:::-;;:::i;:::-;;13268:235;;;;;;;;;;;;;:::i;7719:138::-;;;;;;;;;;-1:-1:-1;7719:138:0;;;;;:::i;:::-;;:::i;2320:148::-;;;;;;;;;;;;;:::i;17392:108::-;;;;;;;;;;-1:-1:-1;17392:108:0;;;;;:::i;:::-;;:::i;6380:45::-;;;;;;;;;;;;;;;;5932:43;;;;;;;;;;-1:-1:-1;5932:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;2106:79;;;;;;;;;;-1:-1:-1;2144:7:0;2171:6;-1:-1:-1;;;;;2171:6:0;2106:79;;12915:101;;;;;;;;;;-1:-1:-1;12915:101:0;;;;;:::i;:::-;;:::i;6432:47::-;;;;;;;;;;;;;;;;16909:291;;;;;;;;;;-1:-1:-1;16909:291:0;;;;;:::i;:::-;;:::i;7865:199::-;;;;;;;;;;-1:-1:-1;7865:199:0;;;;;:::i;:::-;;:::i;5894:36::-;;;;;;;;;;-1:-1:-1;5894:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13024:236;;;;;;;;;;;;;:::i;8072:184::-;;;;;;;;;;-1:-1:-1;8072:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8221:18:0;;;8189:7;8221:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8072:184;17508:115;;;;;;;;;;-1:-1:-1;17508:115:0;;;;;:::i;:::-;;:::i;2476:244::-;;;;;;;;;;-1:-1:-1;2476:244:0;;;;;:::i;:::-;;:::i;8264:193::-;8366:4;8388:39;945:10;8411:7;8420:6;8388:8;:39::i;:::-;-1:-1:-1;8445:4:0;8264:193;;;;;:::o;8465:446::-;8597:4;8614:36;8624:6;8632:9;8643:6;8614:9;:36::i;:::-;8661:220;8684:6;945:10;8732:138;8788:6;8732:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8732:19:0;;;;;;:11;:19;;;;;;;;945:10;8732:33;;;;;;;;;;:37;:138::i;:::-;8661:8;:220::i;:::-;-1:-1:-1;8899:4:0;8465:446;;;;;:::o;17252:101::-;2233:6;;-1:-1:-1;;;;;2233:6:0;945:10;2233:22;2225:67;;;;-1:-1:-1;;;2225:67:0;;;;;;;:::i;:::-;;;;;;;;;17319:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17319:26:0::1;-1:-1:-1::0;;;;17319:26:0;;::::1;::::0;;;::::1;::::0;;17252:101::o;13268:235::-;13334:19;;-1:-1:-1;;;;;13334:19:0;945:10;-1:-1:-1;;;;;13318:35:0;;:72;;;-1:-1:-1;13373:17:0;;-1:-1:-1;;;;;13373:17:0;945:10;-1:-1:-1;;;;;13357:33:0;;13318:72;13310:81;;;;;;13431:21;13463:32;13431:21;13463:12;:32::i;:::-;13299:204;13268:235::o;7719:138::-;-1:-1:-1;;;;;7832:16:0;;7785:7;7832:16;;;:7;:16;;;;;;7812:37;;:19;:37::i;2320:148::-;2233:6;;-1:-1:-1;;;;;2233:6:0;945:10;2233:22;2225:67;;;;-1:-1:-1;;;2225:67:0;;;;;;;:::i;:::-;2427:1:::1;2411:6:::0;;2390:40:::1;::::0;-1:-1:-1;;;;;2411:6:0;;::::1;::::0;2390:40:::1;::::0;2427:1;;2390:40:::1;2458:1;2441:19:::0;;-1:-1:-1;;;;;;2441:19:0::1;::::0;;2320:148::o;17392:108::-;2233:6;;-1:-1:-1;;;;;2233:6:0;945:10;2233:22;2225:67;;;;-1:-1:-1;;;2225:67:0;;;;;;;:::i;:::-;17466:12:::1;:26:::0;17392:108::o;12915:101::-;2233:6;;-1:-1:-1;;;;;2233:6:0;945:10;2233:22;2225:67;;;;-1:-1:-1;;;2225:67:0;;;;;;;:::i;:::-;12982:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12982:26:0::1;-1:-1:-1::0;;;;12982:26:0;;::::1;::::0;;;::::1;::::0;;12915:101::o;16909:291::-;2233:6;;-1:-1:-1;;;;;2233:6:0;945:10;2233:22;2225:67;;;;-1:-1:-1;;;2225:67:0;;;;;;;:::i;:::-;17043:14:::1;:30:::0;;;;17084:15:::1;:32:::0;;;;17127:12:::1;:26:::0;17164:13:::1;:28:::0;16909:291::o;7865:199::-;7970:4;7992:42;945:10;8016:9;8027:6;7992:9;:42::i;13024:236::-;13090:19;;-1:-1:-1;;;;;13090:19:0;945:10;-1:-1:-1;;;;;13074:35:0;;:72;;;-1:-1:-1;13129:17:0;;-1:-1:-1;;;;;13129:17:0;945:10;-1:-1:-1;;;;;13113:33:0;;13074:72;13066:81;;;;;;13158:23;13184:24;13202:4;13184:9;:24::i;:::-;13158:50;;13219:33;13236:15;13219:16;:33::i;17508:115::-;2233:6;;-1:-1:-1;;;;;2233:6:0;945:10;2233:22;2225:67;;;;-1:-1:-1;;;2225:67:0;;;;;;;:::i;:::-;17585:14:::1;:30:::0;17508:115::o;2476:244::-;2233:6;;-1:-1:-1;;;;;2233:6:0;945:10;2233:22;2225:67;;;;-1:-1:-1;;;2225:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2565:22:0;::::1;2557:73;;;::::0;-1:-1:-1;;;2557:73:0;;4550:2:1;2557:73:0::1;::::0;::::1;4532:21:1::0;4589:2;4569:18;;;4562:30;4628:34;4608:18;;;4601:62;-1:-1:-1;;;4679:18:1;;;4672:36;4725:19;;2557:73:0::1;4348:402:1::0;2557:73:0::1;2667:6;::::0;;2646:38:::1;::::0;-1:-1:-1;;;;;2646:38:0;;::::1;::::0;2667:6;::::1;::::0;2646:38:::1;::::0;::::1;2695:6;:17:::0;;-1:-1:-1;;;;;;2695:17:0::1;-1:-1:-1::0;;;;;2695:17:0;;;::::1;::::0;;;::::1;::::0;;2476:244::o;9602:369::-;-1:-1:-1;;;;;9729:19:0;;9721:68;;;;-1:-1:-1;;;9721:68:0;;4957:2:1;9721:68:0;;;4939:21:1;4996:2;4976:18;;;4969:30;5035:34;5015:18;;;5008:62;-1:-1:-1;;;5086:18:1;;;5079:34;5130:19;;9721:68:0;4755:400:1;9721:68:0;-1:-1:-1;;;;;9808:21:0;;9800:68;;;;-1:-1:-1;;;9800:68:0;;5362:2:1;9800:68:0;;;5344:21:1;5401:2;5381:18;;;5374:30;5440:34;5420:18;;;5413:62;-1:-1:-1;;;5491:18:1;;;5484:32;5533:19;;9800:68:0;5160:398:1;9800:68:0;-1:-1:-1;;;;;9879:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9931:32;;1595:25:1;;;9931:32:0;;1568:18:1;9931:32:0;;;;;;;9602:369;;;:::o;9979:2330::-;-1:-1:-1;;;;;10101:18:0;;10093:68;;;;-1:-1:-1;;;10093:68:0;;5765:2:1;10093:68:0;;;5747:21:1;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;-1:-1:-1;;;5894:18:1;;;5887:35;5939:19;;10093:68:0;5563:401:1;10093:68:0;-1:-1:-1;;;;;10180:16:0;;10172:64;;;;-1:-1:-1;;;10172:64:0;;6171:2:1;10172:64:0;;;6153:21:1;6210:2;6190:18;;;6183:30;6249:34;6229:18;;;6222:62;-1:-1:-1;;;6300:18:1;;;6293:33;6343:19;;10172:64:0;5969:399:1;10172:64:0;10264:1;10255:6;:10;10247:64;;;;-1:-1:-1;;;10247:64:0;;6575:2:1;10247:64:0;;;6557:21:1;6614:2;6594:18;;;6587:30;6653:34;6633:18;;;6626:62;-1:-1:-1;;;6704:18:1;;;6697:39;6753:19;;10247:64:0;6373:405:1;10247:64:0;2144:7;2171:6;-1:-1:-1;;;;;10328:15:0;;;2171:6;;10328:15;;;;:32;;-1:-1:-1;2144:7:0;2171:6;-1:-1:-1;;;;;10347:13:0;;;2171:6;;10347:13;;10328:32;10324:1259;;;10417:11;;-1:-1:-1;;;10417:11:0;;;;10412:144;;2144:7;2171:6;-1:-1:-1;;;;;10457:15:0;;;2171:6;;10457:15;10449:91;;;;-1:-1:-1;;;10449:91:0;;6985:2:1;10449:91:0;;;6967:21:1;7024:2;7004:18;;;6997:30;7063:34;7043:18;;;7036:62;7134:33;7114:18;;;7107:61;7185:19;;10449:91:0;6783:427:1;10449:91:0;10590:12;;10580:6;:22;;10572:63;;;;-1:-1:-1;;;10572:63:0;;7417:2:1;10572:63:0;;;7399:21:1;7456:2;7436:18;;;7429:30;7495;7475:18;;;7468:58;7543:18;;10572:63:0;7215:352:1;10572:63:0;-1:-1:-1;;;;;10659:10:0;;;;;;:4;:10;;;;;;;;10658:11;:24;;;;-1:-1:-1;;;;;;10674:8:0;;;;;;:4;:8;;;;;;;;10673:9;10658:24;10650:72;;;;-1:-1:-1;;;10650:72:0;;7774:2:1;10650:72:0;;;7756:21:1;7813:2;7793:18;;;7786:30;7852:34;7832:18;;;7825:62;-1:-1:-1;;;7903:18:1;;;7896:33;7946:19;;10650:72:0;7572:399:1;10650:72:0;10748:13;;-1:-1:-1;;;;;10742:19:0;;;10748:13;;10742:19;10739:146;;10815:14;;10806:6;10790:13;10800:2;10790:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10782:87;;;;-1:-1:-1;;;10782:87:0;;8440:2:1;10782:87:0;;;8422:21:1;8479:2;8459:18;;;8452:30;8518:34;8498:18;;;8491:62;-1:-1:-1;;;8569:18:1;;;8562:33;8612:19;;10782:87:0;8238:399:1;10782:87:0;10901:28;10932:24;10950:4;10932:9;:24::i;:::-;11010:19;;11073:12;;10901:55;;-1:-1:-1;10986:43:0;;;;11049:36;;11046:124;;11142:12;;11119:35;;11046:124;11190:7;:18;;;;-1:-1:-1;11202:6:0;;-1:-1:-1;;;11202:6:0;;;;11201:7;11190:18;:43;;;;-1:-1:-1;11220:13:0;;-1:-1:-1;;;;;11212:21:0;;;11220:13;;11212:21;;11190:43;:58;;;;-1:-1:-1;11237:11:0;;-1:-1:-1;;;11237:11:0;;;;11190:58;:87;;;;-1:-1:-1;;;;;;11253:24:0;;;;;;:18;:24;;;;;;;;11252:25;11190:87;:114;;;;-1:-1:-1;;;;;;11282:22:0;;;;;;:18;:22;;;;;;;;11281:23;11190:114;11186:386;;;11325:38;11342:20;11325:16;:38::i;:::-;11411:21;11455:22;;11451:106;;11502:35;11515:21;11502:12;:35::i;:::-;11306:266;11186:386;10362:1221;;10324:1259;-1:-1:-1;;;;;11659:24:0;;11595:12;11659:24;;;:18;:24;;;;;;11610:4;;11659:24;;;:50;;-1:-1:-1;;;;;;11687:22:0;;;;;;:18;:22;;;;;;;;11659:50;11658:102;;;-1:-1:-1;11723:13:0;;-1:-1:-1;;;;;11715:21:0;;;11723:13;;11715:21;;;;:44;;-1:-1:-1;11746:13:0;;-1:-1:-1;;;;;11740:19:0;;;11746:13;;11740:19;;11715:44;11654:594;;;-1:-1:-1;11787:5:0;11654:594;;;11870:13;;-1:-1:-1;;;;;11862:21:0;;;11870:13;;11862:21;:55;;;;-1:-1:-1;11901:15:0;;-1:-1:-1;;;;;11887:30:0;;;11901:15;;11887:30;;11862:55;11859:162;;;11950:14;;11938:9;:26;11993:12;;11983:7;:22;11859:162;12080:13;;-1:-1:-1;;;;;12074:19:0;;;12080:13;;12074:19;:55;;;;-1:-1:-1;12113:15:0;;-1:-1:-1;;;;;12097:32:0;;;12113:15;;12097:32;;12074:55;12070:165;;;12162:15;;12150:9;:27;12206:13;;12196:7;:23;12070:165;12260:41;12275:4;12281:2;12285:6;12293:7;12260:14;:41::i;:::-;10082:2227;9979:2330;;;:::o;3084:224::-;3204:7;3240:12;3232:6;;;;3224:29;;;;-1:-1:-1;;;3224:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3264:9:0;3276:5;3280:1;3276;:5;:::i;:::-;3264:17;3084:224;-1:-1:-1;;;;;3084:224:0:o;12808:99::-;12865:17;;:34;;-1:-1:-1;;;;;12865:17:0;;;;:34;;;;;12892:6;;12865:17;:34;:17;:34;12892:6;12865:17;:34;;;;;;;;;;;;;;;;;;;;;12808:99;:::o;8919:323::-;9014:7;9072;;9061;:18;;9039:110;;;;-1:-1:-1;;;9039:110:0;;8977:2:1;9039:110:0;;;8959:21:1;9016:2;8996:18;;;8989:30;9055:34;9035:18;;;9028:62;-1:-1:-1;;;9106:18:1;;;9099:40;9156:19;;9039:110:0;8775:406:1;9039:110:0;9160:19;9182:10;:8;:10::i;:::-;9160:32;-1:-1:-1;9210:24:0;:7;9160:32;9210:11;:24::i;:::-;9203:31;8919:323;-1:-1:-1;;;8919:323:0:o;12317:483::-;6631:6;:13;;-1:-1:-1;;;;6631:13:0;-1:-1:-1;;;6631:13:0;;;12419:16:::1;::::0;;12433:1:::1;12419:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12419:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12419:16:0::1;12395:40;;12464:4;12446;12451:1;12446:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12446:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12490:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12490:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12446:7;;12490:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12480:4;12485:1;12480:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12480:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12555:15:::1;::::0;12523:62:::1;::::0;12540:4:::1;::::0;12555:15:::1;12573:11:::0;12523:8:::1;:62::i;:::-;12596:15;::::0;:196:::1;::::0;-1:-1:-1;;;12596:196:0;;-1:-1:-1;;;;;12596:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12677:11;;12596:15:::1;::::0;12719:4;;12746::::1;::::0;12766:15:::1;::::0;12596:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6667:6:0;:14;;-1:-1:-1;;;;6667:14:0;;;-1:-1:-1;;;;12317:483:0:o;13511:282::-;13667:7;13662:28;;13676:14;:12;:14::i;:::-;13701:44;13719:6;13727:9;13738:6;13701:17;:44::i;:::-;13761:7;13756:29;;13770:15;9533:17;;9521:9;:29;9571:15;;9561:7;:25;9477:117;16472:164;16514:7;16535:15;16552;16571:19;:17;:19::i;:::-;16534:56;;-1:-1:-1;16534:56:0;-1:-1:-1;16608:20:0;16534:56;;16608:11;:20::i;:::-;16601:27;;;;16472:164;:::o;3570:132::-;3628:7;3655:39;3659:1;3662;3655:39;;;;;;;;;;;;;;;;;:3;:39::i;9250:219::-;9297:9;;:14;:30;;;;-1:-1:-1;9315:7:0;;:12;9297:30;9293:43;;;9250:219::o;9293:43::-;9368:9;;;9348:17;:29;9406:7;;;9388:15;:25;-1:-1:-1;9426:13:0;;;;9450:11;9250:219::o;13801:610::-;13948:15;13978:23;14016:12;14043:23;14081:12;14108:13;14135:19;14146:7;14135:10;:19::i;:::-;-1:-1:-1;;;;;14183:15:0;;;;;;:7;:15;;;;;;13933:221;;-1:-1:-1;13933:221:0;;-1:-1:-1;13933:221:0;;-1:-1:-1;13933:221:0;-1:-1:-1;13933:221:0;-1:-1:-1;13933:221:0;-1:-1:-1;14183:28:0;;13933:221;14183:19;:28::i;:::-;-1:-1:-1;;;;;14165:15:0;;;;;;;:7;:15;;;;;;:46;;;;14243:18;;;;;;;:39;;14266:15;14243:22;:39::i;:::-;-1:-1:-1;;;;;14222:18:0;;;;;;:7;:18;;;;;:60;14293:16;14303:5;14293:9;:16::i;:::-;14320:23;14332:4;14338;14320:11;:23::i;:::-;14376:9;-1:-1:-1;;;;;14359:44:0;14368:6;-1:-1:-1;;;;;14359:44:0;;14387:15;14359:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;14359:44:0;;;;;;;;13922:489;;;;;;13801:610;;;:::o;16644:257::-;16742:7;;16695;;;;5395:17;16810:20;16742:7;5395:17;16810:11;:20::i;:::-;16800:7;:30;16796:61;;;-1:-1:-1;;16840:7:0;;;5395:17;;-1:-1:-1;16644:257:0;-1:-1:-1;16644:257:0:o;16796:61::-;16876:7;;16885;;-1:-1:-1;16644:257:0;-1:-1:-1;16644:257:0:o;3710:223::-;3830:7;3865:12;3858:5;3850:28;;;;-1:-1:-1;;;3850:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3889:9:0;3901:5;3905:1;3901;:5;:::i;14830:615::-;14930:7;14952;14974;14996;15018;15040;15076:23;15101:12;15115:13;15145:40;15157:7;15166:9;;15177:7;;15145:11;:40::i;:::-;15075:110;;;;;;15196:19;15218:10;:8;:10::i;:::-;15196:32;;15240:15;15257:23;15282:12;15311:46;15323:7;15332:4;15338:5;15345:11;15311;:46::i;:::-;15239:118;;-1:-1:-1;15239:118:0;-1:-1:-1;15239:118:0;-1:-1:-1;15408:15:0;;-1:-1:-1;15425:4:0;;-1:-1:-1;15431:5:0;;-1:-1:-1;;;;;14830:615:0;;;;;;;:::o;2940:136::-;2998:7;3025:43;3029:1;3032;3025:43;;;;;;;;;;;;;;;;;:3;:43::i;2753:179::-;2811:7;;2843:5;2847:1;2843;:5;:::i;:::-;2831:17;;2872:1;2867;:6;;2859:46;;;;-1:-1:-1;;;2859:46:0;;11115:2:1;2859:46:0;;;11097:21:1;11154:2;11134:18;;;11127:30;11193:29;11173:18;;;11166:57;11240:18;;2859:46:0;10913:351:1;14419:211:0;14472:19;14494:10;:8;:10::i;:::-;14472:32;-1:-1:-1;14515:13:0;14531:22;:5;14472:32;14531:9;:22::i;:::-;14605:4;14589:22;;;;:7;:22;;;;;;14515:38;;-1:-1:-1;14589:33:0;;14515:38;14589:26;:33::i;:::-;14580:4;14564:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14419:211:0:o;14638:147::-;14716:7;;:17;;14728:4;14716:11;:17::i;:::-;14706:7;:27;14757:10;;:20;;14772:4;14757:14;:20::i;:::-;14744:10;:33;-1:-1:-1;;14638:147:0:o;15453:469::-;15622:7;;;;15716:30;15742:3;15716:21;:7;15728:8;15716:11;:21::i;:::-;:25;;:30::i;:::-;15701:45;-1:-1:-1;15757:13:0;15773:28;15797:3;15773:19;:7;15785:6;15773:11;:19::i;:28::-;15757:44;-1:-1:-1;15812:23:0;15838:28;15757:44;15838:17;:7;15850:4;15838:11;:17::i;:::-;:21;;:28::i;:::-;15812:54;15902:4;;-1:-1:-1;15908:5:0;;-1:-1:-1;15453:469:0;;-1:-1:-1;;;;;15453:469:0:o;15930:534::-;16124:7;;;;16221:24;:7;16233:11;16221;:24::i;:::-;16203:42;-1:-1:-1;16256:12:0;16271:21;:4;16280:11;16271:8;:21::i;:::-;16256:36;-1:-1:-1;16303:13:0;16319:22;:5;16329:11;16319:9;:22::i;:::-;16303:38;-1:-1:-1;16352:23:0;16378:28;16303:38;16378:17;:7;16390:4;16378:11;:17::i;:28::-;16425:7;;;;-1:-1:-1;16451:4:0;;-1:-1:-1;15930:534:0;;-1:-1:-1;;;;;;;15930:534:0:o;3316:246::-;3374:7;3398:1;3403;3398:6;3394:47;;-1:-1:-1;3428:1:0;3421:8;;3394:47;3451:9;3463:5;3467:1;3463;:5;:::i;:::-;3451:17;-1:-1:-1;3496:1:0;3487:5;3491:1;3451:17;3487:5;:::i;:::-;:10;3479:56;;;;-1:-1:-1;;;3479:56:0;;11644:2:1;3479:56:0;;;11626:21:1;11683:2;11663:18;;;11656:30;11722:34;11702:18;;;11695:62;-1:-1:-1;;;11773:18:1;;;11766:31;11814:19;;3479:56:0;11442:397:1;14:548;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:273::-;2545:6;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2653:9;2640:23;2706:5;2699:13;2692:21;2685:5;2682:32;2672:60;;2728:1;2725;2718:12;2767:247;2826:6;2879:2;2867:9;2858:7;2854:23;2850:32;2847:52;;;2895:1;2892;2885:12;2847:52;2934:9;2921:23;2953:31;2978:5;2953:31;:::i;3019:180::-;3078:6;3131:2;3119:9;3110:7;3106:23;3102:32;3099:52;;;3147:1;3144;3137:12;3099:52;-1:-1:-1;3170:23:1;;3019:180;-1:-1:-1;3019:180:1:o;3204:385::-;3290:6;3298;3306;3314;3367:3;3355:9;3346:7;3342:23;3338:33;3335:53;;;3384:1;3381;3374:12;3335:53;-1:-1:-1;;3407:23:1;;;3477:2;3462:18;;3449:32;;-1:-1:-1;3528:2:1;3513:18;;3500:32;;3579:2;3564:18;3551:32;;-1:-1:-1;3204:385:1;-1:-1:-1;3204:385:1:o;3594:388::-;3662:6;3670;3723:2;3711:9;3702:7;3698:23;3694:32;3691:52;;;3739:1;3736;3729:12;3691:52;3778:9;3765:23;3797:31;3822:5;3797:31;:::i;:::-;3847:5;-1:-1:-1;3904:2:1;3889:18;;3876:32;3917:33;3876:32;3917:33;:::i;:::-;3969:7;3959:17;;;3594:388;;;;;:::o;3987:356::-;4189:2;4171:21;;;4208:18;;;4201:30;4267:34;4262:2;4247:18;;4240:62;4334:2;4319:18;;3987:356::o;7976:127::-;8037:10;8032:3;8028:20;8025:1;8018:31;8068:4;8065:1;8058:15;8092:4;8089:1;8082:15;8108:125;8173:9;;;8194:10;;;8191:36;;;8207:18;;:::i;8642:128::-;8709:9;;;8730:11;;;8727:37;;;8744:18;;:::i;9318:127::-;9379:10;9374:3;9370:20;9367:1;9360:31;9410:4;9407:1;9400:15;9434:4;9431:1;9424:15;9450:251;9520:6;9573:2;9561:9;9552:7;9548:23;9544:32;9541:52;;;9589:1;9586;9579:12;9541:52;9621:9;9615:16;9640:31;9665:5;9640:31;:::i;9706:980::-;9968:4;10016:3;10005:9;10001:19;10047:6;10036:9;10029:25;10073:2;10111:6;10106:2;10095:9;10091:18;10084:34;10154:3;10149:2;10138:9;10134:18;10127:31;10178:6;10213;10207:13;10244:6;10236;10229:22;10282:3;10271:9;10267:19;10260:26;;10321:2;10313:6;10309:15;10295:29;;10342:1;10352:195;10366:6;10363:1;10360:13;10352:195;;;10431:13;;-1:-1:-1;;;;;10427:39:1;10415:52;;10522:15;;;;10487:12;;;;10463:1;10381:9;10352:195;;;-1:-1:-1;;;;;;;10603:32:1;;;;10598:2;10583:18;;10576:60;-1:-1:-1;;;10667:3:1;10652:19;10645:35;10564:3;9706:980;-1:-1:-1;;;9706:980:1:o;10691:217::-;10731:1;10757;10747:132;;10801:10;10796:3;10792:20;10789:1;10782:31;10836:4;10833:1;10826:15;10864:4;10861:1;10854:15;10747:132;-1:-1:-1;10893:9:1;;10691:217::o;11269:168::-;11342:9;;;11373;;11390:15;;;11384:22;;11370:37;11360:71;;11411:18;;:::i

Swarm Source

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