ETH Price: $3,464.74 (+0.49%)
Gas: 4.63 Gwei

Token

ZM (ZM)
 

Overview

Max Total Supply

1,600,000 ZM

Holders

364

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,535.13 ZM

Value
$0.00
0xde782DBD1F92Ec7c091574E94D44798720CEF23a
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:
ZM

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-08
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

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

    function WETH() external pure returns (address);

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

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

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

    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface ISwapPair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface INFT {
    function totalSupply() external view returns (uint256);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function balanceOf(address owner) external view returns (uint256 balance);
}

interface IMintPool {
    function getUserTeamInfo(address account) external view returns (
        uint256 amount, uint256 teamAmount
    );
}

abstract contract Ownable {
    address internal _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!o");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "n0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    mapping(address => bool) public _feeWhiteList;

    uint256 private _tTotal;

    address public fundAddress;
    uint256 private constant MAX = ~uint256(0);

    ISwapRouter public immutable _swapRouter;
    address public immutable _usdt;
    address public immutable _weth;
    ISwapPair public immutable _wethUsdtPair;
    mapping(address => bool) public _swapPairList;
    uint256 public startTradeBlock;
    uint256 public startAddLPBlock;
    address public immutable _mainPair;

    uint256 private constant _sellNFTFee = 100;
    INFT public _nft;
    IMintPool public _mintPool;

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

    constructor (
        address RouterAddress, address USDTAddress,
        string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply,
        address ReceiveAddress
    ){
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;

        uint256 total = Supply * 10 ** Decimals;
        _tTotal = total;

        _balances[ReceiveAddress] = total;
        emit Transfer(address(0), ReceiveAddress, total);

        fundAddress = ReceiveAddress;

        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[RouterAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[msg.sender] = true;
        _feeWhiteList[address(0)] = true;
        _feeWhiteList[address(0x000000000000000000000000000000000000dEaD)] = true;
        _feeWhiteList[address(0x242C82fba9D12eefc2AA4aa105670a62837d07FD)] = true;

        _addHolder(ReceiveAddress);

        ISwapRouter swapRouter = ISwapRouter(RouterAddress);
        _weth = swapRouter.WETH();
        _allowances[address(this)][RouterAddress] = MAX;

        _usdt = USDTAddress;
        _swapRouter = swapRouter;

        ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
        address wethUsdtPair = swapFactory.getPair(USDTAddress, _weth);
        _wethUsdtPair = ISwapPair(wethUsdtPair);
        require(address(0) != wethUsdtPair, "NUE");
        _nftRewardStakeLPCondition = 20000 * 10 ** IERC20(USDTAddress).decimals();

        address ethPair = swapFactory.createPair(address(this), _weth);
        _mainPair = ethPair;
        _swapPairList[ethPair] = true;
    }

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

    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 {
        uint256 balance = balanceOf(from);
        require(balance >= amount, "BNE");

        if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
            uint256 maxSellAmount;
            uint256 remainAmount = 10 ** (_decimals - 6);
            if (balance > remainAmount) {
                maxSellAmount = balance - remainAmount;
            }
            if (amount > maxSellAmount) {
                amount = maxSellAmount;
            }
        }

        if (0 == startAddLPBlock && to == _mainPair && _feeWhiteList[from]) {
            startAddLPBlock = block.number;
        }

        bool takeFee;
        bool isAddLP;
        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (to == _mainPair) {
                    isAddLP = _isAddLiquidity(amount);
                }
                require(0 < startTradeBlock || (startAddLPBlock > 0 && isAddLP));
                takeFee = true;
            }
        }

        _tokenTransfer(from, to, amount, takeFee, isAddLP);
        _addHolder(to);

        if (takeFee && !isAddLP) {
            processNFTReward(_rewardGas);
        }
    }

    function _isAddLiquidity(uint256 amount) internal view returns (bool isAddLP){
        (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
        uint256 amountOther;
        if (rOther > 0 && rThis > 0) {
            amountOther = amount * rOther / rThis;
        }
        //isAddLP
        isAddLP = balanceOther >= rOther + amountOther;
    }

    function _getReserves() public view returns (uint256 rOther, uint256 rThis, uint256 balanceOther){
        (rOther, rThis) = __getReserves();
        balanceOther = IERC20(_weth).balanceOf(_mainPair);
    }

    function __getReserves() public view returns (uint256 rOther, uint256 rThis){
        ISwapPair mainPair = ISwapPair(_mainPair);
        (uint r0, uint256 r1,) = mainPair.getReserves();

        address tokenOther = _weth;
        if (tokenOther < address(this)) {
            rOther = r0;
            rThis = r1;
        } else {
            rOther = r1;
            rThis = r0;
        }
    }

    function getETHUSDTReserves() public view returns (uint256 rEth, uint256 rUsdt){
        (uint r0, uint256 r1,) = _wethUsdtPair.getReserves();
        if (_weth < _usdt) {
            rEth = r0;
            rUsdt = r1;
        } else {
            rEth = r1;
            rUsdt = r0;
        }
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isAddLP
    ) private {
        _balances[sender] = _balances[sender] - tAmount;

        uint256 feeAmount;
        if (takeFee) {
            if (_swapPairList[sender]) {//Buy

            } else if (_swapPairList[recipient]) {//Sell
                uint256 nftFeeAmount = tAmount * _sellNFTFee / 10000;
                if (nftFeeAmount > 0) {
                    feeAmount += nftFeeAmount;
                    _takeTransfer(sender, address(this), nftFeeAmount);
                    if (!isAddLP && !inSwap) {
                        uint256 numToSell = nftFeeAmount * 230 / 100;
                        uint256 thisTokenBalance = balanceOf(address(this));
                        if (numToSell >= thisTokenBalance) {
                            numToSell = thisTokenBalance - 1;
                        }
                        swapTokenForFund(numToSell);
                    }
                }
            }
        }

        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
        if (0 == tokenAmount) {
            return;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _weth;
        _swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    address[] public holders;
    mapping(address => uint256) public holderIndex;

    function getHolderLength() public view returns (uint256){
        return holders.length;
    }

    function _addHolder(address adr) private {
        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    modifier onlyWhiteList() {
        address msgSender = msg.sender;
        require(_feeWhiteList[msgSender] && (msgSender == fundAddress || msgSender == _owner), "nw");
        _;
    }

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

    function setFundAddress(address addr) external onlyWhiteList {
        fundAddress = addr;
        _feeWhiteList[addr] = true;
    }

    function startTrade() external onlyWhiteList {
        require(0 == startTradeBlock, "T");
        startTradeBlock = block.number;
    }

    function startAddLP() external onlyWhiteList {
        require(0 == startAddLPBlock, "T");
        startAddLPBlock = block.number;
    }

    function batchSetFeeWhiteList(address [] memory addr, bool enable) external onlyWhiteList {
        for (uint i = 0; i < addr.length; i++) {
            _feeWhiteList[addr[i]] = enable;
        }
    }

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

    receive() external payable {}

    function claimBalance(uint256 amount) external {
        if (_feeWhiteList[msg.sender]) {
            safeTransferETH(fundAddress, amount);
        }
    }

    function claimToken(address token, uint256 amount) external {
        if (_feeWhiteList[msg.sender]) {
            safeTransfer(token, fundAddress, amount);
        }
    }

    function safeTransfer(address token, address to, uint value) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        if (success && data.length > 0) {

        }
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,bytes memory data) = to.call{value : value}(new bytes(0));
        if (success && data.length > 0) {

        }
    }


    //NFT
    uint256 public nftRewardCondition = 1 ether / 100;
    uint256 public currentNFTIndex;
    uint256 public processNFTBlock;
    uint256 public processNFTBlockDebt = 100;
    uint256 private _nftRewardStakeLPCondition;
    uint256 private _nftRewardMintTeamCondition = 5000;
    mapping(address => uint256) private _nftReward;

    function processNFTReward(uint256 gas) private {
        INFT nft = _nft;
        if (address(0) == address(nft)) {
            return;
        }
        IMintPool mintPool = _mintPool;
        if (address(0) == address(mintPool)) {
            return;
        }
        uint256 rewardCondition = nftRewardCondition;
        if (address(this).balance < rewardCondition) {
            return;
        }
        if (processNFTBlock + processNFTBlockDebt > block.number) {
            return;
        }
        uint totalNFT = nft.totalSupply();
        if (0 == totalNFT) {
            return;
        }

        uint256 amount = rewardCondition / totalNFT;
        if (0 == amount) {
            return;
        }

        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();

        uint256 lpCondition = getNFTRewardLPCondition();
        uint256 teamCondition = _nftRewardMintTeamCondition;

        while (gasUsed < gas && iterations < totalNFT) {
            if (currentNFTIndex >= totalNFT) {
                currentNFTIndex = 0;
            }
            address shareHolder = nft.ownerOf(1 + currentNFTIndex);
            (uint256 lpAmount,uint256 teamAmount) = mintPool.getUserTeamInfo(shareHolder);
            if (lpAmount >= lpCondition && teamAmount >= teamCondition) {
                safeTransferETH(shareHolder, amount);
                _nftReward[shareHolder] += amount;
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentNFTIndex++;
            iterations++;
        }

        processNFTBlock = block.number;
    }

    function getLPInfo() public view returns (uint256 totalLP, uint256 totalLPValue){
        (uint256 rOther,) = __getReserves();
        (uint256 rEth,uint256 rUsdt) = getETHUSDTReserves();
        totalLPValue = 2 * rOther * rUsdt / rEth;
        totalLP = IERC20(_mainPair).totalSupply();
    }

    function getNFTRewardLPCondition() public view returns (uint256 lpCondition){
        (uint256 totalLP,uint256 totalLPValue) = getLPInfo();
        lpCondition = _nftRewardStakeLPCondition * totalLP / totalLPValue;
    }

    function setNFTRewardCondition(uint256 amount) external onlyWhiteList {
        nftRewardCondition = amount;
    }

    function setStakeLPCondition(uint256 c) external onlyWhiteList {
        _nftRewardStakeLPCondition = c;
    }

    function setMintTeamCondition(uint256 c) external onlyWhiteList {
        _nftRewardMintTeamCondition = c;
    }

    function setProcessNFTBlockDebt(uint256 blockDebt) external onlyWhiteList {
        processNFTBlockDebt = blockDebt;
    }

    function setNFT(address nft) external onlyWhiteList {
        _nft = INFT(nft);
    }

    function setMintPool(address mintPool) external onlyWhiteList {
        _mintPool = IMintPool(mintPool);
    }

    uint256 public _rewardGas = 500000;

    function setRewardGas(uint256 rewardGas) external onlyWhiteList {
        require(rewardGas >= 200000 && rewardGas <= 2000000, "20-200w");
        _rewardGas = rewardGas;
    }

    function getTokenInfo() public view returns (
        string memory tokenSymbol, uint256 tokenDecimals,
        uint256 total, uint256 validTotal, uint256 holderNum,
        uint256 nftRewardStakeLPCondition, uint256 nftRewardMintTeamCondition,
        uint256 usdtDecimals, uint256 totalLP, uint256 totalLPValue
    ){
        tokenSymbol = _symbol;
        tokenDecimals = _decimals;
        total = totalSupply();
        validTotal = total - balanceOf(address(0)) - balanceOf(address(0x000000000000000000000000000000000000dEaD));
        holderNum = getHolderLength();
        nftRewardStakeLPCondition = _nftRewardStakeLPCondition;
        nftRewardMintTeamCondition = _nftRewardMintTeamCondition;
        usdtDecimals = IERC20(_usdt).decimals();
        (totalLP, totalLPValue) = getLPInfo();
    }

    function getUserNFTInfo(address account) public view returns (
        uint256 tokenBalance, uint256 nftReward, uint256 nftBalance,
        uint256 lpAmount, uint256 teamAmount, uint256 lpValue
    ){
        tokenBalance = balanceOf(account);
        nftReward = _nftReward[account];
        if (address(0) != address(_nft)) {
            nftBalance = _nft.balanceOf(account);
        }
        if (address(0) != address(_mintPool)) {
            (uint256 totalLP,uint256 totalLPValue) = getLPInfo();
            (lpAmount, teamAmount) = _mintPool.getUserTeamInfo(account);
            lpValue = lpAmount * totalLPValue / totalLP;
        }
    }
}

contract ZM is AbsToken {
    constructor() AbsToken(
    //SwapRouter
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),
    //USDT
        address(0xdAC17F958D2ee523a2206206994597C13D831ec7),
        "ZM",
        "ZM",
        18,
        1600000,
    //Receive
        address(0x68DAc8c072e3BF0407933984E6DBaD605D3b7874)
    ){

    }
}

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":"__getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"},{"internalType":"uint256","name":"balanceOther","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mintPool","outputs":[{"internalType":"contract IMintPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nft","outputs":[{"internalType":"contract INFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wethUsdtPair","outputs":[{"internalType":"contract ISwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentNFTIndex","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":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getETHUSDTReserves","outputs":[{"internalType":"uint256","name":"rEth","type":"uint256"},{"internalType":"uint256","name":"rUsdt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLPInfo","outputs":[{"internalType":"uint256","name":"totalLP","type":"uint256"},{"internalType":"uint256","name":"totalLPValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNFTRewardLPCondition","outputs":[{"internalType":"uint256","name":"lpCondition","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenInfo","outputs":[{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"tokenDecimals","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"validTotal","type":"uint256"},{"internalType":"uint256","name":"holderNum","type":"uint256"},{"internalType":"uint256","name":"nftRewardStakeLPCondition","type":"uint256"},{"internalType":"uint256","name":"nftRewardMintTeamCondition","type":"uint256"},{"internalType":"uint256","name":"usdtDecimals","type":"uint256"},{"internalType":"uint256","name":"totalLP","type":"uint256"},{"internalType":"uint256","name":"totalLPValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserNFTInfo","outputs":[{"internalType":"uint256","name":"tokenBalance","type":"uint256"},{"internalType":"uint256","name":"nftReward","type":"uint256"},{"internalType":"uint256","name":"nftBalance","type":"uint256"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"teamAmount","type":"uint256"},{"internalType":"uint256","name":"lpValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processNFTBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processNFTBlockDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mintPool","type":"address"}],"name":"setMintPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"c","type":"uint256"}],"name":"setMintTeamCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nft","type":"address"}],"name":"setNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNFTRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockDebt","type":"uint256"}],"name":"setProcessNFTBlockDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardGas","type":"uint256"}],"name":"setRewardGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"c","type":"uint256"}],"name":"setStakeLPCondition","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":"startAddLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startAddLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

610120604052662386f26fc1000060105560646013556113886015556207a1206017553480156200002f57600080fd5b506040805180820182526002808252615a4d60f01b602080840182905284518086018652928352820152600080546001600160a01b0319163390811782559351737a250d5630b4cf539739df2c5dacb4c659f2488d9473dac17f958d2ee523a2206206994597c13d831ec794939260129262186a00927368dac8c072e3bf0407933984e6dbad605d3b78749290918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506003620000f4868262000710565b50600462000103858262000710565b506005805460ff191660ff851617905560006200012284600a620008f1565b6200012e908462000909565b60078190556001600160a01b0383166000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001859085815260200190565b60405180910390a3600880546001600160a01b0319166001600160a01b03848116918217909255600090815260066020526040808220805460ff199081166001908117909255938c1683528183208054851682179055308352818320805485168217905533835290822080548416821790557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f880548416821790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805484168217905573242c82fba9d12eefc2aa4aa105670a62837d07fd9091527f3cb0a6b404d29a502c38475377a41fc807c9d3d51e079a64131abb783f9daf0a80549092161790556200029582620005a1565b6000889050806001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ff919062000923565b6001600160a01b0390811660c0523060009081526002602090815260408083208d85168452825280832060001990558b841660a0529284166080819052835163c45a015560e01b815293519293909263c45a0155926004808401939192918290030181865afa15801562000377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039d919062000923565b60c05160405163e6a4390560e01b81526001600160a01b038c8116600483015291821660248201529192506000919083169063e6a4390590604401602060405180830381865afa158015620003f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041c919062000923565b6001600160a01b03811660e0819052909150600003620004685760405162461bcd60e51b81526020600482015260036024820152624e554560e81b604482015260640160405180910390fd5b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004cd91906200094e565b620004da90600a620008f1565b620004e890614e2062000909565b60145560c0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015260009184169063c9c65396906044016020604051808303816000875af115801562000540573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000566919062000923565b6001600160a01b03166101008190526000908152600960205260409020805460ff1916600117905550620009899a5050505050505050505050565b6001600160a01b0381166000908152600f602052604081205490036200066857600e541580620006055750806001600160a01b0316600e600081548110620005ed57620005ed62000973565b6000918252602090912001546001600160a01b031614155b156200066857600e80546001600160a01b0383166000818152600f60205260408120839055600183018455929092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b03191690911790555b50565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200069657607f821691505b602082108103620006b757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200070b57600081815260208120601f850160051c81016020861015620006e65750805b601f850160051c820191505b818110156200070757828155600101620006f2565b5050505b505050565b81516001600160401b038111156200072c576200072c6200066b565b62000744816200073d845462000681565b84620006bd565b602080601f8311600181146200077c5760008415620007635750858301515b600019600386901b1c1916600185901b17855562000707565b600085815260208120601f198616915b82811015620007ad578886015182559484019460019091019084016200078c565b5085821015620007cc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000833578160001904821115620008175762000817620007dc565b808516156200082557918102915b93841c9390800290620007f7565b509250929050565b6000826200084c57506001620008eb565b816200085b57506000620008eb565b81600181146200087457600281146200087f576200089f565b6001915050620008eb565b60ff841115620008935762000893620007dc565b50506001821b620008eb565b5060208310610133831016604e8410600b8410161715620008c4575081810a620008eb565b620008d08383620007f2565b8060001904821115620008e757620008e7620007dc565b0290505b92915050565b60006200090260ff8416836200083b565b9392505050565b8082028115828204841417620008eb57620008eb620007dc565b6000602082840312156200093657600080fd5b81516001600160a01b03811681146200090257600080fd5b6000602082840312156200096157600080fd5b815160ff811681146200090257600080fd5b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161010051612daf62000a2960003960008181610594015281816111f90152818161188e01528181611a3101528181611e180152611f0901526000818161077c0152610e4901526000818161083b01528181610f0c01528181611292015281816118bc015261263001526000818161091001528181610ee201526116fd01526000818161048c01526126870152612daf6000f3fe6080604052600436106103395760003560e01c806385dc3004116101ab578063af58e6f0116100f7578063e82bef2911610095578063e9fad3961161006f578063e9fad39614610a41578063f0c52e4c14610a61578063f2fde38b14610a76578063f56e9c6614610a9657600080fd5b8063e82bef29146109de578063e84fb12d146109fe578063e9bbb04014610a1457600080fd5b8063ce4d9f15116100d1578063ce4d9f1514610932578063d58812e614610962578063d83d414314610978578063dd62ed3e1461099857600080fd5b8063af58e6f0146108c8578063b2887bec146108de578063be3601f8146108fe57600080fd5b806398300e1811610164578063a17645951161013e578063a176459514610829578063a84248611461085d578063a9059cbb1461087d578063abb1dc441461089d57600080fd5b806398300e18146107d35780639bb85344146107f35780639fa25b7b1461080957600080fd5b806385dc3004146107165780638ad76d08146107365780638da5cb5b1461074c5780639071ce791461076a578063917ceeb51461079e57806395d89b41146107be57600080fd5b80634188bf5a11610285578063625163591161022357806370a08231116101fd57806370a08231146106a1578063715018a6146106d75780637a37a0ed146106ec5780637d3c13e91461070157600080fd5b806362516359146106575780636c5808011461066c5780636dd13dd71461068157600080fd5b8063543137941161025f57806354313794146105eb578063553193ca1461060157806355eaf2951461061757806356ac04721461063757600080fd5b80634188bf5a1461058257806347a4efc7146105b65780634f21869c146105d657600080fd5b806319697dc6116102f25780632a11ced0116102cc5780632a11ced0146104e6578063313ce567146105065780633c11100d1461052857806340d139881461055857600080fd5b806319697dc61461045a578063206c17bb1461047a57806323b872dd146104c657600080fd5b806301986fad1461034557806306fdde031461038a578063095ea7b3146103ac578063098800d9146103cc5780631698755f1461041957806318160ddd1461043b57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610375610360366004612730565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561039657600080fd5b5061039f610ab6565b60405161038191906127a4565b3480156103b857600080fd5b506103756103c73660046127b7565b610b48565b3480156103d857600080fd5b506103ec6103e7366004612730565b610b5f565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610381565b34801561042557600080fd5b506104396104343660046127b7565b610cd8565b005b34801561044757600080fd5b506007545b604051908152602001610381565b34801561046657600080fd5b506104396104753660046127e3565b610d12565b34801561048657600080fd5b506104ae7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610381565b3480156104d257600080fd5b506103756104e13660046127fc565b610d80565b3480156104f257600080fd5b506104ae6105013660046127e3565b610e17565b34801561051257600080fd5b5060055460405160ff9091168152602001610381565b34801561053457600080fd5b50610375610543366004612730565b60096020526000908152604090205460ff1681565b34801561056457600080fd5b5061056d610e41565b60408051928352602083019190915201610381565b34801561058e57600080fd5b506104ae7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c257600080fd5b506104396105d1366004612730565b610f52565b3480156105e257600080fd5b50600e5461044c565b3480156105f757600080fd5b5061044c60125481565b34801561060d57600080fd5b5061044c600a5481565b34801561062357600080fd5b50600d546104ae906001600160a01b031681565b34801561064357600080fd5b506104396106523660046127e3565b610fd4565b34801561066357600080fd5b5061044c611039565b34801561067857600080fd5b5061043961106a565b34801561068d57600080fd5b5061043961069c3660046127e3565b611104565b3480156106ad57600080fd5b5061044c6106bc366004612730565b6001600160a01b031660009081526001602052604090205490565b3480156106e357600080fd5b50610439611169565b3480156106f857600080fd5b5061056d6111f2565b34801561070d57600080fd5b506104396112dc565b34801561072257600080fd5b50610439610731366004612730565b611376565b34801561074257600080fd5b5061044c60135481565b34801561075857600080fd5b506000546001600160a01b03166104ae565b34801561077657600080fd5b506104ae7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107aa57600080fd5b506104396107b93660046127e3565b611410565b3480156107ca57600080fd5b5061039f6114c1565b3480156107df57600080fd5b50600c546104ae906001600160a01b031681565b3480156107ff57600080fd5b5061044c600b5481565b34801561081557600080fd5b506104396108243660046127e3565b6114d0565b34801561083557600080fd5b506104ae7f000000000000000000000000000000000000000000000000000000000000000081565b34801561086957600080fd5b5061043961087836600461284d565b611535565b34801561088957600080fd5b506103756108983660046127b7565b6115c0565b3480156108a957600080fd5b506108b26115cd565b6040516103819a99989796959493929190612882565b3480156108d457600080fd5b5061044c60115481565b3480156108ea57600080fd5b506104396108f93660046128f2565b61179e565b34801561090a57600080fd5b506104ae7f000000000000000000000000000000000000000000000000000000000000000081565b34801561093e57600080fd5b5061094761186a565b60408051938452602084019290925290820152606001610381565b34801561096e57600080fd5b5061044c60105481565b34801561098457600080fd5b5061043961099336600461284d565b611930565b3480156109a457600080fd5b5061044c6109b33660046129c9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109ea57600080fd5b506008546104ae906001600160a01b031681565b348015610a0a57600080fd5b5061044c60175481565b348015610a2057600080fd5b5061044c610a2f366004612730565b600f6020526000908152604090205481565b348015610a4d57600080fd5b50610439610a5c3660046127e3565b6119bb565b348015610a6d57600080fd5b5061056d6119ec565b348015610a8257600080fd5b50610439610a91366004612730565b611aba565b348015610aa257600080fd5b50610439610ab1366004612730565b611b8f565b606060038054610ac590612a02565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190612a02565b8015610b3e5780601f10610b1357610100808354040283529160200191610b3e565b820191906000526020600020905b815481529060010190602001808311610b2157829003601f168201915b5050505050905090565b6000610b55338484611c11565b5060015b92915050565b600080600080600080610b87876001600160a01b031660009081526001602052604090205490565b6001600160a01b03808916600090815260166020526040902054600c5492985096501615610c2057600c546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa158015610bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1d9190612a3c565b93505b600d546001600160a01b031615610ccf57600080610c3c6119ec565b600d5460405163c09d0e0f60e01b81526001600160a01b038d81166004830152939550919350919091169063c09d0e0f906024016040805180830381865afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb09190612a55565b909550935081610cc08287612a8f565b610cca9190612aa6565b925050505b91939550919395565b3360009081526006602052604090205460ff1615610d0857600854610d089083906001600160a01b031683611c73565b5050565b60075490565b3360008181526006602052604090205460ff168015610d5557506008546001600160a01b0382811691161480610d5557506000546001600160a01b038281169116145b610d7a5760405162461bcd60e51b8152600401610d7190612ac8565b60405180910390fd5b50601355565b6000610d8d848484611d2d565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610e0d576001600160a01b0384166000908152600260209081526040808320338452909152902054610de8908390612ae4565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b600e8181548110610e2757600080fd5b6000918252602090912001546001600160a01b0316905081565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190612b0e565b506001600160701b031691506001600160701b031691507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161015610f4557819350809250610f4c565b8093508192505b50509091565b3360008181526006602052604090205460ff168015610f9557506008546001600160a01b0382811691161480610f9557506000546001600160a01b038281169116145b610fb15760405162461bcd60e51b8152600401610d7190612ac8565b50600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602052604090205460ff16801561101757506008546001600160a01b038281169116148061101757506000546001600160a01b038281169116145b6110335760405162461bcd60e51b8152600401610d7190612ac8565b50601455565b60008060006110466119ec565b9150915080826014546110599190612a8f565b6110639190612aa6565b9250505090565b3360008181526006602052604090205460ff1680156110ad57506008546001600160a01b03828116911614806110ad57506000546001600160a01b038281169116145b6110c95760405162461bcd60e51b8152600401610d7190612ac8565b600a54156110fd5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610d71565b5043600a55565b3360008181526006602052604090205460ff16801561114757506008546001600160a01b038281169116148061114757506000546001600160a01b038281169116145b6111635760405162461bcd60e51b8152600401610d7190612ac8565b50601055565b6000546001600160a01b031633146111a85760405162461bcd60e51b8152602060048201526002602482015261216f60f01b6044820152606401610d71565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60008060007f00000000000000000000000000000000000000000000000000000000000000009050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127f9190612b0e565b506001600160701b0391821693501690507f0000000000000000000000000000000000000000000000000000000000000000306001600160a01b03821610156112cd578295508194506112d4565b8195508294505b505050509091565b3360008181526006602052604090205460ff16801561131f57506008546001600160a01b038281169116148061131f57506000546001600160a01b038281169116145b61133b5760405162461bcd60e51b8152600401610d7190612ac8565b600b541561136f5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610d71565b5043600b55565b3360008181526006602052604090205460ff1680156113b957506008546001600160a01b03828116911614806113b957506000546001600160a01b038281169116145b6113d55760405162461bcd60e51b8152600401610d7190612ac8565b50600880546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b3360008181526006602052604090205460ff16801561145357506008546001600160a01b038281169116148061145357506000546001600160a01b038281169116145b61146f5760405162461bcd60e51b8152600401610d7190612ac8565b62030d4082101580156114855750621e84808211155b6114bb5760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610d71565b50601755565b606060048054610ac590612a02565b3360008181526006602052604090205460ff16801561151357506008546001600160a01b038281169116148061151357506000546001600160a01b038281169116145b61152f5760405162461bcd60e51b8152600401610d7190612ac8565b50601555565b3360008181526006602052604090205460ff16801561157857506008546001600160a01b038281169116148061157857506000546001600160a01b038281169116145b6115945760405162461bcd60e51b8152600401610d7190612ac8565b506001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610b55338484611d2d565b60606000806000806000806000806000600480546115ea90612a02565b80601f016020809104026020016040519081016040528092919081815260200182805461161690612a02565b80156116635780601f1061163857610100808354040283529160200191611663565b820191906000526020600020905b81548152906001019060200180831161164657829003601f168201915b5050600554939d505060ff9092169a5061167f9150610d0c9050565b60016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4954919950906116da908a612ae4565b6116e49190612ae4565b96506116ef600e5490565b9550601454945060155493507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177d9190612b5e565b60ff16925061178a6119ec565b809250819350505090919293949596979899565b3360008181526006602052604090205460ff1680156117e157506008546001600160a01b03828116911614806117e157506000546001600160a01b038281169116145b6117fd5760405162461bcd60e51b8152600401610d7190612ac8565b60005b835181101561186457826006600086848151811061182057611820612b81565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061185c81612b97565b915050611800565b50505050565b60008060006118776111f2565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529295509093507f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119299190612a3c565b9050909192565b3360008181526006602052604090205460ff16801561197357506008546001600160a01b038281169116148061197357506000546001600160a01b038281169116145b61198f5760405162461bcd60e51b8152600401610d7190612ac8565b506001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b3360009081526006602052604090205460ff16156119e9576008546119e9906001600160a01b031682611fa6565b50565b60008060006119f96111f2565b509050600080611a07610e41565b90925090508181611a19856002612a8f565b611a239190612a8f565b611a2d9190612aa6565b93507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab19190612a3c565b94505050509091565b6000546001600160a01b03163314611af95760405162461bcd60e51b8152602060048201526002602482015261216f60f01b6044820152606401610d71565b6001600160a01b038116611b345760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610d71565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602052604090205460ff168015611bd257506008546001600160a01b0382811691161480611bd257506000546001600160a01b038281169116145b611bee5760405162461bcd60e51b8152600401610d7190612ac8565b50600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ccf9190612bb0565b6000604051808303816000865af19150503d8060008114611d0c576040519150601f19603f3d011682016040523d82523d6000602084013e611d11565b606091505b5091509150818015611d24575060008151115b505b5050505050565b6001600160a01b03831660009081526001602052604090205481811015611d7c5760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610d71565b6001600160a01b03841660009081526006602052604090205460ff16158015611dbe57506001600160a01b03831660009081526006602052604090205460ff16155b15611e0b576005546000908190611dda9060069060ff16612bcc565b611de590600a612cc9565b905080831115611dfc57611df98184612ae4565b91505b81841115611e08578193505b50505b600b54158015611e4c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b8015611e7057506001600160a01b03841660009081526006602052604090205460ff165b15611e7a5743600b555b6001600160a01b038416600090815260096020526040812054819060ff1680611ebb57506001600160a01b03851660009081526009602052604090205460ff165b15611f75576001600160a01b03861660009081526006602052604090205460ff16158015611f0257506001600160a01b03851660009081526006602052604090205460ff16155b15611f75577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611f4c57611f4984612025565b90505b600a5460001080611f6757506000600b54118015611f675750805b611f7057600080fd5b600191505b611f82868686858561207e565b611f8b856121be565b818015611f96575080155b15611d2457611d24601754612281565b60408051600080825260208201928390529182916001600160a01b038616918591611fd091612bb0565b60006040518083038185875af1925050503d806000811461200d576040519150601f19603f3d011682016040523d82523d6000602084013e612012565b606091505b5091509150818015611d26575050505050565b60008060008061203361186a565b9250925092506000808411801561204a5750600083115b15612067578261205a8588612a8f565b6120649190612aa6565b90505b6120718185612cd8565b9091101595945050505050565b6001600160a01b0385166000908152600160205260409020546120a2908490612ae4565b6001600160a01b03861660009081526001602052604081209190915582156121aa576001600160a01b03861660009081526009602052604090205460ff166121aa576001600160a01b03851660009081526009602052604090205460ff16156121aa576000612710612115606487612a8f565b61211f9190612aa6565b905080156121a8576121318183612cd8565b915061213e873083612548565b821580156121565750600d54600160a01b900460ff16155b156121a8576000606461216a8360e6612a8f565b6121749190612aa6565b3060009081526001602052604090205490915080821061219c57612199600182612ae4565b91505b6121a5826125c0565b50505b505b611d2486866121b98488612ae4565b612548565b6001600160a01b0381166000908152600f602052604081205490036119e957600e54158061221d5750806001600160a01b0316600e60008154811061220557612205612b81565b6000918252602090912001546001600160a01b031614155b156119e957600e80546001600160a01b0383166000818152600f60205260408120839055600183018455929092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b031916909117905550565b600c546001600160a01b0316600081900361229a575050565b600d546001600160a01b031660008190036122b457505050565b601054478111156122c55750505050565b436013546012546122d69190612cd8565b11156122e25750505050565b6000836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123469190612a3c565b905080600003612357575050505050565b60006123638284612aa6565b90508060000361237557505050505050565b60008060005a90506000612387611039565b6015549091505b8a8510801561239c57508684105b156125375786601154106123b05760006011555b60008a6001600160a01b0316636352211e60115460016123d09190612cd8565b6040518263ffffffff1660e01b81526004016123ee91815260200190565b602060405180830381865afa15801561240b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242f9190612ceb565b60405163c09d0e0f60e01b81526001600160a01b0380831660048301529192506000918291908d169063c09d0e0f906024016040805180830381865afa15801561247d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a19190612a55565b915091508482101580156124b55750838110155b156124f2576124c4838a611fa6565b6001600160a01b038316600090815260166020526040812080548b92906124ec908490612cd8565b90915550505b5a6124fd9087612ae4565b6125079089612cd8565b97505a60118054919750600061251c83612b97565b9190505550868061252c90612b97565b97505050505061238e565b505043601255505050505050505050565b6001600160a01b03821660009081526001602052604090205461256c908290612cd8565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c669085815260200190565b600d805460ff60a01b1916600160a01b17905580156126fb57604080516002808252606082018352600092602083019080368337019050509050308160008151811061260e5761260e612b81565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061266257612662612b81565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906126c7908590600090869030904290600401612d08565b600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b50505050505b50600d805460ff60a01b19169055565b6001600160a01b03811681146119e957600080fd5b803561272b8161270b565b919050565b60006020828403121561274257600080fd5b813561274d8161270b565b9392505050565b60005b8381101561276f578181015183820152602001612757565b50506000910152565b60008151808452612790816020860160208601612754565b601f01601f19169290920160200192915050565b60208152600061274d6020830184612778565b600080604083850312156127ca57600080fd5b82356127d58161270b565b946020939093013593505050565b6000602082840312156127f557600080fd5b5035919050565b60008060006060848603121561281157600080fd5b833561281c8161270b565b9250602084013561282c8161270b565b929592945050506040919091013590565b8035801515811461272b57600080fd5b6000806040838503121561286057600080fd5b823561286b8161270b565b91506128796020840161283d565b90509250929050565b60006101408083526128968184018e612778565b602084019c909c52505060408101989098526060880196909652608087019490945260a086019290925260c085015260e084015261010083015261012090910152919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561290557600080fd5b823567ffffffffffffffff8082111561291d57600080fd5b818501915085601f83011261293157600080fd5b8135602082821115612945576129456128dc565b8160051b604051601f19603f8301168101818110868211171561296a5761296a6128dc565b60405292835281830193508481018201928984111561298857600080fd5b948201945b838610156129ad5761299e86612720565b8552948201949382019361298d565b96506129bc905087820161283d565b9450505050509250929050565b600080604083850312156129dc57600080fd5b82356129e78161270b565b915060208301356129f78161270b565b809150509250929050565b600181811c90821680612a1657607f821691505b602082108103612a3657634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612a4e57600080fd5b5051919050565b60008060408385031215612a6857600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b5957610b59612a79565b600082612ac357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600290820152616e7760f01b604082015260600190565b81810381811115610b5957610b59612a79565b80516001600160701b038116811461272b57600080fd5b600080600060608486031215612b2357600080fd5b612b2c84612af7565b9250612b3a60208501612af7565b9150604084015163ffffffff81168114612b5357600080fd5b809150509250925092565b600060208284031215612b7057600080fd5b815160ff8116811461274d57600080fd5b634e487b7160e01b600052603260045260246000fd5b600060018201612ba957612ba9612a79565b5060010190565b60008251612bc2818460208701612754565b9190910192915050565b60ff8281168282160390811115610b5957610b59612a79565b600181815b80851115612c20578160001904821115612c0657612c06612a79565b80851615612c1357918102915b93841c9390800290612bea565b509250929050565b600082612c3757506001610b59565b81612c4457506000610b59565b8160018114612c5a5760028114612c6457612c80565b6001915050610b59565b60ff841115612c7557612c75612a79565b50506001821b610b59565b5060208310610133831016604e8410600b8410161715612ca3575081810a610b59565b612cad8383612be5565b8060001904821115612cc157612cc1612a79565b029392505050565b600061274d60ff841683612c28565b80820180821115610b5957610b59612a79565b600060208284031215612cfd57600080fd5b815161274d8161270b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d585784516001600160a01b031683529383019391830191600101612d33565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f0582849b345e1ac0b6402f2a0ce26fc707eb3a636d67de8540cfb095d437b0b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103395760003560e01c806385dc3004116101ab578063af58e6f0116100f7578063e82bef2911610095578063e9fad3961161006f578063e9fad39614610a41578063f0c52e4c14610a61578063f2fde38b14610a76578063f56e9c6614610a9657600080fd5b8063e82bef29146109de578063e84fb12d146109fe578063e9bbb04014610a1457600080fd5b8063ce4d9f15116100d1578063ce4d9f1514610932578063d58812e614610962578063d83d414314610978578063dd62ed3e1461099857600080fd5b8063af58e6f0146108c8578063b2887bec146108de578063be3601f8146108fe57600080fd5b806398300e1811610164578063a17645951161013e578063a176459514610829578063a84248611461085d578063a9059cbb1461087d578063abb1dc441461089d57600080fd5b806398300e18146107d35780639bb85344146107f35780639fa25b7b1461080957600080fd5b806385dc3004146107165780638ad76d08146107365780638da5cb5b1461074c5780639071ce791461076a578063917ceeb51461079e57806395d89b41146107be57600080fd5b80634188bf5a11610285578063625163591161022357806370a08231116101fd57806370a08231146106a1578063715018a6146106d75780637a37a0ed146106ec5780637d3c13e91461070157600080fd5b806362516359146106575780636c5808011461066c5780636dd13dd71461068157600080fd5b8063543137941161025f57806354313794146105eb578063553193ca1461060157806355eaf2951461061757806356ac04721461063757600080fd5b80634188bf5a1461058257806347a4efc7146105b65780634f21869c146105d657600080fd5b806319697dc6116102f25780632a11ced0116102cc5780632a11ced0146104e6578063313ce567146105065780633c11100d1461052857806340d139881461055857600080fd5b806319697dc61461045a578063206c17bb1461047a57806323b872dd146104c657600080fd5b806301986fad1461034557806306fdde031461038a578063095ea7b3146103ac578063098800d9146103cc5780631698755f1461041957806318160ddd1461043b57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610375610360366004612730565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561039657600080fd5b5061039f610ab6565b60405161038191906127a4565b3480156103b857600080fd5b506103756103c73660046127b7565b610b48565b3480156103d857600080fd5b506103ec6103e7366004612730565b610b5f565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610381565b34801561042557600080fd5b506104396104343660046127b7565b610cd8565b005b34801561044757600080fd5b506007545b604051908152602001610381565b34801561046657600080fd5b506104396104753660046127e3565b610d12565b34801561048657600080fd5b506104ae7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610381565b3480156104d257600080fd5b506103756104e13660046127fc565b610d80565b3480156104f257600080fd5b506104ae6105013660046127e3565b610e17565b34801561051257600080fd5b5060055460405160ff9091168152602001610381565b34801561053457600080fd5b50610375610543366004612730565b60096020526000908152604090205460ff1681565b34801561056457600080fd5b5061056d610e41565b60408051928352602083019190915201610381565b34801561058e57600080fd5b506104ae7f000000000000000000000000f150ad7659745c2df5c1e9203fc1312a9fc7f22881565b3480156105c257600080fd5b506104396105d1366004612730565b610f52565b3480156105e257600080fd5b50600e5461044c565b3480156105f757600080fd5b5061044c60125481565b34801561060d57600080fd5b5061044c600a5481565b34801561062357600080fd5b50600d546104ae906001600160a01b031681565b34801561064357600080fd5b506104396106523660046127e3565b610fd4565b34801561066357600080fd5b5061044c611039565b34801561067857600080fd5b5061043961106a565b34801561068d57600080fd5b5061043961069c3660046127e3565b611104565b3480156106ad57600080fd5b5061044c6106bc366004612730565b6001600160a01b031660009081526001602052604090205490565b3480156106e357600080fd5b50610439611169565b3480156106f857600080fd5b5061056d6111f2565b34801561070d57600080fd5b506104396112dc565b34801561072257600080fd5b50610439610731366004612730565b611376565b34801561074257600080fd5b5061044c60135481565b34801561075857600080fd5b506000546001600160a01b03166104ae565b34801561077657600080fd5b506104ae7f0000000000000000000000000d4a11d5eeaac28ec3f61d100daf4d40471f185281565b3480156107aa57600080fd5b506104396107b93660046127e3565b611410565b3480156107ca57600080fd5b5061039f6114c1565b3480156107df57600080fd5b50600c546104ae906001600160a01b031681565b3480156107ff57600080fd5b5061044c600b5481565b34801561081557600080fd5b506104396108243660046127e3565b6114d0565b34801561083557600080fd5b506104ae7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561086957600080fd5b5061043961087836600461284d565b611535565b34801561088957600080fd5b506103756108983660046127b7565b6115c0565b3480156108a957600080fd5b506108b26115cd565b6040516103819a99989796959493929190612882565b3480156108d457600080fd5b5061044c60115481565b3480156108ea57600080fd5b506104396108f93660046128f2565b61179e565b34801561090a57600080fd5b506104ae7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec781565b34801561093e57600080fd5b5061094761186a565b60408051938452602084019290925290820152606001610381565b34801561096e57600080fd5b5061044c60105481565b34801561098457600080fd5b5061043961099336600461284d565b611930565b3480156109a457600080fd5b5061044c6109b33660046129c9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109ea57600080fd5b506008546104ae906001600160a01b031681565b348015610a0a57600080fd5b5061044c60175481565b348015610a2057600080fd5b5061044c610a2f366004612730565b600f6020526000908152604090205481565b348015610a4d57600080fd5b50610439610a5c3660046127e3565b6119bb565b348015610a6d57600080fd5b5061056d6119ec565b348015610a8257600080fd5b50610439610a91366004612730565b611aba565b348015610aa257600080fd5b50610439610ab1366004612730565b611b8f565b606060038054610ac590612a02565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190612a02565b8015610b3e5780601f10610b1357610100808354040283529160200191610b3e565b820191906000526020600020905b815481529060010190602001808311610b2157829003601f168201915b5050505050905090565b6000610b55338484611c11565b5060015b92915050565b600080600080600080610b87876001600160a01b031660009081526001602052604090205490565b6001600160a01b03808916600090815260166020526040902054600c5492985096501615610c2057600c546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa158015610bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1d9190612a3c565b93505b600d546001600160a01b031615610ccf57600080610c3c6119ec565b600d5460405163c09d0e0f60e01b81526001600160a01b038d81166004830152939550919350919091169063c09d0e0f906024016040805180830381865afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb09190612a55565b909550935081610cc08287612a8f565b610cca9190612aa6565b925050505b91939550919395565b3360009081526006602052604090205460ff1615610d0857600854610d089083906001600160a01b031683611c73565b5050565b60075490565b3360008181526006602052604090205460ff168015610d5557506008546001600160a01b0382811691161480610d5557506000546001600160a01b038281169116145b610d7a5760405162461bcd60e51b8152600401610d7190612ac8565b60405180910390fd5b50601355565b6000610d8d848484611d2d565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610e0d576001600160a01b0384166000908152600260209081526040808320338452909152902054610de8908390612ae4565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b600e8181548110610e2757600080fd5b6000918252602090912001546001600160a01b0316905081565b6000806000807f0000000000000000000000000d4a11d5eeaac28ec3f61d100daf4d40471f18526001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190612b0e565b506001600160701b031691506001600160701b031691507f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03167f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03161015610f4557819350809250610f4c565b8093508192505b50509091565b3360008181526006602052604090205460ff168015610f9557506008546001600160a01b0382811691161480610f9557506000546001600160a01b038281169116145b610fb15760405162461bcd60e51b8152600401610d7190612ac8565b50600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602052604090205460ff16801561101757506008546001600160a01b038281169116148061101757506000546001600160a01b038281169116145b6110335760405162461bcd60e51b8152600401610d7190612ac8565b50601455565b60008060006110466119ec565b9150915080826014546110599190612a8f565b6110639190612aa6565b9250505090565b3360008181526006602052604090205460ff1680156110ad57506008546001600160a01b03828116911614806110ad57506000546001600160a01b038281169116145b6110c95760405162461bcd60e51b8152600401610d7190612ac8565b600a54156110fd5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610d71565b5043600a55565b3360008181526006602052604090205460ff16801561114757506008546001600160a01b038281169116148061114757506000546001600160a01b038281169116145b6111635760405162461bcd60e51b8152600401610d7190612ac8565b50601055565b6000546001600160a01b031633146111a85760405162461bcd60e51b8152602060048201526002602482015261216f60f01b6044820152606401610d71565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60008060007f000000000000000000000000f150ad7659745c2df5c1e9203fc1312a9fc7f2289050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127f9190612b0e565b506001600160701b0391821693501690507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306001600160a01b03821610156112cd578295508194506112d4565b8195508294505b505050509091565b3360008181526006602052604090205460ff16801561131f57506008546001600160a01b038281169116148061131f57506000546001600160a01b038281169116145b61133b5760405162461bcd60e51b8152600401610d7190612ac8565b600b541561136f5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610d71565b5043600b55565b3360008181526006602052604090205460ff1680156113b957506008546001600160a01b03828116911614806113b957506000546001600160a01b038281169116145b6113d55760405162461bcd60e51b8152600401610d7190612ac8565b50600880546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b3360008181526006602052604090205460ff16801561145357506008546001600160a01b038281169116148061145357506000546001600160a01b038281169116145b61146f5760405162461bcd60e51b8152600401610d7190612ac8565b62030d4082101580156114855750621e84808211155b6114bb5760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610d71565b50601755565b606060048054610ac590612a02565b3360008181526006602052604090205460ff16801561151357506008546001600160a01b038281169116148061151357506000546001600160a01b038281169116145b61152f5760405162461bcd60e51b8152600401610d7190612ac8565b50601555565b3360008181526006602052604090205460ff16801561157857506008546001600160a01b038281169116148061157857506000546001600160a01b038281169116145b6115945760405162461bcd60e51b8152600401610d7190612ac8565b506001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610b55338484611d2d565b60606000806000806000806000806000600480546115ea90612a02565b80601f016020809104026020016040519081016040528092919081815260200182805461161690612a02565b80156116635780601f1061163857610100808354040283529160200191611663565b820191906000526020600020905b81548152906001019060200180831161164657829003601f168201915b5050600554939d505060ff9092169a5061167f9150610d0c9050565b60016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4954919950906116da908a612ae4565b6116e49190612ae4565b96506116ef600e5490565b9550601454945060155493507f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec76001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177d9190612b5e565b60ff16925061178a6119ec565b809250819350505090919293949596979899565b3360008181526006602052604090205460ff1680156117e157506008546001600160a01b03828116911614806117e157506000546001600160a01b038281169116145b6117fd5760405162461bcd60e51b8152600401610d7190612ac8565b60005b835181101561186457826006600086848151811061182057611820612b81565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061185c81612b97565b915050611800565b50505050565b60008060006118776111f2565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000f150ad7659745c2df5c1e9203fc1312a9fc7f228811660048301529295509093507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116906370a0823190602401602060405180830381865afa158015611905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119299190612a3c565b9050909192565b3360008181526006602052604090205460ff16801561197357506008546001600160a01b038281169116148061197357506000546001600160a01b038281169116145b61198f5760405162461bcd60e51b8152600401610d7190612ac8565b506001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b3360009081526006602052604090205460ff16156119e9576008546119e9906001600160a01b031682611fa6565b50565b60008060006119f96111f2565b509050600080611a07610e41565b90925090508181611a19856002612a8f565b611a239190612a8f565b611a2d9190612aa6565b93507f000000000000000000000000f150ad7659745c2df5c1e9203fc1312a9fc7f2286001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab19190612a3c565b94505050509091565b6000546001600160a01b03163314611af95760405162461bcd60e51b8152602060048201526002602482015261216f60f01b6044820152606401610d71565b6001600160a01b038116611b345760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610d71565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602052604090205460ff168015611bd257506008546001600160a01b0382811691161480611bd257506000546001600160a01b038281169116145b611bee5760405162461bcd60e51b8152600401610d7190612ac8565b50600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ccf9190612bb0565b6000604051808303816000865af19150503d8060008114611d0c576040519150601f19603f3d011682016040523d82523d6000602084013e611d11565b606091505b5091509150818015611d24575060008151115b505b5050505050565b6001600160a01b03831660009081526001602052604090205481811015611d7c5760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610d71565b6001600160a01b03841660009081526006602052604090205460ff16158015611dbe57506001600160a01b03831660009081526006602052604090205460ff16155b15611e0b576005546000908190611dda9060069060ff16612bcc565b611de590600a612cc9565b905080831115611dfc57611df98184612ae4565b91505b81841115611e08578193505b50505b600b54158015611e4c57507f000000000000000000000000f150ad7659745c2df5c1e9203fc1312a9fc7f2286001600160a01b0316836001600160a01b0316145b8015611e7057506001600160a01b03841660009081526006602052604090205460ff165b15611e7a5743600b555b6001600160a01b038416600090815260096020526040812054819060ff1680611ebb57506001600160a01b03851660009081526009602052604090205460ff165b15611f75576001600160a01b03861660009081526006602052604090205460ff16158015611f0257506001600160a01b03851660009081526006602052604090205460ff16155b15611f75577f000000000000000000000000f150ad7659745c2df5c1e9203fc1312a9fc7f2286001600160a01b0316856001600160a01b031603611f4c57611f4984612025565b90505b600a5460001080611f6757506000600b54118015611f675750805b611f7057600080fd5b600191505b611f82868686858561207e565b611f8b856121be565b818015611f96575080155b15611d2457611d24601754612281565b60408051600080825260208201928390529182916001600160a01b038616918591611fd091612bb0565b60006040518083038185875af1925050503d806000811461200d576040519150601f19603f3d011682016040523d82523d6000602084013e612012565b606091505b5091509150818015611d26575050505050565b60008060008061203361186a565b9250925092506000808411801561204a5750600083115b15612067578261205a8588612a8f565b6120649190612aa6565b90505b6120718185612cd8565b9091101595945050505050565b6001600160a01b0385166000908152600160205260409020546120a2908490612ae4565b6001600160a01b03861660009081526001602052604081209190915582156121aa576001600160a01b03861660009081526009602052604090205460ff166121aa576001600160a01b03851660009081526009602052604090205460ff16156121aa576000612710612115606487612a8f565b61211f9190612aa6565b905080156121a8576121318183612cd8565b915061213e873083612548565b821580156121565750600d54600160a01b900460ff16155b156121a8576000606461216a8360e6612a8f565b6121749190612aa6565b3060009081526001602052604090205490915080821061219c57612199600182612ae4565b91505b6121a5826125c0565b50505b505b611d2486866121b98488612ae4565b612548565b6001600160a01b0381166000908152600f602052604081205490036119e957600e54158061221d5750806001600160a01b0316600e60008154811061220557612205612b81565b6000918252602090912001546001600160a01b031614155b156119e957600e80546001600160a01b0383166000818152600f60205260408120839055600183018455929092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b031916909117905550565b600c546001600160a01b0316600081900361229a575050565b600d546001600160a01b031660008190036122b457505050565b601054478111156122c55750505050565b436013546012546122d69190612cd8565b11156122e25750505050565b6000836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123469190612a3c565b905080600003612357575050505050565b60006123638284612aa6565b90508060000361237557505050505050565b60008060005a90506000612387611039565b6015549091505b8a8510801561239c57508684105b156125375786601154106123b05760006011555b60008a6001600160a01b0316636352211e60115460016123d09190612cd8565b6040518263ffffffff1660e01b81526004016123ee91815260200190565b602060405180830381865afa15801561240b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242f9190612ceb565b60405163c09d0e0f60e01b81526001600160a01b0380831660048301529192506000918291908d169063c09d0e0f906024016040805180830381865afa15801561247d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a19190612a55565b915091508482101580156124b55750838110155b156124f2576124c4838a611fa6565b6001600160a01b038316600090815260166020526040812080548b92906124ec908490612cd8565b90915550505b5a6124fd9087612ae4565b6125079089612cd8565b97505a60118054919750600061251c83612b97565b9190505550868061252c90612b97565b97505050505061238e565b505043601255505050505050505050565b6001600160a01b03821660009081526001602052604090205461256c908290612cd8565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c669085815260200190565b600d805460ff60a01b1916600160a01b17905580156126fb57604080516002808252606082018352600092602083019080368337019050509050308160008151811061260e5761260e612b81565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061266257612662612b81565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906126c7908590600090869030904290600401612d08565b600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b50505050505b50600d805460ff60a01b19169055565b6001600160a01b03811681146119e957600080fd5b803561272b8161270b565b919050565b60006020828403121561274257600080fd5b813561274d8161270b565b9392505050565b60005b8381101561276f578181015183820152602001612757565b50506000910152565b60008151808452612790816020860160208601612754565b601f01601f19169290920160200192915050565b60208152600061274d6020830184612778565b600080604083850312156127ca57600080fd5b82356127d58161270b565b946020939093013593505050565b6000602082840312156127f557600080fd5b5035919050565b60008060006060848603121561281157600080fd5b833561281c8161270b565b9250602084013561282c8161270b565b929592945050506040919091013590565b8035801515811461272b57600080fd5b6000806040838503121561286057600080fd5b823561286b8161270b565b91506128796020840161283d565b90509250929050565b60006101408083526128968184018e612778565b602084019c909c52505060408101989098526060880196909652608087019490945260a086019290925260c085015260e084015261010083015261012090910152919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561290557600080fd5b823567ffffffffffffffff8082111561291d57600080fd5b818501915085601f83011261293157600080fd5b8135602082821115612945576129456128dc565b8160051b604051601f19603f8301168101818110868211171561296a5761296a6128dc565b60405292835281830193508481018201928984111561298857600080fd5b948201945b838610156129ad5761299e86612720565b8552948201949382019361298d565b96506129bc905087820161283d565b9450505050509250929050565b600080604083850312156129dc57600080fd5b82356129e78161270b565b915060208301356129f78161270b565b809150509250929050565b600181811c90821680612a1657607f821691505b602082108103612a3657634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612a4e57600080fd5b5051919050565b60008060408385031215612a6857600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b5957610b59612a79565b600082612ac357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600290820152616e7760f01b604082015260600190565b81810381811115610b5957610b59612a79565b80516001600160701b038116811461272b57600080fd5b600080600060608486031215612b2357600080fd5b612b2c84612af7565b9250612b3a60208501612af7565b9150604084015163ffffffff81168114612b5357600080fd5b809150509250925092565b600060208284031215612b7057600080fd5b815160ff8116811461274d57600080fd5b634e487b7160e01b600052603260045260246000fd5b600060018201612ba957612ba9612a79565b5060010190565b60008251612bc2818460208701612754565b9190910192915050565b60ff8281168282160390811115610b5957610b59612a79565b600181815b80851115612c20578160001904821115612c0657612c06612a79565b80851615612c1357918102915b93841c9390800290612bea565b509250929050565b600082612c3757506001610b59565b81612c4457506000610b59565b8160018114612c5a5760028114612c6457612c80565b6001915050610b59565b60ff841115612c7557612c75612a79565b50506001821b610b59565b5060208310610133831016604e8410600b8410161715612ca3575081810a610b59565b612cad8383612be5565b8060001904821115612cc157612cc1612a79565b029392505050565b600061274d60ff841683612c28565b80820180821115610b5957610b59612a79565b600060208284031215612cfd57600080fd5b815161274d8161270b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d585784516001600160a01b031683529383019391830191600101612d33565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f0582849b345e1ac0b6402f2a0ce26fc707eb3a636d67de8540cfb095d437b0b64736f6c63430008130033

Deployed Bytecode Sourcemap

19204:365:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3305:45;;;;;;;;;;-1:-1:-1;3305:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;706:14:1;;699:22;681:41;;669:2;654:18;3305:45:0;;;;;;;;5796:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6554:159::-;;;;;;;;;;-1:-1:-1;6554:159:0;;;;;:::i;:::-;;:::i;18536:661::-;;;;;;;;;;-1:-1:-1;18536:661:0;;;;;:::i;:::-;;:::i;:::-;;;;2096:25:1;;;2152:2;2137:18;;2130:34;;;;2180:18;;;2173:34;;;;2238:2;2223:18;;2216:34;2281:3;2266:19;;2259:35;2325:3;2310:19;;2303:35;2083:3;2068:19;18536:661:0;1809:535:1;13535:176:0;;;;;;;;;;-1:-1:-1;13535:176:0;;;;;:::i;:::-;;:::i;:::-;;6000:95;;;;;;;;;;-1:-1:-1;6080:7:0;;6000:95;;;2495:25:1;;;2483:2;2468:18;6000:95:0;2349:177:1;17132:124:0;;;;;;;;;;-1:-1:-1;17132:124:0;;;;;:::i;:::-;;:::i;3475:40::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2899:32:1;;;2881:51;;2869:2;2854:18;3475:40:0;2716:222:1;6721:336:0;;;;;;;;;;-1:-1:-1;6721:336:0;;;;;:::i;:::-;;:::i;11764:24::-;;;;;;;;;;-1:-1:-1;11764:24:0;;;;;:::i;:::-;;:::i;5898:94::-;;;;;;;;;;-1:-1:-1;5975:9:0;;5898:94;;5975:9;;;;3754:36:1;;3742:2;3727:18;5898:94:0;3612:184:1;3643:45:0;;;;;;;;;;-1:-1:-1;3643:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9595:307;;;;;;;;;;;;;:::i;:::-;;;;3975:25:1;;;4031:2;4016:18;;4009:34;;;;3948:18;9595:307:0;3801:248:1;3769:34:0;;;;;;;;;;;;;;;17359:112;;;;;;;;;;-1:-1:-1;17359:112:0;;;;;:::i;:::-;;:::i;11850:96::-;;;;;;;;;;-1:-1:-1;11924:7:0;:14;11850:96;;14283:30;;;;;;;;;;;;;;;;3695;;;;;;;;;;;;;;;;3884:26;;;;;;;;;;-1:-1:-1;3884:26:0;;;;-1:-1:-1;;;;;3884:26:0;;;16890:112;;;;;;;;;;-1:-1:-1;16890:112:0;;;;;:::i;:::-;;:::i;16535:223::-;;;;;;;;;;;;;:::i;12694:139::-;;;;;;;;;;;;;:::i;16766:116::-;;;;;;;;;;-1:-1:-1;16766:116:0;;;;;:::i;:::-;;:::i;6103:119::-;;;;;;;;;;-1:-1:-1;6103:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6196:18:0;6169:7;6196:18;;;:9;:18;;;;;;;6103:119;2665:148;;;;;;;;;;;;;:::i;9180:407::-;;;;;;;;;;;;;:::i;12841:139::-;;;;;;;;;;;;;:::i;12551:135::-;;;;;;;;;;-1:-1:-1;12551:135:0;;;;;:::i;:::-;;:::i;14320:40::-;;;;;;;;;;;;;;;;2483:79;;;;;;;;;;-1:-1:-1;2521:7:0;2548:6;-1:-1:-1;;;;;2548:6:0;2483:79;;3596:40;;;;;;;;;;;;;;;17522:179;;;;;;;;;;-1:-1:-1;17522:179:0;;;;;:::i;:::-;;:::i;5690:98::-;;;;;;;;;;;;;:::i;3861:16::-;;;;;;;;;;-1:-1:-1;3861:16:0;;;;-1:-1:-1;;;;;3861:16:0;;;3732:30;;;;;;;;;;;;;;;;17010:114;;;;;;;;;;-1:-1:-1;17010:114:0;;;;;:::i;:::-;;:::i;3559:30::-;;;;;;;;;;;;;;;13201:122;;;;;;;;;;-1:-1:-1;13201:122:0;;;;;:::i;:::-;;:::i;6230:165::-;;;;;;;;;;-1:-1:-1;6230:165:0;;;;;:::i;:::-;;:::i;17709:819::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;14246:30::-;;;;;;;;;;;;;;;;12988:205;;;;;;;;;;-1:-1:-1;12988:205:0;;;;;:::i;:::-;;:::i;3522:30::-;;;;;;;;;;;;;;;8963:209;;;;;;;;;;;;;:::i;:::-;;;;7631:25:1;;;7687:2;7672:18;;7665:34;;;;7715:18;;;7708:34;7619:2;7604:18;8963:209:0;7429:319:1;14190:49:0;;;;;;;;;;;;;;;;12421:122;;;;;;;;;;-1:-1:-1;12421:122:0;;;;;:::i;:::-;;:::i;6403:143::-;;;;;;;;;;-1:-1:-1;6403:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6511:18:0;;;6484:7;6511:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6403:143;3391:26;;;;;;;;;;-1:-1:-1;3391:26:0;;;;-1:-1:-1;;;;;3391:26:0;;;17479:34;;;;;;;;;;;;;;;;11795:46;;;;;;;;;;-1:-1:-1;11795:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;13368:159;;;;;;;;;;-1:-1:-1;13368:159:0;;;;;:::i;:::-;;:::i;16228:299::-;;;;;;;;;;;;;:::i;2821:208::-;;;;;;;;;;-1:-1:-1;2821:208:0;;;;;:::i;:::-;;:::i;17264:87::-;;;;;;;;;;-1:-1:-1;17264:87:0;;;;;:::i;:::-;;:::i;5796:94::-;5844:13;5877:5;5870:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5796:94;:::o;6554:159::-;6629:4;6646:37;6655:10;6667:7;6676:6;6646:8;:37::i;:::-;-1:-1:-1;6701:4:0;6554:159;;;;;:::o;18536:661::-;18608:20;18630:17;18649:18;18678:16;18696:18;18716:15;18764:18;18774:7;-1:-1:-1;;;;;6196:18:0;6169:7;6196:18;;;:9;:18;;;;;;;6103:119;18764:18;-1:-1:-1;;;;;18805:19:0;;;;;;;:10;:19;;;;;;18861:4;;18749:33;;-1:-1:-1;18805:19:0;-1:-1:-1;18861:4:0;18839:27;18835:96;;18896:4;;:23;;-1:-1:-1;;;18896:23:0;;-1:-1:-1;;;;;2899:32:1;;;18896:23:0;;;2881:51:1;18896:4:0;;;;:14;;2854:18:1;;18896:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18883:36;;18835:96;18967:9;;-1:-1:-1;;;;;18967:9:0;18945:32;18941:249;;18995:15;19011:20;19035:11;:9;:11::i;:::-;19086:9;;:34;;-1:-1:-1;;;19086:34:0;;-1:-1:-1;;;;;2899:32:1;;;19086:34:0;;;2881:51:1;18994:52:0;;-1:-1:-1;18994:52:0;;-1:-1:-1;19086:9:0;;;;;:25;;2854:18:1;;19086:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19061:59;;-1:-1:-1;19061:59:0;-1:-1:-1;19171:7:0;19145:23;19156:12;19061:59;19145:23;:::i;:::-;:33;;;;:::i;:::-;19135:43;;18979:211;;18941:249;18536:661;;;;;;;:::o;13535:176::-;13624:10;13610:25;;;;:13;:25;;;;;;;;13606:98;;;13672:11;;13652:40;;13665:5;;-1:-1:-1;;;;;13672:11:0;13685:6;13652:12;:40::i;:::-;13535:176;;:::o;6000:95::-;6080:7;;;6000:95::o;17132:124::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;17217:19:0::1;:31:::0;17132:124::o;6721:336::-;6819:4;6836:36;6846:6;6854:9;6865:6;6836:9;:36::i;:::-;-1:-1:-1;;;;;6887:19:0;;3464:1;6887:19;;;:11;:19;;;;;;;;6907:10;6887:31;;;;;;;;-1:-1:-1;;6887:38:0;6883:145;;-1:-1:-1;;;;;6976:19:0;;;;;;:11;:19;;;;;;;;6996:10;6976:31;;;;;;;;:40;;7010:6;;6976:40;:::i;:::-;-1:-1:-1;;;;;6942:19:0;;;;;;:11;:19;;;;;;;;6962:10;6942:31;;;;;;;:74;6883:145;-1:-1:-1;7045:4:0;6721:336;;;;;:::o;11764:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11764:24:0;;-1:-1:-1;11764:24:0;:::o;9595:307::-;9646:12;9660:13;9686:7;9695:10;9710:13;-1:-1:-1;;;;;9710:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9685:52;-1:-1:-1;;;;;9685:52:0;;;-1:-1:-1;;;;;9685:52:0;;;9760:5;-1:-1:-1;;;;;9752:13:0;:5;-1:-1:-1;;;;;9752:13:0;;9748:147;;;9789:2;9782:9;;9814:2;9806:10;;9748:147;;;9856:2;9849:9;;9881:2;9873:10;;9748:147;9674:228;;9595:307;;:::o;17359:112::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;17432:9:0::1;:31:::0;;-1:-1:-1;;;;;;17432:31:0::1;-1:-1:-1::0;;;;;17432:31:0;;;::::1;::::0;;;::::1;::::0;;17359:112::o;16890:::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;16964:26:0::1;:30:::0;16890:112::o;16535:223::-;16591:19;16623:15;16639:20;16663:11;:9;:11::i;:::-;16622:52;;;;16738:12;16728:7;16699:26;;:36;;;;:::i;:::-;:51;;;;:::i;:::-;16685:65;;16611:147;;16535:223;:::o;12694:139::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;12763:15:::1;::::0;12758:20;12750:34:::1;;;::::0;-1:-1:-1;;;12750:34:0;;10810:2:1;12750:34:0::1;::::0;::::1;10792:21:1::0;10849:1;10829:18;;;10822:29;-1:-1:-1;;;10867:18:1;;;10860:31;10908:18;;12750:34:0::1;10608:324:1::0;12750:34:0::1;-1:-1:-1::0;12813:12:0::1;12795:15;:30:::0;12694:139::o;16766:116::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;16847:18:0::1;:27:::0;16766:116::o;2665:148::-;2610:6;;-1:-1:-1;;;;;2610:6:0;2620:10;2610:20;2602:35;;;;-1:-1:-1;;;2602:35:0;;11139:2:1;2602:35:0;;;11121:21:1;11178:1;11158:18;;;11151:29;-1:-1:-1;;;11196:18:1;;;11189:32;11238:18;;2602:35:0;10937:325:1;2602:35:0;2772:1:::1;2756:6:::0;;2735:40:::1;::::0;-1:-1:-1;;;;;2756:6:0;;::::1;::::0;2735:40:::1;::::0;2772:1;;2735:40:::1;2803:1;2786:19:::0;;-1:-1:-1;;;;;;2786:19:0::1;::::0;;2665:148::o;9180:407::-;9226:14;9242:13;9267:18;9298:9;9267:41;;9320:7;9329:10;9344:8;-1:-1:-1;;;;;9344:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9319:47:0;;;;-1:-1:-1;9319:47:0;;-1:-1:-1;9400:5:0;9441:4;-1:-1:-1;;;;;9420:26:0;;;9416:164;;;9472:2;9463:11;;9497:2;9489:10;;9416:164;;;9541:2;9532:11;;9566:2;9558:10;;9416:164;9256:331;;;;9180:407;;:::o;12841:139::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;12910:15:::1;::::0;12905:20;12897:34:::1;;;::::0;-1:-1:-1;;;12897:34:0;;10810:2:1;12897:34:0::1;::::0;::::1;10792:21:1::0;10849:1;10829:18;;;10822:29;-1:-1:-1;;;10867:18:1;;;10860:31;10908:18;;12897:34:0::1;10608:324:1::0;12897:34:0::1;-1:-1:-1::0;12960:12:0::1;12942:15;:30:::0;12841:139::o;12551:135::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;12623:11:0::1;:18:::0;;-1:-1:-1;;;;;12623:18:0;;::::1;-1:-1:-1::0;;;;;;12623:18:0;;::::1;::::0;::::1;::::0;;:11:::1;12652:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;12652:26:0::1;12623:18:::0;12652:26:::1;::::0;;12551:135::o;17522:179::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;17618:6:::1;17605:9;:19;;:43;;;;;17641:7;17628:9;:20;;17605:43;17597:63;;;::::0;-1:-1:-1;;;17597:63:0;;11469:2:1;17597:63:0::1;::::0;::::1;11451:21:1::0;11508:1;11488:18;;;11481:29;-1:-1:-1;;;11526:18:1;;;11519:37;11573:18;;17597:63:0::1;11267:330:1::0;17597:63:0::1;-1:-1:-1::0;17671:10:0::1;:22:::0;17522:179::o;5690:98::-;5740:13;5773:7;5766:14;;;;;:::i;17010:114::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;17085:27:0::1;:31:::0;17010:114::o;13201:122::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13287:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;13287:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13201:122::o;6230:165::-;6308:4;6325:40;6335:10;6347:9;6358:6;6325:9;:40::i;17709:819::-;17764:25;17791:21;17823:13;17838:18;17858:17;17886:33;17921:34;17966:20;17988:15;18005:20;18057:7;18043:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18091:9:0;;18043:21;;-1:-1:-1;;18091:9:0;;;;;-1:-1:-1;18119:13:0;;-1:-1:-1;18119:11:0;;-1:-1:-1;18119:13:0:i;:::-;6196:9;:18;;;;6169:7;6196:18;;;;18111:21;;-1:-1:-1;6196:18:0;18156:29;;18111:21;18156:29;:::i;:::-;:94;;;;:::i;:::-;18143:107;;18273:17;11924:7;:14;;11850:96;18273:17;18261:29;;18329:26;;18301:54;;18395:27;;18366:56;;18455:5;-1:-1:-1;;;;;18448:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18433:39;;;;18509:11;:9;:11::i;:::-;18483:37;;;;;;;;17709:819;;;;;;;;;;:::o;12988:205::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;13094:6:::1;13089:97;13110:4;:11;13106:1;:15;13089:97;;;13168:6;13143:13;:22;13157:4;13162:1;13157:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13143:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13143:22:0;:31;;-1:-1:-1;;13143:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13123:3;::::1;::::0;::::1;:::i;:::-;;;;13089:97;;;;12249:164:::0;12988:205;;:::o;8963:209::-;9008:14;9024:13;9039:20;9089:15;:13;:15::i;:::-;9130:34;;-1:-1:-1;;;9130:34:0;;-1:-1:-1;;;;;9154:9:0;2899:32:1;;9130:34:0;;;2881:51:1;9071:33:0;;-1:-1:-1;9071:33:0;;-1:-1:-1;9137:5:0;9130:23;;;;;;2854:18:1;;9130:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9115:49;;8963:209;;;:::o;12421:122::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;12507:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;12507:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12421:122::o;13368:159::-;13444:10;13430:25;;;;:13;:25;;;;;;;;13426:94;;;13488:11;;13472:36;;-1:-1:-1;;;;;13488:11:0;13501:6;13472:15;:36::i;:::-;13368:159;:::o;16228:299::-;16270:15;16287:20;16320:14;16339:15;:13;:15::i;:::-;16319:35;;;16366:12;16379:13;16396:20;:18;:20::i;:::-;16365:51;;-1:-1:-1;16365:51:0;-1:-1:-1;16365:51:0;;16442:10;16446:6;16442:1;:10;:::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;16427:40;;16495:9;-1:-1:-1;;;;;16488:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16478:41;;16308:219;;;16228:299;;:::o;2821:208::-;2610:6;;-1:-1:-1;;;;;2610:6:0;2620:10;2610:20;2602:35;;;;-1:-1:-1;;;2602:35:0;;11139:2:1;2602:35:0;;;11121:21:1;11178:1;11158:18;;;11151:29;-1:-1:-1;;;11196:18:1;;;11189:32;11238:18;;2602:35:0;10937:325:1;2602:35:0;-1:-1:-1;;;;;2910:22:0;::::1;2902:37;;;::::0;-1:-1:-1;;;2902:37:0;;12354:2:1;2902:37:0::1;::::0;::::1;12336:21:1::0;12393:1;12373:18;;;12366:29;-1:-1:-1;;;12411:18:1;;;12404:32;12453:18;;2902:37:0::1;12152:325:1::0;2902:37:0::1;2976:6;::::0;;2955:38:::1;::::0;-1:-1:-1;;;;;2955:38:0;;::::1;::::0;2976:6;::::1;::::0;2955:38:::1;::::0;::::1;3004:6;:17:::0;;-1:-1:-1;;;;;;3004:17:0::1;-1:-1:-1::0;;;;;3004:17:0;;;::::1;::::0;;;::::1;::::0;;2821:208::o;17264:87::-;12280:10;12260:17;12309:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;12351:11:0;;-1:-1:-1;;;;;12338:24:0;;;12351:11;;12338:24;;:47;;-1:-1:-1;12379:6:0;;-1:-1:-1;;;;;12366:19:0;;;12379:6;;12366:19;12338:47;12301:92;;;;-1:-1:-1;;;12301:92:0;;;;;;;:::i;:::-;-1:-1:-1;17327:4:0::1;:16:::0;;-1:-1:-1;;;;;;17327:16:0::1;-1:-1:-1::0;;;;;17327:16:0;;;::::1;::::0;;;::::1;::::0;;17264:87::o;7065:177::-;-1:-1:-1;;;;;7150:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7202:32;;2495:25:1;;;7202:32:0;;2468:18:1;7202:32:0;;;;;;;;7065:177;;;:::o;13719:238::-;13847:45;;;-1:-1:-1;;;;;12674:32:1;;;13847:45:0;;;12656:51:1;12723:18;;;;12716:34;;;13847:45:0;;;;;;;;;;12629:18:1;;;;13847:45:0;;;;;;;-1:-1:-1;;;;;13847:45:0;-1:-1:-1;;;13847:45:0;;;13836:57;;-1:-1:-1;;;;13836:10:0;;;;:57;;13847:45;13836:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13800:93;;;;13908:7;:26;;;;;13933:1;13919:4;:11;:15;13908:26;13904:46;;13789:168;;13719:238;;;:::o;7250:1322::-;-1:-1:-1;;;;;6196:18:0;;7364:15;6196:18;;;:9;:18;;;;;;7416:17;;;;7408:33;;;;-1:-1:-1;;;7408:33:0;;13255:2:1;7408:33:0;;;13237:21:1;13294:1;13274:18;;;13267:29;-1:-1:-1;;;13312:18:1;;;13305:33;13355:18;;7408:33:0;13053:326:1;7408:33:0;-1:-1:-1;;;;;7459:19:0;;;;;;:13;:19;;;;;;;;7458:20;:42;;;;-1:-1:-1;;;;;;7483:17:0;;;;;;:13;:17;;;;;;;;7482:18;7458:42;7454:369;;;7583:9;;7517:21;;;;7583:13;;7595:1;;7583:9;;:13;:::i;:::-;7576:21;;:2;:21;:::i;:::-;7553:44;;7626:12;7616:7;:22;7612:101;;;7675:22;7685:12;7675:7;:22;:::i;:::-;7659:38;;7612:101;7740:13;7731:6;:22;7727:85;;;7783:13;7774:22;;7727:85;7502:321;;7454:369;7844:15;;7839:20;:39;;;;;7869:9;-1:-1:-1;;;;;7863:15:0;:2;-1:-1:-1;;;;;7863:15:0;;7839:39;:62;;;;-1:-1:-1;;;;;;7882:19:0;;;;;;:13;:19;;;;;;;;7839:62;7835:125;;;7936:12;7918:15;:30;7835:125;-1:-1:-1;;;;;8022:19:0;;7972:12;8022:19;;;:13;:19;;;;;;7972:12;;8022:19;;;:40;;-1:-1:-1;;;;;;8045:17:0;;;;;;:13;:17;;;;;;;;8022:40;8018:367;;;-1:-1:-1;;;;;8084:19:0;;;;;;:13;:19;;;;;;;;8083:20;:42;;;;-1:-1:-1;;;;;;8108:17:0;;;;;;:13;:17;;;;;;;;8107:18;8083:42;8079:295;;;8156:9;-1:-1:-1;;;;;8150:15:0;:2;-1:-1:-1;;;;;8150:15:0;;8146:97;;8200:23;8216:6;8200:15;:23::i;:::-;8190:33;;8146:97;8273:15;;8269:1;:19;:55;;;;8311:1;8293:15;;:19;:30;;;;;8316:7;8293:30;8261:64;;;;;;8354:4;8344:14;;8079:295;8397:50;8412:4;8418:2;8422:6;8430:7;8439;8397:14;:50::i;:::-;8458:14;8469:2;8458:10;:14::i;:::-;8489:7;:19;;;;;8501:7;8500:8;8489:19;8485:80;;;8525:28;8542:10;;8525:16;:28::i;13965:204::-;14092:12;;;14035;14092;;;;;;;;;;14035;;;-1:-1:-1;;;;;14069:7:0;;;14085:5;;14069:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14034:71;;;;14120:7;:26;;;;-1:-1:-1;;;;;13965:204:0:o;8580:375::-;8644:12;8669:14;8685:13;8700:20;8724:14;:12;:14::i;:::-;8668:70;;;;;;8749:19;8792:1;8783:6;:10;:23;;;;;8805:1;8797:5;:9;8783:23;8779:93;;;8855:5;8837:15;8846:6;8837;:15;:::i;:::-;:23;;;;:::i;:::-;8823:37;;8779:93;8927:20;8936:11;8927:6;:20;:::i;:::-;8911:36;;;;;8580:375;-1:-1:-1;;;;;8580:375:0:o;9910:1161::-;-1:-1:-1;;;;;10105:17:0;;;;;;:9;:17;;;;;;:27;;10125:7;;10105:27;:::i;:::-;-1:-1:-1;;;;;10085:17:0;;;;;;:9;:17;;;;;:47;;;;10173:825;;;;-1:-1:-1;;;;;10205:21:0;;;;;;:13;:21;;;;;;;;10201:786;;-1:-1:-1;;;;;10261:24:0;;;;;;:13;:24;;;;;;;;10257:730;;;10312:20;10359:5;10335:21;3851:3;10335:7;:21;:::i;:::-;:29;;;;:::i;:::-;10312:52;-1:-1:-1;10387:16:0;;10383:589;;10428:25;10441:12;10428:25;;:::i;:::-;;;10476:50;10490:6;10506:4;10513:12;10476:13;:50::i;:::-;10554:7;10553:8;:19;;;;-1:-1:-1;10566:6:0;;-1:-1:-1;;;10566:6:0;;;;10565:7;10553:19;10549:404;;;10601:17;10642:3;10621:18;:12;10636:3;10621:18;:::i;:::-;:24;;;;:::i;:::-;10717:4;10672:24;6196:18;;;:9;:18;;;;;;10601:44;;-1:-1:-1;10754:29:0;;;10750:126;;10828:20;10847:1;10828:16;:20;:::i;:::-;10816:32;;10750:126;10902:27;10919:9;10902:16;:27::i;:::-;10574:379;;10549:404;10287:700;10257:730;11010:53;11024:6;11032:9;11043:19;11053:9;11043:7;:19;:::i;:::-;11010:13;:53::i;11954:262::-;-1:-1:-1;;;;;12015:16:0;;;;;;:11;:16;;;;;;12010:21;;12006:203;;12057:7;:14;12052:19;;:40;;;12089:3;-1:-1:-1;;;;;12075:17:0;:7;12083:1;12075:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;12075:10:0;:17;;12052:40;12048:150;;;12132:7;:14;;-1:-1:-1;;;;;12113:16:0;;;;;;:11;:16;;;;;:33;;;12165:17;;;;;;;;;;;;;-1:-1:-1;;;;;;12165:17:0;;;;;;11954:262;:::o;14528:1692::-;14597:4;;-1:-1:-1;;;;;14597:4:0;14586:8;14616:26;;;14612:65;;14659:7;14528:1692;:::o;14612:65::-;14708:9;;-1:-1:-1;;;;;14708:9:0;14687:18;14732:31;;;14728:70;;14780:7;;14528:1692;:::o;14728:70::-;14834:18;;14867:21;:39;-1:-1:-1;14863:78:0;;;14923:7;;;14528:1692;:::o;14863:78::-;14995:12;14973:19;;14955:15;;:37;;;;:::i;:::-;:52;14951:91;;;15024:7;;;14528:1692;:::o;14951:91::-;15052:13;15068:3;-1:-1:-1;;;;;15068:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15052:33;;15105:8;15100:1;:13;15096:52;;15130:7;;;;14528:1692;:::o;15096:52::-;15160:14;15177:26;15195:8;15177:15;:26;:::i;:::-;15160:43;;15223:6;15218:1;:11;15214:50;;15246:7;;;;;14528:1692;:::o;15214:50::-;15276:15;15306:18;15339:15;15357:9;15339:27;;15379:19;15401:25;:23;:25::i;:::-;15461:27;;15379:47;;-1:-1:-1;15501:669:0;15518:3;15508:7;:13;:38;;;;;15538:8;15525:10;:21;15508:38;15501:669;;;15586:8;15567:15;;:27;15563:87;;15633:1;15615:15;:19;15563:87;15664:19;15686:3;-1:-1:-1;;;;;15686:11:0;;15702:15;;15698:1;:19;;;;:::i;:::-;15686:32;;;;;;;;;;;;;2495:25:1;;2483:2;2468:18;;2349:177;15686:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15773:37;;-1:-1:-1;;;15773:37:0;;-1:-1:-1;;;;;2899:32:1;;;15773:37:0;;;2881:51:1;15664:54:0;;-1:-1:-1;15734:16:0;;;;15773:24;;;;;;2854:18:1;;15773:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15733:77;;;;15841:11;15829:8;:23;;:54;;;;;15870:13;15856:10;:27;;15829:54;15825:183;;;15904:36;15920:11;15933:6;15904:15;:36::i;:::-;-1:-1:-1;;;;;15959:23:0;;;;;;:10;:23;;;;;:33;;15986:6;;15959:23;:33;;15986:6;;15959:33;:::i;:::-;;;;-1:-1:-1;;15825:183:0;16055:9;16045:19;;:7;:19;:::i;:::-;16034:31;;:7;:31;:::i;:::-;16024:41;;16090:9;16114:15;:17;;16080:19;;-1:-1:-1;16114:15:0;:17;;;:::i;:::-;;;;;;16146:12;;;;;:::i;:::-;;;;15548:622;;;15501:669;;;-1:-1:-1;;16200:12:0;16182:15;:30;-1:-1:-1;;;;;;;;;14528:1692:0:o;11543:213::-;-1:-1:-1;;;;;11680:13:0;;;;;;:9;:13;;;;;;:23;;11696:7;;11680:23;:::i;:::-;-1:-1:-1;;;;;11664:13:0;;;;;;;:9;:13;;;;;;;:39;;;;11719:29;;;;;;;;;;11740:7;2495:25:1;;2483:2;2468:18;;2349:177;11079:456:0;3977:6;:13;;-1:-1:-1;;;;3977:13:0;-1:-1:-1;;;3977:13:0;;;11157:55;;11194:7:::1;11157:55;11248:16;::::0;;11262:1:::1;11248:16:::0;;;;;::::1;::::0;;11224:21:::1;::::0;11248:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11248:16:0::1;11224:40;;11293:4;11275;11280:1;11275:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;11275:23:0::1;;;-1:-1:-1::0;;;;;11275:23:0::1;;;::::0;::::1;11319:5;11309:4;11314:1;11309:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11309:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;11335:192:::1;::::0;-1:-1:-1;;;11335:192:0;;:11:::1;:62:::0;;::::1;::::0;::::1;::::0;:192:::1;::::0;11412:11;;11438:1:::1;::::0;11454:4;;11481::::1;::::0;11501:15:::1;::::0;11335:192:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11146:389;4001:1;-1:-1:-1::0;4013:6:0;:14;;-1:-1:-1;;;;4013:14:0;;;11079:456::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:247::-;348:6;401:2;389:9;380:7;376:23;372:32;369:52;;;417:1;414;407:12;369:52;456:9;443:23;475:31;500:5;475:31;:::i;:::-;525:5;289:247;-1:-1:-1;;;289:247:1:o;733:250::-;818:1;828:113;842:6;839:1;836:13;828:113;;;918:11;;;912:18;899:11;;;892:39;864:2;857:10;828:113;;;-1:-1:-1;;975:1:1;957:16;;950:27;733:250::o;988:271::-;1030:3;1068:5;1062:12;1095:6;1090:3;1083:19;1111:76;1180:6;1173:4;1168:3;1164:14;1157:4;1150:5;1146:16;1111:76;:::i;:::-;1241:2;1220:15;-1:-1:-1;;1216:29:1;1207:39;;;;1248:4;1203:50;;988:271;-1:-1:-1;;988:271:1:o;1264:220::-;1413:2;1402:9;1395:21;1376:4;1433:45;1474:2;1463:9;1459:18;1451:6;1433:45;:::i;1489:315::-;1557:6;1565;1618:2;1606:9;1597:7;1593:23;1589:32;1586:52;;;1634:1;1631;1624:12;1586:52;1673:9;1660:23;1692:31;1717:5;1692:31;:::i;:::-;1742:5;1794:2;1779:18;;;;1766:32;;-1:-1:-1;;;1489:315:1:o;2531:180::-;2590:6;2643:2;2631:9;2622:7;2618:23;2614:32;2611:52;;;2659:1;2656;2649:12;2611:52;-1:-1:-1;2682:23:1;;2531:180;-1:-1:-1;2531:180:1:o;2943:456::-;3020:6;3028;3036;3089:2;3077:9;3068:7;3064:23;3060:32;3057:52;;;3105:1;3102;3095:12;3057:52;3144:9;3131:23;3163:31;3188:5;3163:31;:::i;:::-;3213:5;-1:-1:-1;3270:2:1;3255:18;;3242:32;3283:33;3242:32;3283:33;:::i;:::-;2943:456;;3335:7;;-1:-1:-1;;;3389:2:1;3374:18;;;;3361:32;;2943:456::o;4724:160::-;4789:20;;4845:13;;4838:21;4828:32;;4818:60;;4874:1;4871;4864:12;4889:315;4954:6;4962;5015:2;5003:9;4994:7;4990:23;4986:32;4983:52;;;5031:1;5028;5021:12;4983:52;5070:9;5057:23;5089:31;5114:5;5089:31;:::i;:::-;5139:5;-1:-1:-1;5163:35:1;5194:2;5179:18;;5163:35;:::i;:::-;5153:45;;4889:315;;;;;:::o;5209:887::-;5573:4;5602:3;5632:2;5621:9;5614:21;5652:45;5693:2;5682:9;5678:18;5670:6;5652:45;:::i;:::-;5728:2;5713:18;;5706:34;;;;-1:-1:-1;;5771:2:1;5756:18;;5749:34;;;;5814:2;5799:18;;5792:34;;;;5857:3;5842:19;;5835:35;;;;5901:3;5886:19;;5879:35;;;;5945:3;5930:19;;5923:35;5989:3;5974:19;;5967:35;6033:3;6018:19;;6011:35;6077:3;6062:19;;;6055:35;5644:53;5209:887;-1:-1:-1;5209:887:1:o;6101:127::-;6162:10;6157:3;6153:20;6150:1;6143:31;6193:4;6190:1;6183:15;6217:4;6214:1;6207:15;6233:1191;6323:6;6331;6384:2;6372:9;6363:7;6359:23;6355:32;6352:52;;;6400:1;6397;6390:12;6352:52;6440:9;6427:23;6469:18;6510:2;6502:6;6499:14;6496:34;;;6526:1;6523;6516:12;6496:34;6564:6;6553:9;6549:22;6539:32;;6609:7;6602:4;6598:2;6594:13;6590:27;6580:55;;6631:1;6628;6621:12;6580:55;6667:2;6654:16;6689:4;6712:2;6708;6705:10;6702:36;;;6718:18;;:::i;:::-;6764:2;6761:1;6757:10;6796:2;6790:9;6859:2;6855:7;6850:2;6846;6842:11;6838:25;6830:6;6826:38;6914:6;6902:10;6899:22;6894:2;6882:10;6879:18;6876:46;6873:72;;;6925:18;;:::i;:::-;6961:2;6954:22;7011:18;;;7045:15;;;;-1:-1:-1;7087:11:1;;;7083:20;;;7115:19;;;7112:39;;;7147:1;7144;7137:12;7112:39;7171:11;;;;7191:148;7207:6;7202:3;7199:15;7191:148;;;7273:23;7292:3;7273:23;:::i;:::-;7261:36;;7224:12;;;;7317;;;;7191:148;;;7358:6;-1:-1:-1;7383:35:1;;-1:-1:-1;7399:18:1;;;7383:35;:::i;:::-;7373:45;;;;;;6233:1191;;;;;:::o;7753:388::-;7821:6;7829;7882:2;7870:9;7861:7;7857:23;7853:32;7850:52;;;7898:1;7895;7888:12;7850:52;7937:9;7924:23;7956:31;7981:5;7956:31;:::i;:::-;8006:5;-1:-1:-1;8063:2:1;8048:18;;8035:32;8076:33;8035:32;8076:33;:::i;:::-;8128:7;8118:17;;;7753:388;;;;;:::o;8146:380::-;8225:1;8221:12;;;;8268;;;8289:61;;8343:4;8335:6;8331:17;8321:27;;8289:61;8396:2;8388:6;8385:14;8365:18;8362:38;8359:161;;8442:10;8437:3;8433:20;8430:1;8423:31;8477:4;8474:1;8467:15;8505:4;8502:1;8495:15;8359:161;;8146:380;;;:::o;8531:184::-;8601:6;8654:2;8642:9;8633:7;8629:23;8625:32;8622:52;;;8670:1;8667;8660:12;8622:52;-1:-1:-1;8693:16:1;;8531:184;-1:-1:-1;8531:184:1:o;8720:245::-;8799:6;8807;8860:2;8848:9;8839:7;8835:23;8831:32;8828:52;;;8876:1;8873;8866:12;8828:52;-1:-1:-1;;8899:16:1;;8955:2;8940:18;;;8934:25;8899:16;;8934:25;;-1:-1:-1;8720:245:1:o;8970:127::-;9031:10;9026:3;9022:20;9019:1;9012:31;9062:4;9059:1;9052:15;9086:4;9083:1;9076:15;9102:168;9175:9;;;9206;;9223:15;;;9217:22;;9203:37;9193:71;;9244:18;;:::i;9275:217::-;9315:1;9341;9331:132;;9385:10;9380:3;9376:20;9373:1;9366:31;9420:4;9417:1;9410:15;9448:4;9445:1;9438:15;9331:132;-1:-1:-1;9477:9:1;;9275:217::o;9497:325::-;9699:2;9681:21;;;9738:1;9718:18;;;9711:29;-1:-1:-1;;;9771:2:1;9756:18;;9749:32;9813:2;9798:18;;9497:325::o;9827:128::-;9894:9;;;9915:11;;;9912:37;;;9929:18;;:::i;9960:188::-;10039:13;;-1:-1:-1;;;;;10081:42:1;;10071:53;;10061:81;;10138:1;10135;10128:12;10153:450;10240:6;10248;10256;10309:2;10297:9;10288:7;10284:23;10280:32;10277:52;;;10325:1;10322;10315:12;10277:52;10348:40;10378:9;10348:40;:::i;:::-;10338:50;;10407:49;10452:2;10441:9;10437:18;10407:49;:::i;:::-;10397:59;;10499:2;10488:9;10484:18;10478:25;10543:10;10536:5;10532:22;10525:5;10522:33;10512:61;;10569:1;10566;10559:12;10512:61;10592:5;10582:15;;;10153:450;;;;;:::o;11602:273::-;11670:6;11723:2;11711:9;11702:7;11698:23;11694:32;11691:52;;;11739:1;11736;11729:12;11691:52;11771:9;11765:16;11821:4;11814:5;11810:16;11803:5;11800:27;11790:55;;11841:1;11838;11831:12;11880:127;11941:10;11936:3;11932:20;11929:1;11922:31;11972:4;11969:1;11962:15;11996:4;11993:1;11986:15;12012:135;12051:3;12072:17;;;12069:43;;12092:18;;:::i;:::-;-1:-1:-1;12139:1:1;12128:13;;12012:135::o;12761:287::-;12890:3;12928:6;12922:13;12944:66;13003:6;12998:3;12991:4;12983:6;12979:17;12944:66;:::i;:::-;13026:16;;;;;12761:287;-1:-1:-1;;12761:287:1:o;13384:151::-;13474:4;13467:12;;;13453;;;13449:31;;13492:14;;13489:40;;;13509:18;;:::i;13540:422::-;13629:1;13672:5;13629:1;13686:270;13707:7;13697:8;13694:21;13686:270;;;13766:4;13762:1;13758:6;13754:17;13748:4;13745:27;13742:53;;;13775:18;;:::i;:::-;13825:7;13815:8;13811:22;13808:55;;;13845:16;;;;13808:55;13924:22;;;;13884:15;;;;13686:270;;;13690:3;13540:422;;;;;:::o;13967:806::-;14016:5;14046:8;14036:80;;-1:-1:-1;14087:1:1;14101:5;;14036:80;14135:4;14125:76;;-1:-1:-1;14172:1:1;14186:5;;14125:76;14217:4;14235:1;14230:59;;;;14303:1;14298:130;;;;14210:218;;14230:59;14260:1;14251:10;;14274:5;;;14298:130;14335:3;14325:8;14322:17;14319:43;;;14342:18;;:::i;:::-;-1:-1:-1;;14398:1:1;14384:16;;14413:5;;14210:218;;14512:2;14502:8;14499:16;14493:3;14487:4;14484:13;14480:36;14474:2;14464:8;14461:16;14456:2;14450:4;14447:12;14443:35;14440:77;14437:159;;;-1:-1:-1;14549:19:1;;;14581:5;;14437:159;14628:34;14653:8;14647:4;14628:34;:::i;:::-;14698:6;14694:1;14690:6;14686:19;14677:7;14674:32;14671:58;;;14709:18;;:::i;:::-;14747:20;;13967:806;-1:-1:-1;;;13967:806:1:o;14778:140::-;14836:5;14865:47;14906:4;14896:8;14892:19;14886:4;14865:47;:::i;14923:125::-;14988:9;;;15009:10;;;15006:36;;;15022:18;;:::i;15053:251::-;15123:6;15176:2;15164:9;15155:7;15151:23;15147:32;15144:52;;;15192:1;15189;15182:12;15144:52;15224:9;15218:16;15243:31;15268:5;15243:31;:::i;15309:980::-;15571:4;15619:3;15608:9;15604:19;15650:6;15639:9;15632:25;15676:2;15714:6;15709:2;15698:9;15694:18;15687:34;15757:3;15752:2;15741:9;15737:18;15730:31;15781:6;15816;15810:13;15847:6;15839;15832:22;15885:3;15874:9;15870:19;15863:26;;15924:2;15916:6;15912:15;15898:29;;15945:1;15955:195;15969:6;15966:1;15963:13;15955:195;;;16034:13;;-1:-1:-1;;;;;16030:39:1;16018:52;;16125:15;;;;16090:12;;;;16066:1;15984:9;15955:195;;;-1:-1:-1;;;;;;;16206:32:1;;;;16201:2;16186:18;;16179:60;-1:-1:-1;;;16270:3:1;16255:19;16248:35;16167:3;15309:980;-1:-1:-1;;;15309:980:1:o

Swarm Source

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