ETH Price: $3,463.04 (+1.61%)
Gas: 6 Gwei

Token

Account Abstraction (ERC-4337)
 

Overview

Max Total Supply

10,000,000 ERC-4337

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
opiumrickowenskencarson10inu.eth
Balance
160,000 ERC-4337

Value
$0.00
0x3ec64b71f07243f98696bf081a3450a855dd5676
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:
Erc4337

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
https://eips.ethereum.org/EIPS/eip-4337

ERC-4337 is the proposal of Account Abstraction, which will enable among other things:
   • define your own flexible security rules
   • recover your account if you lose the keys
   • share your account security across trusted devices or individuals
   • pay someone else's gas, or have someone else pay yours
   • batch transactions together (e.g. approve and execute a swap in one go)
   • more opportunities for dapps and wallet developers to innovate on user experiences

███████╗██████╗░░█████╗░░░░░░░░░██╗██╗██████╗░██████╗░███████╗
██╔════╝██╔══██╗██╔══██╗░░░░░░░██╔╝██║╚════██╗╚════██╗╚════██║
█████╗░░██████╔╝██║░░╚═╝█████╗██╔╝░██║░█████╔╝░█████╔╝░░░░██╔╝
██╔══╝░░██╔══██╗██║░░██╗╚════╝███████║░╚═══██╗░╚═══██╗░░░██╔╝░
███████╗██║░░██║╚█████╔╝░░░░░░╚════██║██████╔╝██████╔╝░░██╔╝░░
╚══════╝╚═╝░░╚═╝░╚════╝░░░░░░░░░░░░╚═╝╚═════╝░╚═════╝░░░╚═╝░░░
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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 Erc4337 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    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 public constant _tTotal = 10e6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 10;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 10;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

    address payable private _marketingAddress;

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

    uint256 public _maxTxAmount = _tTotal / 50;
    uint256 public _maxWalletSize = _tTotal / 50;
    uint256 public _swapTokensAtAmount = _tTotal / 1000;
    
    string private constant _name = "Account Abstraction";
    string private constant _symbol = "ERC-4337";
    bool private tradingOpen = false;
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;
        _marketingAddress = payable(msg.sender);
        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[address(_uniswapV2Router)] = true;

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradingOpen, "TOKEN: This account cannot send tokens until trading is enabled");

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function updateFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require(redisFeeOnBuy+taxFeeOnBuy <=20 &&redisFeeOnSell+taxFeeOnSell <= 20, "Set lower than 20%");
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

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

    //Set maximum transaction
    function setMaxTxAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
        require(maxTxAmount >= _tTotal / 200, "Min 0.5% max tx");
    }

    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        require(maxWalletSize >= _tTotal / 200, "Min 0.5% max wallet");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"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":[],"name":"_tTotal","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":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000018662386f26fc100005f1962000386565b62000025905f196200039c565b6006555f6008819055600a6009819055818155600b819055600c829055600d819055600e91909155600f556010805461ffff60a01b1916600160a81b179055620000786032662386f26fc10000620003c2565b6011556200008f6032662386f26fc10000620003c2565b601255620000a76103e8662386f26fc10000620003c2565b6013556014805460ff19169055348015620000c0575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f8181526002602090815260409182902093909355601080546001600160a01b03191690921790915560148054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa158015620001a1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c79190620003d8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000213573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002399190620003d8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000284573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002aa9190620003d8565b601580546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601054851684528284208054821683179055938516835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200036391815260200190565b60405180910390a35062000407565b634e487b7160e01b5f52601260045260245ffd5b5f8262000397576200039762000372565b500690565b81810381811115620003bc57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82620003d357620003d362000372565b500490565b5f60208284031215620003e9575f80fd5b81516001600160a01b038116811462000400575f80fd5b9392505050565b6117fb80620004155f395ff3fe60806040526004361061014a575f3560e01c80638a8c523c116100b3578063af465a271161006d578063af465a27146103b5578063c3c8cd80146103cf578063dd62ed3e146103e3578063ea9fae8014610427578063ec28438a14610446578063f2fde38b14610465575f80fd5b80638a8c523c146103025780638da5cb5b146103165780638f9a55c01461033257806395d89b411461034757806398a5c31514610377578063a9059cbb14610396575f80fd5b806349bd5a5e1161010457806349bd5a5e146102435780635c34c6ce1461027a5780635d0044ca1461029b57806370a08231146102ba578063715018a6146102d95780637d1db4a5146102ed575f80fd5b806306fdde0314610155578063095ea7b3146101a257806318160ddd146101d157806323b872dd146101f45780632fd689e314610213578063313ce56714610228575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152601381527220b1b1b7bab73a1020b139ba3930b1ba34b7b760691b60208201525b6040516101999190611460565b60405180910390f35b3480156101ad575f80fd5b506101c16101bc3660046114bf565b610484565b6040519015158152602001610199565b3480156101dc575f80fd5b50662386f26fc100005b604051908152602001610199565b3480156101ff575f80fd5b506101c161020e3660046114e9565b61049a565b34801561021e575f80fd5b506101e660135481565b348015610233575f80fd5b5060405160098152602001610199565b34801561024e575f80fd5b50601554610262906001600160a01b031681565b6040516001600160a01b039091168152602001610199565b348015610285575f80fd5b50610299610294366004611527565b610501565b005b3480156102a6575f80fd5b506102996102b53660046115aa565b6105a7565b3480156102c5575f80fd5b506101e66102d43660046115c1565b61062f565b3480156102e4575f80fd5b50610299610650565b3480156102f8575f80fd5b506101e660115481565b34801561030d575f80fd5b506102996106c1565b348015610321575f80fd5b505f546001600160a01b0316610262565b34801561033d575f80fd5b506101e660125481565b348015610352575f80fd5b506040805180820190915260088152674552432d3433333760c01b602082015261018c565b348015610382575f80fd5b506102996103913660046115aa565b6106f9565b3480156103a1575f80fd5b506101c16103b03660046114bf565b610727565b3480156103c0575f80fd5b506101e6662386f26fc1000081565b3480156103da575f80fd5b50610299610733565b3480156103ee575f80fd5b506101e66103fd3660046115dc565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610432575f80fd5b50610299610441366004611613565b610767565b348015610451575f80fd5b506102996104603660046115aa565b610809565b348015610470575f80fd5b5061029961047f3660046115c1565b61088a565b5f610490338484610971565b5060015b92915050565b5f6104a68484846109d1565b6104f784336104f28560405180606001604052806028815260200161179e602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610d47565b610971565b5060019392505050565b5f546001600160a01b031633146105335760405162461bcd60e51b815260040161052a90611642565b60405180910390fd5b5f5b828110156105a1578160055f86868581811061055357610553611677565b905060200201602081019061056891906115c1565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806105998161169f565b915050610535565b50505050565b5f546001600160a01b031633146105d05760405162461bcd60e51b815260040161052a90611642565b60128190556105e760c8662386f26fc100006116b7565b81101561062c5760405162461bcd60e51b8152602060048201526013602482015272135a5b880c0b8d49481b585e081dd85b1b195d606a1b604482015260640161052a565b50565b6001600160a01b0381165f9081526002602052604081205461049490610d7f565b5f546001600160a01b031633146106795760405162461bcd60e51b815260040161052a90611642565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106ea5760405162461bcd60e51b815260040161052a90611642565b6014805460ff19166001179055565b5f546001600160a01b031633146107225760405162461bcd60e51b815260040161052a90611642565b601355565b5f6104903384846109d1565b6010546001600160a01b0316336001600160a01b031614610752575f80fd5b5f61075c3061062f565b905061062c81610e01565b5f546001600160a01b031633146107905760405162461bcd60e51b815260040161052a90611642565b6008849055600a8390556009829055600b81905560146107b083866116d6565b111580156107c8575060146107c582856116d6565b11155b6105a15760405162461bcd60e51b8152602060048201526012602482015271536574206c6f776572207468616e2032302560701b604482015260640161052a565b5f546001600160a01b031633146108325760405162461bcd60e51b815260040161052a90611642565b601181905561084960c8662386f26fc100006116b7565b81101561062c5760405162461bcd60e51b815260206004820152600f60248201526e09ad2dc40605c6a4a40dac2f040e8f608b1b604482015260640161052a565b5f546001600160a01b031633146108b35760405162461bcd60e51b815260040161052a90611642565b6001600160a01b0381166109185760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f9081526005602052604090205460ff16158015610a1157506001600160a01b0382165f9081526005602052604090205460ff16155b15610c395760145460ff16610a8e5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052a565b601154811115610ae05760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052a565b6015546001600160a01b03838116911614610b655760125481610b028461062f565b610b0c91906116d6565b10610b655760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052a565b5f610b6f3061062f565b601354601154919250821015908210610b885760115491505b808015610b9f5750601054600160a01b900460ff16155b8015610bb957506015546001600160a01b03868116911614155b8015610bce5750601054600160a81b900460ff165b8015610bf257506001600160a01b0385165f9081526005602052604090205460ff16155b8015610c1657506001600160a01b0384165f9081526005602052604090205460ff16155b15610c3657610c2482610e01565b478015610c3457610c3447610f94565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610c7957506001600160a01b0383165f9081526005602052604090205460ff165b80610cab57506015546001600160a01b03858116911614801590610cab57506015546001600160a01b03848116911614155b15610cb757505f610d3b565b6015546001600160a01b038581169116148015610ce757506014546001600160a01b038481166101009092041614155b15610cf957600854600c55600954600d555b6015546001600160a01b038481169116148015610d2957506014546001600160a01b038581166101009092041614155b15610d3b57600a54600c55600b54600d555b6105a184848484610fcf565b5f8184841115610d6a5760405162461bcd60e51b815260040161052a9190611460565b505f610d7684866116e9565b95945050505050565b5f600654821115610de55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161052a565b5f610dee610ffd565b9050610dfa838261101e565b9392505050565b6010805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e4757610e47611677565b60200260200101906001600160a01b031690816001600160a01b031681525050601460019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edc91906116fc565b81600181518110610eef57610eef611677565b6001600160a01b039283166020918202929092010152601454610f1a91309161010090041684610971565b60145460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790610f569085905f90869030904290600401611717565b5f604051808303815f87803b158015610f6d575f80fd5b505af1158015610f7f573d5f803e3d5ffd5b50506010805460ff60a01b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fcb573d5f803e3d5ffd5b5050565b80610fdc57610fdc61105f565b610fe784848461108c565b806105a1576105a1600e54600c55600f54600d55565b5f805f61100861117d565b9092509050611017828261101e565b9250505090565b5f610dfa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111ba565b600c5415801561106f5750600d54155b1561107657565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061109b876111e6565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506110cc908761123b565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546110fa908661127c565b6001600160a01b0389165f9081526002602052604090205561111b816112da565b6111258483611320565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161116a91815260200190565b60405180910390a3505050505050505050565b6006545f908190662386f26fc10000611196828261101e565b8210156111b157505060065492662386f26fc1000092509050565b90939092509050565b5f81836111da5760405162461bcd60e51b815260040161052a9190611460565b505f610d7684866116b7565b5f805f805f805f805f6111fe8a600c54600d54611344565b9250925092505f61120d610ffd565b90505f805f61121e8e878787611396565b919e509c509a509598509396509194505050505091939550919395565b5f610dfa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d47565b5f8061128883856116d6565b905083811015610dfa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052a565b5f6112e3610ffd565b90505f6112f083836113e2565b305f9081526002602052604090205490915061130c908261127c565b305f90815260026020526040902055505050565b60065461132d908361123b565b60065560075461133d908261127c565b6007555050565b5f80808061135d606461135789896113e2565b9061101e565b90505f61136f60646113578a896113e2565b90505f611386826113808b8661123b565b9061123b565b9992985090965090945050505050565b5f8080806113a488866113e2565b90505f6113b188876113e2565b90505f6113be88886113e2565b90505f6113cf82611380868661123b565b939b939a50919850919650505050505050565b5f825f036113f157505f610494565b5f6113fc8385611786565b90508261140985836116b7565b14610dfa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052a565b5f6020808352835180828501525f5b8181101561148b5785810183015185820160400152820161146f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461062c575f80fd5b5f80604083850312156114d0575f80fd5b82356114db816114ab565b946020939093013593505050565b5f805f606084860312156114fb575f80fd5b8335611506816114ab565b92506020840135611516816114ab565b929592945050506040919091013590565b5f805f60408486031215611539575f80fd5b833567ffffffffffffffff80821115611550575f80fd5b818601915086601f830112611563575f80fd5b813581811115611571575f80fd5b8760208260051b8501011115611585575f80fd5b60209283019550935050840135801515811461159f575f80fd5b809150509250925092565b5f602082840312156115ba575f80fd5b5035919050565b5f602082840312156115d1575f80fd5b8135610dfa816114ab565b5f80604083850312156115ed575f80fd5b82356115f8816114ab565b91506020830135611608816114ab565b809150509250929050565b5f805f8060808587031215611626575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016116b0576116b061168b565b5060010190565b5f826116d157634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104945761049461168b565b818103818111156104945761049461168b565b5f6020828403121561170c575f80fd5b8151610dfa816114ab565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117655784516001600160a01b031683529383019391830191600101611740565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176104945761049461168b56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c4349c1eaed401c230291a0913603a0b7c12f75e19a81cadc3d5f4481c97d9a264736f6c63430008150033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80638a8c523c116100b3578063af465a271161006d578063af465a27146103b5578063c3c8cd80146103cf578063dd62ed3e146103e3578063ea9fae8014610427578063ec28438a14610446578063f2fde38b14610465575f80fd5b80638a8c523c146103025780638da5cb5b146103165780638f9a55c01461033257806395d89b411461034757806398a5c31514610377578063a9059cbb14610396575f80fd5b806349bd5a5e1161010457806349bd5a5e146102435780635c34c6ce1461027a5780635d0044ca1461029b57806370a08231146102ba578063715018a6146102d95780637d1db4a5146102ed575f80fd5b806306fdde0314610155578063095ea7b3146101a257806318160ddd146101d157806323b872dd146101f45780632fd689e314610213578063313ce56714610228575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152601381527220b1b1b7bab73a1020b139ba3930b1ba34b7b760691b60208201525b6040516101999190611460565b60405180910390f35b3480156101ad575f80fd5b506101c16101bc3660046114bf565b610484565b6040519015158152602001610199565b3480156101dc575f80fd5b50662386f26fc100005b604051908152602001610199565b3480156101ff575f80fd5b506101c161020e3660046114e9565b61049a565b34801561021e575f80fd5b506101e660135481565b348015610233575f80fd5b5060405160098152602001610199565b34801561024e575f80fd5b50601554610262906001600160a01b031681565b6040516001600160a01b039091168152602001610199565b348015610285575f80fd5b50610299610294366004611527565b610501565b005b3480156102a6575f80fd5b506102996102b53660046115aa565b6105a7565b3480156102c5575f80fd5b506101e66102d43660046115c1565b61062f565b3480156102e4575f80fd5b50610299610650565b3480156102f8575f80fd5b506101e660115481565b34801561030d575f80fd5b506102996106c1565b348015610321575f80fd5b505f546001600160a01b0316610262565b34801561033d575f80fd5b506101e660125481565b348015610352575f80fd5b506040805180820190915260088152674552432d3433333760c01b602082015261018c565b348015610382575f80fd5b506102996103913660046115aa565b6106f9565b3480156103a1575f80fd5b506101c16103b03660046114bf565b610727565b3480156103c0575f80fd5b506101e6662386f26fc1000081565b3480156103da575f80fd5b50610299610733565b3480156103ee575f80fd5b506101e66103fd3660046115dc565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610432575f80fd5b50610299610441366004611613565b610767565b348015610451575f80fd5b506102996104603660046115aa565b610809565b348015610470575f80fd5b5061029961047f3660046115c1565b61088a565b5f610490338484610971565b5060015b92915050565b5f6104a68484846109d1565b6104f784336104f28560405180606001604052806028815260200161179e602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610d47565b610971565b5060019392505050565b5f546001600160a01b031633146105335760405162461bcd60e51b815260040161052a90611642565b60405180910390fd5b5f5b828110156105a1578160055f86868581811061055357610553611677565b905060200201602081019061056891906115c1565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806105998161169f565b915050610535565b50505050565b5f546001600160a01b031633146105d05760405162461bcd60e51b815260040161052a90611642565b60128190556105e760c8662386f26fc100006116b7565b81101561062c5760405162461bcd60e51b8152602060048201526013602482015272135a5b880c0b8d49481b585e081dd85b1b195d606a1b604482015260640161052a565b50565b6001600160a01b0381165f9081526002602052604081205461049490610d7f565b5f546001600160a01b031633146106795760405162461bcd60e51b815260040161052a90611642565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106ea5760405162461bcd60e51b815260040161052a90611642565b6014805460ff19166001179055565b5f546001600160a01b031633146107225760405162461bcd60e51b815260040161052a90611642565b601355565b5f6104903384846109d1565b6010546001600160a01b0316336001600160a01b031614610752575f80fd5b5f61075c3061062f565b905061062c81610e01565b5f546001600160a01b031633146107905760405162461bcd60e51b815260040161052a90611642565b6008849055600a8390556009829055600b81905560146107b083866116d6565b111580156107c8575060146107c582856116d6565b11155b6105a15760405162461bcd60e51b8152602060048201526012602482015271536574206c6f776572207468616e2032302560701b604482015260640161052a565b5f546001600160a01b031633146108325760405162461bcd60e51b815260040161052a90611642565b601181905561084960c8662386f26fc100006116b7565b81101561062c5760405162461bcd60e51b815260206004820152600f60248201526e09ad2dc40605c6a4a40dac2f040e8f608b1b604482015260640161052a565b5f546001600160a01b031633146108b35760405162461bcd60e51b815260040161052a90611642565b6001600160a01b0381166109185760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f9081526005602052604090205460ff16158015610a1157506001600160a01b0382165f9081526005602052604090205460ff16155b15610c395760145460ff16610a8e5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052a565b601154811115610ae05760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052a565b6015546001600160a01b03838116911614610b655760125481610b028461062f565b610b0c91906116d6565b10610b655760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052a565b5f610b6f3061062f565b601354601154919250821015908210610b885760115491505b808015610b9f5750601054600160a01b900460ff16155b8015610bb957506015546001600160a01b03868116911614155b8015610bce5750601054600160a81b900460ff165b8015610bf257506001600160a01b0385165f9081526005602052604090205460ff16155b8015610c1657506001600160a01b0384165f9081526005602052604090205460ff16155b15610c3657610c2482610e01565b478015610c3457610c3447610f94565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610c7957506001600160a01b0383165f9081526005602052604090205460ff165b80610cab57506015546001600160a01b03858116911614801590610cab57506015546001600160a01b03848116911614155b15610cb757505f610d3b565b6015546001600160a01b038581169116148015610ce757506014546001600160a01b038481166101009092041614155b15610cf957600854600c55600954600d555b6015546001600160a01b038481169116148015610d2957506014546001600160a01b038581166101009092041614155b15610d3b57600a54600c55600b54600d555b6105a184848484610fcf565b5f8184841115610d6a5760405162461bcd60e51b815260040161052a9190611460565b505f610d7684866116e9565b95945050505050565b5f600654821115610de55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161052a565b5f610dee610ffd565b9050610dfa838261101e565b9392505050565b6010805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e4757610e47611677565b60200260200101906001600160a01b031690816001600160a01b031681525050601460019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edc91906116fc565b81600181518110610eef57610eef611677565b6001600160a01b039283166020918202929092010152601454610f1a91309161010090041684610971565b60145460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790610f569085905f90869030904290600401611717565b5f604051808303815f87803b158015610f6d575f80fd5b505af1158015610f7f573d5f803e3d5ffd5b50506010805460ff60a01b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fcb573d5f803e3d5ffd5b5050565b80610fdc57610fdc61105f565b610fe784848461108c565b806105a1576105a1600e54600c55600f54600d55565b5f805f61100861117d565b9092509050611017828261101e565b9250505090565b5f610dfa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111ba565b600c5415801561106f5750600d54155b1561107657565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061109b876111e6565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506110cc908761123b565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546110fa908661127c565b6001600160a01b0389165f9081526002602052604090205561111b816112da565b6111258483611320565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161116a91815260200190565b60405180910390a3505050505050505050565b6006545f908190662386f26fc10000611196828261101e565b8210156111b157505060065492662386f26fc1000092509050565b90939092509050565b5f81836111da5760405162461bcd60e51b815260040161052a9190611460565b505f610d7684866116b7565b5f805f805f805f805f6111fe8a600c54600d54611344565b9250925092505f61120d610ffd565b90505f805f61121e8e878787611396565b919e509c509a509598509396509194505050505091939550919395565b5f610dfa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d47565b5f8061128883856116d6565b905083811015610dfa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052a565b5f6112e3610ffd565b90505f6112f083836113e2565b305f9081526002602052604090205490915061130c908261127c565b305f90815260026020526040902055505050565b60065461132d908361123b565b60065560075461133d908261127c565b6007555050565b5f80808061135d606461135789896113e2565b9061101e565b90505f61136f60646113578a896113e2565b90505f611386826113808b8661123b565b9061123b565b9992985090965090945050505050565b5f8080806113a488866113e2565b90505f6113b188876113e2565b90505f6113be88886113e2565b90505f6113cf82611380868661123b565b939b939a50919850919650505050505050565b5f825f036113f157505f610494565b5f6113fc8385611786565b90508261140985836116b7565b14610dfa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052a565b5f6020808352835180828501525f5b8181101561148b5785810183015185820160400152820161146f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461062c575f80fd5b5f80604083850312156114d0575f80fd5b82356114db816114ab565b946020939093013593505050565b5f805f606084860312156114fb575f80fd5b8335611506816114ab565b92506020840135611516816114ab565b929592945050506040919091013590565b5f805f60408486031215611539575f80fd5b833567ffffffffffffffff80821115611550575f80fd5b818601915086601f830112611563575f80fd5b813581811115611571575f80fd5b8760208260051b8501011115611585575f80fd5b60209283019550935050840135801515811461159f575f80fd5b809150509250925092565b5f602082840312156115ba575f80fd5b5035919050565b5f602082840312156115d1575f80fd5b8135610dfa816114ab565b5f80604083850312156115ed575f80fd5b82356115f8816114ab565b91506020830135611608816114ab565b809150509250929050565b5f805f8060808587031215611626575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016116b0576116b061168b565b5060010190565b5f826116d157634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104945761049461168b565b818103818111156104945761049461168b565b5f6020828403121561170c575f80fd5b8151610dfa816114ab565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117655784516001600160a01b031683529383019391830191600101611740565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176104945761049461168b56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c4349c1eaed401c230291a0913603a0b7c12f75e19a81cadc3d5f4481c97d9a264736f6c63430008150033

