ETH Price: $2,445.11 (+0.68%)
 

Overview

Max Total Supply

20,835,937.5 DeBTC

Holders

990 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$3.92

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,371.936800911 DeBTC

Value
$0.00 ( ~0 Eth) [0.0162%]
0xB039b74C698673E7fCD49054d696c0027ab298ED
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A freshly decentralized version of Bitcoin, now operating on the Ethereum. Buy $BTC under $1 again, with halving every 7 days, not 4 years. Rewarding holders, not miners.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DeFiBitcoin

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
london EvmVersion
File 1 of 2 : DeFiBitcoin.sol
// SPDX-License-Identifier: MIT
// DEV_CA: https://t.me/SkorpionDeveloper86
// Name Token: DeFi Bitcoin
// TG: https://t.me/BitcoinErc_20
// TWITTER: https://twitter.com/BitcoinErc_20
// WEBSITE: https://defibitcointoken.com/

pragma solidity ^0.8.17;

import "./lib.sol";

contract DeFiBitcoin  is Context, IERC20, Ownable {
    
    using Address for address;
    enum MarketType{NONE,BULL,BEAR}
    string private _name = "DeFi Bitcoin";
    string private _symbol = "BTC";
    uint8 private _decimals = 9;
    uint256 private _totalSupply =  15750000 * 10**_decimals;           
    uint256 public _maxTotalSupply =  21000000 * 10**_decimals;   
  
    uint256 private _minimumTokensBeforeSwap = 160000 * 10**_decimals;
    
    //1.5% initial - 2% 
    uint8 public _walletMaxPercetualOfTS = 15;
    
    address payable public marketingWalletAddress = payable(0xAbf71cC6B67E1a3d3Eda73275c6f45C5E43320F9);
    address payable public devWalletAddress = payable(0x138C70e3eb9701ACB0B6dB877bB9575248FF1786);
    uint256 public marketingWalletShare=80;
    address public immutable _deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _holders;
    address [] public _holdersWallet;
    mapping (address => uint256) public _rewards; 

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;

    uint8 public _buyFee = 15;
    uint8 public _sellFee = 30;

    uint8 public _buyBearFee = 3;
    uint8 public _sellBearFee = 3;
    
    uint8 public _buyBullFee = 0;
    uint8 public _sellBullFee = 8;

    IDEXRouter public _idexV2Router;
    address public _idexPair;
    
    bool _inSwapAndLiquify;
    bool public _swapAndLiquifyEnabled = false;
    bool public _swapAndLiquifyByLimitOnly = true;
    bool public _walletLimitCheck=true;
    uint256 public _halvingAmount=0;
    MarketType public _market=MarketType.NONE;

    uint8 public swapAndLiquidityCount=0;
    uint8 public swapAndLiquidityFrequency=2;
    bool public liquidityCountCycle=true;


    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    event Halving(uint256 amount, uint256 timestamp);

    event Burn(uint256 amount);

    struct HolderStatus{
        uint256 amount;
        address wallet;
    }
    
    modifier lockTheSwap {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    

    
    constructor (){
        //SEPOLIA: 0x86dcd3293C53Cf8EFd7303B57beb2a3F671dDE98
        //ETH_UNISWAP: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D 
       _idexV2Router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
       _idexPair = IDEXFactory(_idexV2Router.factory()).createPair(address(this), _idexV2Router.WETH());

       _allowances[address(this)][address(_idexV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[marketingWalletAddress] = true;
        isExcludedFromFee[devWalletAddress] = true;
        isExcludedFromFee[_deadAddress] = true;
    
        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(_idexPair)] = true;

        isWalletLimitExempt[marketingWalletAddress] = true;
        isWalletLimitExempt[devWalletAddress] = true;
        isWalletLimitExempt[_deadAddress] = true;
        
        isMarketPair[address(_idexPair)] = true;
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner(true) {
        isMarketPair[account] = newValue;
    }

    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner(true) {
        isExcludedFromFee[account] = newValue;
    }


    function setTaxs(uint8 sellTax,uint8 buyTax) external onlyOwner(false) {
        require((sellTax+buyTax) <= 25, "Taxes exceeds the 25%.");
        _buyFee = buyTax;
        _sellFee = sellTax;
    }

    function setMarketTaxs(uint8 sellBearTax,uint8 buyBearTax,uint8 sellBullTax,uint8 buyBullTax) external onlyOwner(false) {
        require((sellBearTax+buyBearTax) <= 25, "Bear Taxes exceeds the 25%.");
        require((buyBullTax+sellBullTax) <= 25, "Bull Taxes exceeds the 25%.");
        _buyBearFee = sellBearTax;
        _sellBearFee = buyBearTax;

        _buyBullFee= buyBullTax;
        _sellBullFee= sellBullTax;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner(true) {
        _minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner(true) {
        marketingWalletAddress = payable(newAddress);
    }

    function setDevWalletAddress(address newAddress) external onlyOwner(true) {
        devWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner(true) {
        _swapAndLiquifyEnabled = _enabled;
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner(true) {
        _swapAndLiquifyByLimitOnly = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner(true) {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint8 newLimit) external onlyOwner(false) {
        require(newLimit >= 10, "It cannot be less than 1%");
        _walletMaxPercetualOfTS = newLimit;
    }

    function getWalletLimit() public view returns(uint256){
        return (_walletMaxPercetualOfTS * _totalSupply) / 1000;
    }

    function switchWalletCheck(bool value) public onlyOwner(true){
        _walletLimitCheck = value;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply-balanceOf(_deadAddress);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function changeMarket(MarketType marketType) public onlyOwner(true){
        _market=marketType;
        _buyFee = (marketType == MarketType.BULL) ? _buyBullFee : _buyBearFee;
        _sellFee = (marketType == MarketType.BULL) ? _sellBullFee : _sellBearFee;
    }

    function shareQuotes(uint256 marketing) public onlyOwner(true){ 
        marketingWalletShare=marketing;
    }

    receive() external payable {}

    modifier registerHolder(address sender, address recipient, uint256 amount) {
        if(!_holders[recipient] && !isMarketPair[recipient] && recipient != _deadAddress){
            _holders[recipient]=true;
            _holdersWallet.push(recipient);
        }
    
        _;
        
    }

    function holdersBalance() public view returns(HolderStatus[] memory){
        HolderStatus [] memory holdersResponse = new HolderStatus[](_holdersWallet.length);
        uint256 id =0;
        for(uint256 i=0;i<_holdersWallet.length;i++){
            address holderAddress = _holdersWallet[i];
            if(_balances[holderAddress]>0){
                uint256 balance = _balances[holderAddress] + _rewards[holderAddress];
                holdersResponse[id]= HolderStatus(balance,holderAddress);
                id+=1;
            }
        }

        return holdersResponse;
    }

    function updateRewards(HolderStatus[] memory rewardsUpdate) public onlyOwner(true) {
         for(uint256 i=0;i<rewardsUpdate.length;i++)
            _rewards[rewardsUpdate[i].wallet] = _rewards[rewardsUpdate[i].wallet] + rewardsUpdate[i].amount; 
    }

    function rewardsDistribution(HolderStatus[] memory rewardsUpdate)public onlyOwner(true){
          for(uint256 i=0;i<rewardsUpdate.length;i++)
            if(_halvingAmount >= rewardsUpdate[i].amount){
                _halvingAmount-=rewardsUpdate[i].amount;
                _basicTransfer(address(this),rewardsUpdate[i].wallet, rewardsUpdate[i].amount); 
            }
            
    }

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

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

    function _transfer(address sender, address recipient, uint256 amount) private registerHolder(sender,recipient,amount)  returns (bool){
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(_balances[sender] >= amount,"Insufficient Balance");

        if(_inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {             

            bool _swapTax = swapStep(sender);

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient] || _swapTax) ? 
                                         amount : takeFee(sender, recipient, amount);

            checkWalletMax(recipient,finalAmount);

            _balances[sender] = (_balances[sender]-amount);     

            finalAmount = finalAmount + claimRewards(recipient);


            _balances[recipient] = (_balances[recipient]+finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }
    
    function claimRewards(address recipient) internal returns(uint256){
        uint256 rewards = _rewards[recipient];
          if(rewards > 0)
            _rewards[recipient]=0;
        return rewards;
    }

    function swapStep(address sender)internal returns(bool){
        bool overMinimumTokenBalance = _halvingAmount > _balances[address(this)] ? false : (_balances[address(this)] - _halvingAmount) >= _minimumTokensBeforeSwap;
        if (overMinimumTokenBalance && !_inSwapAndLiquify && !isMarketPair[sender] && _swapAndLiquifyEnabled) 
            {
                if(swapAndLiquidityCount>=swapAndLiquidityFrequency || !liquidityCountCycle){
                    if(_swapAndLiquifyByLimitOnly)
                        swapAndLiquify(_minimumTokensBeforeSwap);
                    else
                        swapAndLiquify((balanceOf(address(this)) - _halvingAmount));   

                    swapAndLiquidityCount=0;
                    return true;
                }else
                    swapAndLiquidityCount+=1;
        
            }
            return false;
    }

    function checkWalletMax(address recipient,uint256 amount) internal{
        uint256 finalAmount = _balances[recipient] + amount;
         if(_walletLimitCheck && !isWalletLimitExempt[recipient])
            require(finalAmount <= getWalletLimit(),"You are exceeding maxWalletLimit");   
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(_balances[sender] >= amount,"Insufficient Balance");
        _balances[sender] = (_balances[sender] - amount);
        _balances[recipient] = (_balances[recipient]+amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        swapTokensForEth(tAmount);
        uint256 ethBalanceContract = address(this).balance;
        uint256 tAmountMarketing = (ethBalanceContract * marketingWalletShare) / 100;
        uint256 tAmountDev = ethBalanceContract - tAmountMarketing;
       
        transferToAddressETH(marketingWalletAddress,tAmountMarketing);
        transferToAddressETH(devWalletAddress,tAmountDev);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the idex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _idexV2Router.WETH();

        _approve(address(this), address(_idexV2Router), tokenAmount);

        // make the swap
        _idexV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) public onlyOwner(true) {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(_idexV2Router), tokenAmount);

        // add the liquidity
        _idexV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        if(isMarketPair[sender] && _buyFee>0) {
            feeAmount = (amount*_buyFee)/100;
        }
        else if(isMarketPair[recipient] && _sellFee>0) {
            feeAmount = (amount*_sellFee)/100;
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = (_balances[address(this)]+feeAmount);
             emit Transfer(sender, address(this), feeAmount);
        }

        return (amount-feeAmount);
    }

    function _halving(address account, uint256 value) internal {
        _totalSupply = (_totalSupply+value);
        _balances[account] = (_balances[account]+value);

    }

    function halving() public onlyOwner(true){
        if(_maxTotalSupply > _totalSupply){
            uint256 amountHalving = (_maxTotalSupply - _totalSupply) / 2;
            _halvingAmount = _halvingAmount + amountHalving;
            _halving(address(this),amountHalving);

            emit Halving(amountHalving, block.timestamp);
        }
    }

    function burn(uint256 amount,bool halvingToken) public onlyOwner(true){
        if(halvingToken && _halvingAmount>=amount){
            _halvingAmount= _halvingAmount - amount;
            _basicTransfer(address(this), _deadAddress, amount);
            emit Burn(amount);
        }else if(!halvingToken && (_balances[address(this)]-_halvingAmount)>= amount){
            _basicTransfer(address(this), _deadAddress, amount);
            emit Burn(amount);
        }
    }

    function recoveryTax() public onlyOwner(true) {
        if(_balances[address(this)]>0){
             _halvingAmount = 0;
             _basicTransfer(address(this),msg.sender,_balances[address(this)]);
        }

        if(address(this).balance>0)
            transferToAddressETH(payable(msg.sender),address(this).balance);

    }

    function recoveryEth() public onlyOwner(true){
        if(address(this).balance>0)
            transferToAddressETH(payable(msg.sender),address(this).balance);
    }

    function updateHalvingAmount(uint256 amount) public onlyOwner(true){
        if(amount < _balances[address(this)])
            _halvingAmount = amount;
    }

    function manualSellTaxTokens(uint256 amount) public onlyOwner(true){
        swapAndLiquify(amount>0 ? amount : (balanceOf(address(this)) - _halvingAmount));    
    }

    function setSwapAndLiquidityCountAndFrequency(uint8 valueCount,uint8 valueFrequency) external onlyOwner(true) {
        swapAndLiquidityCount= valueCount;
        swapAndLiquidityFrequency=valueFrequency;
    }

    function switchLiquidityCountCycle(bool value) public onlyOwner(true){
        liquidityCountCycle = value;
    }
}

File 2 of 2 : lib.sol
// SPDX-License-Identifier: None
pragma solidity ^0.8.17;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _oldOwner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        _oldOwner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner(bool softRenounceMode) {
        if(!softRenounceMode)
            require(_owner == _msgSender(), "Ownable: caller is not the owner");
        else
            require(_oldOwner == _msgSender(), "Ownable: caller is not the old owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner(true) {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner(true) {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

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

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "evmVersion": "london",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Halving","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_buyBearFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBullFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_halvingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_holders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_holdersWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_idexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_idexV2Router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_market","outputs":[{"internalType":"enum DeFiBitcoin.MarketType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBearFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBullFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletLimitCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMaxPercetualOfTS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"halvingToken","type":"bool"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum DeFiBitcoin.MarketType","name":"marketType","type":"uint8"}],"name":"changeMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halving","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"holdersBalance","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct DeFiBitcoin.HolderStatus[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityCountCycle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSellTaxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoveryEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveryTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct DeFiBitcoin.HolderStatus[]","name":"rewardsUpdate","type":"tuple[]"}],"name":"rewardsDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"sellBearTax","type":"uint8"},{"internalType":"uint8","name":"buyBearTax","type":"uint8"},{"internalType":"uint8","name":"sellBullTax","type":"uint8"},{"internalType":"uint8","name":"buyBullTax","type":"uint8"}],"name":"setMarketTaxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"valueCount","type":"uint8"},{"internalType":"uint8","name":"valueFrequency","type":"uint8"}],"name":"setSwapAndLiquidityCountAndFrequency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"}],"name":"setTaxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newLimit","type":"uint8"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"shareQuotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquidityCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquidityFrequency","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"switchLiquidityCountCycle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"switchWalletCheck","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateHalvingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct DeFiBitcoin.HolderStatus[]","name":"rewardsUpdate","type":"tuple[]"}],"name":"updateRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600c60a09081526b2232a334902134ba31b7b4b760a11b60c0526002906200002d90826200063d565b506040805180820190915260038082526242544360e81b6020830152906200005690826200063d565b506004805460ff191660099081179091556200007490600a6200081e565b620000839062f0537062000836565b600555600454620000999060ff16600a6200081e565b620000a9906301406f4062000836565b600655600454620000bf9060ff16600a6200081e565b620000ce906202710062000836565b600755600880546001600160a81b03191674abf71cc6b67e1a3d3eda73275c6f45c5e43320f90f1790556009805473138c70e3eb9701acb0b6db877bb9575248ff17866001600160a01b03199091161790556050600a5561dead6080526013805465ffffffffffff191665080003031e0f1790556014805462ffffff60a81b191661010160b01b17905560006015556016805463ffffffff191663010200001790553480156200017d57600080fd5b5060008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060138054797a250d5630b4cf539739df2c5dacb4c659f2488d000000000000600160301b600160d01b031990911617908190556040805163c45a015560e01b8152905166010000000000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa15801562000250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000276919062000850565b6001600160a01b031663c9c6539630601360069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ff919062000850565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000373919062000850565b601480546001600160a01b0319166001600160a01b03928316179055600554306000908152600c6020908152604080832060135466010000000000009004909516835293905291822055600190601090620003d66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601090935281832080548516600190811790915560085461010090048216845282842080548616821790556009548216845282842080548616821790556080519091168352908220805490931681179092556012906200046f6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260128452828120805486166001908117909155601480548416835284832080548816831790556008546101009004841683528483208054881683179055600954841683528483208054881683179055608051841683528483208054881683179055549092168152601190935290822080549093161790915560055490600b90620005273390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200058a91815260200190565b60405180910390a36200087b565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005c357607f821691505b602082108103620005e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200063857600081815260208120601f850160051c81016020861015620006135750805b601f850160051c820191505b8181101562000634578281556001016200061f565b5050505b505050565b81516001600160401b0381111562000659576200065962000598565b62000671816200066a8454620005ae565b84620005ea565b602080601f831160018114620006a95760008415620006905750858301515b600019600386901b1c1916600185901b17855562000634565b600085815260208120601f198616915b82811015620006da57888601518255948401946001909101908401620006b9565b5085821015620006f95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200076057816000190482111562000744576200074462000709565b808516156200075257918102915b93841c939080029062000724565b509250929050565b600082620007795750600162000818565b81620007885750600062000818565b8160018114620007a15760028114620007ac57620007cc565b600191505062000818565b60ff841115620007c057620007c062000709565b50506001821b62000818565b5060208310610133831016604e8410600b8410161715620007f1575081810a62000818565b620007fd83836200071f565b806000190482111562000814576200081462000709565b0290505b92915050565b60006200082f60ff84168362000768565b9392505050565b808202811582820484141762000818576200081862000709565b6000602082840312156200086357600080fd5b81516001600160a01b03811681146200082f57600080fd5b60805161498f620008b360003960008181610c520152818161132a01528181612329015281816123bc01526133ab015261498f6000f3fe6080604052600436106104695760003560e01c8063796cb24111610243578063bd469ec911610143578063d158272d116100bb578063e8ce19241161008a578063ef422a181161006f578063ef422a1814610de6578063f2fde38b14610e06578063f42b10e914610e2657600080fd5b8063e8ce192414610d96578063eb1d815214610db657600080fd5b8063d158272d14610cc7578063dd62ed3e14610cf9578063de3a016f14610d4c578063e5c381a514610d6257600080fd5b8063c867d60b11610112578063c93eb866116100f7578063c93eb86614610c40578063cbecede014610c74578063d05e227114610ca757600080fd5b8063c867d60b14610bfb578063c8df245a14610c2b57600080fd5b8063bd469ec914610b91578063be5beae314610ba6578063c3d4869014610bc6578063c49b9a8014610bdb57600080fd5b8063988cf801116101d6578063a0b24b48116101a5578063a871376b1161018a578063a871376b14610b31578063a9059cbb14610b51578063b388c5c214610b7157600080fd5b8063a0b24b4814610af1578063a5d69d1f14610b1157600080fd5b8063988cf80114610a755780639cd441da14610a9c5780639fac68cb14610abc578063a073d37f14610adc57600080fd5b80638cd67723116102125780638cd67723146109f35780638da5cb5b14610a135780639426104414610a3e57806395d89b4114610a6057600080fd5b8063796cb241146109645780637d6dfb7e146109855780637e4c25ac146109b2578063844d591c146109d357600080fd5b80633ecad27111610369578063557ed1ba116102e15780636f52c822116102b057806370a082311161029557806370a08231146108ea578063715018a61461092d57806373e98e741461094257600080fd5b80636f52c822146108aa5780636fce6ef2146108ca57600080fd5b8063557ed1ba14610842578063590f897e146108555780635ee9069e146108745780636ea576061461088a57600080fd5b80634cb80fd511610338578063517e511a1161031d578063517e511a146107c85780635342acb4146107dd57806353b4e8611461080d57600080fd5b80634cb80fd51461077b5780634eb1e7c31461079b57600080fd5b80633ecad271146106ee57806340b9a54b1461071e5780634116d1131461073857806349f8138b1461075857600080fd5b806323531530116103fc5780632c2a4240116103cb5780633245a2a6116103b05780633245a2a6146106985780633730837c146106b85780633b97084a146106ce57600080fd5b80632c2a424014610649578063313ce5671461068057600080fd5b806323531530146105d457806323b872dd146105f45780632b112e49146106145780632b15eb9f1461062957600080fd5b80631341602c116104385780631341602c1461054457806318160ddd146105765780632198cf6c146105955780632277b489146105b557600080fd5b806306fdde0314610475578063095ea7b3146104a05780630e038813146104d0578063120a06121461052257600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048a610e40565b60405161049791906141d0565b60405180910390f35b3480156104ac57600080fd5b506104c06104bb36600461425e565b610ed2565b6040519015158152602001610497565b3480156104dc57600080fd5b506009546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610497565b34801561052e57600080fd5b5061054261053d36600461428a565b610ee9565b005b34801561055057600080fd5b506016546105649062010000900460ff1681565b60405160ff9091168152602001610497565b34801561058257600080fd5b506005545b604051908152602001610497565b3480156105a157600080fd5b506105426105b03660046142c3565b610fe7565b3480156105c157600080fd5b5060165461056490610100900460ff1681565b3480156105e057600080fd5b506105426105ef366004614309565b6110e5565b34801561060057600080fd5b506104c061060f366004614333565b6111f3565b34801561062057600080fd5b50610587611313565b34801561063557600080fd5b5061054261064436600461441b565b61136b565b34801561065557600080fd5b506013546104fd906601000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561068c57600080fd5b5060045460ff16610564565b3480156106a457600080fd5b506105426106b33660046144f2565b6114d8565b3480156106c457600080fd5b5061058760065481565b3480156106da57600080fd5b506105426106e9366004614546565b611712565b3480156106fa57600080fd5b506104c061070936600461428a565b60116020526000908152604090205460ff1681565b34801561072a57600080fd5b506013546105649060ff1681565b34801561074457600080fd5b5061054261075336600461455f565b6117bf565b34801561076457600080fd5b506013546105649065010000000000900460ff1681565b34801561078757600080fd5b5061054261079636600461428a565b61196c565b3480156107a757600080fd5b506014546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d457600080fd5b50610587611a60565b3480156107e957600080fd5b506104c06107f836600461428a565b60106020526000908152604090205460ff1681565b34801561081957600080fd5b506014546104c09077010000000000000000000000000000000000000000000000900460ff1681565b34801561084e57600080fd5b5042610587565b34801561086157600080fd5b5060135461056490610100900460ff1681565b34801561088057600080fd5b5061058760155481565b34801561089657600080fd5b506105426108a5366004614546565b611a84565b3480156108b657600080fd5b506105426108c5366004614580565b611b4c565b3480156108d657600080fd5b506013546105649062010000900460ff1681565b3480156108f657600080fd5b5061058761090536600461428a565b73ffffffffffffffffffffffffffffffffffffffff166000908152600b602052604090205490565b34801561093957600080fd5b50610542611c2d565b34801561094e57600080fd5b50610957611d4a565b604051610497919061459b565b34801561097057600080fd5b50601354610564906301000000900460ff1681565b34801561099157600080fd5b506105876109a036600461428a565b600f6020526000908152604090205481565b3480156109be57600080fd5b506016546104c0906301000000900460ff1681565b3480156109df57600080fd5b506105426109ee3660046142c3565b611ebf565b3480156109ff57600080fd5b50610542610a0e366004614546565b611fbd565b348015610a1f57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166104fd565b348015610a4a57600080fd5b5060135461056490640100000000900460ff1681565b348015610a6c57600080fd5b5061048a61206a565b348015610a8157600080fd5b50601654610a8f9060ff1681565b604051610497919061462f565b348015610aa857600080fd5b50610542610ab7366004614670565b612079565b348015610ac857600080fd5b50610542610ad7366004614692565b612257565b348015610ae857600080fd5b50600754610587565b348015610afd57600080fd5b506104fd610b0c366004614546565b6123e1565b348015610b1d57600080fd5b50610542610b2c366004614580565b612418565b348015610b3d57600080fd5b50610542610b4c366004614309565b61250c565b348015610b5d57600080fd5b506104c0610b6c36600461425e565b612644565b348015610b7d57600080fd5b50610542610b8c366004614546565b612651565b348015610b9d57600080fd5b5061054261272c565b348015610bb257600080fd5b50610542610bc136600461441b565b6127e6565b348015610bd257600080fd5b50610542612991565b348015610be757600080fd5b50610542610bf6366004614580565b612a80565b348015610c0757600080fd5b506104c0610c1636600461428a565b60126020526000908152604090205460ff1681565b348015610c3757600080fd5b50610542612b73565b348015610c4c57600080fd5b506104fd7f000000000000000000000000000000000000000000000000000000000000000081565b348015610c8057600080fd5b506014546104c0907501000000000000000000000000000000000000000000900460ff1681565b348015610cb357600080fd5b50610542610cc2366004614580565b612c9d565b348015610cd357600080fd5b506008546104fd90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610d0557600080fd5b50610587610d143660046146b5565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600c6020908152604080832093909416825291909152205490565b348015610d5857600080fd5b50610587600a5481565b348015610d6e57600080fd5b506014546104c090760100000000000000000000000000000000000000000000900460ff1681565b348015610da257600080fd5b50610542610db13660046146ee565b612d92565b348015610dc257600080fd5b506104c0610dd136600461428a565b600d6020526000908152604090205460ff1681565b348015610df257600080fd5b50610542610e013660046142c3565b612eb7565b348015610e1257600080fd5b50610542610e2136600461428a565b612fb5565b348015610e3257600080fd5b506008546105649060ff1681565b606060028054610e4f90614709565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7b90614709565b8015610ec85780601f10610e9d57610100808354040283529160200191610ec8565b820191906000526020600020905b815481529060010190602001808311610eab57829003601f168201915b5050505050905090565b6000610edf33848461318d565b5060015b92915050565b6001610ef9565b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461118c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1661010060ff948516027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1617620100009290931691909102919091179055565b6000611200848484613340565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203384529091529020548211156112c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203380855292529091205461130991869161130490869061478b565b61318d565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166000908152600b6020526040812054600554611366919061478b565b905090565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106114305761143061479e565b602002602001015160000151601554106114c1578281815181106114565761145661479e565b60200260200101516000015160156000828254611473919061478b565b925050819055506114bf308483815181106114905761149061479e565b6020026020010151602001518584815181106114ae576114ae61479e565b60200260200101516000015161385c565b505b806114cb816147cd565b915050611415565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b60196115668587614805565b60ff1611156115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42656172205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b60196115dd8484614805565b60ff161115611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42756c6c205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b50601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000060ff968716027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1617630100000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff16640100000000918516919091027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff1617650100000000009190931602919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146117b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600755565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611866576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b601680548391907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156118a3576118a3614600565b021790555060018260028111156118bc576118bc614600565b146118d25760135462010000900460ff166118e1565b601354640100000000900460ff165b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600182600281111561192757611927614600565b1461193e576013546301000000900460ff1661194e565b60135465010000000000900460ff165b601360016101000a81548160ff021916908360ff1602179055505050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506008805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6005546008546000916103e891611a7a919060ff1661481e565b6113669190614835565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054821015611b485760158290555b5050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405161dead9273ffffffffffffffffffffffffffffffffffffffff909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600e5460609060009067ffffffffffffffff811115611d6b57611d6b614374565b604051908082528060200260200182016040528015611db057816020015b6040805180820190915260008082526020820152815260200190600190039081611d895790505b5090506000805b600e54811015611eb7576000600e8281548110611dd657611dd661479e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600b90915260409091205490915015611ea45773ffffffffffffffffffffffffffffffffffffffff81166000908152600f6020908152604080832054600b909252822054611e4b9190614870565b905060405180604001604052808281526020018373ffffffffffffffffffffffffffffffffffffffff16815250858581518110611e8a57611e8a61479e565b6020908102919091010152611ea0600185614870565b9350505b5080611eaf816147cd565b915050611db7565b509092915050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612064576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600a55565b606060038054610e4f90614709565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60135461214f9030906601000000000000900473ffffffffffffffffffffffffffffffffffffffff168561318d565b60135473ffffffffffffffffffffffffffffffffffffffff66010000000000009091041663f305d71983308660008061219d60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561222a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061224f9190614883565b505050505050565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146122fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b81801561230d57508260155410155b156123875782601554612320919061478b565b60155561234e307f00000000000000000000000000000000000000000000000000000000000000008561385c565b506040518381527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a1505050565b811580156123b15750601554306000908152600b602052604090205484916123ae9161478b565b10155b156114d35761234e307f00000000000000000000000000000000000000000000000000000000000000008561385c565b600e81815481106123f157600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146124bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5060148054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461258e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b601961259a8385614805565b60ff161115612605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5461786573206578636565647320746865203235252e000000000000000000006044820152606401610ef0565b506013805460ff938416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091169390921692909217179055565b6000611309338484613340565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146126f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b611b486000831161272657601554306000908152600b60205260409020545b612721919061478b565b6139cc565b826139cc565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146127d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b47156127e3576127e33347613abd565b50565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461288d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106128ab576128ab61479e565b602002602001015160000151600f60008584815181106128cd576128cd61479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9190614870565b600f60008584815181106129345761293461479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080612989906147cd565b915050612890565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054156127d3576000601581905530808252600b602052604090912054612a6f9190339061385c565b5047156127e3576127e33347613abd565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601480549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60055460065411156127e35760006002600554600654612c3a919061478b565b612c449190614835565b905080601554612c549190614870565b601555612c613082613b00565b604080518281524260208201527f394823b0bcaf78cd8f5876a52c05dbab91512a05f5da2a31e239a11ab66d605f910160405180910390a15050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506014805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff163314612e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b600a8260ff161015612e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f49742063616e6e6f74206265206c657373207468616e203125000000000000006044820152606401610ef0565b50600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461305c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166130ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808616939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff831661322f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166132d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604081205484908490849060ff161580156133a2575073ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604090205460ff16155b80156133fa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134a85773ffffffffffffffffffffffffffffffffffffffff82166000818152600d6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b73ffffffffffffffffffffffffffffffffffffffff871661354b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff86166135ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205485111561367d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b60145474010000000000000000000000000000000000000000900460ff16156136b2576136ab87878761385c565b9350613852565b60006136bd88613b6f565b73ffffffffffffffffffffffffffffffffffffffff89166000908152601060205260408120549192509060ff168061371a575073ffffffffffffffffffffffffffffffffffffffff881660009081526010602052604090205460ff165b806137225750815b61373657613731898989613d2e565b613738565b865b90506137448882613e95565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b602052604090205461377590889061478b565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600b60205260409020556137a488613f92565b6137ae9082614870565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b60205260409020549091506137e2908290614870565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600b602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906138439085815260200190565b60405180910390a36001955050505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b60205260408120548211156138eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205461391c90839061478b565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600b60205260408082209390935590851681522054613959908390614870565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906139ba9086815260200190565b60405180910390a35060019392505050565b601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055613a1481613fea565b600a544790600090606490613a29908461481e565b613a339190614835565b90506000613a41828461478b565b600854909150613a6c90610100900473ffffffffffffffffffffffffffffffffffffffff1683613abd565b600954613a8f9073ffffffffffffffffffffffffffffffffffffffff1682613abd565b5050601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f193505050501580156114d3573d6000803e3d6000fd5b80600554613b0e9190614870565b60055573ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040902054613b42908290614870565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600b602052604090209190915550565b306000908152600b6020526040812054601554829110613bb057600754601554306000908152600b6020526040902054613ba9919061478b565b1015613bb3565b60005b9050808015613bdd575060145474010000000000000000000000000000000000000000900460ff16155b8015613c0f575073ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205460ff16155b8015613c3657506014547501000000000000000000000000000000000000000000900460ff165b15613d255760165460ff620100008204811661010090920416101580613c6657506016546301000000900460ff16155b15613ced57601454760100000000000000000000000000000000000000000000900460ff1615613ca057613c9b6007546139cc565b613cbd565b601554306000908152600b6020526040902054613cbd9190612717565b5050601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550600190565b6001601660018282829054906101000a900460ff16613d0c9190614805565b92506101000a81548160ff021916908360ff1602179055505b50600092915050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260116020526040812054819060ff168015613d69575060135460ff1615155b15613d9257601354606490613d819060ff168561481e565b613d8b9190614835565b9050613dfa565b73ffffffffffffffffffffffffffffffffffffffff841660009081526011602052604090205460ff168015613dd05750601354610100900460ff1615155b15613dfa57601354606490613ded90610100900460ff168561481e565b613df79190614835565b90505b8015613e8257306000908152600b6020526040902054613e1b908290614870565b306000818152600b60205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e799085815260200190565b60405180910390a35b613e8c818461478b565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040812054613ec6908390614870565b60145490915077010000000000000000000000000000000000000000000000900460ff168015613f1c575073ffffffffffffffffffffffffffffffffffffffff831660009081526012602052604090205460ff16155b156114d357613f29611a60565b8111156114d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600f60205260408120548015610ee35773ffffffffffffffffffffffffffffffffffffffff83166000908152600f602052604081205592915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061401f5761401f61479e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ea91906148b1565b816001815181106140fd576140fd61479e565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260135461413a91309166010000000000009004168461318d565b6013546040517f791ac947000000000000000000000000000000000000000000000000000000008152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906141a29085906000908690309042906004016148ce565b600060405180830381600087803b1580156141bc57600080fd5b505af115801561224f573d6000803e3d6000fd5b600060208083528351808285015260005b818110156141fd578581018301518582016040015282016141e1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146127e357600080fd5b6000806040838503121561427157600080fd5b823561427c8161423c565b946020939093013593505050565b60006020828403121561429c57600080fd5b81356142a78161423c565b9392505050565b803580151581146142be57600080fd5b919050565b600080604083850312156142d657600080fd5b82356142e18161423c565b91506142ef602084016142ae565b90509250929050565b803560ff811681146142be57600080fd5b6000806040838503121561431c57600080fd5b614325836142f8565b91506142ef602084016142f8565b60008060006060848603121561434857600080fd5b83356143538161423c565b925060208401356143638161423c565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156143c6576143c6614374565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561441357614413614374565b604052919050565b6000602080838503121561442e57600080fd5b823567ffffffffffffffff8082111561444657600080fd5b818501915085601f83011261445a57600080fd5b81358181111561446c5761446c614374565b61447a848260051b016143cc565b818152848101925060069190911b83018401908782111561449a57600080fd5b928401925b818410156144e757604084890312156144b85760008081fd5b6144c06143a3565b84358152858501356144d18161423c565b818701528352604093909301929184019161449f565b979650505050505050565b6000806000806080858703121561450857600080fd5b614511856142f8565b935061451f602086016142f8565b925061452d604086016142f8565b915061453b606086016142f8565b905092959194509250565b60006020828403121561455857600080fd5b5035919050565b60006020828403121561457157600080fd5b8135600381106142a757600080fd5b60006020828403121561459257600080fd5b6142a7826142ae565b602080825282518282018190526000919060409081850190868401855b828110156145f35781518051855286015173ffffffffffffffffffffffffffffffffffffffff168685015292840192908501906001016145b8565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061466a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561468357600080fd5b50508035926020909101359150565b600080604083850312156146a557600080fd5b823591506142ef602084016142ae565b600080604083850312156146c857600080fd5b82356146d38161423c565b915060208301356146e38161423c565b809150509250929050565b60006020828403121561470057600080fd5b6142a7826142f8565b600181811c9082168061471d57607f821691505b602082108103614756577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610ee357610ee361475c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147fe576147fe61475c565b5060010190565b60ff8181168382160190811115610ee357610ee361475c565b8082028115828204841417610ee357610ee361475c565b60008261486b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610ee357610ee361475c565b60008060006060848603121561489857600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156148c357600080fd5b81516142a78161423c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561492b57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016148f9565b505073ffffffffffffffffffffffffffffffffffffffff96909616606085015250505060800152939250505056fea26469706673582212208354e96f4b98367dbfd3cdf2de364cf1fc0383ff2ce56b4b72888c29b071313864736f6c63430008110033

Deployed Bytecode

0x6080604052600436106104695760003560e01c8063796cb24111610243578063bd469ec911610143578063d158272d116100bb578063e8ce19241161008a578063ef422a181161006f578063ef422a1814610de6578063f2fde38b14610e06578063f42b10e914610e2657600080fd5b8063e8ce192414610d96578063eb1d815214610db657600080fd5b8063d158272d14610cc7578063dd62ed3e14610cf9578063de3a016f14610d4c578063e5c381a514610d6257600080fd5b8063c867d60b11610112578063c93eb866116100f7578063c93eb86614610c40578063cbecede014610c74578063d05e227114610ca757600080fd5b8063c867d60b14610bfb578063c8df245a14610c2b57600080fd5b8063bd469ec914610b91578063be5beae314610ba6578063c3d4869014610bc6578063c49b9a8014610bdb57600080fd5b8063988cf801116101d6578063a0b24b48116101a5578063a871376b1161018a578063a871376b14610b31578063a9059cbb14610b51578063b388c5c214610b7157600080fd5b8063a0b24b4814610af1578063a5d69d1f14610b1157600080fd5b8063988cf80114610a755780639cd441da14610a9c5780639fac68cb14610abc578063a073d37f14610adc57600080fd5b80638cd67723116102125780638cd67723146109f35780638da5cb5b14610a135780639426104414610a3e57806395d89b4114610a6057600080fd5b8063796cb241146109645780637d6dfb7e146109855780637e4c25ac146109b2578063844d591c146109d357600080fd5b80633ecad27111610369578063557ed1ba116102e15780636f52c822116102b057806370a082311161029557806370a08231146108ea578063715018a61461092d57806373e98e741461094257600080fd5b80636f52c822146108aa5780636fce6ef2146108ca57600080fd5b8063557ed1ba14610842578063590f897e146108555780635ee9069e146108745780636ea576061461088a57600080fd5b80634cb80fd511610338578063517e511a1161031d578063517e511a146107c85780635342acb4146107dd57806353b4e8611461080d57600080fd5b80634cb80fd51461077b5780634eb1e7c31461079b57600080fd5b80633ecad271146106ee57806340b9a54b1461071e5780634116d1131461073857806349f8138b1461075857600080fd5b806323531530116103fc5780632c2a4240116103cb5780633245a2a6116103b05780633245a2a6146106985780633730837c146106b85780633b97084a146106ce57600080fd5b80632c2a424014610649578063313ce5671461068057600080fd5b806323531530146105d457806323b872dd146105f45780632b112e49146106145780632b15eb9f1461062957600080fd5b80631341602c116104385780631341602c1461054457806318160ddd146105765780632198cf6c146105955780632277b489146105b557600080fd5b806306fdde0314610475578063095ea7b3146104a05780630e038813146104d0578063120a06121461052257600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048a610e40565b60405161049791906141d0565b60405180910390f35b3480156104ac57600080fd5b506104c06104bb36600461425e565b610ed2565b6040519015158152602001610497565b3480156104dc57600080fd5b506009546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610497565b34801561052e57600080fd5b5061054261053d36600461428a565b610ee9565b005b34801561055057600080fd5b506016546105649062010000900460ff1681565b60405160ff9091168152602001610497565b34801561058257600080fd5b506005545b604051908152602001610497565b3480156105a157600080fd5b506105426105b03660046142c3565b610fe7565b3480156105c157600080fd5b5060165461056490610100900460ff1681565b3480156105e057600080fd5b506105426105ef366004614309565b6110e5565b34801561060057600080fd5b506104c061060f366004614333565b6111f3565b34801561062057600080fd5b50610587611313565b34801561063557600080fd5b5061054261064436600461441b565b61136b565b34801561065557600080fd5b506013546104fd906601000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561068c57600080fd5b5060045460ff16610564565b3480156106a457600080fd5b506105426106b33660046144f2565b6114d8565b3480156106c457600080fd5b5061058760065481565b3480156106da57600080fd5b506105426106e9366004614546565b611712565b3480156106fa57600080fd5b506104c061070936600461428a565b60116020526000908152604090205460ff1681565b34801561072a57600080fd5b506013546105649060ff1681565b34801561074457600080fd5b5061054261075336600461455f565b6117bf565b34801561076457600080fd5b506013546105649065010000000000900460ff1681565b34801561078757600080fd5b5061054261079636600461428a565b61196c565b3480156107a757600080fd5b506014546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d457600080fd5b50610587611a60565b3480156107e957600080fd5b506104c06107f836600461428a565b60106020526000908152604090205460ff1681565b34801561081957600080fd5b506014546104c09077010000000000000000000000000000000000000000000000900460ff1681565b34801561084e57600080fd5b5042610587565b34801561086157600080fd5b5060135461056490610100900460ff1681565b34801561088057600080fd5b5061058760155481565b34801561089657600080fd5b506105426108a5366004614546565b611a84565b3480156108b657600080fd5b506105426108c5366004614580565b611b4c565b3480156108d657600080fd5b506013546105649062010000900460ff1681565b3480156108f657600080fd5b5061058761090536600461428a565b73ffffffffffffffffffffffffffffffffffffffff166000908152600b602052604090205490565b34801561093957600080fd5b50610542611c2d565b34801561094e57600080fd5b50610957611d4a565b604051610497919061459b565b34801561097057600080fd5b50601354610564906301000000900460ff1681565b34801561099157600080fd5b506105876109a036600461428a565b600f6020526000908152604090205481565b3480156109be57600080fd5b506016546104c0906301000000900460ff1681565b3480156109df57600080fd5b506105426109ee3660046142c3565b611ebf565b3480156109ff57600080fd5b50610542610a0e366004614546565b611fbd565b348015610a1f57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166104fd565b348015610a4a57600080fd5b5060135461056490640100000000900460ff1681565b348015610a6c57600080fd5b5061048a61206a565b348015610a8157600080fd5b50601654610a8f9060ff1681565b604051610497919061462f565b348015610aa857600080fd5b50610542610ab7366004614670565b612079565b348015610ac857600080fd5b50610542610ad7366004614692565b612257565b348015610ae857600080fd5b50600754610587565b348015610afd57600080fd5b506104fd610b0c366004614546565b6123e1565b348015610b1d57600080fd5b50610542610b2c366004614580565b612418565b348015610b3d57600080fd5b50610542610b4c366004614309565b61250c565b348015610b5d57600080fd5b506104c0610b6c36600461425e565b612644565b348015610b7d57600080fd5b50610542610b8c366004614546565b612651565b348015610b9d57600080fd5b5061054261272c565b348015610bb257600080fd5b50610542610bc136600461441b565b6127e6565b348015610bd257600080fd5b50610542612991565b348015610be757600080fd5b50610542610bf6366004614580565b612a80565b348015610c0757600080fd5b506104c0610c1636600461428a565b60126020526000908152604090205460ff1681565b348015610c3757600080fd5b50610542612b73565b348015610c4c57600080fd5b506104fd7f000000000000000000000000000000000000000000000000000000000000dead81565b348015610c8057600080fd5b506014546104c0907501000000000000000000000000000000000000000000900460ff1681565b348015610cb357600080fd5b50610542610cc2366004614580565b612c9d565b348015610cd357600080fd5b506008546104fd90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610d0557600080fd5b50610587610d143660046146b5565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600c6020908152604080832093909416825291909152205490565b348015610d5857600080fd5b50610587600a5481565b348015610d6e57600080fd5b506014546104c090760100000000000000000000000000000000000000000000900460ff1681565b348015610da257600080fd5b50610542610db13660046146ee565b612d92565b348015610dc257600080fd5b506104c0610dd136600461428a565b600d6020526000908152604090205460ff1681565b348015610df257600080fd5b50610542610e013660046142c3565b612eb7565b348015610e1257600080fd5b50610542610e2136600461428a565b612fb5565b348015610e3257600080fd5b506008546105649060ff1681565b606060028054610e4f90614709565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7b90614709565b8015610ec85780601f10610e9d57610100808354040283529160200191610ec8565b820191906000526020600020905b815481529060010190602001808311610eab57829003601f168201915b5050505050905090565b6000610edf33848461318d565b5060015b92915050565b6001610ef9565b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461118c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1661010060ff948516027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1617620100009290931691909102919091179055565b6000611200848484613340565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203384529091529020548211156112c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203380855292529091205461130991869161130490869061478b565b61318d565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000dead166000908152600b6020526040812054600554611366919061478b565b905090565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106114305761143061479e565b602002602001015160000151601554106114c1578281815181106114565761145661479e565b60200260200101516000015160156000828254611473919061478b565b925050819055506114bf308483815181106114905761149061479e565b6020026020010151602001518584815181106114ae576114ae61479e565b60200260200101516000015161385c565b505b806114cb816147cd565b915050611415565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b60196115668587614805565b60ff1611156115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42656172205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b60196115dd8484614805565b60ff161115611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42756c6c205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b50601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000060ff968716027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1617630100000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff16640100000000918516919091027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff1617650100000000009190931602919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146117b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600755565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611866576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b601680548391907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156118a3576118a3614600565b021790555060018260028111156118bc576118bc614600565b146118d25760135462010000900460ff166118e1565b601354640100000000900460ff165b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600182600281111561192757611927614600565b1461193e576013546301000000900460ff1661194e565b60135465010000000000900460ff165b601360016101000a81548160ff021916908360ff1602179055505050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506008805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6005546008546000916103e891611a7a919060ff1661481e565b6113669190614835565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054821015611b485760158290555b5050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405161dead9273ffffffffffffffffffffffffffffffffffffffff909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600e5460609060009067ffffffffffffffff811115611d6b57611d6b614374565b604051908082528060200260200182016040528015611db057816020015b6040805180820190915260008082526020820152815260200190600190039081611d895790505b5090506000805b600e54811015611eb7576000600e8281548110611dd657611dd661479e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600b90915260409091205490915015611ea45773ffffffffffffffffffffffffffffffffffffffff81166000908152600f6020908152604080832054600b909252822054611e4b9190614870565b905060405180604001604052808281526020018373ffffffffffffffffffffffffffffffffffffffff16815250858581518110611e8a57611e8a61479e565b6020908102919091010152611ea0600185614870565b9350505b5080611eaf816147cd565b915050611db7565b509092915050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612064576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600a55565b606060038054610e4f90614709565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60135461214f9030906601000000000000900473ffffffffffffffffffffffffffffffffffffffff168561318d565b60135473ffffffffffffffffffffffffffffffffffffffff66010000000000009091041663f305d71983308660008061219d60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561222a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061224f9190614883565b505050505050565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146122fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b81801561230d57508260155410155b156123875782601554612320919061478b565b60155561234e307f000000000000000000000000000000000000000000000000000000000000dead8561385c565b506040518381527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a1505050565b811580156123b15750601554306000908152600b602052604090205484916123ae9161478b565b10155b156114d35761234e307f000000000000000000000000000000000000000000000000000000000000dead8561385c565b600e81815481106123f157600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146124bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5060148054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461258e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b601961259a8385614805565b60ff161115612605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5461786573206578636565647320746865203235252e000000000000000000006044820152606401610ef0565b506013805460ff938416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091169390921692909217179055565b6000611309338484613340565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146126f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b611b486000831161272657601554306000908152600b60205260409020545b612721919061478b565b6139cc565b826139cc565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146127d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b47156127e3576127e33347613abd565b50565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461288d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106128ab576128ab61479e565b602002602001015160000151600f60008584815181106128cd576128cd61479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9190614870565b600f60008584815181106129345761293461479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080612989906147cd565b915050612890565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054156127d3576000601581905530808252600b602052604090912054612a6f9190339061385c565b5047156127e3576127e33347613abd565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601480549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60055460065411156127e35760006002600554600654612c3a919061478b565b612c449190614835565b905080601554612c549190614870565b601555612c613082613b00565b604080518281524260208201527f394823b0bcaf78cd8f5876a52c05dbab91512a05f5da2a31e239a11ab66d605f910160405180910390a15050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506014805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff163314612e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b600a8260ff161015612e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f49742063616e6e6f74206265206c657373207468616e203125000000000000006044820152606401610ef0565b50600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461305c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166130ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808616939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff831661322f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166132d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604081205484908490849060ff161580156133a2575073ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604090205460ff16155b80156133fa57507f000000000000000000000000000000000000000000000000000000000000dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134a85773ffffffffffffffffffffffffffffffffffffffff82166000818152600d6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b73ffffffffffffffffffffffffffffffffffffffff871661354b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff86166135ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205485111561367d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b60145474010000000000000000000000000000000000000000900460ff16156136b2576136ab87878761385c565b9350613852565b60006136bd88613b6f565b73ffffffffffffffffffffffffffffffffffffffff89166000908152601060205260408120549192509060ff168061371a575073ffffffffffffffffffffffffffffffffffffffff881660009081526010602052604090205460ff165b806137225750815b61373657613731898989613d2e565b613738565b865b90506137448882613e95565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b602052604090205461377590889061478b565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600b60205260409020556137a488613f92565b6137ae9082614870565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b60205260409020549091506137e2908290614870565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600b602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906138439085815260200190565b60405180910390a36001955050505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b60205260408120548211156138eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205461391c90839061478b565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600b60205260408082209390935590851681522054613959908390614870565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906139ba9086815260200190565b60405180910390a35060019392505050565b601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055613a1481613fea565b600a544790600090606490613a29908461481e565b613a339190614835565b90506000613a41828461478b565b600854909150613a6c90610100900473ffffffffffffffffffffffffffffffffffffffff1683613abd565b600954613a8f9073ffffffffffffffffffffffffffffffffffffffff1682613abd565b5050601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f193505050501580156114d3573d6000803e3d6000fd5b80600554613b0e9190614870565b60055573ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040902054613b42908290614870565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600b602052604090209190915550565b306000908152600b6020526040812054601554829110613bb057600754601554306000908152600b6020526040902054613ba9919061478b565b1015613bb3565b60005b9050808015613bdd575060145474010000000000000000000000000000000000000000900460ff16155b8015613c0f575073ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205460ff16155b8015613c3657506014547501000000000000000000000000000000000000000000900460ff165b15613d255760165460ff620100008204811661010090920416101580613c6657506016546301000000900460ff16155b15613ced57601454760100000000000000000000000000000000000000000000900460ff1615613ca057613c9b6007546139cc565b613cbd565b601554306000908152600b6020526040902054613cbd9190612717565b5050601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550600190565b6001601660018282829054906101000a900460ff16613d0c9190614805565b92506101000a81548160ff021916908360ff1602179055505b50600092915050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260116020526040812054819060ff168015613d69575060135460ff1615155b15613d9257601354606490613d819060ff168561481e565b613d8b9190614835565b9050613dfa565b73ffffffffffffffffffffffffffffffffffffffff841660009081526011602052604090205460ff168015613dd05750601354610100900460ff1615155b15613dfa57601354606490613ded90610100900460ff168561481e565b613df79190614835565b90505b8015613e8257306000908152600b6020526040902054613e1b908290614870565b306000818152600b60205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e799085815260200190565b60405180910390a35b613e8c818461478b565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040812054613ec6908390614870565b60145490915077010000000000000000000000000000000000000000000000900460ff168015613f1c575073ffffffffffffffffffffffffffffffffffffffff831660009081526012602052604090205460ff16155b156114d357613f29611a60565b8111156114d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600f60205260408120548015610ee35773ffffffffffffffffffffffffffffffffffffffff83166000908152600f602052604081205592915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061401f5761401f61479e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ea91906148b1565b816001815181106140fd576140fd61479e565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260135461413a91309166010000000000009004168461318d565b6013546040517f791ac947000000000000000000000000000000000000000000000000000000008152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906141a29085906000908690309042906004016148ce565b600060405180830381600087803b1580156141bc57600080fd5b505af115801561224f573d6000803e3d6000fd5b600060208083528351808285015260005b818110156141fd578581018301518582016040015282016141e1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146127e357600080fd5b6000806040838503121561427157600080fd5b823561427c8161423c565b946020939093013593505050565b60006020828403121561429c57600080fd5b81356142a78161423c565b9392505050565b803580151581146142be57600080fd5b919050565b600080604083850312156142d657600080fd5b82356142e18161423c565b91506142ef602084016142ae565b90509250929050565b803560ff811681146142be57600080fd5b6000806040838503121561431c57600080fd5b614325836142f8565b91506142ef602084016142f8565b60008060006060848603121561434857600080fd5b83356143538161423c565b925060208401356143638161423c565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156143c6576143c6614374565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561441357614413614374565b604052919050565b6000602080838503121561442e57600080fd5b823567ffffffffffffffff8082111561444657600080fd5b818501915085601f83011261445a57600080fd5b81358181111561446c5761446c614374565b61447a848260051b016143cc565b818152848101925060069190911b83018401908782111561449a57600080fd5b928401925b818410156144e757604084890312156144b85760008081fd5b6144c06143a3565b84358152858501356144d18161423c565b818701528352604093909301929184019161449f565b979650505050505050565b6000806000806080858703121561450857600080fd5b614511856142f8565b935061451f602086016142f8565b925061452d604086016142f8565b915061453b606086016142f8565b905092959194509250565b60006020828403121561455857600080fd5b5035919050565b60006020828403121561457157600080fd5b8135600381106142a757600080fd5b60006020828403121561459257600080fd5b6142a7826142ae565b602080825282518282018190526000919060409081850190868401855b828110156145f35781518051855286015173ffffffffffffffffffffffffffffffffffffffff168685015292840192908501906001016145b8565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061466a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561468357600080fd5b50508035926020909101359150565b600080604083850312156146a557600080fd5b823591506142ef602084016142ae565b600080604083850312156146c857600080fd5b82356146d38161423c565b915060208301356146e38161423c565b809150509250929050565b60006020828403121561470057600080fd5b6142a7826142f8565b600181811c9082168061471d57607f821691505b602082108103614756577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610ee357610ee361475c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147fe576147fe61475c565b5060010190565b60ff8181168382160190811115610ee357610ee361475c565b8082028115828204841417610ee357610ee361475c565b60008261486b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610ee357610ee361475c565b60008060006060848603121561489857600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156148c357600080fd5b81516142a78161423c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561492b57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016148f9565b505073ffffffffffffffffffffffffffffffffffffffff96909616606085015250505060800152939250505056fea26469706673582212208354e96f4b98367dbfd3cdf2de364cf1fc0383ff2ce56b4b72888c29b071313864736f6c63430008110033

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.