ETH Price: $2,913.13 (-3.87%)
Gas: 1 Gwei

Token

Kaiba DeFi (KAIBA)
 

Overview

Max Total Supply

76,110,778.997202121 KAIBA

Holders

541 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
96,615.147455637 KAIBA

Value
$0.00
0xa2f6ac457a634f4b69f633882b66818f0c42fa11
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Kaiba Inu introduces an automated system for high gas price situations; where all internal token transactions are postponed for when conditions are more favourable.

# Exchange Pair Price  24H Volume % Volume
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
KaibaDeFi

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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


interface IUniswapERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}

interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapRouter01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getamountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getamountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getamountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getamountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapRouter02 is IUniswapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


 
abstract contract Ownable {
    address private _owner;

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

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

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

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

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

    
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


 
 
library Address {
    
    function isContract(address account) internal view returns (bool) {
            uint256 size;
           assembly { size := extcodesize(account) }
        return size > 0;
    }

    
    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");
        require(isContract(target), "Address: call to non-contract");

           (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

           (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

           (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
                   if (returndata.length > 0) {
                                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
library EnumerableSet {
    
    
    
    
    
    
    
    

    struct Set {
           bytes32[] _values;

              mapping (bytes32 => uint256) _indexes;
    }

    
    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
                          set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    
    function _remove(Set storage set, bytes32 value) private returns (bool) {
           uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { 
                            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

                     bytes32 lastvalue = set._values[lastIndex];

                   set._values[toDeleteIndex] = lastvalue;
                   set._indexes[lastvalue] = valueIndex; 

                   set._values.pop();

                   delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    
    
    
    
    
    
    
    
    
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    

    struct Bytes32Set {
        Set _inner;
    }

    
    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    
    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    
    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    
    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    
    
    
    
    
    
    
    
    
    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    

    struct AddressSet {
        Set _inner;
    }

    
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    
    
    
    
    
    
    
    
    
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    

    struct UintSet {
        Set _inner;
    }

    
    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    
    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    
    
    
    
    
    
    
    
    
    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}







contract KaibaDeFi is IERC20, Ownable
{
    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

    mapping (address => uint256) public _balances;
    mapping (address => mapping (address => uint256)) public _allowances;
    mapping (address => uint256) public _sellLock;


    EnumerableSet.AddressSet private _excluded;
    EnumerableSet.AddressSet private _excludedFromSellLock;

    mapping (address => bool) public _blacklist;
    bool isBlacklist = true;

    
    string public constant _name = 'Kaiba DeFi';
    string public constant _symbol = 'KAIBA';
    uint8 public constant _decimals = 9;
    uint256 public constant InitialSupply= 100 * 10**6 * 10**_decimals;

    uint256 swapLimit = 5 * 10**5 * 10**_decimals; 
    bool isSwapPegged = true;

    
    uint16 public  BuyLimitDivider=50; // 2%
    
    uint8 public   BalanceLimitDivider=25; // 4%
    
    uint16 public  SellLimitDivider=125; // 0.75%
    
    uint16 public  MaxSellLockTime= 10 seconds;
    
    mapping (address => bool) isTeam;
    
    
    address public constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public constant Dead = 0x000000000000000000000000000000000000dEaD;
    
    uint256 public _circulatingSupply =InitialSupply;
    uint256 public  balanceLimit = _circulatingSupply;
    uint256 public  sellLimit = _circulatingSupply;
    uint256 public  buyLimit = _circulatingSupply;

    
    uint8 public _buyTax;
    uint8 public _sellTax;
    uint8 public _transferTax;
    uint8 public _liquidityTax;
    uint8 public _marketingTax;
    uint8 public _growthTax;
    uint8 public _treasuryTax;

    bool isTokenSwapManual = false;
    bool public bot_killer = true;
    bool public gasSaver = true;

    address public claimAddress;
    address public KLC;
    address public IVC;
    address public _UniswapPairAddress;
    IUniswapRouter02 public  _UniswapRouter;

    
    modifier onlyTeam() {
        require(_isTeam(msg.sender), "Caller not in Team");
        _;
    }
    
    
    function _isTeam(address addr) private view returns (bool){
        return addr==owner()||isTeam[addr];
    }


    
    
    
    constructor () {
        uint256 deployerBalance=_circulatingSupply*9/10;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        uint256 injectBalance=_circulatingSupply-deployerBalance;
        _balances[address(this)]=injectBalance;
        emit Transfer(address(0), address(this),injectBalance);
        _UniswapRouter = IUniswapRouter02(UniswapRouter);

        _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair(address(this), _UniswapRouter.WETH());

        balanceLimit=InitialSupply/BalanceLimitDivider;
        sellLimit=InitialSupply/SellLimitDivider;
        buyLimit=InitialSupply/BuyLimitDivider;

        
        sellLockTime=2 seconds;

        _buyTax=9;
        _sellTax=9;
        _transferTax=9;
        _liquidityTax=30;
        _marketingTax=30;
        _growthTax=20;
        _treasuryTax=20;
        _excluded.add(msg.sender);
        _excludedFromSellLock.add(UniswapRouter);
        _excludedFromSellLock.add(_UniswapPairAddress);
        _excludedFromSellLock.add(address(this));
    } 

    
    function _transfer(address sender, address recipient, uint256 amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(isBlacklist) {
            require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!");
        }

        bool isClaim = sender==claimAddress;

        bool isExcluded = (_excluded.contains(sender) || _excluded.contains(recipient) || isTeam[sender] || isTeam[recipient]);

        bool isContractTransfer=(sender==address(this) || recipient==address(this));

        bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouter)
        || (recipient == _UniswapPairAddress && sender == UniswapRouter));


        if(isContractTransfer || isLiquidityTransfer || isExcluded || isClaim){
            _feelessTransfer(sender, recipient, amount);
        }
        else{
            if (!tradingEnabled) {
                if (sender != owner() && recipient != owner()) {
                    if (bot_killer) {
                        emit Transfer(sender,recipient,0);
                        return;
                    }
                    else {
                        require(tradingEnabled,"trading not yet enabled");
                    }
                }
            }
                
            bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouter;
            bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouter;
            _taxedTransfer(sender,recipient,amount,isBuy,isSell);

            if(gasSaver) {
                delete isBuy;
                delete isSell;
                delete isClaim;
                delete isContractTransfer;
                delete isExcluded;
                delete isLiquidityTransfer;
            }

        }
    }
    
    
    function _taxedTransfer(address sender, address recipient, uint256 amount,bool isBuy,bool isSell) private{
        uint256 recipientBalance = _balances[recipient];
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");


        swapLimit = sellLimit/2;

        uint8 tax;
        if(isSell){
            if(!_excludedFromSellLock.contains(sender)){
                           require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Seller in sellLock");
                           _sellLock[sender]=block.timestamp+sellLockTime;
            }
            
            require(amount<=sellLimit,"Dump protection");
            tax=_sellTax;

        } else if(isBuy){
                   require(recipientBalance+amount<=balanceLimit,"whale protection");
            require(amount<=buyLimit, "whale protection");
            tax=_buyTax;

        } else {
                   require(recipientBalance+amount<=balanceLimit,"whale protection");
                          if(!_excludedFromSellLock.contains(sender))
                require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Sender in Lock");
            tax=_transferTax;

        }
                 if((sender!=_UniswapPairAddress)&&(!manualConversion)&&(!_isSwappingContractModifier))
            _swapContractToken(amount);
           uint256 contractToken=_calculateFee(amount, tax, _marketingTax+_liquidityTax+_growthTax+_treasuryTax);
           uint256 taxedAmount=amount-(contractToken);

           _removeToken(sender,amount);

           _balances[address(this)] += contractToken;

           _addToken(recipient, taxedAmount);

        emit Transfer(sender,recipient,taxedAmount);



    }
    
    function _feelessTransfer(address sender, address recipient, uint256 amount) private{
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
           _removeToken(sender,amount);
           _addToken(recipient, amount);

        emit Transfer(sender,recipient,amount);

    }
    
    function _calculateFee(uint256 amount, uint8 tax, uint8 taxPercent) private pure returns (uint256) {
        return (amount*tax*taxPercent) / 10000;
    }
    
    
    function _addToken(address addr, uint256 amount) private {
           uint256 newAmount=_balances[addr]+amount;
        _balances[addr]=newAmount;

    }


    
    function _removeToken(address addr, uint256 amount) private {
           uint256 newAmount=_balances[addr]-amount;
        _balances[addr]=newAmount;
    }

    
    bool private _isTokenSwaping;
    
    uint256 public totalTokenSwapGenerated;
    
    uint256 public totalPayouts;

    
    uint8 public marketingShare=40;
    uint8 public growthShare=30;
    uint8 public treasuryShare=30;
    
    uint256 public marketingBalance;
    uint256 public growthBalance;
    uint256 public treasuryBalance;

    
    

    
    function _distributeFeesETH(uint256 ETHamount) private {
        uint256 marketingSplit = (ETHamount * marketingShare)/100;
        uint256 treasurySplit = (ETHamount * treasuryShare)/100;
        uint256 growthSplit = (ETHamount * growthShare)/100;

        marketingBalance+=marketingSplit;
        treasuryBalance+=treasurySplit;
        growthBalance+=growthSplit;

    }


    

    
    uint256 public totalLPETH;
    
    bool private _isSwappingContractModifier;
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    
    
    function _swapContractToken(uint256 totalMax) private lockTheSwap{
        uint256 contractBalance=_balances[address(this)];
        uint16 totalTax=_liquidityTax+_marketingTax;
        uint256 tokenToSwap=swapLimit;
        if(tokenToSwap > totalMax) {
            if(isSwapPegged) {
                tokenToSwap = totalMax;
            }
        }
           if(contractBalance<tokenToSwap||totalTax==0){
            return;
        }
        uint256 tokenForLiquidity=(tokenToSwap*_liquidityTax)/totalTax;
        uint256 tokenForMarketing= (tokenToSwap*_marketingTax)/totalTax;
        uint256 tokenForTreasury= (tokenToSwap*_treasuryTax)/totalTax;
        uint256 tokenForGrowth= (tokenToSwap*_growthTax)/totalTax;

        uint256 liqToken=tokenForLiquidity/2;
        uint256 liqETHToken=tokenForLiquidity-liqToken;

           uint256 swapToken=liqETHToken+tokenForMarketing+tokenForGrowth+tokenForTreasury;
           uint256 initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint256 newETH=(address(this).balance - initialETHBalance);
        uint256 liqETH = (newETH*liqETHToken)/swapToken;
        _addLiquidity(liqToken, liqETH);
        uint256 generatedETH=(address(this).balance - initialETHBalance);
        _distributeFeesETH(generatedETH);
    }
    
    function _swapTokenForETH(uint256 amount) private {
        _approve(address(this), address(_UniswapRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _UniswapRouter.WETH();

        _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private {
        totalLPETH+=ETHamount;
        _approve(address(this), address(_UniswapRouter), tokenamount);
        _UniswapRouter.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    /// @notice Utilities

    function UTILITY_destroy(uint256 amount) public onlyTeam {
        require(_balances[address(this)] >= amount);
        _balances[address(this)] -= amount;
        _circulatingSupply -= amount;
        emit Transfer(address(this), Dead, amount);
    }    

    function UTILITY_getLimits() public view returns(uint256 balance, uint256 sell){
        return(balanceLimit/10**_decimals, sellLimit/10**_decimals);
    }

    function UTILITY_getTaxes() public view returns(uint256 treasuryTax, uint256 growthTax,uint256 liquidityTax,uint256 marketingTax, uint256 buyTax, uint256 sellTax, uint256 transferTax){
        return (_treasuryTax, _growthTax,_liquidityTax,_marketingTax,_buyTax,_sellTax,_transferTax);
    }
    
    function UTILITY_getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256){
        uint256 lockTime=_sellLock[AddressToCheck];
        if(lockTime<=block.timestamp)
        {
            return 0;
        }
        return lockTime-block.timestamp;
    }
    function UTILITY_getSellLockTimeInSeconds() public view returns(uint256){
        return sellLockTime;
    }

    bool public sellLockDisabled;
    uint256 public sellLockTime;
    bool public manualConversion;


    function UTILITY_SetPeggedSwap(bool isPegged) public onlyTeam {
        isSwapPegged = isPegged;
    }

    function UTILITY_SetMaxSwap(uint256 max) public onlyTeam {
        swapLimit = max;
    }

    function UTILITY_SetMaxLockTime(uint16 max) public onlyTeam {
     MaxSellLockTime = max;
    }

    /// @notice ACL Functions

    function ACL_SetClaimer(address addy) public onlyTeam {
        claimAddress = addy;
    }

    function ACL_BlackListAddress(address addy, bool booly) public onlyTeam {
        _blacklist[addy] = booly;
    }
    
    function ACL_AddressStop() public onlyTeam {
        _sellLock[msg.sender]=block.timestamp+(365 days);
    }

    function ACL_FineAddress(address addy, uint256 amount) public onlyTeam {
        require(_balances[addy] >= amount, "Not enough tokens");
        _balances[addy]-=(amount*10**_decimals);
        _balances[address(this)]+=(amount*10**_decimals);
        emit Transfer(addy, address(this), amount*10**_decimals);
    }

    function ACL_SetTeam(address addy, bool booly) public onlyTeam {
        isTeam[addy] = booly;
    }

    function ACL_SeizeAddress(address addy) public onlyTeam {
        uint256 seized = _balances[addy];
        _balances[addy]=0;
        _balances[address(this)]+=seized;
        emit Transfer(addy, address(this), seized);
    }

    function ACL_ExcludeAccountFromFees(address account) public onlyTeam {
        _excluded.add(account);
    }
    function ACL_IncludeAccountToFees(address account) public onlyTeam {
        _excluded.remove(account);
    }
    
    function ACL_ExcludeAccountFromSellLock(address account) public onlyTeam {
        _excludedFromSellLock.add(account);
    }
    function ACL_IncludeAccountToSellLock(address account) public onlyTeam {
        _excludedFromSellLock.remove(account);
    }

    function TEAM_WithdrawMarketingETH() public onlyTeam{
        uint256 amount=marketingBalance;
        marketingBalance=0;
        address sender = msg.sender;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }

    function TEAM_WithdrawGrowthETH() public onlyTeam{
        uint256 amount=growthBalance;
        growthBalance=0;
        address sender = msg.sender;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }

    function TEAM_WithdrawTreasuryETH() public onlyTeam{
        uint256 amount=treasuryBalance;
        treasuryBalance=0;
        address sender = msg.sender;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }

    function TEAM_Harakiri() public onlyTeam {
        selfdestruct(payable(msg.sender));
    }

    function UTILITY_ActivateGasSaver(bool booly) public onlyTeam {
        gasSaver = booly;
    }
    
    function UTILITY_SwitchManualETHConversion(bool manual) public onlyTeam{
        manualConversion=manual;
    }
    
    function UTILITY_DisableSellLock(bool disabled) public onlyTeam{
        sellLockDisabled=disabled;
    }
    
    function UTILIY_SetSellLockTime(uint256 sellLockSeconds)public onlyTeam{
        sellLockTime=sellLockSeconds;
    }

    
    function UTILITY_SetTaxes(uint8 treasuryTaxes, uint8 growthTaxes, uint8 liquidityTaxes, uint8 marketingTaxes,uint8 buyTax, uint8 sellTax, uint8 transferTax) public onlyTeam{
        uint8 totalTax=treasuryTaxes + growthTaxes +liquidityTaxes+marketingTaxes;
        require(totalTax==100, "burn+liq+marketing needs to equal 100%");
        _treasuryTax = treasuryTaxes;
        _growthTax = growthTaxes;
        _liquidityTax=liquidityTaxes;
        _marketingTax=marketingTaxes;

        _buyTax=buyTax;
        _sellTax=sellTax;
        _transferTax=transferTax;
    }
    
    function UTILITY_ChangeMarketingShare(uint8 newShare) public onlyTeam{
        marketingShare=newShare;
    }
    
    function UTILITY_ChangeGrowthShare(uint8 newShare) public onlyTeam{
        growthShare=newShare;
    }

    function UTILITY_ChangeTreasuryShare(uint8 newShare) public onlyTeam{
        treasuryShare=newShare;
    }

    function UTILITY_ManualGenerateTokenSwapBalance(uint256 _qty) public onlyTeam{
        _swapContractToken(_qty * 10**9);
    }

    
    function UTILITY_UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyTeam{
        newBalanceLimit=newBalanceLimit*10**_decimals;
        newSellLimit=newSellLimit*10**_decimals;
        balanceLimit = newBalanceLimit;
        sellLimit = newSellLimit;
    }

    
    
    

    bool public tradingEnabled;
    address private _liquidityTokenAddress;

    
    function SETTINGS_EnableTrading(bool booly) public onlyTeam{
        tradingEnabled = booly;
    }

    
    function SETTINGS_LiquidityTokenAddress(address liquidityTokenAddress) public onlyTeam{
        _liquidityTokenAddress=liquidityTokenAddress;
    }
    


    function UTILITY_RescueTokens(address tknAddress) public onlyTeam {
        IERC20 token = IERC20(tknAddress);
        uint256 ourBalance = token.balanceOf(address(this));
        require(ourBalance>0, "No tokens in our balance");
        token.transfer(msg.sender, ourBalance);
    }

    

    function UTILITY_setBlacklistEnabled(bool isBlacklistEnabled) public onlyTeam {
        isBlacklist = isBlacklistEnabled;
    }

    function UTILITY_setContractTokenSwapManual(bool manual) public onlyTeam {
        isTokenSwapManual = manual;
    }

    function UTILITY_setBlacklistedAddress(address toBlacklist) public onlyTeam {
        _blacklist[toBlacklist] = true;
    }

    function UTILITY_removeBlacklistedAddress(address toRemove) public onlyTeam {
        _blacklist[toRemove] = false;
    }


    function UTILITY_AvoidLocks() public onlyTeam{
        (bool sent,) =msg.sender.call{value: (address(this).balance)}("");
        require(sent);
    }

    function EXT_Set_IVC(address addy) public onlyTeam {
        IVC = addy;
        isTeam[IVC] = true;
        _excluded.add(IVC);
        _excludedFromSellLock.add(KLC);
    }

    function EXT_Set_KLC(address addy) public onlyTeam {
        KLC = addy;
        isTeam[KLC] = true;
        _excluded.add(KLC);
        _excludedFromSellLock.add(KLC);
    }
    
    
    

    receive() external payable {}
    fallback() external payable {}
    

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

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

    function totalSupply() external view override returns (uint256) {
        return _circulatingSupply;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"ACL_AddressStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ACL_FineAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"ACL_SeizeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"ACL_SetClaimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_SetTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"EXT_Set_IVC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"EXT_Set_KLC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"IVC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KLC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"SETTINGS_EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"SETTINGS_LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_Harakiri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TEAM_WithdrawGrowthETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TEAM_WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TEAM_WithdrawTreasuryETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"UTILITY_ActivateGasSaver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UTILITY_AvoidLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangeGrowthShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangeTreasuryShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"UTILITY_DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"UTILITY_ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"UTILITY_RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"UTILITY_SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"UTILITY_SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"UTILITY_SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"treasuryTaxes","type":"uint8"},{"internalType":"uint8","name":"growthTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"UTILITY_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"UTILITY_UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UTILITY_destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"UTILITY_getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getTaxes","outputs":[{"internalType":"uint256","name":"treasuryTax","type":"uint256"},{"internalType":"uint256","name":"growthTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"UTILITY_removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"UTILITY_setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"UTILITY_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILIY_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_growthTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bot_killer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasSaver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenSwapGenerated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"treasuryBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805460ff191660011781556200001e90600a620005f3565b6200002d906207a120620006b2565b600a908155600b80546001600160401b031916660a007d190032011790556200005990600990620005f3565b62000069906305f5e100620006b2565b600d819055600e819055600f8190556010556011805462ffffff60381b191669010100000000000000001790556018805462ffffff1916621e1e28179055348015620000b457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000600a600d5460096200010b9190620006b2565b62000117919062000587565b3360008181526001602052604080822084905551929350909160008051602062004320833981519152906200014f9085815260200190565b60405180910390a3600081600d54620001699190620006d4565b306000818152600160205260408082208490555192935090916000805160206200432083398151915290620001a19085815260200190565b60405180910390a3601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200020957600080fd5b505afa1580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000244919062000555565b6001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a257600080fd5b505afa158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000555565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032657600080fd5b505af11580156200033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000361919062000555565b601480546001600160a01b0319166001600160a01b0392909216919091179055600b546301000000900460ff166200039c6009600a620005f3565b620003ac906305f5e100620006b2565b620003b8919062000587565b600e55600b54640100000000900461ffff16620003d86009600a620005f3565b620003e8906305f5e100620006b2565b620003f4919062000587565b600f55600b54610100900461ffff16620004116009600a620005f3565b62000421906305f5e100620006b2565b6200042d919062000587565b6010556002601e556011805466ffffffffffffff19166614141e1e09090917905562000467600433620004e3602090811b6200255317901c565b5062000497737a250d5630b4cf539739df2c5dacb4c659f2488d6006620004e360201b620025531790919060201c565b50601454620004be906006906001600160a01b0316620004e3602090811b6200255317901c565b50620004da306006620004e360201b620025531790919060201c565b50505062000704565b6000620004fa836001600160a01b03841662000503565b90505b92915050565b60008181526001830160205260408120546200054c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004fd565b506000620004fd565b6000602082840312156200056857600080fd5b81516001600160a01b03811681146200058057600080fd5b9392505050565b600082620005a557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005eb578160001904821115620005cf57620005cf620006ee565b80851615620005dd57918102915b93841c9390800290620005af565b509250929050565b6000620004fa60ff8416836000826200060f57506001620004fd565b816200061e57506000620004fd565b8160018114620006375760028114620006425762000662565b6001915050620004fd565b60ff841115620006565762000656620006ee565b50506001821b620004fd565b5060208310610133831016604e8410600b841016171562000687575081810a620004fd565b620006938383620005aa565b8060001904821115620006aa57620006aa620006ee565b029392505050565b6000816000190483118215151615620006cf57620006cf620006ee565b500290565b600082821015620006e957620006e9620006ee565b500390565b634e487b7160e01b600052601160045260246000fd5b613c0c80620007146000396000f3fe6080604052600436106105875760003560e01c80637796ff37116102d2578063ae0df1a911610189578063d5d7f465116100de578063e9addd9b1161009a578063f2fde38b11610077578063f2fde38b14611240578063f88b0e4614611260578063f9cfadf114611276578063fb2729871461129757005b8063e9addd9b146111d6578063ead3caf414611200578063f2e0fcbb1461122057005b8063d5d7f465146110fa578063d65af4f21461111a578063d72e08d11461113b578063dd62ed3e14611150578063e134efbb14611196578063e1d21a5b146111b657005b8063b89bfd6511610145578063ca9ec19911610122578063ca9ec19914611065578063d28d885214611084578063d2aaceda146110ba578063d34a9f3c146110da57005b8063b89bfd6514610ffd578063b9966dcb1461101d578063c7639d801461103d57005b8063ae0df1a914610f2c578063b09f126614610f4c578063b0d4f9b714610f7d578063b19a081914610f9d578063b41ea98d14610fbd578063b792161714610fdd57005b8063954ea6651161023f578063a253c06e116101fb578063a9059cbb116101d8578063a9059cbb14610eab578063a9aab6b914610ecb578063ab0b364c14610eeb578063ad463f3d14610f0c57005b8063a253c06e14610e55578063a457c2d714610e6b578063a568016f14610e8b57005b8063954ea66514610d8157806395d89b4114610da15780639bac4a9514610dcf5780639bb433fb14610df0578063a1481b7e14610e10578063a20623ce14610e2557005b806386b5b6091161028e57806386b5b60914610cea57806386d0ada814610d0a578063887c60fb14610d24578063893d20e814610d435780638da5cb5b14610d43578063948248c214610d6157005b80637796ff3714610c3557806378af89df14610c555780637b614de614610c745780638116984d14610c9457806382c4767b14610cb4578063869f736014610cca57005b8063382e329a1161043e57806351a1ad481161039357806365001c661161034f5780636f890a2f1161032c5780636f890a2f14610bb457806370a0823114610bd4578063715018a614610c0a578063762bb28214610c1f57005b806365001c6614610b475780636dcf721814610b675780636ebcf60714610b8757005b806351a1ad4814610abc578063536d8c5f14610ad1578063589210d914610ae657806358e5536514610afc5780635aa1805714610b125780635e1050e514610b2757005b806344832cc6116103fa5780634beb38d8116103d75780634beb38d814610a465780634eca70f514610a665780634f91e48c14610a86578063518c7cc014610a9c57005b806344832cc6146109f157806348e907b714610a115780634ada218b14610a2757005b8063382e329a1461094a578063395093511461096b5780633cc39b7a1461098b5780634089b170146109a157806341f6fb69146109b757806342a11095146109d757005b806318160ddd116104f4578063311a8697116104b057806332424aa31161048d57806332424aa3146108d3578063325ea1aa146108e85780633478154b1461090857806337ac7f081461092a57005b8063311a869714610888578063313ce567146108a9578063313dab20146108bd57005b806318160ddd146107dd5780631eb25d13146107f25780631f8b845e1461080757806323b872dd146108275780632a24e064146108475780632d8828631461086757005b8063095ea7b311610543578063095ea7b31461070d57806309c1f2b21461073d5780630fd99e1614610752578063141235321461078757806315638c68146107a757806317391e49146107bd57005b806301b8dc2e14610590578063024c2ddd1461060b57806305691ec81461065157806306fdde031461069057806307c8c2be146106cc57806309218ee7146106e157005b3661058e57005b005b34801561059c57600080fd5b506011546040805160ff600160301b840481168252600160281b84048116602083015263010000008404811692820192909252600160201b83048216606082015281831660808201526101008304821660a0820152620100009092041660c082015260e0015b60405180910390f35b34801561061757600080fd5b5061064361062636600461365d565b600260209081526000928352604080842090915290825290205481565b604051908152602001610602565b34801561065d57600080fd5b5060115461067890600160501b90046001600160a01b031681565b6040516001600160a01b039091168152602001610602565b34801561069c57600080fd5b5060408051808201909152600a8152694b61696261204465466960b01b60208201525b60405161060291906138b2565b3480156106d857600080fd5b5061058e6112c4565b3480156106ed57600080fd5b506018546106fb9060ff1681565b60405160ff9091168152602001610602565b34801561071957600080fd5b5061072d610728366004613705565b611392565b6040519015158152602001610602565b34801561074957600080fd5b5061058e6113a9565b34801561075e57600080fd5b50600b5461077490600160201b900461ffff1681565b60405161ffff9091168152602001610602565b34801561079357600080fd5b5061058e6107a2366004613623565b6113ee565b3480156107b357600080fd5b50610643601a5481565b3480156107c957600080fd5b506011546106fb9062010000900460ff1681565b3480156107e957600080fd5b50600d54610643565b3480156107fe57600080fd5b50610643611422565b34801561081357600080fd5b50600b5461077490610100900461ffff1681565b34801561083357600080fd5b5061072d610842366004613696565b61143f565b34801561085357600080fd5b50601454610678906001600160a01b031681565b34801561087357600080fd5b506011546106fb90600160201b900460ff1681565b34801561089457600080fd5b50600b546106fb906301000000900460ff1681565b3480156108b557600080fd5b5060096106fb565b3480156108c957600080fd5b50610643601b5481565b3480156108df57600080fd5b506106fb600981565b3480156108f457600080fd5b5061058e61090336600461378f565b6114d6565b34801561091457600080fd5b50600b5461077490600160301b900461ffff1681565b34801561093657600080fd5b5061058e610945366004613731565b611500565b34801561095657600080fd5b506011546106fb906301000000900460ff1681565b34801561097757600080fd5b5061072d610986366004613705565b611549565b34801561099757600080fd5b50610643601c5481565b3480156109ad57600080fd5b5061064360175481565b3480156109c357600080fd5b5061058e6109d2366004613623565b611580565b3480156109e357600080fd5b506011546106fb9060ff1681565b3480156109fd57600080fd5b50610643610a0c366004613623565b611605565b348015610a1d57600080fd5b5061064360165481565b348015610a3357600080fd5b50601f5461072d90610100900460ff1681565b348015610a5257600080fd5b50601254610678906001600160a01b031681565b348015610a7257600080fd5b5061058e610a81366004613623565b61163f565b348015610a9257600080fd5b50610643600f5481565b348015610aa857600080fd5b5061058e610ab7366004613623565b61168e565b348015610ac857600080fd5b5061058e6116f4565b348015610add57600080fd5b5061058e61171c565b348015610af257600080fd5b5061064360105481565b348015610b0857600080fd5b5061064360195481565b348015610b1e57600080fd5b50601e54610643565b348015610b3357600080fd5b5061058e610b42366004613623565b61175b565b348015610b5357600080fd5b5061058e610b62366004613623565b6117a1565b348015610b7357600080fd5b5061058e610b82366004613705565b61191a565b348015610b9357600080fd5b50610643610ba2366004613623565b60016020526000908152604090205481565b348015610bc057600080fd5b5061058e610bcf36600461378f565b611a60565b348015610be057600080fd5b50610643610bef366004613623565b6001600160a01b031660009081526001602052604090205490565b348015610c1657600080fd5b5061058e611b08565b348015610c2b57600080fd5b50610643600e5481565b348015610c4157600080fd5b506018546106fb9062010000900460ff1681565b348015610c6157600080fd5b506018546106fb90610100900460ff1681565b348015610c8057600080fd5b5061058e610c8f36600461378f565b611bbb565b348015610ca057600080fd5b5061058e610caf366004613731565b611bf9565b348015610cc057600080fd5b5061067861dead81565b348015610cd657600080fd5b5061058e610ce5366004613811565b611c38565b348015610cf657600080fd5b5061058e610d053660046136d7565b611c79565b348015610d1657600080fd5b50601f5461072d9060ff1681565b348015610d3057600080fd5b50601d5461072d90610100900460ff1681565b348015610d4f57600080fd5b506000546001600160a01b0316610678565b348015610d6d57600080fd5b5061058e610d7c366004613811565b611cc9565b348015610d8d57600080fd5b50601554610678906001600160a01b031681565b348015610dad57600080fd5b506040805180820190915260058152644b4149424160d81b60208201526106bf565b348015610ddb57600080fd5b506011546106fb90600160301b900460ff1681565b348015610dfc57600080fd5b5061058e610e0b36600461382c565b611d0c565b348015610e1c57600080fd5b5061058e611e4b565b348015610e3157600080fd5b5061072d610e40366004613623565b60086020526000908152604090205460ff1681565b348015610e6157600080fd5b50610643600d5481565b348015610e7757600080fd5b5061072d610e86366004613705565b611ec5565b348015610e9757600080fd5b5061058e610ea6366004613731565b611f41565b348015610eb757600080fd5b5061072d610ec6366004613705565b611f79565b348015610ed757600080fd5b5061058e610ee636600461378f565b611f86565b348015610ef757600080fd5b5060115461072d90600160481b900460ff1681565b348015610f1857600080fd5b5061058e610f27366004613731565b611fb0565b348015610f3857600080fd5b5061058e610f47366004613623565b611ffb565b348015610f5857600080fd5b506106bf604051806040016040528060058152602001644b4149424160d81b81525081565b348015610f8957600080fd5b5061058e610f98366004613623565b612067565b348015610fa957600080fd5b5061058e610fb8366004613623565b6120f2565b348015610fc957600080fd5b5061058e610fd8366004613731565b61213b565b348015610fe957600080fd5b5061058e610ff8366004613731565b612173565b34801561100957600080fd5b5061058e611018366004613731565b6121ab565b34801561102957600080fd5b50601354610678906001600160a01b031681565b34801561104957600080fd5b50610678737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561107157600080fd5b506011546106fb90610100900460ff1681565b34801561109057600080fd5b506106bf6040518060400160405280600a8152602001694b61696261204465466960b01b81525081565b3480156110c657600080fd5b5061058e6110d5366004613623565b6121ea565b3480156110e657600080fd5b5061058e6110f5366004613623565b61221a565b34801561110657600080fd5b5061058e611115366004613811565b61224a565b34801561112657600080fd5b5060115461072d90600160401b900460ff1681565b34801561114757600080fd5b5061058e612285565b34801561115c57600080fd5b5061064361116b36600461365d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156111a257600080fd5b5061058e6111b13660046137c1565b6122c4565b3480156111c257600080fd5b5061058e6111d136600461376b565b612323565b3480156111e257600080fd5b506111eb61236d565b60408051928352602083019190915201610602565b34801561120c57600080fd5b5061058e61121b3660046136d7565b6123aa565b34801561122c57600080fd5b5061058e61123b366004613623565b6123fa565b34801561124c57600080fd5b5061058e61125b366004613623565b61242a565b34801561126c57600080fd5b50610643601e5481565b34801561128257600080fd5b506011546106fb90600160281b900460ff1681565b3480156112a357600080fd5b506106436112b2366004613623565b60036020526000908152604090205481565b6112cd33612568565b6112f25760405162461bcd60e51b81526004016112e990613907565b60405180910390fd5b601a805460009182905560405190913391829084905b60006040518083038185875af1925050503d8060008114611345576040519150601f19603f3d011682016040523d82523d6000602084013e61134a565b606091505b505090508061138d5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b60448201526064016112e9565b505050565b600061139f33848461259f565b5060015b92915050565b6113b233612568565b6113ce5760405162461bcd60e51b81526004016112e990613907565b6113dc426301e133806139ce565b33600090815260036020526040902055565b6113f733612568565b6114135760405162461bcd60e51b81526004016112e990613907565b61141e600482612553565b5050565b61142e6009600a613a70565b61143c906305f5e100613b1b565b81565b600061144c848484612692565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156114b75760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016112e9565b6114cb85336114c68685613b3a565b61259f565b506001949350505050565b6114df33612568565b6114fb5760405162461bcd60e51b81526004016112e990613907565b600a55565b61150933612568565b6115255760405162461bcd60e51b81526004016112e990613907565b60118054911515600160481b0269ff00000000000000000019909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161139f9185906114c69086906139ce565b61158933612568565b6115a55760405162461bcd60e51b81526004016112e990613907565b601380546001600160a01b0319166001600160a01b0383811691821783556000918252600c6020526040909120805460ff1916600117905590546115ec9160049116612553565b5060125461141e906006906001600160a01b0316612553565b6001600160a01b03811660009081526003602052604081205442811161162e5750600092915050565b6116384282613b3a565b9392505050565b61164833612568565b6116645760405162461bcd60e51b81526004016112e990613907565b601f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61169733612568565b6116b35760405162461bcd60e51b81526004016112e990613907565b601180546001600160a01b03909216600160501b027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909216919091179055565b6116fd33612568565b6117195760405162461bcd60e51b81526004016112e990613907565b33ff5b61172533612568565b6117415760405162461bcd60e51b81526004016112e990613907565b601b80546000918290556040519091339182908490611308565b61176433612568565b6117805760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6117aa33612568565b6117c65760405162461bcd60e51b81526004016112e990613907565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561180a57600080fd5b505afa15801561181e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184291906137a8565b9050600081116118945760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e6365000000000000000060448201526064016112e9565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156118dc57600080fd5b505af11580156118f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611914919061374e565b50505050565b61192333612568565b61193f5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03821660009081526001602052604090205481111561199b5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b60448201526064016112e9565b6119a76009600a613a70565b6119b19082613b1b565b6001600160a01b038316600090815260016020526040812080549091906119d9908490613b3a565b909155506119eb90506009600a613a70565b6119f59082613b1b565b3060009081526001602052604081208054909190611a149084906139ce565b909155503090506001600160a01b038316600080516020613bb7833981519152611a406009600a613a70565b611a4a9085613b1b565b6040519081526020015b60405180910390a35050565b611a6933612568565b611a855760405162461bcd60e51b81526004016112e990613907565b30600090815260016020526040902054811115611aa157600080fd5b3060009081526001602052604081208054839290611ac0908490613b3a565b9250508190555080600d6000828254611ad99190613b3a565b909155505060405181815261dead903090600080516020613bb78339815191529060200160405180910390a350565b33611b1b6000546001600160a01b031690565b6001600160a01b031614611b715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016112e9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611bc433612568565b611be05760405162461bcd60e51b81526004016112e990613907565b611bf6611bf182633b9aca00613b1b565b612aa2565b50565b611c0233612568565b611c1e5760405162461bcd60e51b81526004016112e990613907565b601d80549115156101000261ff0019909216919091179055565b611c4133612568565b611c5d5760405162461bcd60e51b81526004016112e990613907565b6018805460ff9092166101000261ff0019909216919091179055565b611c8233612568565b611c9e5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b611cd233612568565b611cee5760405162461bcd60e51b81526004016112e990613907565b6018805460ff909216620100000262ff000019909216919091179055565b611d1533612568565b611d315760405162461bcd60e51b81526004016112e990613907565b60008486611d3f898b6139e6565b611d4991906139e6565b611d5391906139e6565b90508060ff16606414611db75760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b60648201526084016112e9565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b0264ff00000000199986166301000000029990991664ffff000000199a8616600160281b0265ff0000000000199c8716600160301b029c909c1666ffff000000000019909416939093179a909a179890981617959095179390931691909216179390931792909216179055565b611e5433612568565b611e705760405162461bcd60e51b81526004016112e990613907565b604051600090339047908381818185875af1925050503d8060008114611eb2576040519150601f19603f3d011682016040523d82523d6000602084013e611eb7565b606091505b5050905080611bf657600080fd5b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611f285760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016112e9565b611f3733856114c68685613b3a565b5060019392505050565b611f4a33612568565b611f665760405162461bcd60e51b81526004016112e990613907565b6009805460ff1916911515919091179055565b600061139f338484612692565b611f8f33612568565b611fab5760405162461bcd60e51b81526004016112e990613907565b601e55565b611fb933612568565b611fd55760405162461bcd60e51b81526004016112e990613907565b601180549115156701000000000000000267ff0000000000000019909216919091179055565b61200433612568565b6120205760405162461bcd60e51b81526004016112e990613907565b601280546001600160a01b0319166001600160a01b0383811691821783556000918252600c6020526040909120805460ff1916600117905590546115ec9160049116612553565b61207033612568565b61208c5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b0381166000908152600160205260408082208054908390553083529082208054919283926120c29084906139ce565b909155505060405181815230906001600160a01b03841690600080516020613bb783398151915290602001611a54565b6120fb33612568565b6121175760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61214433612568565b6121605760405162461bcd60e51b81526004016112e990613907565b600b805460ff1916911515919091179055565b61217c33612568565b6121985760405162461bcd60e51b81526004016112e990613907565b601f805460ff1916911515919091179055565b6121b433612568565b6121d05760405162461bcd60e51b81526004016112e990613907565b601f80549115156101000261ff0019909216919091179055565b6121f333612568565b61220f5760405162461bcd60e51b81526004016112e990613907565b61141e600682612553565b61222333612568565b61223f5760405162461bcd60e51b81526004016112e990613907565b61141e600682612c88565b61225333612568565b61226f5760405162461bcd60e51b81526004016112e990613907565b6018805460ff191660ff92909216919091179055565b61228e33612568565b6122aa5760405162461bcd60e51b81526004016112e990613907565b601980546000918290556040519091339182908490611308565b6122cd33612568565b6122e95760405162461bcd60e51b81526004016112e990613907565b6122f56009600a613a70565b6122ff9083613b1b565b915061230d6009600a613a70565b6123179082613b1b565b600e9290925550600f55565b61232c33612568565b6123485760405162461bcd60e51b81526004016112e990613907565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b60008061237c6009600a613a70565b600e546123899190613a0b565b6123956009600a613a70565b600f546123a29190613a0b565b915091509091565b6123b333612568565b6123cf5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b61240333612568565b61241f5760405162461bcd60e51b81526004016112e990613907565b61141e600482612c88565b3361243d6000546001600160a01b031690565b6001600160a01b0316146124935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016112e9565b6001600160a01b0381166124f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016112e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611638836001600160a01b038416612c9d565b600080546001600160a01b03838116911614806113a35750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166125e95760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016112e9565b6001600160a01b0382166126315760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016112e9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126dd5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016112e9565b6001600160a01b0382166127265760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016112e9565b60095460ff16156127ae576001600160a01b03831660009081526008602052604090205460ff1615801561277357506001600160a01b03821660009081526008602052604090205460ff16155b6127ae5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b60448201526064016112e9565b6011546001600160a01b03848116600160501b909204161460006127d3600486612cec565b806127e457506127e4600485612cec565b8061280757506001600160a01b0385166000908152600c602052604090205460ff165b8061282a57506001600160a01b0384166000908152600c602052604090205460ff165b905060006001600160a01b03861630148061284d57506001600160a01b03851630145b6014549091506000906001600160a01b03888116911614801561288c57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b806128cb57506014546001600160a01b0387811691161480156128cb57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806128d65750805b806128de5750825b806128e65750835b156128fb576128f6878787612d0e565b612a99565b601f54610100900460ff166129e9576000546001600160a01b0388811691161480159061293657506000546001600160a01b03878116911614155b156129e957601154600160401b900460ff161561299257856001600160a01b0316876001600160a01b0316600080516020613bb7833981519152600060405161298191815260200190565b60405180910390a350505050505050565b601f54610100900460ff166129e95760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c656400000000000000000060448201526064016112e9565b6014546000906001600160a01b0389811691161480612a2457506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6014549091506000906001600160a01b0389811691161480612a6257506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050612a718989898585612dc7565b601154600160481b900460ff1615612a96575060009450849350839250829150819050805b50505b50505050505050565b601d805460ff191660019081179091553060009081526020919091526040812054601154909190612ae790600160201b810460ff9081169163010000009004166139e6565b60ff1690506000600a54905083811115612b0957600b5460ff1615612b095750825b80831080612b19575061ffff8216155b15612b2657505050612c7b565b60115460009061ffff841690612b46906301000000900460ff1684613b1b565b612b509190613a0b565b60115490915060009061ffff851690612b7390600160201b900460ff1685613b1b565b612b7d9190613a0b565b60115490915060009061ffff861690612ba090600160301b900460ff1686613b1b565b612baa9190613a0b565b60115490915060009061ffff871690612bcd90600160281b900460ff1687613b1b565b612bd79190613a0b565b90506000612be6600286613a0b565b90506000612bf48287613b3a565b905060008484612c0488856139ce565b612c0e91906139ce565b612c1891906139ce565b905047612c2482613182565b6000612c308247613b3a565b9050600083612c3f8684613b1b565b612c499190613a0b565b9050612c5586826132ea565b6000612c618447613b3a565b9050612c6c816133c1565b50505050505050505050505050505b50601d805460ff19169055565b6000611638836001600160a01b038416613483565b6000818152600183016020526040812054612ce4575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556113a3565b5060006113a3565b6001600160a01b03811660009081526001830160205260408120541515611638565b6001600160a01b03831660009081526001602052604090205481811015612d725760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016112e9565b612d7c8483613570565b612d8683836135b5565b826001600160a01b0316846001600160a01b0316600080516020613bb783398151915284604051612db991815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612e355760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016112e9565b6002600f54612e449190613a0b565b600a5560008315612f4957612e5a600689612cec565b612ef4576001600160a01b03881660009081526003602052604090205442101580612e8c5750601d54610100900460ff165b612ecd5760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b60448201526064016112e9565b601e54612eda90426139ce565b6001600160a01b0389166000908152600360205260409020555b600f54861115612f385760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b60448201526064016112e9565b50601154610100900460ff1661305b565b8415612fa857600e54612f5c87856139ce565b1115612f7a5760405162461bcd60e51b81526004016112e990613933565b601054861115612f9c5760405162461bcd60e51b81526004016112e990613933565b5060115460ff1661305b565b600e54612fb587856139ce565b1115612fd35760405162461bcd60e51b81526004016112e990613933565b612fde600689612cec565b61304d576001600160a01b038816600090815260036020526040902054421015806130105750601d54610100900460ff165b61304d5760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b60448201526064016112e9565b5060115462010000900460ff165b6014546001600160a01b0389811691161480159061307c5750601f5460ff16155b801561308b5750601d5460ff16155b156130995761309986612aa2565b6011546000906130f2908890849060ff600160301b8204811691600160281b81048216916130d99163010000008104821691600160201b909104166139e6565b6130e391906139e6565b6130ed91906139e6565b6135d9565b905060006131008289613b3a565b905061310c8a89613570565b306000908152600160205260408120805484929061312b9084906139ce565b9091555061313b905089826135b5565b886001600160a01b03168a6001600160a01b0316600080516020613bb78339815191528360405161316e91815260200190565b60405180910390a350505050505050505050565b60155461319a9030906001600160a01b03168361259f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106131cf576131cf613b7d565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561322357600080fd5b505afa158015613237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325b9190613640565b8160018151811061326e5761326e613b7d565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac947906132b490859060009086903090429060040161395d565b600060405180830381600087803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b505050505050565b80601c60008282546132fc91906139ce565b90915550506015546133199030906001600160a01b03168461259f565b60155460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561338157600080fd5b505af1158015613395573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133ba91906137e3565b5050505050565b6018546000906064906133d79060ff1684613b1b565b6133e19190613a0b565b6018549091506000906064906134009062010000900460ff1685613b1b565b61340a9190613a0b565b60185490915060009060649061342890610100900460ff1686613b1b565b6134329190613a0b565b9050826019600082825461344691906139ce565b9250508190555081601b600082825461345f91906139ce565b9250508190555080601a600082825461347891906139ce565b909155505050505050565b600081815260018301602052604081205480156135665760006134a7600183613b3a565b85549091506000906134bb90600190613b3a565b905060008660000182815481106134d4576134d4613b7d565b90600052602060002001549050808760000184815481106134f7576134f7613b7d565b60009182526020808320909101929092558281526001890190915260409020849055865487908061352a5761352a613b67565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506113a3565b60009150506113a3565b6001600160a01b038216600090815260016020526040812054613594908390613b3a565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b0382166000908152600160205260408120546135949083906139ce565b60006127108260ff168460ff16866135f19190613b1b565b6135fb9190613b1b565b6136059190613a0b565b949350505050565b803560ff8116811461361e57600080fd5b919050565b60006020828403121561363557600080fd5b813561163881613b93565b60006020828403121561365257600080fd5b815161163881613b93565b6000806040838503121561367057600080fd5b823561367b81613b93565b9150602083013561368b81613b93565b809150509250929050565b6000806000606084860312156136ab57600080fd5b83356136b681613b93565b925060208401356136c681613b93565b929592945050506040919091013590565b600080604083850312156136ea57600080fd5b82356136f581613b93565b9150602083013561368b81613ba8565b6000806040838503121561371857600080fd5b823561372381613b93565b946020939093013593505050565b60006020828403121561374357600080fd5b813561163881613ba8565b60006020828403121561376057600080fd5b815161163881613ba8565b60006020828403121561377d57600080fd5b813561ffff8116811461163857600080fd5b6000602082840312156137a157600080fd5b5035919050565b6000602082840312156137ba57600080fd5b5051919050565b600080604083850312156137d457600080fd5b50508035926020909101359150565b6000806000606084860312156137f857600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561382357600080fd5b6116388261360d565b600080600080600080600060e0888a03121561384757600080fd5b6138508861360d565b965061385e6020890161360d565b955061386c6040890161360d565b945061387a6060890161360d565b93506138886080890161360d565b925061389660a0890161360d565b91506138a460c0890161360d565b905092959891949750929550565b600060208083528351808285015260005b818110156138df578581018301518582016040015282016138c3565b818111156138f1576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526012908201527143616c6c6572206e6f7420696e205465616d60701b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139ad5784516001600160a01b031683529383019391830191600101613988565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156139e1576139e1613b51565b500190565b600060ff821660ff84168060ff03821115613a0357613a03613b51565b019392505050565b600082613a2857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613a68578160001904821115613a4e57613a4e613b51565b80851615613a5b57918102915b93841c9390800290613a32565b509250929050565b600061163860ff841683600082613a89575060016113a3565b81613a96575060006113a3565b8160018114613aac5760028114613ab657613ad2565b60019150506113a3565b60ff841115613ac757613ac7613b51565b50506001821b6113a3565b5060208310610133831016604e8410600b8410161715613af5575081810a6113a3565b613aff8383613a2d565b8060001904821115613b1357613b13613b51565b029392505050565b6000816000190483118215151615613b3557613b35613b51565b500290565b600082821015613b4c57613b4c613b51565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611bf657600080fd5b8015158114611bf657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205efa1b3318facc87d506f5e59182ab6e7df9bb87d92c8bb0f4d7e5d6a7d4104b64736f6c63430008070033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106105875760003560e01c80637796ff37116102d2578063ae0df1a911610189578063d5d7f465116100de578063e9addd9b1161009a578063f2fde38b11610077578063f2fde38b14611240578063f88b0e4614611260578063f9cfadf114611276578063fb2729871461129757005b8063e9addd9b146111d6578063ead3caf414611200578063f2e0fcbb1461122057005b8063d5d7f465146110fa578063d65af4f21461111a578063d72e08d11461113b578063dd62ed3e14611150578063e134efbb14611196578063e1d21a5b146111b657005b8063b89bfd6511610145578063ca9ec19911610122578063ca9ec19914611065578063d28d885214611084578063d2aaceda146110ba578063d34a9f3c146110da57005b8063b89bfd6514610ffd578063b9966dcb1461101d578063c7639d801461103d57005b8063ae0df1a914610f2c578063b09f126614610f4c578063b0d4f9b714610f7d578063b19a081914610f9d578063b41ea98d14610fbd578063b792161714610fdd57005b8063954ea6651161023f578063a253c06e116101fb578063a9059cbb116101d8578063a9059cbb14610eab578063a9aab6b914610ecb578063ab0b364c14610eeb578063ad463f3d14610f0c57005b8063a253c06e14610e55578063a457c2d714610e6b578063a568016f14610e8b57005b8063954ea66514610d8157806395d89b4114610da15780639bac4a9514610dcf5780639bb433fb14610df0578063a1481b7e14610e10578063a20623ce14610e2557005b806386b5b6091161028e57806386b5b60914610cea57806386d0ada814610d0a578063887c60fb14610d24578063893d20e814610d435780638da5cb5b14610d43578063948248c214610d6157005b80637796ff3714610c3557806378af89df14610c555780637b614de614610c745780638116984d14610c9457806382c4767b14610cb4578063869f736014610cca57005b8063382e329a1161043e57806351a1ad481161039357806365001c661161034f5780636f890a2f1161032c5780636f890a2f14610bb457806370a0823114610bd4578063715018a614610c0a578063762bb28214610c1f57005b806365001c6614610b475780636dcf721814610b675780636ebcf60714610b8757005b806351a1ad4814610abc578063536d8c5f14610ad1578063589210d914610ae657806358e5536514610afc5780635aa1805714610b125780635e1050e514610b2757005b806344832cc6116103fa5780634beb38d8116103d75780634beb38d814610a465780634eca70f514610a665780634f91e48c14610a86578063518c7cc014610a9c57005b806344832cc6146109f157806348e907b714610a115780634ada218b14610a2757005b8063382e329a1461094a578063395093511461096b5780633cc39b7a1461098b5780634089b170146109a157806341f6fb69146109b757806342a11095146109d757005b806318160ddd116104f4578063311a8697116104b057806332424aa31161048d57806332424aa3146108d3578063325ea1aa146108e85780633478154b1461090857806337ac7f081461092a57005b8063311a869714610888578063313ce567146108a9578063313dab20146108bd57005b806318160ddd146107dd5780631eb25d13146107f25780631f8b845e1461080757806323b872dd146108275780632a24e064146108475780632d8828631461086757005b8063095ea7b311610543578063095ea7b31461070d57806309c1f2b21461073d5780630fd99e1614610752578063141235321461078757806315638c68146107a757806317391e49146107bd57005b806301b8dc2e14610590578063024c2ddd1461060b57806305691ec81461065157806306fdde031461069057806307c8c2be146106cc57806309218ee7146106e157005b3661058e57005b005b34801561059c57600080fd5b506011546040805160ff600160301b840481168252600160281b84048116602083015263010000008404811692820192909252600160201b83048216606082015281831660808201526101008304821660a0820152620100009092041660c082015260e0015b60405180910390f35b34801561061757600080fd5b5061064361062636600461365d565b600260209081526000928352604080842090915290825290205481565b604051908152602001610602565b34801561065d57600080fd5b5060115461067890600160501b90046001600160a01b031681565b6040516001600160a01b039091168152602001610602565b34801561069c57600080fd5b5060408051808201909152600a8152694b61696261204465466960b01b60208201525b60405161060291906138b2565b3480156106d857600080fd5b5061058e6112c4565b3480156106ed57600080fd5b506018546106fb9060ff1681565b60405160ff9091168152602001610602565b34801561071957600080fd5b5061072d610728366004613705565b611392565b6040519015158152602001610602565b34801561074957600080fd5b5061058e6113a9565b34801561075e57600080fd5b50600b5461077490600160201b900461ffff1681565b60405161ffff9091168152602001610602565b34801561079357600080fd5b5061058e6107a2366004613623565b6113ee565b3480156107b357600080fd5b50610643601a5481565b3480156107c957600080fd5b506011546106fb9062010000900460ff1681565b3480156107e957600080fd5b50600d54610643565b3480156107fe57600080fd5b50610643611422565b34801561081357600080fd5b50600b5461077490610100900461ffff1681565b34801561083357600080fd5b5061072d610842366004613696565b61143f565b34801561085357600080fd5b50601454610678906001600160a01b031681565b34801561087357600080fd5b506011546106fb90600160201b900460ff1681565b34801561089457600080fd5b50600b546106fb906301000000900460ff1681565b3480156108b557600080fd5b5060096106fb565b3480156108c957600080fd5b50610643601b5481565b3480156108df57600080fd5b506106fb600981565b3480156108f457600080fd5b5061058e61090336600461378f565b6114d6565b34801561091457600080fd5b50600b5461077490600160301b900461ffff1681565b34801561093657600080fd5b5061058e610945366004613731565b611500565b34801561095657600080fd5b506011546106fb906301000000900460ff1681565b34801561097757600080fd5b5061072d610986366004613705565b611549565b34801561099757600080fd5b50610643601c5481565b3480156109ad57600080fd5b5061064360175481565b3480156109c357600080fd5b5061058e6109d2366004613623565b611580565b3480156109e357600080fd5b506011546106fb9060ff1681565b3480156109fd57600080fd5b50610643610a0c366004613623565b611605565b348015610a1d57600080fd5b5061064360165481565b348015610a3357600080fd5b50601f5461072d90610100900460ff1681565b348015610a5257600080fd5b50601254610678906001600160a01b031681565b348015610a7257600080fd5b5061058e610a81366004613623565b61163f565b348015610a9257600080fd5b50610643600f5481565b348015610aa857600080fd5b5061058e610ab7366004613623565b61168e565b348015610ac857600080fd5b5061058e6116f4565b348015610add57600080fd5b5061058e61171c565b348015610af257600080fd5b5061064360105481565b348015610b0857600080fd5b5061064360195481565b348015610b1e57600080fd5b50601e54610643565b348015610b3357600080fd5b5061058e610b42366004613623565b61175b565b348015610b5357600080fd5b5061058e610b62366004613623565b6117a1565b348015610b7357600080fd5b5061058e610b82366004613705565b61191a565b348015610b9357600080fd5b50610643610ba2366004613623565b60016020526000908152604090205481565b348015610bc057600080fd5b5061058e610bcf36600461378f565b611a60565b348015610be057600080fd5b50610643610bef366004613623565b6001600160a01b031660009081526001602052604090205490565b348015610c1657600080fd5b5061058e611b08565b348015610c2b57600080fd5b50610643600e5481565b348015610c4157600080fd5b506018546106fb9062010000900460ff1681565b348015610c6157600080fd5b506018546106fb90610100900460ff1681565b348015610c8057600080fd5b5061058e610c8f36600461378f565b611bbb565b348015610ca057600080fd5b5061058e610caf366004613731565b611bf9565b348015610cc057600080fd5b5061067861dead81565b348015610cd657600080fd5b5061058e610ce5366004613811565b611c38565b348015610cf657600080fd5b5061058e610d053660046136d7565b611c79565b348015610d1657600080fd5b50601f5461072d9060ff1681565b348015610d3057600080fd5b50601d5461072d90610100900460ff1681565b348015610d4f57600080fd5b506000546001600160a01b0316610678565b348015610d6d57600080fd5b5061058e610d7c366004613811565b611cc9565b348015610d8d57600080fd5b50601554610678906001600160a01b031681565b348015610dad57600080fd5b506040805180820190915260058152644b4149424160d81b60208201526106bf565b348015610ddb57600080fd5b506011546106fb90600160301b900460ff1681565b348015610dfc57600080fd5b5061058e610e0b36600461382c565b611d0c565b348015610e1c57600080fd5b5061058e611e4b565b348015610e3157600080fd5b5061072d610e40366004613623565b60086020526000908152604090205460ff1681565b348015610e6157600080fd5b50610643600d5481565b348015610e7757600080fd5b5061072d610e86366004613705565b611ec5565b348015610e9757600080fd5b5061058e610ea6366004613731565b611f41565b348015610eb757600080fd5b5061072d610ec6366004613705565b611f79565b348015610ed757600080fd5b5061058e610ee636600461378f565b611f86565b348015610ef757600080fd5b5060115461072d90600160481b900460ff1681565b348015610f1857600080fd5b5061058e610f27366004613731565b611fb0565b348015610f3857600080fd5b5061058e610f47366004613623565b611ffb565b348015610f5857600080fd5b506106bf604051806040016040528060058152602001644b4149424160d81b81525081565b348015610f8957600080fd5b5061058e610f98366004613623565b612067565b348015610fa957600080fd5b5061058e610fb8366004613623565b6120f2565b348015610fc957600080fd5b5061058e610fd8366004613731565b61213b565b348015610fe957600080fd5b5061058e610ff8366004613731565b612173565b34801561100957600080fd5b5061058e611018366004613731565b6121ab565b34801561102957600080fd5b50601354610678906001600160a01b031681565b34801561104957600080fd5b50610678737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561107157600080fd5b506011546106fb90610100900460ff1681565b34801561109057600080fd5b506106bf6040518060400160405280600a8152602001694b61696261204465466960b01b81525081565b3480156110c657600080fd5b5061058e6110d5366004613623565b6121ea565b3480156110e657600080fd5b5061058e6110f5366004613623565b61221a565b34801561110657600080fd5b5061058e611115366004613811565b61224a565b34801561112657600080fd5b5060115461072d90600160401b900460ff1681565b34801561114757600080fd5b5061058e612285565b34801561115c57600080fd5b5061064361116b36600461365d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156111a257600080fd5b5061058e6111b13660046137c1565b6122c4565b3480156111c257600080fd5b5061058e6111d136600461376b565b612323565b3480156111e257600080fd5b506111eb61236d565b60408051928352602083019190915201610602565b34801561120c57600080fd5b5061058e61121b3660046136d7565b6123aa565b34801561122c57600080fd5b5061058e61123b366004613623565b6123fa565b34801561124c57600080fd5b5061058e61125b366004613623565b61242a565b34801561126c57600080fd5b50610643601e5481565b34801561128257600080fd5b506011546106fb90600160281b900460ff1681565b3480156112a357600080fd5b506106436112b2366004613623565b60036020526000908152604090205481565b6112cd33612568565b6112f25760405162461bcd60e51b81526004016112e990613907565b60405180910390fd5b601a805460009182905560405190913391829084905b60006040518083038185875af1925050503d8060008114611345576040519150601f19603f3d011682016040523d82523d6000602084013e61134a565b606091505b505090508061138d5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b60448201526064016112e9565b505050565b600061139f33848461259f565b5060015b92915050565b6113b233612568565b6113ce5760405162461bcd60e51b81526004016112e990613907565b6113dc426301e133806139ce565b33600090815260036020526040902055565b6113f733612568565b6114135760405162461bcd60e51b81526004016112e990613907565b61141e600482612553565b5050565b61142e6009600a613a70565b61143c906305f5e100613b1b565b81565b600061144c848484612692565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156114b75760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016112e9565b6114cb85336114c68685613b3a565b61259f565b506001949350505050565b6114df33612568565b6114fb5760405162461bcd60e51b81526004016112e990613907565b600a55565b61150933612568565b6115255760405162461bcd60e51b81526004016112e990613907565b60118054911515600160481b0269ff00000000000000000019909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161139f9185906114c69086906139ce565b61158933612568565b6115a55760405162461bcd60e51b81526004016112e990613907565b601380546001600160a01b0319166001600160a01b0383811691821783556000918252600c6020526040909120805460ff1916600117905590546115ec9160049116612553565b5060125461141e906006906001600160a01b0316612553565b6001600160a01b03811660009081526003602052604081205442811161162e5750600092915050565b6116384282613b3a565b9392505050565b61164833612568565b6116645760405162461bcd60e51b81526004016112e990613907565b601f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61169733612568565b6116b35760405162461bcd60e51b81526004016112e990613907565b601180546001600160a01b03909216600160501b027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909216919091179055565b6116fd33612568565b6117195760405162461bcd60e51b81526004016112e990613907565b33ff5b61172533612568565b6117415760405162461bcd60e51b81526004016112e990613907565b601b80546000918290556040519091339182908490611308565b61176433612568565b6117805760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6117aa33612568565b6117c65760405162461bcd60e51b81526004016112e990613907565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561180a57600080fd5b505afa15801561181e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184291906137a8565b9050600081116118945760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e6365000000000000000060448201526064016112e9565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156118dc57600080fd5b505af11580156118f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611914919061374e565b50505050565b61192333612568565b61193f5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03821660009081526001602052604090205481111561199b5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b60448201526064016112e9565b6119a76009600a613a70565b6119b19082613b1b565b6001600160a01b038316600090815260016020526040812080549091906119d9908490613b3a565b909155506119eb90506009600a613a70565b6119f59082613b1b565b3060009081526001602052604081208054909190611a149084906139ce565b909155503090506001600160a01b038316600080516020613bb7833981519152611a406009600a613a70565b611a4a9085613b1b565b6040519081526020015b60405180910390a35050565b611a6933612568565b611a855760405162461bcd60e51b81526004016112e990613907565b30600090815260016020526040902054811115611aa157600080fd5b3060009081526001602052604081208054839290611ac0908490613b3a565b9250508190555080600d6000828254611ad99190613b3a565b909155505060405181815261dead903090600080516020613bb78339815191529060200160405180910390a350565b33611b1b6000546001600160a01b031690565b6001600160a01b031614611b715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016112e9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611bc433612568565b611be05760405162461bcd60e51b81526004016112e990613907565b611bf6611bf182633b9aca00613b1b565b612aa2565b50565b611c0233612568565b611c1e5760405162461bcd60e51b81526004016112e990613907565b601d80549115156101000261ff0019909216919091179055565b611c4133612568565b611c5d5760405162461bcd60e51b81526004016112e990613907565b6018805460ff9092166101000261ff0019909216919091179055565b611c8233612568565b611c9e5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b611cd233612568565b611cee5760405162461bcd60e51b81526004016112e990613907565b6018805460ff909216620100000262ff000019909216919091179055565b611d1533612568565b611d315760405162461bcd60e51b81526004016112e990613907565b60008486611d3f898b6139e6565b611d4991906139e6565b611d5391906139e6565b90508060ff16606414611db75760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b60648201526084016112e9565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b0264ff00000000199986166301000000029990991664ffff000000199a8616600160281b0265ff0000000000199c8716600160301b029c909c1666ffff000000000019909416939093179a909a179890981617959095179390931691909216179390931792909216179055565b611e5433612568565b611e705760405162461bcd60e51b81526004016112e990613907565b604051600090339047908381818185875af1925050503d8060008114611eb2576040519150601f19603f3d011682016040523d82523d6000602084013e611eb7565b606091505b5050905080611bf657600080fd5b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611f285760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016112e9565b611f3733856114c68685613b3a565b5060019392505050565b611f4a33612568565b611f665760405162461bcd60e51b81526004016112e990613907565b6009805460ff1916911515919091179055565b600061139f338484612692565b611f8f33612568565b611fab5760405162461bcd60e51b81526004016112e990613907565b601e55565b611fb933612568565b611fd55760405162461bcd60e51b81526004016112e990613907565b601180549115156701000000000000000267ff0000000000000019909216919091179055565b61200433612568565b6120205760405162461bcd60e51b81526004016112e990613907565b601280546001600160a01b0319166001600160a01b0383811691821783556000918252600c6020526040909120805460ff1916600117905590546115ec9160049116612553565b61207033612568565b61208c5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b0381166000908152600160205260408082208054908390553083529082208054919283926120c29084906139ce565b909155505060405181815230906001600160a01b03841690600080516020613bb783398151915290602001611a54565b6120fb33612568565b6121175760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61214433612568565b6121605760405162461bcd60e51b81526004016112e990613907565b600b805460ff1916911515919091179055565b61217c33612568565b6121985760405162461bcd60e51b81526004016112e990613907565b601f805460ff1916911515919091179055565b6121b433612568565b6121d05760405162461bcd60e51b81526004016112e990613907565b601f80549115156101000261ff0019909216919091179055565b6121f333612568565b61220f5760405162461bcd60e51b81526004016112e990613907565b61141e600682612553565b61222333612568565b61223f5760405162461bcd60e51b81526004016112e990613907565b61141e600682612c88565b61225333612568565b61226f5760405162461bcd60e51b81526004016112e990613907565b6018805460ff191660ff92909216919091179055565b61228e33612568565b6122aa5760405162461bcd60e51b81526004016112e990613907565b601980546000918290556040519091339182908490611308565b6122cd33612568565b6122e95760405162461bcd60e51b81526004016112e990613907565b6122f56009600a613a70565b6122ff9083613b1b565b915061230d6009600a613a70565b6123179082613b1b565b600e9290925550600f55565b61232c33612568565b6123485760405162461bcd60e51b81526004016112e990613907565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b60008061237c6009600a613a70565b600e546123899190613a0b565b6123956009600a613a70565b600f546123a29190613a0b565b915091509091565b6123b333612568565b6123cf5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b61240333612568565b61241f5760405162461bcd60e51b81526004016112e990613907565b61141e600482612c88565b3361243d6000546001600160a01b031690565b6001600160a01b0316146124935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016112e9565b6001600160a01b0381166124f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016112e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611638836001600160a01b038416612c9d565b600080546001600160a01b03838116911614806113a35750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166125e95760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016112e9565b6001600160a01b0382166126315760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016112e9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126dd5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016112e9565b6001600160a01b0382166127265760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016112e9565b60095460ff16156127ae576001600160a01b03831660009081526008602052604090205460ff1615801561277357506001600160a01b03821660009081526008602052604090205460ff16155b6127ae5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b60448201526064016112e9565b6011546001600160a01b03848116600160501b909204161460006127d3600486612cec565b806127e457506127e4600485612cec565b8061280757506001600160a01b0385166000908152600c602052604090205460ff165b8061282a57506001600160a01b0384166000908152600c602052604090205460ff165b905060006001600160a01b03861630148061284d57506001600160a01b03851630145b6014549091506000906001600160a01b03888116911614801561288c57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b806128cb57506014546001600160a01b0387811691161480156128cb57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806128d65750805b806128de5750825b806128e65750835b156128fb576128f6878787612d0e565b612a99565b601f54610100900460ff166129e9576000546001600160a01b0388811691161480159061293657506000546001600160a01b03878116911614155b156129e957601154600160401b900460ff161561299257856001600160a01b0316876001600160a01b0316600080516020613bb7833981519152600060405161298191815260200190565b60405180910390a350505050505050565b601f54610100900460ff166129e95760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c656400000000000000000060448201526064016112e9565b6014546000906001600160a01b0389811691161480612a2457506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6014549091506000906001600160a01b0389811691161480612a6257506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050612a718989898585612dc7565b601154600160481b900460ff1615612a96575060009450849350839250829150819050805b50505b50505050505050565b601d805460ff191660019081179091553060009081526020919091526040812054601154909190612ae790600160201b810460ff9081169163010000009004166139e6565b60ff1690506000600a54905083811115612b0957600b5460ff1615612b095750825b80831080612b19575061ffff8216155b15612b2657505050612c7b565b60115460009061ffff841690612b46906301000000900460ff1684613b1b565b612b509190613a0b565b60115490915060009061ffff851690612b7390600160201b900460ff1685613b1b565b612b7d9190613a0b565b60115490915060009061ffff861690612ba090600160301b900460ff1686613b1b565b612baa9190613a0b565b60115490915060009061ffff871690612bcd90600160281b900460ff1687613b1b565b612bd79190613a0b565b90506000612be6600286613a0b565b90506000612bf48287613b3a565b905060008484612c0488856139ce565b612c0e91906139ce565b612c1891906139ce565b905047612c2482613182565b6000612c308247613b3a565b9050600083612c3f8684613b1b565b612c499190613a0b565b9050612c5586826132ea565b6000612c618447613b3a565b9050612c6c816133c1565b50505050505050505050505050505b50601d805460ff19169055565b6000611638836001600160a01b038416613483565b6000818152600183016020526040812054612ce4575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556113a3565b5060006113a3565b6001600160a01b03811660009081526001830160205260408120541515611638565b6001600160a01b03831660009081526001602052604090205481811015612d725760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016112e9565b612d7c8483613570565b612d8683836135b5565b826001600160a01b0316846001600160a01b0316600080516020613bb783398151915284604051612db991815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612e355760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016112e9565b6002600f54612e449190613a0b565b600a5560008315612f4957612e5a600689612cec565b612ef4576001600160a01b03881660009081526003602052604090205442101580612e8c5750601d54610100900460ff165b612ecd5760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b60448201526064016112e9565b601e54612eda90426139ce565b6001600160a01b0389166000908152600360205260409020555b600f54861115612f385760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b60448201526064016112e9565b50601154610100900460ff1661305b565b8415612fa857600e54612f5c87856139ce565b1115612f7a5760405162461bcd60e51b81526004016112e990613933565b601054861115612f9c5760405162461bcd60e51b81526004016112e990613933565b5060115460ff1661305b565b600e54612fb587856139ce565b1115612fd35760405162461bcd60e51b81526004016112e990613933565b612fde600689612cec565b61304d576001600160a01b038816600090815260036020526040902054421015806130105750601d54610100900460ff165b61304d5760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b60448201526064016112e9565b5060115462010000900460ff165b6014546001600160a01b0389811691161480159061307c5750601f5460ff16155b801561308b5750601d5460ff16155b156130995761309986612aa2565b6011546000906130f2908890849060ff600160301b8204811691600160281b81048216916130d99163010000008104821691600160201b909104166139e6565b6130e391906139e6565b6130ed91906139e6565b6135d9565b905060006131008289613b3a565b905061310c8a89613570565b306000908152600160205260408120805484929061312b9084906139ce565b9091555061313b905089826135b5565b886001600160a01b03168a6001600160a01b0316600080516020613bb78339815191528360405161316e91815260200190565b60405180910390a350505050505050505050565b60155461319a9030906001600160a01b03168361259f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106131cf576131cf613b7d565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561322357600080fd5b505afa158015613237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325b9190613640565b8160018151811061326e5761326e613b7d565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac947906132b490859060009086903090429060040161395d565b600060405180830381600087803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b505050505050565b80601c60008282546132fc91906139ce565b90915550506015546133199030906001600160a01b03168461259f565b60155460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561338157600080fd5b505af1158015613395573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133ba91906137e3565b5050505050565b6018546000906064906133d79060ff1684613b1b565b6133e19190613a0b565b6018549091506000906064906134009062010000900460ff1685613b1b565b61340a9190613a0b565b60185490915060009060649061342890610100900460ff1686613b1b565b6134329190613a0b565b9050826019600082825461344691906139ce565b9250508190555081601b600082825461345f91906139ce565b9250508190555080601a600082825461347891906139ce565b909155505050505050565b600081815260018301602052604081205480156135665760006134a7600183613b3a565b85549091506000906134bb90600190613b3a565b905060008660000182815481106134d4576134d4613b7d565b90600052602060002001549050808760000184815481106134f7576134f7613b7d565b60009182526020808320909101929092558281526001890190915260409020849055865487908061352a5761352a613b67565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506113a3565b60009150506113a3565b6001600160a01b038216600090815260016020526040812054613594908390613b3a565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b0382166000908152600160205260408120546135949083906139ce565b60006127108260ff168460ff16866135f19190613b1b565b6135fb9190613b1b565b6136059190613a0b565b949350505050565b803560ff8116811461361e57600080fd5b919050565b60006020828403121561363557600080fd5b813561163881613b93565b60006020828403121561365257600080fd5b815161163881613b93565b6000806040838503121561367057600080fd5b823561367b81613b93565b9150602083013561368b81613b93565b809150509250929050565b6000806000606084860312156136ab57600080fd5b83356136b681613b93565b925060208401356136c681613b93565b929592945050506040919091013590565b600080604083850312156136ea57600080fd5b82356136f581613b93565b9150602083013561368b81613ba8565b6000806040838503121561371857600080fd5b823561372381613b93565b946020939093013593505050565b60006020828403121561374357600080fd5b813561163881613ba8565b60006020828403121561376057600080fd5b815161163881613ba8565b60006020828403121561377d57600080fd5b813561ffff8116811461163857600080fd5b6000602082840312156137a157600080fd5b5035919050565b6000602082840312156137ba57600080fd5b5051919050565b600080604083850312156137d457600080fd5b50508035926020909101359150565b6000806000606084860312156137f857600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561382357600080fd5b6116388261360d565b600080600080600080600060e0888a03121561384757600080fd5b6138508861360d565b965061385e6020890161360d565b955061386c6040890161360d565b945061387a6060890161360d565b93506138886080890161360d565b925061389660a0890161360d565b91506138a460c0890161360d565b905092959891949750929550565b600060208083528351808285015260005b818110156138df578581018301518582016040015282016138c3565b818111156138f1576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526012908201527143616c6c6572206e6f7420696e205465616d60701b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139ad5784516001600160a01b031683529383019391830191600101613988565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156139e1576139e1613b51565b500190565b600060ff821660ff84168060ff03821115613a0357613a03613b51565b019392505050565b600082613a2857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613a68578160001904821115613a4e57613a4e613b51565b80851615613a5b57918102915b93841c9390800290613a32565b509250929050565b600061163860ff841683600082613a89575060016113a3565b81613a96575060006113a3565b8160018114613aac5760028114613ab657613ad2565b60019150506113a3565b60ff841115613ac757613ac7613b51565b50506001821b6113a3565b5060208310610133831016604e8410600b8410161715613af5575081810a6113a3565b613aff8383613a2d565b8060001904821115613b1357613b13613b51565b029392505050565b6000816000190483118215151615613b3557613b35613b51565b500290565b600082821015613b4c57613b4c613b51565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611bf657600080fd5b8015158114611bf657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205efa1b3318facc87d506f5e59182ab6e7df9bb87d92c8bb0f4d7e5d6a7d4104b64736f6c63430008070033

Deployed Bytecode Sourcemap

16344:21454:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28035:293;;;;;;;;;;-1:-1:-1;28237:12:0;;28035:293;;;28237:12;-1:-1:-1;;;28237:12:0;;;;16268:25:1;;-1:-1:-1;;;28251:10:0;;;;16324:2:1;16309:18;;16302:34;28262:13:0;;;;;16352:18:1;;;16345:34;;;;-1:-1:-1;;;28276:13:0;;;;16410:2:1;16395:18;;16388:34;28290:7:0;;;16453:3:1;16438:19;;16431:35;28237:12:0;28298:8;;;;16497:3:1;16482:19;;16475:35;28307:12:0;;;;;16541:3:1;16526:19;;16519:35;16255:3;16240:19;28035:293:0;;;;;;;;16531:68;;;;;;;;;;-1:-1:-1;16531:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6640:25:1;;;6628:2;6613:18;16531:68:0;6486:185:1;18162:27:0;;;;;;;;;;-1:-1:-1;18162:27:0;;;;-1:-1:-1;;;18162:27:0;;-1:-1:-1;;;;;18162:27:0;;;;;;-1:-1:-1;;;;;5127:32:1;;;5109:51;;5097:2;5082:18;18162:27:0;4963:203:1;35471:94:0;;;;;;;;;;-1:-1:-1;35552:5:0;;;;;;;;;;;;-1:-1:-1;;;35552:5:0;;;;35471:94;;;;;;;:::i;31015:259::-;;;;;;;;;;;;;:::i;24470:30::-;;;;;;;;;;-1:-1:-1;24470:30:0;;;;;;;;;;;16737:4:1;16725:17;;;16707:36;;16695:2;16680:18;24470:30:0;16565:184:1;36356:161:0;;;;;;;;;;-1:-1:-1;36356:161:0;;;;;:::i;:::-;;:::i;:::-;;;6227:14:1;;6220:22;6202:41;;6190:2;6175:18;36356:161:0;6062:187:1;29437:110:0;;;;;;;;;;;;;:::i;17276:35::-;;;;;;;;;;-1:-1:-1;17276:35:0;;;;-1:-1:-1;;;17276:35:0;;;;;;;;;14514:6:1;14502:19;;;14484:38;;14472:2;14457:18;17276:35:0;14340:188:1;30233:110:0;;;;;;;;;;-1:-1:-1;30233:110:0;;;;;:::i;:::-;;:::i;24621:28::-;;;;;;;;;;;;;;;;17891:25;;;;;;;;;;-1:-1:-1;17891:25:0;;;;;;;;;;;35781:108;;;;;;;;;;-1:-1:-1;35863:18:0;;35781:108;;17001:66;;;;;;;;;;;;;:::i;17168:33::-;;;;;;;;;;-1:-1:-1;17168:33:0;;;;;;;;;;;36830:392;;;;;;;;;;-1:-1:-1;36830:392:0;;;;;:::i;:::-;;:::i;18246:34::-;;;;;;;;;;-1:-1:-1;18246:34:0;;;;-1:-1:-1;;;;;18246:34:0;;;17956:26;;;;;;;;;;-1:-1:-1;17956:26:0;;;;-1:-1:-1;;;17956:26:0;;;;;;17220:37;;;;;;;;;;-1:-1:-1;17220:37:0;;;;;;;;;;;35679:94;;;;;;;;;;-1:-1:-1;16993:1:0;35679:94;;24656:30;;;;;;;;;;;;;;;;16959:35;;;;;;;;;;;;16993:1;16959:35;;28973:91;;;;;;;;;;-1:-1:-1;28973:91:0;;;;;:::i;:::-;;:::i;17333:42::-;;;;;;;;;;-1:-1:-1;17333:42:0;;;;-1:-1:-1;;;17333:42:0;;;;;;31656:97;;;;;;;;;;-1:-1:-1;31656:97:0;;;;;:::i;:::-;;:::i;17923:26::-;;;;;;;;;;-1:-1:-1;17923:26:0;;;;;;;;;;;37238:205;;;;;;;;;;-1:-1:-1;37238:205:0;;;;;:::i;:::-;;:::i;25123:25::-;;;;;;;;;;;;;;;;24428:27;;;;;;;;;;;;;;;;34898:179;;;;;;;;;;-1:-1:-1;34898:179:0;;;;;:::i;:::-;;:::i;17836:20::-;;;;;;;;;;-1:-1:-1;17836:20:0;;;;;;;;28340:289;;;;;;;;;;-1:-1:-1;28340:289:0;;;;;:::i;:::-;;:::i;24377:38::-;;;;;;;;;;;;;;;;33538:26;;;;;;;;;;-1:-1:-1;33538:26:0;;;;;;;;;;;18196:18;;;;;;;;;;-1:-1:-1;18196:18:0;;;;-1:-1:-1;;;;;18196:18:0;;;33738:149;;;;;;;;;;-1:-1:-1;33738:149:0;;;;;:::i;:::-;;:::i;17723:46::-;;;;;;;;;;;;;;;;29210:92;;;;;;;;;;-1:-1:-1;29210:92:0;;;;;:::i;:::-;;:::i;31555:93::-;;;;;;;;;;;;;:::i;31282:265::-;;;;;;;;;;;;;:::i;17776:45::-;;;;;;;;;;;;;;;;24583:31;;;;;;;;;;;;;;;;28635:110;;;;;;;;;;-1:-1:-1;28725:12:0;;28635:110;;34604:123;;;;;;;;;;-1:-1:-1;34604:123:0;;;;;:::i;:::-;;:::i;33903:289::-;;;;;;;;;;-1:-1:-1;33903:289:0;;;;;:::i;:::-;;:::i;29555:321::-;;;;;;;;;;-1:-1:-1;29555:321:0;;;;;:::i;:::-;;:::i;16479:45::-;;;;;;;;;;-1:-1:-1;16479:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;27602:256;;;;;;;;;;-1:-1:-1;27602:256:0;;;;;:::i;:::-;;:::i;35897:121::-;;;;;;;;;;-1:-1:-1;35897:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;35992:18:0;35965:7;35992:18;;;:9;:18;;;;;;;35897:121;8128:140;;;;;;;;;;;;;:::i;17667:49::-;;;;;;;;;;;;;;;;24541:29;;;;;;;;;;-1:-1:-1;24541:29:0;;;;;;;;;;;24507:27;;;;;;;;;;-1:-1:-1;24507:27:0;;;;;;;;;;;33086:128;;;;;;;;;;-1:-1:-1;33086:128:0;;;;;:::i;:::-;;:::i;31890:107::-;;;;;;;;;;-1:-1:-1;31890:107:0;;;;;:::i;:::-;;:::i;17526:73::-;;;;;;;;;;;;17557:42;17526:73;;32856:105;;;;;;;;;;-1:-1:-1;32856:105:0;;;;;:::i;:::-;;:::i;29884:102::-;;;;;;;;;;-1:-1:-1;29884:102:0;;;;;:::i;:::-;;:::i;28822:28::-;;;;;;;;;;-1:-1:-1;28822:28:0;;;;;;;;28753;;;;;;;;;;-1:-1:-1;28753:28:0;;;;;;;;;;;35369:94;;;;;;;;;;-1:-1:-1;35421:7:0;7968:6;-1:-1:-1;;;;;7968:6:0;35369:94;;32969:109;;;;;;;;;;-1:-1:-1;32969:109:0;;;;;:::i;:::-;;:::i;18287:39::-;;;;;;;;;;-1:-1:-1;18287:39:0;;;;-1:-1:-1;;;;;18287:39:0;;;35573:98;;;;;;;;;;-1:-1:-1;35656:7:0;;;;;;;;;;;;-1:-1:-1;;;35656:7:0;;;;35573:98;;18019:25;;;;;;;;;;-1:-1:-1;18019:25:0;;;;-1:-1:-1;;;18019:25:0;;;;;;32141:580;;;;;;;;;;-1:-1:-1;32141:580:0;;;;;:::i;:::-;;:::i;34737:153::-;;;;;;;;;;;;;:::i;16774:43::-;;;;;;;;;;-1:-1:-1;16774:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17612:48;;;;;;;;;;;;;;;;37451:342;;;;;;;;;;-1:-1:-1;37451:342:0;;;;;:::i;:::-;;:::i;34208:129::-;;;;;;;;;;-1:-1:-1;34208:129:0;;;;;:::i;:::-;;:::i;36026:167::-;;;;;;;;;;-1:-1:-1;36026:167:0;;;;;:::i;:::-;;:::i;32009:118::-;;;;;;;;;;-1:-1:-1;32009:118:0;;;;;:::i;:::-;;:::i;18126:27::-;;;;;;;;;;-1:-1:-1;18126:27:0;;;;-1:-1:-1;;;18126:27:0;;;;;;34345:118;;;;;;;;;;-1:-1:-1;34345:118:0;;;;;:::i;:::-;;:::i;35085:179::-;;;;;;;;;;-1:-1:-1;35085:179:0;;;;;:::i;:::-;;:::i;16912:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16912:40:0;;;;;29994:231;;;;;;;;;;-1:-1:-1;29994:231:0;;;;;:::i;:::-;;:::i;34471:125::-;;;;;;;;;;-1:-1:-1;34471:125:0;;;;;:::i;:::-;;:::i;28861:104::-;;;;;;;;;;-1:-1:-1;28861:104:0;;;;;:::i;:::-;;:::i;31765:113::-;;;;;;;;;;-1:-1:-1;31765:113:0;;;;;:::i;:::-;;:::i;33624:100::-;;;;;;;;;;-1:-1:-1;33624:100:0;;;;;:::i;:::-;;:::i;18221:18::-;;;;;;;;;;-1:-1:-1;18221:18:0;;;;-1:-1:-1;;;;;18221:18:0;;;17439:80;;;;;;;;;;;;17477:42;17439:80;;17863:21;;;;;;;;;;-1:-1:-1;17863:21:0;;;;;;;;;;;16862:43;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16862:43:0;;;;;30472:126;;;;;;;;;;-1:-1:-1;30472:126:0;;;;;:::i;:::-;;:::i;30604:127::-;;;;;;;;;;-1:-1:-1;30604:127:0;;;;;:::i;:::-;;:::i;32733:111::-;;;;;;;;;;-1:-1:-1;32733:111:0;;;;;:::i;:::-;;:::i;18090:29::-;;;;;;;;;;-1:-1:-1;18090:29:0;;;;-1:-1:-1;;;18090:29:0;;;;;;30739:268;;;;;;;;;;;;;:::i;36201:147::-;;;;;;;;;;-1:-1:-1;36201:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;36312:19:0;;;36285:7;36312:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;36201:147;33228:282;;;;;;;;;;-1:-1:-1;33228:282:0;;;;;:::i;:::-;;:::i;29072:97::-;;;;;;;;;;-1:-1:-1;29072:97:0;;;;;:::i;:::-;;:::i;27870:157::-;;;;;;;;;;;;;:::i;:::-;;;;15874:25:1;;;15930:2;15915:18;;15908:34;;;;15847:18;27870:157:0;15700:248:1;29310:115:0;;;;;;;;;;-1:-1:-1;29310:115:0;;;;;:::i;:::-;;:::i;30349:111::-;;;;;;;;;;-1:-1:-1;30349:111:0;;;;;:::i;:::-;;:::i;8282:236::-;;;;;;;;;;-1:-1:-1;8282:236:0;;;;;:::i;:::-;;:::i;28788:27::-;;;;;;;;;;;;;;;;17989:23;;;;;;;;;;-1:-1:-1;17989:23:0;;;;-1:-1:-1;;;17989:23:0;;;;;;16606:45;;;;;;;;;;-1:-1:-1;16606:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;31015:259;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;;;;;;;;;31090:13:::1;::::0;;31075:14:::1;31114:15:::0;;;;31192:32:::1;::::0;31090:13;;31157:10:::1;::::0;;;31090:13;;31192:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31178:46;;;31243:4;31235:31;;;::::0;-1:-1:-1;;;31235:31:0;;13510:2:1;31235:31:0::1;::::0;::::1;13492:21:1::0;13549:2;13529:18;;;13522:30;-1:-1:-1;;;13568:18:1;;;13561:45;13623:18;;31235:31:0::1;13308:339:1::0;31235:31:0::1;31064:210;;;31015:259::o:0;36356:161::-;36433:4;36450:37;36459:10;36471:7;36480:6;36450:8;:37::i;:::-;-1:-1:-1;36505:4:0;36356:161;;;;;:::o;29437:110::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29513:26:::1;:15;29530:8;29513:26;:::i;:::-;29501:10;29491:21;::::0;;;:9:::1;:21;::::0;;;;:48;29437:110::o;30233:::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30313:22:::1;:9;30327:7:::0;30313:13:::1;:22::i;:::-;;30233:110:::0;:::o;17001:66::-;17054:13;16993:1;17054:2;:13;:::i;:::-;17040:27;;:11;:27;:::i;:::-;17001:66;:::o;36830:392::-;36930:4;36947:36;36957:6;36965:9;36976:6;36947:9;:36::i;:::-;-1:-1:-1;;;;;37023:19:0;;36996:24;37023:19;;;:11;:19;;;;;;;;37043:10;37023:31;;;;;;;;37073:26;;;;37065:59;;;;-1:-1:-1;;;37065:59:0;;9278:2:1;37065:59:0;;;9260:21:1;9317:2;9297:18;;;9290:30;-1:-1:-1;;;9336:18:1;;;9329:50;9396:18;;37065:59:0;9076:344:1;37065:59:0;37137:55;37146:6;37154:10;37166:25;37185:6;37166:16;:25;:::i;:::-;37137:8;:55::i;:::-;-1:-1:-1;37210:4:0;;36830:392;-1:-1:-1;;;;36830:392:0:o;28973:91::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29041:9:::1;:15:::0;28973:91::o;31656:97::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31729:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;31729:16:0::1;-1:-1:-1::0;;31729:16:0;;::::1;::::0;;;::::1;::::0;;31656:97::o;37238:205::-;37346:10;37320:4;37367:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;37367:32:0;;;;;;;;;;37320:4;;37337:76;;37358:7;;37367:45;;37402:10;;37367:45;:::i;34898:179::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34960:3:::1;:10:::0;;-1:-1:-1;;;;;;34960:10:0::1;-1:-1:-1::0;;;;;34960:10:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;34981:11:0;;;:6:::1;:11;::::0;;;;;:18;;-1:-1:-1;;34981:18:0::1;-1:-1:-1::0;34981:18:0::1;::::0;;35024:3;;35010:18:::1;::::0;:9:::1;::::0;35024:3:::1;35010:13;:18::i;:::-;-1:-1:-1::0;35065:3:0::1;::::0;35039:30:::1;::::0;:21:::1;::::0;-1:-1:-1;;;;;35065:3:0::1;35039:25;:30::i;28340:289::-:0;-1:-1:-1;;;;;28470:25:0;;28434:7;28470:25;;;:9;:25;;;;;;28519:15;28509:25;;28506:74;;-1:-1:-1;28567:1:0;;28340:289;-1:-1:-1;;28340:289:0:o;28506:74::-;28597:24;28606:15;28597:8;:24;:::i;:::-;28590:31;28340:289;-1:-1:-1;;;28340:289:0:o;33738:149::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33835:22:::1;:44:::0;;-1:-1:-1;;;;;33835:44:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;33835:44:0;;::::1;::::0;;;::::1;::::0;;33738:149::o;29210:92::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29275:12:::1;:19:::0;;-1:-1:-1;;;;;29275:19:0;;::::1;-1:-1:-1::0;;;29275:19:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;29210:92::o;31555:93::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31628:10:::1;31607:33;31282:265:::0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31359:15:::1;::::0;;31344:14:::1;31385:17:::0;;;;31465:32:::1;::::0;31359:15;;31430:10:::1;::::0;;;31359:15;;31465:32:::1;4753:205:1::0;34604:123:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34691:20:0::1;34714:5;34691:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;34691:28:0::1;::::0;;34604:123::o;33903:289::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34045:30:::1;::::0;-1:-1:-1;;;34045:30:0;;34069:4:::1;34045:30;::::0;::::1;5109:51:1::0;34002:10:0;;33980:12:::1;::::0;-1:-1:-1;;;;;34045:15:0;::::1;::::0;::::1;::::0;5082:18:1;;34045:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34024:51;;34105:1;34094:10;:12;34086:49;;;::::0;-1:-1:-1;;;34086:49:0;;11782:2:1;34086:49:0::1;::::0;::::1;11764:21:1::0;11821:2;11801:18;;;11794:30;11860:26;11840:18;;;11833:54;11904:18;;34086:49:0::1;11580:348:1::0;34086:49:0::1;34146:38;::::0;-1:-1:-1;;;34146:38:0;;34161:10:::1;34146:38;::::0;::::1;5345:51:1::0;5412:18;;;5405:34;;;-1:-1:-1;;;;;34146:14:0;::::1;::::0;::::1;::::0;5318:18:1;;34146:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33969:223;;33903:289:::0;:::o;29555:321::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29645:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:25;-1:-1:-1;29645:25:0::1;29637:55;;;::::0;-1:-1:-1;;;29637:55:0;;13164:2:1;29637:55:0::1;::::0;::::1;13146:21:1::0;13203:2;13183:18;;;13176:30;-1:-1:-1;;;13222:18:1;;;13215:47;13279:18;;29637:55:0::1;12962:341:1::0;29637:55:0::1;29728:13;16993:1;29728:2;:13;:::i;:::-;29721:20;::::0;:6;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;29703:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;:39;;:15;;;:39:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;29787:13:0::1;::::0;-1:-1:-1;16993:1:0::1;29787:2;:13;:::i;:::-;29780:20;::::0;:6;:20:::1;:::i;:::-;29771:4;29753:24;::::0;;;:9:::1;:24;::::0;;;;:48;;:24;;;:48:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;29840:4:0::1;::::0;-1:-1:-1;;;;;;29817:51:0;::::1;-1:-1:-1::0;;;;;;;;;;;29854:13:0::1;16993:1;29854:2;:13;:::i;:::-;29847:20;::::0;:6;:20:::1;:::i;:::-;29817:51;::::0;6640:25:1;;;6628:2;6613:18;29817:51:0::1;;;;;;;;29555:321:::0;;:::o;27602:256::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;27696:4:::1;27678:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;27678:34:0::1;27670:43;;;::::0;::::1;;27742:4;27724:24;::::0;;;:9:::1;:24;::::0;;;;:34;;27752:6;;27724:24;:34:::1;::::0;27752:6;;27724:34:::1;:::i;:::-;;;;;;;;27791:6;27769:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;27813:37:0::1;::::0;6640:25:1;;;17557:42:0::1;::::0;27830:4:::1;::::0;-1:-1:-1;;;;;;;;;;;27813:37:0;6628:2:1;6613:18;27813:37:0::1;;;;;;;27602:256:::0;:::o;8128:140::-;8047:10;8036:7;7941;7968:6;-1:-1:-1;;;;;7968:6:0;;7903:79;8036:7;-1:-1:-1;;;;;8036:21:0;;8028:66;;;;-1:-1:-1;;;8028:66:0;;10722:2:1;8028:66:0;;;10704:21:1;;;10741:18;;;10734:30;10800:34;10780:18;;;10773:62;10852:18;;8028:66:0;10520:356:1;8028:66:0;8227:1:::1;8211:6:::0;;8190:40:::1;::::0;-1:-1:-1;;;;;8211:6:0;;::::1;::::0;8190:40:::1;::::0;8227:1;;8190:40:::1;8258:1;8241:19:::0;;-1:-1:-1;;;;;;8241:19:0::1;::::0;;8128:140::o;33086:128::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33174:32:::1;33193:12;:4:::0;33200:5:::1;33193:12;:::i;:::-;33174:18;:32::i;:::-;33086:128:::0;:::o;31890:107::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31964:16:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;31964:25:0;;::::1;::::0;;;::::1;::::0;;31890:107::o;32856:105::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32933:11:::1;:20:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;32933:20:0;;::::1;::::0;;;::::1;::::0;;32856:105::o;29884:102::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29958:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:20;;-1:-1:-1;;29958:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29884:102::o;32969:109::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33048:13:::1;:22:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;33048:22:0;;::::1;::::0;;;::::1;::::0;;32969:109::o;32141:580::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32324:14:::1;32383::::0;32368;32339:27:::1;32355:11:::0;32339:13;:27:::1;:::i;:::-;:43;;;;:::i;:::-;:58;;;;:::i;:::-;32324:73;;32416:8;:13;;32426:3;32416:13;32408:64;;;::::0;-1:-1:-1;;;32408:64:0;;9971:2:1;32408:64:0::1;::::0;::::1;9953:21:1::0;10010:2;9990:18;;;9983:30;10049:34;10029:18;;;10022:62;-1:-1:-1;;;10100:18:1;;;10093:36;10146:19;;32408:64:0::1;9769:402:1::0;32408:64:0::1;-1:-1:-1::0;32483:12:0::1;:28:::0;;::::1;32689:24:::0;;::::1;::::0;::::1;-1:-1:-1::0;;32662:16:0;;::::1;32483:28;32662:16;-1:-1:-1::0;;32596:28:0;;::::1;-1:-1:-1::0;;;32596:28:0::1;-1:-1:-1::0;;32557:28:0;;::::1;::::0;::::1;32596::::0;;;;-1:-1:-1;;32522:24:0;;::::1;-1:-1:-1::0;;;32522:24:0::1;-1:-1:-1::0;;32483:28:0;;::::1;-1:-1:-1::0;;;32483:28:0::1;32522:24:::0;;;;-1:-1:-1;;32522:24:0;;;;;;;;;;::::1;32596:28:::0;;;;;;;;::::1;32662:16:::0;;;;32637:14;;;::::1;32662:16:::0;;;;::::1;32689:24:::0;;;::::1;;::::0;;32141:580::o;34737:153::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34807:51:::1;::::0;34794:9:::1;::::0;34807:10:::1;::::0;34831:21:::1;::::0;34794:9;34807:51;34794:9;34807:51;34831:21;34807:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34793:65;;;34877:4;34869:13;;;::::0;::::1;37451:342:::0;37594:10;37538:4;37582:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;37582:32:0;;;;;;;;;;37633:35;;;;37625:60;;;;-1:-1:-1;;;37625:60:0;;13854:2:1;37625:60:0;;;13836:21:1;13893:2;13873:18;;;13866:30;-1:-1:-1;;;13912:18:1;;;13905:42;13964:18;;37625:60:0;13652:336:1;37625:60:0;37698:65;37707:10;37719:7;37728:34;37747:15;37728:16;:34;:::i;37698:65::-;-1:-1:-1;37781:4:0;;37451:342;-1:-1:-1;;;37451:342:0:o;34208:129::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34297:11:::1;:32:::0;;-1:-1:-1;;34297:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34208:129::o;36026:167::-;36106:4;36123:40;36133:10;36145:9;36156:6;36123:9;:40::i;32009:118::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32091:12:::1;:28:::0;32009:118::o;34345:::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34429:17:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34429:26:0;;::::1;::::0;;;::::1;::::0;;34345:118::o;35085:179::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;35147:3:::1;:10:::0;;-1:-1:-1;;;;;;35147:10:0::1;-1:-1:-1::0;;;;;35147:10:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;35168:11:0;;;:6:::1;:11;::::0;;;;;:18;;-1:-1:-1;;35168:18:0::1;-1:-1:-1::0;35168:18:0::1;::::0;;35211:3;;35197:18:::1;::::0;:9:::1;::::0;35211:3:::1;35197:13;:18::i;29994:231::-:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30078:15:0;::::1;30061:14;30078:15:::0;;;:9:::1;:15;::::0;;;;;;;30104:17;;;;30150:4:::1;30132:24:::0;;;;;:32;;30078:15;;;;30132:32:::1;::::0;30078:15;;30132:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;30180:37:0::1;::::0;6640:25:1;;;30203:4:0::1;::::0;-1:-1:-1;;;;;30180:37:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;30180:37:0;6628:2:1;6613:18;30180:37:0::1;6486:185:1::0;34471:125:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34558:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;34558:30:0::1;34584:4;34558:30;::::0;;34471:125::o;28861:104::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;28934:12:::1;:23:::0;;-1:-1:-1;;28934:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28861:104::o;31765:113::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31847:16:::1;:23:::0;;-1:-1:-1;;31847:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31765:113::o;33624:100::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33694:14:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;33694:22:0;;::::1;::::0;;;::::1;::::0;;33624:100::o;30472:126::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30556:34:::1;:21;30582:7:::0;30556:25:::1;:34::i;30604:127::-:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30686:37:::1;:21;30715:7:::0;30686:28:::1;:37::i;32733:111::-:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32813:14:::1;:23:::0;;-1:-1:-1;;32813:23:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;32733:111::o;30739:268::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30817:16:::1;::::0;;30802:14:::1;30844:18:::0;;;;30925:32:::1;::::0;30817:16;;30890:10:::1;::::0;;;30817:16;;30925:32:::1;4753:205:1::0;33228:282:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33363:13:::1;16993:1;33363:2;:13;:::i;:::-;33347:29;::::0;:15;:29:::1;:::i;:::-;33331:45:::0;-1:-1:-1;33413:13:0::1;16993:1;33413:2;:13;:::i;:::-;33400:26;::::0;:12;:26:::1;:::i;:::-;33437:12;:30:::0;;;;-1:-1:-1;33478:9:0::1;:24:::0;33228:282::o;29072:97::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29140:15:::1;:21:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;29140:21:0::1;-1:-1:-1::0;;29140:21:0;;::::1;::::0;;;::::1;::::0;;29072:97::o;27870:157::-;27919:15;;27980:13;16993:1;27980:2;:13;:::i;:::-;27967:12;;:26;;;;:::i;:::-;28005:13;16993:1;28005:2;:13;:::i;:::-;27995:9;;:23;;;;:::i;:::-;27960:59;;;;27870:157;;:::o;29310:115::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29393:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;29393:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29310:115::o;30349:111::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30427:25:::1;:9;30444:7:::0;30427:16:::1;:25::i;8282:236::-:0;8047:10;8036:7;7941;7968:6;-1:-1:-1;;;;;7968:6:0;;7903:79;8036:7;-1:-1:-1;;;;;8036:21:0;;8028:66;;;;-1:-1:-1;;;8028:66:0;;10722:2:1;8028:66:0;;;10704:21:1;;;10741:18;;;10734:30;10800:34;10780:18;;;10773:62;10852:18;;8028:66:0;10520:356:1;8028:66:0;-1:-1:-1;;;;;8363:22:0;::::1;8355:73;;;::::0;-1:-1:-1;;;8355:73:0;;8180:2:1;8355:73:0::1;::::0;::::1;8162:21:1::0;8219:2;8199:18;;;8192:30;8258:34;8238:18;;;8231:62;-1:-1:-1;;;8309:18:1;;;8302:36;8355:19;;:73:0::1;7978:402:1::0;8355:73:0::1;8465:6;::::0;;8444:38:::1;::::0;-1:-1:-1;;;;;8444:38:0;;::::1;::::0;8465:6;::::1;::::0;8444:38:::1;::::0;::::1;8493:6;:17:::0;;-1:-1:-1;;;;;;8493:17:0::1;-1:-1:-1::0;;;;;8493:17:0;;;::::1;::::0;;;::::1;::::0;;8282:236::o;14626:152::-;14696:4;14720:50;14725:3;-1:-1:-1;;;;;14745:23:0;;14720:4;:50::i;18460:111::-;18513:4;7968:6;;-1:-1:-1;;;;;18536:13:0;;;7968:6;;18536:13;;:27;;-1:-1:-1;;;;;;;18551:12:0;;;;;:6;:12;;;;;;;;;18460:111::o;36523:299::-;-1:-1:-1;;;;;36616:19:0;;36608:49;;;;-1:-1:-1;;;36608:49:0;;8587:2:1;36608:49:0;;;8569:21:1;8626:2;8606:18;;;8599:30;-1:-1:-1;;;8645:18:1;;;8638:47;8702:18;;36608:49:0;8385:341:1;36608:49:0;-1:-1:-1;;;;;36676:21:0;;36668:49;;;;-1:-1:-1;;;36668:49:0;;10378:2:1;36668:49:0;;;10360:21:1;10417:2;10397:18;;;10390:30;-1:-1:-1;;;10436:18:1;;;10429:45;10491:18;;36668:49:0;10176:339:1;36668:49:0;-1:-1:-1;;;;;36730:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36782:32;;6640:25:1;;;36782:32:0;;6613:18:1;36782:32:0;;;;;;;36523:299;;;:::o;19746:1893::-;-1:-1:-1;;;;;19842:20:0;;19834:51;;;;-1:-1:-1;;;19834:51:0;;7480:2:1;19834:51:0;;;7462:21:1;7519:2;7499:18;;;7492:30;-1:-1:-1;;;7538:18:1;;;7531:48;7596:18;;19834:51:0;7278:342:1;19834:51:0;-1:-1:-1;;;;;19904:23:0;;19896:52;;;;-1:-1:-1;;;19896:52:0;;8933:2:1;19896:52:0;;;8915:21:1;8972:2;8952:18;;;8945:30;-1:-1:-1;;;8991:18:1;;;8984:46;9047:18;;19896:52:0;8731:340:1;19896:52:0;19962:11;;;;19959:113;;;-1:-1:-1;;;;;19999:18:0;;;;;;:10;:18;;;;;;;;19998:19;:45;;;;-1:-1:-1;;;;;;20022:21:0;;;;;;:10;:21;;;;;;;;20021:22;19998:45;19990:70;;;;-1:-1:-1;;;19990:70:0;;12135:2:1;19990:70:0;;;12117:21:1;12174:2;12154:18;;;12147:30;-1:-1:-1;;;12193:18:1;;;12186:42;12245:18;;19990:70:0;11933:336:1;19990:70:0;20107:12;;-1:-1:-1;;;;;20099:20:0;;;-1:-1:-1;;;20107:12:0;;;;20099:20;20084:12;20151:26;:9;20099:6;20151:18;:26::i;:::-;:59;;;-1:-1:-1;20181:29:0;:9;20200;20181:18;:29::i;:::-;20151:77;;;-1:-1:-1;;;;;;20214:14:0;;;;;;:6;:14;;;;;;;;20151:77;:98;;;-1:-1:-1;;;;;;20232:17:0;;;;;;:6;:17;;;;;;;;20151:98;20132:118;-1:-1:-1;20263:23:0;-1:-1:-1;;;;;20288:21:0;;20304:4;20288:21;;:49;;-1:-1:-1;;;;;;20313:24:0;;20332:4;20313:24;20288:49;20390:19;;20263:75;;-1:-1:-1;20351:24:0;;-1:-1:-1;;;;;20380:29:0;;;20390:19;;20380:29;:59;;;;-1:-1:-1;;;;;;20413:26:0;;17477:42;20413:26;20380:59;20379:135;;;-1:-1:-1;20467:19:0;;-1:-1:-1;;;;;20454:32:0;;;20467:19;;20454:32;:59;;;;-1:-1:-1;;;;;;20490:23:0;;17477:42;20490:23;20454:59;20351:164;;20533:18;:41;;;;20555:19;20533:41;:55;;;;20578:10;20533:55;:66;;;;20592:7;20533:66;20530:1102;;;20615:43;20632:6;20640:9;20651:6;20615:16;:43::i;:::-;20530:1102;;;20704:14;;;;;;;20699:404;;7941:7;7968:6;-1:-1:-1;;;;;20743:17:0;;;7968:6;;20743:17;;;;:41;;-1:-1:-1;7941:7:0;7968:6;-1:-1:-1;;;;;20764:20:0;;;7968:6;;20764:20;;20743:41;20739:349;;;20813:10;;-1:-1:-1;;;20813:10:0;;;;20809:260;;;20873:9;-1:-1:-1;;;;;20857:28:0;20866:6;-1:-1:-1;;;;;20857:28:0;-1:-1:-1;;;;;;;;;;;20883:1:0;20857:28;;;;6640:25:1;;6628:2;6613:18;;6486:185;20857:28:0;;;;;;;;20912:7;;;;19746:1893;;;:::o;20809:260::-;21004:14;;;;;;;20996:49;;;;-1:-1:-1;;;20996:49:0;;11083:2:1;20996:49:0;;;11065:21:1;11122:2;11102:18;;;11095:30;11161:25;11141:18;;;11134:53;11204:18;;20996:49:0;10881:347:1;20996:49:0;21154:19;;21135:10;;-1:-1:-1;;;;;21146:27:0;;;21154:19;;21146:27;;:53;;-1:-1:-1;;;;;;21176:23:0;;17477:42;21176:23;21146:53;21237:19;;21135:64;;-1:-1:-1;21214:11:0;;-1:-1:-1;;;;;21226:30:0;;;21237:19;;21226:30;;:59;;-1:-1:-1;;;;;;21259:26:0;;17477:42;21259:26;21226:59;21214:71;;21300:52;21315:6;21322:9;21332:6;21339:5;21345:6;21300:14;:52::i;:::-;21372:8;;-1:-1:-1;;;21372:8:0;;;;21369:250;;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;21369:250;20684:948;;20530:1102;19823:1816;;;;19746:1893;;;:::o;25360:1329::-;25240:27;:34;;-1:-1:-1;;25240:34:0;25270:4;25240:34;;;;;;25478:4:::1;25240:27:::0;25460:24;;;::::1;::::0;;;;;;;;25525:13:::1;::::0;25460:24;;25240:27;25511::::1;::::0;-1:-1:-1;;;25525:13:0;::::1;25240:34:::0;25525:13;;::::1;::::0;25511;;::::1;;:27;:::i;:::-;25495:43;;;;25549:19;25569:9;;25549:29;;25606:8;25592:11;:22;25589:127;;;25634:12;::::0;::::1;;25631:74;;;-1:-1:-1::0;25681:8:0;25631:74:::1;25748:11;25732:15;:27;:40;;;-1:-1:-1::0;25761:11:0::1;::::0;::::1;::::0;25732:40:::1;25729:77;;;25788:7;;;;;25729:77;25855:13;::::0;25816:25:::1;::::0;25842:36:::1;::::0;::::1;::::0;25843:25:::1;::::0;25855:13;;::::1;;;25843:11:::0;:25:::1;:::i;:::-;25842:36;;;;:::i;:::-;25929:13;::::0;25816:62;;-1:-1:-1;25889:25:0::1;::::0;25916:36:::1;::::0;::::1;::::0;25917:25:::1;::::0;-1:-1:-1;;;25929:13:0;::::1;;;25917:11:::0;:25:::1;:::i;:::-;25916:36;;;;:::i;:::-;26002:12;::::0;25889:63;;-1:-1:-1;25963:24:0::1;::::0;25989:35:::1;::::0;::::1;::::0;25990:24:::1;::::0;-1:-1:-1;;;26002:12:0;::::1;;;25990:11:::0;:24:::1;:::i;:::-;25989:35;;;;:::i;:::-;26072:10;::::0;25963:61;;-1:-1:-1;26035:22:0::1;::::0;26059:33:::1;::::0;::::1;::::0;26060:22:::1;::::0;-1:-1:-1;;;26072:10:0;::::1;;;26060:11:::0;:22:::1;:::i;:::-;26059:33;;;;:::i;:::-;26035:57:::0;-1:-1:-1;26105:16:0::1;26122:19;26140:1;26122:17:::0;:19:::1;:::i;:::-;26105:36:::0;-1:-1:-1;26152:19:0::1;26172:26;26105:36:::0;26172:17;:26:::1;:::i;:::-;26152:46:::0;-1:-1:-1;26214:17:0::1;26277:16:::0;26262:14;26232:29:::1;26244:17:::0;26152:46;26232:29:::1;:::i;:::-;:44;;;;:::i;:::-;:61;;;;:::i;:::-;26214:79:::0;-1:-1:-1;26335:21:0::1;26367:27;26214:79:::0;26367:16:::1;:27::i;:::-;26405:14;26421:41;26445:17:::0;26421:21:::1;:41;:::i;:::-;26405:58:::0;-1:-1:-1;26474:14:0::1;26512:9:::0;26492:18:::1;26499:11:::0;26405:58;26492:18:::1;:::i;:::-;26491:30;;;;:::i;:::-;26474:47;;26532:31;26546:8;26556:6;26532:13;:31::i;:::-;26574:20;26596:41;26620:17:::0;26596:21:::1;:41;:::i;:::-;26574:64;;26649:32;26668:12;26649:18;:32::i;:::-;25425:1264;;;;;;;;;;;;;;25285:1;-1:-1:-1::0;25297:27:0;:35;;-1:-1:-1;;25297:35:0;;;25360:1329::o;14792:158::-;14865:4;14889:53;14897:3;-1:-1:-1;;;;;14917:23:0;;14889:7;:53::i;12214:305::-;12277:4;13303:19;;;:12;;;:19;;;;;;12294:218;;-1:-1:-1;12337:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;12411:18;;12389:19;;;:12;;;:19;;;;;;:40;;;;12444:11;;12294:218;-1:-1:-1;12495:5:0;12488:12;;14964:167;-1:-1:-1;;;;;15098:23:0;;15044:4;13303:19;;;:12;;;:19;;;;;;:24;;15068:55;13206:129;23454:351;-1:-1:-1;;;;;23573:17:0;;23549:21;23573:17;;;:9;:17;;;;;;23609:23;;;;23601:60;;;;-1:-1:-1;;;23601:60:0;;7827:2:1;23601:60:0;;;7809:21:1;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:1;;;7878:54;7949:18;;23601:60:0;7625:348:1;23601:60:0;23675:27;23688:6;23695;23675:12;:27::i;:::-;23716:28;23726:9;23737:6;23716:9;:28::i;:::-;23778:9;-1:-1:-1;;;;;23762:33:0;23771:6;-1:-1:-1;;;;;23762:33:0;-1:-1:-1;;;;;;;;;;;23788:6:0;23762:33;;;;6640:25:1;;6628:2;6613:18;;6486:185;23762:33:0;;;;;;;;23538:267;23454:351;;;:::o;21657:1785::-;-1:-1:-1;;;;;21800:20:0;;;21773:24;21800:20;;;:9;:20;;;;;;;21855:17;;;;;;;;21891:23;;;;21883:60;;;;-1:-1:-1;;;21883:60:0;;7827:2:1;21883:60:0;;;7809:21:1;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:1;;;7878:54;7949:18;;21883:60:0;7625:348:1;21883:60:0;21980:1;21970:9;;:11;;;;:::i;:::-;21958:9;:23;21994:9;22014:893;;;;22043:38;:21;22074:6;22043:30;:38::i;:::-;22039:247;;-1:-1:-1;;;;;22120:17:0;;;;;;:9;:17;;;;;;22139:15;-1:-1:-1;22120:34:0;;:52;;-1:-1:-1;22156:16:0;;;;;;;22120:52;22112:82;;;;-1:-1:-1;;;22112:82:0;;14195:2:1;22112:82:0;;;14177:21:1;14234:2;14214:18;;;14207:30;-1:-1:-1;;;14253:18:1;;;14246:48;14311:18;;22112:82:0;13993:342:1;22112:82:0;22258:12;;22242:28;;:15;:28;:::i;:::-;-1:-1:-1;;;;;22224:17:0;;;;;;:9;:17;;;;;:46;22039:247;22330:9;;22322:6;:17;;22314:44;;;;-1:-1:-1;;;22314:44:0;;9627:2:1;22314:44:0;;;9609:21:1;9666:2;9646:18;;;9639:30;-1:-1:-1;;;9685:18:1;;;9678:45;9740:18;;22314:44:0;9425:339:1;22314:44:0;-1:-1:-1;22377:8:0;;;;;;;22014:893;;;22408:5;22405:502;;;22469:12;;22444:23;22461:6;22444:16;:23;:::i;:::-;:37;;22436:65;;;;-1:-1:-1;;;22436:65:0;;;;;;;:::i;:::-;22532:8;;22524:6;:16;;22516:45;;;;-1:-1:-1;;;22516:45:0;;;;;;;:::i;:::-;-1:-1:-1;22580:7:0;;;;22405:502;;;22662:12;;22637:23;22654:6;22637:16;:23;:::i;:::-;:37;;22629:65;;;;-1:-1:-1;;;22629:65:0;;;;;;;:::i;:::-;22727:38;:21;22758:6;22727:30;:38::i;:::-;22723:139;;-1:-1:-1;;;;;22792:17:0;;;;;;:9;:17;;;;;;22811:15;-1:-1:-1;22792:34:0;;:52;;-1:-1:-1;22828:16:0;;;;;;;22792:52;22784:78;;;;-1:-1:-1;;;22784:78:0;;12821:2:1;22784:78:0;;;12803:21:1;12860:2;12840:18;;;12833:30;-1:-1:-1;;;12879:18:1;;;12872:44;12933:18;;22784:78:0;12619:338:1;22784:78:0;-1:-1:-1;22881:12:0;;;;;;;22405:502;22938:19;;-1:-1:-1;;;;;22930:27:0;;;22938:19;;22930:27;;;;22929:50;;-1:-1:-1;22962:16:0;;;;22961:17;22929:50;:82;;;;-1:-1:-1;22983:27:0;;;;22982:28;22929:82;22926:126;;;23026:26;23045:6;23026:18;:26::i;:::-;23154:12;;23066:21;;23088:79;;23102:6;;23110:3;;23154:12;-1:-1:-1;;;23154:12:0;;;;;-1:-1:-1;;;23143:10:0;;;;;23115:27;;23129:13;;;;;;-1:-1:-1;;;23115:13:0;;;;:27;:::i;:::-;:38;;;;:::i;:::-;:51;;;;:::i;:::-;23088:13;:79::i;:::-;23066:101;-1:-1:-1;23181:19:0;23201:22;23066:101;23201:6;:22;:::i;:::-;23181:42;;23239:27;23252:6;23259;23239:12;:27::i;:::-;23300:4;23282:24;;;;:9;:24;;;;;:41;;23310:13;;23282:24;:41;;23310:13;;23282:41;:::i;:::-;;;;-1:-1:-1;23339:33:0;;-1:-1:-1;23349:9:0;23360:11;23339:9;:33::i;:::-;23406:9;-1:-1:-1;;;;;23390:38:0;23399:6;-1:-1:-1;;;;;23390:38:0;-1:-1:-1;;;;;;;;;;;23416:11:0;23390:38;;;;6640:25:1;;6628:2;6613:18;;6486:185;23390:38:0;;;;;;;;21762:1680;;;;;21657:1785;;;;;:::o;26701:455::-;26794:14;;26762:56;;26779:4;;-1:-1:-1;;;;;26794:14:0;26811:6;26762:8;:56::i;:::-;26853:16;;;26867:1;26853:16;;;;;;;;26829:21;;26853:16;;;;;;;;;;-1:-1:-1;26853:16:0;26829:40;;26898:4;26880;26885:1;26880:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26880:23:0;;;:7;;;;;;;;;;:23;;;;26924:14;;:21;;;-1:-1:-1;;;26924:21:0;;;;:14;;;;;:19;;:21;;;;;26880:7;;26924:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26914:4;26919:1;26914:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26914:31:0;;;:7;;;;;;;;;:31;26958:14;;:190;;-1:-1:-1;;;26958:190:0;;:14;;;:65;;:190;;27038:6;;26958:14;;27075:4;;27102;;27122:15;;26958:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26751:405;26701:455;:::o;27168:397::-;27262:9;27250:10;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;27314:14:0;;27282:61;;27299:4;;-1:-1:-1;;;;;27314:14:0;27331:11;27282:8;:61::i;:::-;27354:14;;:203;;-1:-1:-1;;;27354:203:0;;27425:4;27354:203;;;5791:34:1;;;5841:18;;;5834:34;;;27354:14:0;5884:18:1;;;5877:34;;;5927:18;;;5920:34;5970:19;;;5963:44;27531:15:0;6023:19:1;;;6016:35;-1:-1:-1;;;;;27354:14:0;;;;:30;;27392:9;;5725:19:1;;27354:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27168:397;;:::o;24715:384::-;24819:14;;24781:22;;24835:3;;24807:26;;24819:14;;24807:9;:26;:::i;:::-;24806:32;;;;:::i;:::-;24886:13;;24781:57;;-1:-1:-1;24849:21:0;;24901:3;;24874:25;;24886:13;;;;;24874:9;:25;:::i;:::-;24873:31;;;;:::i;:::-;24950:11;;24849:55;;-1:-1:-1;24915:19:0;;24963:3;;24938:23;;24950:11;;;;;24938:9;:23;:::i;:::-;24937:29;;;;:::i;:::-;24915:51;;24997:14;24979:16;;:32;;;;;;;:::i;:::-;;;;;;;;25039:13;25022:15;;:30;;;;;;;:::i;:::-;;;;;;;;25078:11;25063:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;24715:384:0:o;12533:659::-;12599:4;12640:19;;;:12;;;:19;;;;;;12676:15;;12672:513;;12725:21;12749:14;12762:1;12749:10;:14;:::i;:::-;12798:18;;12725:38;;-1:-1:-1;12778:17:0;;12798:22;;12819:1;;12798:22;:::i;:::-;12778:42;;12846:17;12866:3;:11;;12878:9;12866:22;;;;;;;;:::i;:::-;;;;;;;;;12846:42;;12941:9;12912:3;:11;;12924:13;12912:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;12972:23;;;:12;;;:23;;;;;;:36;;;13033:17;;12972:3;;13033:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;13081:3;:12;;:19;13094:5;13081:19;;;;;;;;;;;13074:26;;;13124:4;13117:11;;;;;;;;12672:513;13168:5;13161:12;;;;;24164:158;-1:-1:-1;;;;;24256:15:0;;24238:17;24256:15;;;:9;:15;;;;;;:22;;24272:6;;24256:22;:::i;:::-;-1:-1:-1;;;;;24289:15:0;;;;;;;:9;:15;;;;;:25;;;;-1:-1:-1;;24164:158:0:o;23991:157::-;-1:-1:-1;;;;;24080:15:0;;24062:17;24080:15;;;:9;:15;;;;;;:22;;24096:6;;24080:22;:::i;23817:156::-;23907:7;23960:5;23946:10;23935:21;;23942:3;23935:10;;:6;:10;;;;:::i;:::-;:21;;;;:::i;:::-;23934:31;;;;:::i;:::-;23927:38;23817:156;-1:-1:-1;;;;23817:156:0:o;14::1:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:247::-;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;342:9;329:23;361:31;386:5;361:31;:::i;427:251::-;497:6;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;598:9;592:16;617:31;642:5;617:31;:::i;683:388::-;751:6;759;812:2;800:9;791:7;787:23;783:32;780:52;;;828:1;825;818:12;780:52;867:9;854:23;886:31;911:5;886:31;:::i;:::-;936:5;-1:-1:-1;993:2:1;978:18;;965:32;1006:33;965:32;1006:33;:::i;:::-;1058:7;1048:17;;;683:388;;;;;:::o;1076:456::-;1153:6;1161;1169;1222:2;1210:9;1201:7;1197:23;1193:32;1190:52;;;1238:1;1235;1228:12;1190:52;1277:9;1264:23;1296:31;1321:5;1296:31;:::i;:::-;1346:5;-1:-1:-1;1403:2:1;1388:18;;1375:32;1416:33;1375:32;1416:33;:::i;:::-;1076:456;;1468:7;;-1:-1:-1;;;1522:2:1;1507:18;;;;1494:32;;1076:456::o;1537:382::-;1602:6;1610;1663:2;1651:9;1642:7;1638:23;1634:32;1631:52;;;1679:1;1676;1669:12;1631:52;1718:9;1705:23;1737:31;1762:5;1737:31;:::i;:::-;1787:5;-1:-1:-1;1844:2:1;1829:18;;1816:32;1857:30;1816:32;1857:30;:::i;1924:315::-;1992:6;2000;2053:2;2041:9;2032:7;2028:23;2024:32;2021:52;;;2069:1;2066;2059:12;2021:52;2108:9;2095:23;2127:31;2152:5;2127:31;:::i;:::-;2177:5;2229:2;2214:18;;;;2201:32;;-1:-1:-1;;;1924:315:1:o;2244:241::-;2300:6;2353:2;2341:9;2332:7;2328:23;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2408:9;2395:23;2427:28;2449:5;2427:28;:::i;2490:245::-;2557:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2658:9;2652:16;2677:28;2699:5;2677:28;:::i;2740:272::-;2798:6;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2906:9;2893:23;2956:6;2949:5;2945:18;2938:5;2935:29;2925:57;;2978:1;2975;2968:12;3017:180;3076:6;3129:2;3117:9;3108:7;3104:23;3100:32;3097:52;;;3145:1;3142;3135:12;3097:52;-1:-1:-1;3168:23:1;;3017:180;-1:-1:-1;3017:180:1:o;3202:184::-;3272:6;3325:2;3313:9;3304:7;3300:23;3296:32;3293:52;;;3341:1;3338;3331:12;3293:52;-1:-1:-1;3364:16:1;;3202:184;-1:-1:-1;3202:184:1:o;3391:248::-;3459:6;3467;3520:2;3508:9;3499:7;3495:23;3491:32;3488:52;;;3536:1;3533;3526:12;3488:52;-1:-1:-1;;3559:23:1;;;3629:2;3614:18;;;3601:32;;-1:-1:-1;3391:248:1:o;3644:306::-;3732:6;3740;3748;3801:2;3789:9;3780:7;3776:23;3772:32;3769:52;;;3817:1;3814;3807:12;3769:52;3846:9;3840:16;3830:26;;3896:2;3885:9;3881:18;3875:25;3865:35;;3940:2;3929:9;3925:18;3919:25;3909:35;;3644:306;;;;;:::o;3955:182::-;4012:6;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:27;4121:9;4104:27;:::i;4142:606::-;4241:6;4249;4257;4265;4273;4281;4289;4342:3;4330:9;4321:7;4317:23;4313:33;4310:53;;;4359:1;4356;4349:12;4310:53;4382:27;4399:9;4382:27;:::i;:::-;4372:37;;4428:36;4460:2;4449:9;4445:18;4428:36;:::i;:::-;4418:46;;4483:36;4515:2;4504:9;4500:18;4483:36;:::i;:::-;4473:46;;4538:36;4570:2;4559:9;4555:18;4538:36;:::i;:::-;4528:46;;4593:37;4625:3;4614:9;4610:19;4593:37;:::i;:::-;4583:47;;4649:37;4681:3;4670:9;4666:19;4649:37;:::i;:::-;4639:47;;4705:37;4737:3;4726:9;4722:19;4705:37;:::i;:::-;4695:47;;4142:606;;;;;;;;;;:::o;6676:597::-;6788:4;6817:2;6846;6835:9;6828:21;6878:6;6872:13;6921:6;6916:2;6905:9;6901:18;6894:34;6946:1;6956:140;6970:6;6967:1;6964:13;6956:140;;;7065:14;;;7061:23;;7055:30;7031:17;;;7050:2;7027:26;7020:66;6985:10;;6956:140;;;7114:6;7111:1;7108:13;7105:91;;;7184:1;7179:2;7170:6;7159:9;7155:22;7151:31;7144:42;7105:91;-1:-1:-1;7257:2:1;7236:15;-1:-1:-1;;7232:29:1;7217:45;;;;7264:2;7213:54;;6676:597;-1:-1:-1;;;6676:597:1:o;11233:342::-;11435:2;11417:21;;;11474:2;11454:18;;;11447:30;-1:-1:-1;;;11508:2:1;11493:18;;11486:48;11566:2;11551:18;;11233:342::o;12274:340::-;12476:2;12458:21;;;12515:2;12495:18;;;12488:30;-1:-1:-1;;;12549:2:1;12534:18;;12527:46;12605:2;12590:18;;12274:340::o;14715:980::-;14977:4;15025:3;15014:9;15010:19;15056:6;15045:9;15038:25;15082:2;15120:6;15115:2;15104:9;15100:18;15093:34;15163:3;15158:2;15147:9;15143:18;15136:31;15187:6;15222;15216:13;15253:6;15245;15238:22;15291:3;15280:9;15276:19;15269:26;;15330:2;15322:6;15318:15;15304:29;;15351:1;15361:195;15375:6;15372:1;15369:13;15361:195;;;15440:13;;-1:-1:-1;;;;;15436:39:1;15424:52;;15531:15;;;;15496:12;;;;15472:1;15390:9;15361:195;;;-1:-1:-1;;;;;;;15612:32:1;;;;15607:2;15592:18;;15585:60;-1:-1:-1;;;15676:3:1;15661:19;15654:35;15573:3;14715:980;-1:-1:-1;;;14715:980:1:o;16754:128::-;16794:3;16825:1;16821:6;16818:1;16815:13;16812:39;;;16831:18;;:::i;:::-;-1:-1:-1;16867:9:1;;16754:128::o;16887:204::-;16925:3;16961:4;16958:1;16954:12;16993:4;16990:1;16986:12;17028:3;17022:4;17018:14;17013:3;17010:23;17007:49;;;17036:18;;:::i;:::-;17072:13;;16887:204;-1:-1:-1;;;16887:204:1:o;17096:217::-;17136:1;17162;17152:132;;17206:10;17201:3;17197:20;17194:1;17187:31;17241:4;17238:1;17231:15;17269:4;17266:1;17259:15;17152:132;-1:-1:-1;17298:9:1;;17096:217::o;17318:422::-;17407:1;17450:5;17407:1;17464:270;17485:7;17475:8;17472:21;17464:270;;;17544:4;17540:1;17536:6;17532:17;17526:4;17523:27;17520:53;;;17553:18;;:::i;:::-;17603:7;17593:8;17589:22;17586:55;;;17623:16;;;;17586:55;17702:22;;;;17662:15;;;;17464:270;;;17468:3;17318:422;;;;;:::o;17745:140::-;17803:5;17832:47;17873:4;17863:8;17859:19;17853:4;17939:5;17969:8;17959:80;;-1:-1:-1;18010:1:1;18024:5;;17959:80;18058:4;18048:76;;-1:-1:-1;18095:1:1;18109:5;;18048:76;18140:4;18158:1;18153:59;;;;18226:1;18221:130;;;;18133:218;;18153:59;18183:1;18174:10;;18197:5;;;18221:130;18258:3;18248:8;18245:17;18242:43;;;18265:18;;:::i;:::-;-1:-1:-1;;18321:1:1;18307:16;;18336:5;;18133:218;;18435:2;18425:8;18422:16;18416:3;18410:4;18407:13;18403:36;18397:2;18387:8;18384:16;18379:2;18373:4;18370:12;18366:35;18363:77;18360:159;;;-1:-1:-1;18472:19:1;;;18504:5;;18360:159;18551:34;18576:8;18570:4;18551:34;:::i;:::-;18621:6;18617:1;18613:6;18609:19;18600:7;18597:32;18594:58;;;18632:18;;:::i;:::-;18670:20;;17890:806;-1:-1:-1;;;17890:806:1:o;18701:168::-;18741:7;18807:1;18803;18799:6;18795:14;18792:1;18789:21;18784:1;18777:9;18770:17;18766:45;18763:71;;;18814:18;;:::i;:::-;-1:-1:-1;18854:9:1;;18701:168::o;18874:125::-;18914:4;18942:1;18939;18936:8;18933:34;;;18947:18;;:::i;:::-;-1:-1:-1;18984:9:1;;18874:125::o;19004:127::-;19065:10;19060:3;19056:20;19053:1;19046:31;19096:4;19093:1;19086:15;19120:4;19117:1;19110:15;19136:127;19197:10;19192:3;19188:20;19185:1;19178:31;19228:4;19225:1;19218:15;19252:4;19249:1;19242:15;19268:127;19329:10;19324:3;19320:20;19317:1;19310:31;19360:4;19357:1;19350:15;19384:4;19381:1;19374:15;19532:131;-1:-1:-1;;;;;19607:31:1;;19597:42;;19587:70;;19653:1;19650;19643:12;19668:118;19754:5;19747:13;19740:21;19733:5;19730:32;19720:60;;19776:1;19773;19766:12

Swarm Source

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