Deployed Bytecode Sourcemap

5745:12189:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7978:83;;;;;;;;;;-1:-1:-1;8048:5:0;;;;;;;;;;;;-1:-1:-1;;;8048:5:0;;;;7978:83;;;;;;;:::i;:::-;;;;;;;;8903:193;;;;;;;;;;-1:-1:-1;8903:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8903:193:0;1023:187:1;8255:95:0;;;;;;;;;;-1:-1:-1;6188:12:0;8255:95;;;1361:25:1;;;1349:2;1334:18;8255:95:0;1215:177:1;9104:446:0;;;;;;;;;;-1:-1:-1;9104:446:0;;;;;:::i;:::-;;:::i;6886:51::-;;;;;;;;;;;;;;;;8164:83;;;;;;;;;;-1:-1:-1;8164:83:0;;5865:1;2000:36:1;;1988:2;1973:18;8164:83:0;1858:184:1;7149:28:0;;;;;;;;;;-1:-1:-1;7149:28:0;;;;-1:-1:-1;;;;;7149:28:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;7149:28:0;2047:203:1;17298:226:0;;;;;;;;;;-1:-1:-1;17298:226:0;;;;;:::i;:::-;;:::i;:::-;;17745:184;;;;;;;;;;-1:-1:-1;17745:184:0;;;;;:::i;:::-;;:::i;8358:138::-;;;;;;;;;;-1:-1:-1;8358:138:0;;;;;:::i;:::-;;:::i;3232:148::-;;;;;;;;;;;;;:::i;6786:42::-;;;;;;;;;;;;;;;;13007:79;;;;;;;;;;;;;:::i;3018:::-;;;;;;;;;;-1:-1:-1;3056:7:0;3083:6;-1:-1:-1;;;;;3083:6:0;3018:79;;6835:44;;;;;;;;;;;;;;;;8069:87;;;;;;;;;;-1:-1:-1;8141:7:0;;;;;;;;;;;;-1:-1:-1;;;8141:7:0;;;;8069:87;;17151:139;;;;;;;;;;-1:-1:-1;17151:139:0;;;;;:::i;:::-;;:::i;8504:199::-;;;;;;;;;;-1:-1:-1;8504:199:0;;;;;:::i;:::-;;:::i;6154:46::-;;;;;;;;;;;;6188:12;6154:46;;13094:197;;;;;;;;;;;;;:::i;8711:184::-;;;;;;;;;;-1:-1:-1;8711:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8860:18:0;;;8828:7;8860:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8711:184;16697:402;;;;;;;;;;-1:-1:-1;16697:402:0;;;;;:::i;:::-;;:::i;17563:174::-;;;;;;;;;;-1:-1:-1;17563:174:0;;;;;:::i;:::-;;:::i;3388:244::-;;;;;;;;;;-1:-1:-1;3388:244:0;;;;;:::i;:::-;;:::i;8903:193::-;9005:4;9027:39;1857:10;9050:7;9059:6;9027:8;:39::i;:::-;-1:-1:-1;9084:4:0;8903:193;;;;;:::o;9104:446::-;9236:4;9253:36;9263:6;9271:9;9282:6;9253:9;:36::i;:::-;9300:220;9323:6;1857:10;9371:138;9427:6;9371:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9371:19:0;;;;;;:11;:19;;;;;;;;1857:10;9371:33;;;;;;;;;;:37;:138::i;:::-;9300:8;:220::i;:::-;-1:-1:-1;9538:4:0;9104:446;;;;;:::o;17298:226::-;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;;;;;;;;;17407:9:::1;17403:114;17422:19:::0;;::::1;17403:114;;;17497:8;17463:18;:31;17482:8;;17491:1;17482:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17463:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17463:31:0;:42;;-1:-1:-1;;17463:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17443:3;::::1;::::0;::::1;:::i;:::-;;;;17403:114;;;;17298:226:::0;;;:::o;17745:184::-;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;17818:14:::1;:30:::0;;;17884:13:::1;17894:3;6188:12;17884:13;:::i;:::-;17867;:30;;17859:62;;;::::0;-1:-1:-1;;;17859:62:0;;5451:2:1;17859:62:0::1;::::0;::::1;5433:21:1::0;5490:2;5470:18;;;5463:30;-1:-1:-1;;;5509:18:1;;;5502:49;5568:18;;17859:62:0::1;5249:343:1::0;17859:62:0::1;17745:184:::0;:::o;8358:138::-;-1:-1:-1;;;;;8471:16:0;;8424:7;8471:16;;;:7;:16;;;;;;8451:37;;:19;:37::i;3232:148::-;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;3339:1:::1;3323:6:::0;;3302:40:::1;::::0;-1:-1:-1;;;;;3323:6:0;;::::1;::::0;3302:40:::1;::::0;3339:1;;3302:40:::1;3370:1;3353:19:::0;;-1:-1:-1;;;;;;3353:19:0::1;::::0;;3232:148::o;13007:79::-;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;13060:11:::1;:18:::0;;-1:-1:-1;;13060:18:0::1;13074:4;13060:18;::::0;;13007:79::o;17151:139::-;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;17242:19:::1;:40:::0;17151:139::o;8504:199::-;8609:4;8631:42;1857:10;8655:9;8666:6;8631:9;:42::i;13094:197::-;13160:17;;-1:-1:-1;;;;;13160:17:0;1857:10;-1:-1:-1;;;;;13144:33:0;;13136:42;;;;;;13189:23;13215:24;13233:4;13215:9;:24::i;:::-;13189:50;;13250:33;13267:15;13250:16;:33::i;16697:402::-;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;16834:14:::1;:30:::0;;;16875:15:::1;:32:::0;;;16918:12:::1;:26:::0;;;16955:13:::1;:28:::0;;;17030:2:::1;17002:25;16933:11:::0;16851:13;17002:25:::1;:::i;:::-;:30;;:66;;;;-1:-1:-1::0;17066:2:0::1;17035:27;17050:12:::0;17035:14;:27:::1;:::i;:::-;:33;;17002:66;16994:97;;;::::0;-1:-1:-1;;;16994:97:0;;5929:2:1;16994:97:0::1;::::0;::::1;5911:21:1::0;5968:2;5948:18;;;5941:30;-1:-1:-1;;;5987:18:1;;;5980:48;6045:18;;16994:97:0::1;5727:342:1::0;17563:174:0;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;17636:12:::1;:26:::0;;;17696:13:::1;17706:3;6188:12;17696:13;:::i;:::-;17681:11;:28;;17673:56;;;::::0;-1:-1:-1;;;17673:56:0;;6276:2:1;17673:56:0::1;::::0;::::1;6258:21:1::0;6315:2;6295:18;;;6288:30;-1:-1:-1;;;6334:18:1;;;6327:45;6389:18;;17673:56:0::1;6074:339:1::0;3388:244:0;3145:6;;-1:-1:-1;;;;;3145:6:0;1857:10;3145:22;3137:67;;;;-1:-1:-1;;;3137:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3477:22:0;::::1;3469:73;;;::::0;-1:-1:-1;;;3469:73:0;;6620:2:1;3469:73:0::1;::::0;::::1;6602:21:1::0;6659:2;6639:18;;;6632:30;6698:34;6678:18;;;6671:62;-1:-1:-1;;;6749:18:1;;;6742:36;6795:19;;3469:73:0::1;6418:402:1::0;3469:73:0::1;3579:6;::::0;;3558:38:::1;::::0;-1:-1:-1;;;;;3558:38:0;;::::1;::::0;3579:6;::::1;::::0;3558:38:::1;::::0;::::1;3607:6;:17:::0;;-1:-1:-1;;;;;;3607:17:0::1;-1:-1:-1::0;;;;;3607:17:0;;;::::1;::::0;;;::::1;::::0;;3388:244::o;10241:211::-;-1:-1:-1;;;;;10360:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10412:32;;1361:25:1;;;10412:32:0;;1334:18:1;10412:32:0;;;;;;;10241:211;;;:::o;10460:1941::-;-1:-1:-1;;;;;10579:24:0;;;;;;:18;:24;;;;;;;;10578:25;:52;;;;-1:-1:-1;;;;;;10608:22:0;;;;;;:18;:22;;;;;;;;10607:23;10578:52;10574:1101;;;10655:11;;;;10647:87;;;;-1:-1:-1;;;10647:87:0;;7027:2:1;10647:87:0;;;7009:21:1;7066:2;7046:18;;;7039:30;7105:34;7085:18;;;7078:62;7176:33;7156:18;;;7149:61;7227:19;;10647:87:0;6825:427:1;10647:87:0;10769:12;;10759:6;:22;;10751:63;;;;-1:-1:-1;;;10751:63:0;;7459:2:1;10751:63:0;;;7441:21:1;7498:2;7478:18;;;7471:30;7537;7517:18;;;7510:58;7585:18;;10751:63:0;7257:352:1;10751:63:0;10840:13;;-1:-1:-1;;;;;10834:19:0;;;10840:13;;10834:19;10831:146;;10907:14;;10898:6;10882:13;10892:2;10882:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10874:87;;;;-1:-1:-1;;;10874:87:0;;7816:2:1;10874:87:0;;;7798:21:1;7855:2;7835:18;;;7828:30;7894:34;7874:18;;;7867:62;-1:-1:-1;;;7945:18:1;;;7938:33;7988:19;;10874:87:0;7614:399:1;10874:87:0;10993:28;11024:24;11042:4;11024:9;:24::i;:::-;11102:19;;11165:12;;10993:55;;-1:-1:-1;11078:43:0;;;;11141:36;;11138:124;;11234:12;;11211:35;;11138:124;11282:7;:18;;;;-1:-1:-1;11294:6:0;;-1:-1:-1;;;11294:6:0;;;;11293:7;11282:18;:43;;;;-1:-1:-1;11312:13:0;;-1:-1:-1;;;;;11304:21:0;;;11312:13;;11304:21;;11282:43;:58;;;;-1:-1:-1;11329:11:0;;-1:-1:-1;;;11329:11:0;;;;11282:58;:87;;;;-1:-1:-1;;;;;;11345:24:0;;;;;;:18;:24;;;;;;;;11344:25;11282:87;:114;;;;-1:-1:-1;;;;;;11374:22:0;;;;;;:18;:22;;;;;;;;11373:23;11282:114;11278:386;;;11417:38;11434:20;11417:16;:38::i;:::-;11503:21;11547:22;;11543:106;;11594:35;11607:21;11594:12;:35::i;:::-;11398:266;11278:386;10632:1043;;10574:1101;-1:-1:-1;;;;;11751:24:0;;11687:12;11751:24;;;:18;:24;;;;;;11702:4;;11751:24;;;:50;;-1:-1:-1;;;;;;11779:22:0;;;;;;:18;:22;;;;;;;;11751:50;11750:102;;;-1:-1:-1;11815:13:0;;-1:-1:-1;;;;;11807:21:0;;;11815:13;;11807:21;;;;:44;;-1:-1:-1;11838:13:0;;-1:-1:-1;;;;;11832:19:0;;;11838:13;;11832:19;;11807:44;11746:594;;;-1:-1:-1;11879:5:0;11746:594;;;11962:13;;-1:-1:-1;;;;;11954:21:0;;;11962:13;;11954:21;:55;;;;-1:-1:-1;11993:15:0;;-1:-1:-1;;;;;11979:30:0;;;11993:15;;;;;11979:30;;11954:55;11951:162;;;12042:14;;12030:9;:26;12085:12;;12075:7;:22;11951:162;12172:13;;-1:-1:-1;;;;;12166:19:0;;;12172:13;;12166:19;:55;;;;-1:-1:-1;12205:15:0;;-1:-1:-1;;;;;12189:32:0;;;12205:15;;;;;12189:32;;12166:55;12162:165;;;12254:15;;12242:9;:27;12298:13;;12288:7;:23;12162:165;12352:41;12367:4;12373:2;12377:6;12385:7;12352:14;:41::i;3996:224::-;4116:7;4152:12;4144:6;;;;4136:29;;;;-1:-1:-1;;;4136:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4176:9:0;4188:5;4192:1;4188;:5;:::i;:::-;4176:17;3996:224;-1:-1:-1;;;;;3996:224:0:o;9558:323::-;9653:7;9711;;9700;:18;;9678:110;;;;-1:-1:-1;;;9678:110:0;;8353:2:1;9678:110:0;;;8335:21:1;8392:2;8372:18;;;8365:30;8431:34;8411:18;;;8404:62;-1:-1:-1;;;8482:18:1;;;8475:40;8532:19;;9678:110:0;8151:406:1;9678:110:0;9799:19;9821:10;:8;:10::i;:::-;9799:32;-1:-1:-1;9849:24:0;:7;9799:32;9849:11;:24::i;:::-;9842:31;9558:323;-1:-1:-1;;;9558:323:0:o;12409:483::-;7216:6;:13;;-1:-1:-1;;;;7216:13:0;-1:-1:-1;;;7216:13:0;;;12511:16:::1;::::0;;12525:1:::1;12511:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12511:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12511:16:0::1;12487:40;;12556:4;12538;12543:1;12538:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12538:23:0::1;;;-1:-1:-1::0;;;;;12538:23:0::1;;;::::0;::::1;12582:15;;;;;;;;;-1:-1:-1::0;;;;;12582:15:0::1;-1:-1:-1::0;;;;;12582:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12572:4;12577:1;12572:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12572:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12647:15:::1;::::0;12615:62:::1;::::0;12632:4:::1;::::0;12647:15:::1;::::0;::::1;;12665:11:::0;12615:8:::1;:62::i;:::-;12688:15;::::0;:196:::1;::::0;-1:-1:-1;;;12688:196:0;;:15:::1;::::0;;::::1;-1:-1:-1::0;;;;;12688:15:0::1;::::0;:66:::1;::::0;:196:::1;::::0;12769:11;;12795:1:::1;::::0;12811:4;;12838::::1;::::0;12858:15:::1;::::0;12688:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7252:6:0;:14;;-1:-1:-1;;;;7252:14:0;;;-1:-1:-1;;;;12409:483:0:o;12900:99::-;12957:17;;:34;;-1:-1:-1;;;;;12957:17:0;;;;:34;;;;;12984:6;;12957:17;:34;:17;:34;12984:6;12957:17;:34;;;;;;;;;;;;;;;;;;;;;12900:99;:::o;13299:282::-;13455:7;13450:28;;13464:14;:12;:14::i;:::-;13489:44;13507:6;13515:9;13526:6;13489:17;:44::i;:::-;13549:7;13544:29;;13558:15;10172:17;;10160:9;:29;10210:15;;10200:7;:25;10116:117;16260:164;16302:7;16323:15;16340;16359:19;:17;:19::i;:::-;16322:56;;-1:-1:-1;16322:56:0;-1:-1:-1;16396:20:0;16322:56;;16396:11;:20::i;:::-;16389:27;;;;16260:164;:::o;4482:132::-;4540:7;4567:39;4571:1;4574;4567:39;;;;;;;;;;;;;;;;;:3;:39::i;9889:219::-;9936:9;;:14;:30;;;;-1:-1:-1;9954:7:0;;:12;9936:30;9932:43;;;9889:219::o;9932:43::-;10007:9;;;9987:17;:29;10045:7;;;10027:15;:25;-1:-1:-1;10065:13:0;;;;10089:11;9889:219::o;13589:610::-;13736:15;13766:23;13804:12;13831:23;13869:12;13896:13;13923:19;13934:7;13923:10;:19::i;:::-;-1:-1:-1;;;;;13971:15:0;;;;;;:7;:15;;;;;;13721:221;;-1:-1:-1;13721:221:0;;-1:-1:-1;13721:221:0;;-1:-1:-1;13721:221:0;-1:-1:-1;13721:221:0;-1:-1:-1;13721:221:0;-1:-1:-1;13971:28:0;;13721:221;13971:19;:28::i;:::-;-1:-1:-1;;;;;13953:15:0;;;;;;;:7;:15;;;;;;:46;;;;14031:18;;;;;;;:39;;14054:15;14031:22;:39::i;:::-;-1:-1:-1;;;;;14010:18:0;;;;;;:7;:18;;;;;:60;14081:16;14091:5;14081:9;:16::i;:::-;14108:23;14120:4;14126;14108:11;:23::i;:::-;14164:9;-1:-1:-1;;;;;14147:44:0;14156:6;-1:-1:-1;;;;;14147:44:0;;14175:15;14147:44;;;;1361:25:1;;1349:2;1334:18;;1215:177;14147:44:0;;;;;;;;13710:489;;;;;;13589:610;;;:::o;16432:257::-;16530:7;;16483;;;;6188:12;16598:20;16530:7;6188:12;16598:11;:20::i;:::-;16588:7;:30;16584:61;;;-1:-1:-1;;16628:7:0;;;6188:12;;-1:-1:-1;16432:257:0;-1:-1:-1;16432:257:0:o;16584:61::-;16664:7;;16673;;-1:-1:-1;16432:257:0;-1:-1:-1;16432:257:0:o;4622:223::-;4742:7;4777:12;4770:5;4762:28;;;;-1:-1:-1;;;4762:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4801:9:0;4813:5;4817:1;4813;:5;:::i;14618:615::-;14718:7;14740;14762;14784;14806;14828;14864:23;14889:12;14903:13;14933:40;14945:7;14954:9;;14965:7;;14933:11;:40::i;:::-;14863:110;;;;;;14984:19;15006:10;:8;:10::i;:::-;14984:32;;15028:15;15045:23;15070:12;15099:46;15111:7;15120:4;15126:5;15133:11;15099;:46::i;:::-;15027:118;;-1:-1:-1;15027:118:0;-1:-1:-1;15027:118:0;-1:-1:-1;15196:15:0;;-1:-1:-1;15213:4:0;;-1:-1:-1;15219:5:0;;-1:-1:-1;;;;;14618:615:0;;;;;;;:::o;3852:136::-;3910:7;3937:43;3941:1;3944;3937:43;;;;;;;;;;;;;;;;;:3;:43::i;3665:179::-;3723:7;;3755:5;3759:1;3755;:5;:::i;:::-;3743:17;;3784:1;3779;:6;;3771:46;;;;-1:-1:-1;;;3771:46:0;;10137:2:1;3771:46:0;;;10119:21:1;10176:2;10156:18;;;10149:30;10215:29;10195:18;;;10188:57;10262:18;;3771:46:0;9935:351:1;14207:211:0;14260:19;14282:10;:8;:10::i;:::-;14260:32;-1:-1:-1;14303:13:0;14319:22;:5;14260:32;14319:9;:22::i;:::-;14393:4;14377:22;;;;:7;:22;;;;;;14303:38;;-1:-1:-1;14377:33:0;;14303:38;14377:26;:33::i;:::-;14368:4;14352:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14207:211:0:o;14426:147::-;14504:7;;:17;;14516:4;14504:11;:17::i;:::-;14494:7;:27;14545:10;;:20;;14560:4;14545:14;:20::i;:::-;14532:10;:33;-1:-1:-1;;14426:147:0:o;15241:469::-;15410:7;;;;15504:30;15530:3;15504:21;:7;15516:8;15504:11;:21::i;:::-;:25;;:30::i;:::-;15489:45;-1:-1:-1;15545:13:0;15561:28;15585:3;15561:19;:7;15573:6;15561:11;:19::i;:28::-;15545:44;-1:-1:-1;15600:23:0;15626:28;15545:44;15626:17;:7;15638:4;15626:11;:17::i;:::-;:21;;:28::i;:::-;15600:54;15690:4;;-1:-1:-1;15696:5:0;;-1:-1:-1;15241:469:0;;-1:-1:-1;;;;;15241:469:0:o;15718:534::-;15912:7;;;;16009:24;:7;16021:11;16009;:24::i;:::-;15991:42;-1:-1:-1;16044:12:0;16059:21;:4;16068:11;16059:8;:21::i;:::-;16044:36;-1:-1:-1;16091:13:0;16107:22;:5;16117:11;16107:9;:22::i;:::-;16091:38;-1:-1:-1;16140:23:0;16166:28;16091:38;16166:17;:7;16178:4;16166:11;:17::i;:28::-;16213:7;;;;-1:-1:-1;16239:4:0;;-1:-1:-1;15718:534:0;;-1:-1:-1;;;;;;;15718:534:0:o;4228:246::-;4286:7;4310:1;4315;4310:6;4306:47;;-1:-1:-1;4340:1:0;4333:8;;4306:47;4363:9;4375:5;4379:1;4375;:5;:::i;:::-;4363:17;-1:-1:-1;4408:1:0;4399:5;4403:1;4363:17;4399:5;:::i;:::-;:10;4391:56;;;;-1:-1:-1;;;4391:56:0;;10666:2:1;4391:56:0;;;10648:21:1;10705:2;10685:18;;;10678:30;10744:34;10724:18;;;10717:62;-1:-1:-1;;;10795:18:1;;;10788:31;10836:19;;4391:56:0;10464:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:782::-;2347:6;2355;2363;2416:2;2404:9;2395:7;2391:23;2387:32;2384:52;;;2432:1;2429;2422:12;2384:52;2472:9;2459:23;2501:18;2542:2;2534:6;2531:14;2528:34;;;2558:1;2555;2548:12;2528:34;2596:6;2585:9;2581:22;2571:32;;2641:7;2634:4;2630:2;2626:13;2622:27;2612:55;;2663:1;2660;2653:12;2612:55;2703:2;2690:16;2729:2;2721:6;2718:14;2715:34;;;2745:1;2742;2735:12;2715:34;2800:7;2793:4;2783:6;2780:1;2776:14;2772:2;2768:23;2764:34;2761:47;2758:67;;;2821:1;2818;2811:12;2758:67;2852:4;2844:13;;;;-1:-1:-1;2876:6:1;-1:-1:-1;;2917:20:1;;2904:34;2974:13;;2967:21;2957:32;;2947:60;;3003:1;3000;2993:12;2947:60;3026:5;3016:15;;;2255:782;;;;;:::o;3042:180::-;3101:6;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;-1:-1:-1;3193:23:1;;3042:180;-1:-1:-1;3042:180:1:o;3227:247::-;3286:6;3339:2;3327:9;3318:7;3314:23;3310:32;3307:52;;;3355:1;3352;3345:12;3307:52;3394:9;3381:23;3413:31;3438:5;3413:31;:::i;3479:388::-;3547:6;3555;3608:2;3596:9;3587:7;3583:23;3579:32;3576:52;;;3624:1;3621;3614:12;3576:52;3663:9;3650:23;3682:31;3707:5;3682:31;:::i;:::-;3732:5;-1:-1:-1;3789:2:1;3774:18;;3761:32;3802:33;3761:32;3802:33;:::i;:::-;3854:7;3844:17;;;3479:388;;;;;:::o;3872:385::-;3958:6;3966;3974;3982;4035:3;4023:9;4014:7;4010:23;4006:33;4003:53;;;4052:1;4049;4042:12;4003:53;-1:-1:-1;;4075:23:1;;;4145:2;4130:18;;4117:32;;-1:-1:-1;4196:2:1;4181:18;;4168:32;;4247:2;4232:18;4219:32;;-1:-1:-1;3872:385:1;-1:-1:-1;3872:385:1:o;4262:356::-;4464:2;4446:21;;;4483:18;;;4476:30;4542:34;4537:2;4522:18;;4515:62;4609:2;4594:18;;4262:356::o;4623:127::-;4684:10;4679:3;4675:20;4672:1;4665:31;4715:4;4712:1;4705:15;4739:4;4736:1;4729:15;4755:127;4816:10;4811:3;4807:20;4804:1;4797:31;4847:4;4844:1;4837:15;4871:4;4868:1;4861:15;4887:135;4926:3;4947:17;;;4944:43;;4967:18;;:::i;:::-;-1:-1:-1;5014:1:1;5003:13;;4887:135::o;5027:217::-;5067:1;5093;5083:132;;5137:10;5132:3;5128:20;5125:1;5118:31;5172:4;5169:1;5162:15;5200:4;5197:1;5190:15;5083:132;-1:-1:-1;5229:9:1;;5027:217::o;5597:125::-;5662:9;;;5683:10;;;5680:36;;;5696:18;;:::i;8018:128::-;8085:9;;;8106:11;;;8103:37;;;8120:18;;:::i;8694:251::-;8764:6;8817:2;8805:9;8796:7;8792:23;8788:32;8785:52;;;8833:1;8830;8823:12;8785:52;8865:9;8859:16;8884:31;8909:5;8884:31;:::i;8950:980::-;9212:4;9260:3;9249:9;9245:19;9291:6;9280:9;9273:25;9317:2;9355:6;9350:2;9339:9;9335:18;9328:34;9398:3;9393:2;9382:9;9378:18;9371:31;9422:6;9457;9451:13;9488:6;9480;9473:22;9526:3;9515:9;9511:19;9504:26;;9565:2;9557:6;9553:15;9539:29;;9586:1;9596:195;9610:6;9607:1;9604:13;9596:195;;;9675:13;;-1:-1:-1;;;;;9671:39:1;9659:52;;9766:15;;;;9731:12;;;;9707:1;9625:9;9596:195;;;-1:-1:-1;;;;;;;9847:32:1;;;;9842:2;9827:18;;9820:60;-1:-1:-1;;;9911:3:1;9896:19;9889:35;9808:3;8950:980;-1:-1:-1;;;8950:980:1:o;10291:168::-;10364:9;;;10395;;10412:15;;;10406:22;;10392:37;10382:71;;10433:18;;:::i

Swarm Source

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