ETH Price: $3,312.65 (+0.15%)
Gas: 26 Gwei

Token

Cosmostation AI (CAI)
 

Overview

Max Total Supply

50,000,000 CAI

Holders

71

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 CAI

Value
$0.00
0x6dbbe4873fbb6dfbafbca2a9573107f1ff3937e5
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CosmostationAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-22
*/

/**
Website     : https://cosmostationai.com/
Telegram    : https://t.me/CosmostationAI
Twitter     : https://x.com/CosmostationAI
/*

*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;


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

library SafeMath {
    

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    
}



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

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


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

abstract contract Ownable is Context {
    address private _owner;


    // Set original owner
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = 0x4BcCeed8f03cDd09E35A5C9e8b18ef083d1A95a8;
        emit OwnershipTransferred(address(0), _owner);
    }

    // Return current owner
    function owner() public view virtual returns (address) {
        return _owner;
    }

    // Restrict function to contract owner only 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    // Renounce ownership of the contract 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IUniswapV2Factory {
    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 IUniswapV2Pair {
    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;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function 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 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 IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}


contract CosmostationAI is Context, IERC20, Ownable { 
    using SafeMath for uint256;
    using Address for address;


    // Tracking status of wallets
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee; 


    address payable public contract_creators = payable(0xF9d3d5Fe35B8d849aD9BC1B9aE5209202d676CFA);
    address payable public Wallet_Burn = payable(0x000000000000000000000000000000000000dEaD); 
    address payable public Wallet_zero = payable(0x0000000000000000000000000000000000000000); 


    string private _name = "Cosmostation AI"; 
    string private _symbol = "CAI";  
    uint8 private _decimals = 18;
    uint256 private _tTotal = 50000000 * 10**18;
    uint256 private _tFeeTotal;

    // Counter for liquify trigger
    uint8 private txCount = 0;
    uint8 private swapTrigger = 3; 


    uint256 private maxPossibleFee = 90; 


    // Setting the initial fees
    uint256 private _TotalFee = 80;
    uint256 public _buyFee = 40;
    uint256 public _sellFee = 40;


    // 'Previous fees' are used to keep track of fee settings when removing and restoring fees
    uint256 private _previousTotalFee = _TotalFee; 
    uint256 private _previousBuyFee = _buyFee; 
    uint256 private _previousSellFee = _sellFee; 


    // Max wallet holding (2% at launch)
    uint256 public _maxWalletToken = _tTotal.mul(2).div(100);
    uint256 private _previousMaxWalletToken = _maxWalletToken;


    // Maximum transaction amount (2% at launch)
    uint256 public _maxTxAmount = _tTotal.mul(2).div(100); 
    uint256 private _previousMaxTxAmount = _maxTxAmount;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
        
    );
    
    // Prevent processing while already processing! 
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

      
    constructor () {
        _tOwned[owner()] = _tTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        
        // Create pair address for PancakeSwap
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[contract_creators] = true;
        
        emit Transfer(address(0), owner(), _tTotal);
    }


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

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

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

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }




 
    // Set a wallet address so that it does not have to pay transaction fees
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    // Set a wallet address so that it has to pay transaction fees
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }




    function setFeesTax_CAI (uint256 Buy_Fee, uint256 Sell_Fee) external onlyOwner() {

        require((Buy_Fee + Sell_Fee) <= maxPossibleFee, "Fee is too high!");
        _sellFee = Sell_Fee;
        _buyFee = Buy_Fee;

    }



    // Update main wallet
    function ChangeWalletFee(address payable wallet) public onlyOwner() {
        contract_creators = wallet;
        _isExcludedFromFee[contract_creators] = true;
    }


    
    // Toggle on and off to auto process tokens to ETH wallet 
    function SetSwapEnabled(bool true_or_false) public onlyOwner {
        swapAndLiquifyEnabled = true_or_false;
        emit SwapAndLiquifyEnabledUpdated(true_or_false);
    }

    // This will set the number of transactions required before the 'swapAndLiquify' function triggers
    function SetNumberOfTransactions(uint8 number_of_transactions) public onlyOwner {
        swapTrigger = number_of_transactions;
    }
    


    // This function is required so that the contract can receive ETH from pancakeswap
    receive() external payable {}

    bool public noFeeToTransfer = true;

    function SetTransfersExceptFees(bool true_or_false) external onlyOwner {
        noFeeToTransfer = true_or_false;
    }

    

    // Set the Max transaction amount (percent of total supply)
    function SetMaxTransaction_CAI(uint256 maxTxPercent_x100) external onlyOwner() {
        _maxTxAmount = _tTotal*maxTxPercent_x100/10000;
    }    
    
    // Set the maximum wallet holding (percent of total supply)
     function SetMaxWallet_CAI(uint256 maxWallPercent_x100) external onlyOwner() {
        _maxWalletToken = _tTotal*maxWallPercent_x100/10000;
    }



    // Remove all fees
    function removeAllFee() private {
        if(_TotalFee == 0 && _buyFee == 0 && _sellFee == 0) return;


        _previousBuyFee = _buyFee; 
        _previousSellFee = _sellFee; 
        _previousTotalFee = _TotalFee;
        _buyFee = 0;
        _sellFee = 0;
        _TotalFee = 0;

    }
    
    // Restore all fees
    function restoreAllFee() private {
    
    _TotalFee = _previousTotalFee;
    _buyFee = _previousBuyFee; 
    _sellFee = _previousSellFee; 

    }


    // Approve a wallet to sell tokens
    function _approve(address owner, address spender, uint256 amount) private {

        require(owner != address(0) && spender != address(0), "ERR: zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        

        // Limit wallet total
        if (to != owner() &&
            to != contract_creators &&
            to != address(this) &&
            to != uniswapV2Pair &&
            to != Wallet_Burn &&
            from != owner()){
            uint256 heldTokens = balanceOf(to);
            require((heldTokens + amount) <= _maxWalletToken,"You are trying to buy too many tokens. You have reached the limit for one wallet.");}


        // Limit the maximum number of tokens that can be bought or sold in one transaction
        if (from != owner() && to != owner())
            require(amount <= _maxTxAmount, "You are trying to buy more than the max transaction limit.");




        // SwapAndLiquify is triggered after every X transactions - this number can be adjusted using swapTrigger

        if(
            txCount >= swapTrigger && 
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled 
            )
        {  
            
            txCount = 0;
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > _maxTxAmount) {contractTokenBalance = _maxTxAmount;}
            if(contractTokenBalance > 0){
            swapAndLiquify(contractTokenBalance);
        }
        }


      

        
        bool takeFee = true;
         
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || (noFeeToTransfer && from != uniswapV2Pair && to != uniswapV2Pair)){
            takeFee = false;
        } else if (from == uniswapV2Pair){_TotalFee = _buyFee;} else if (to == uniswapV2Pair){_TotalFee = _sellFee;}
        
        _tokenTransfer(from,to,amount,takeFee);
    }



    // Send ETH to external wallet
    function sendToWallet(address payable wallet, uint256 amount) private {
            wallet.transfer(amount);
        }


    // Processing tokens from contract
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        
        swapTokensForBNB(contractTokenBalance);
        uint256 contractBNB = address(this).balance;
        sendToWallet(contract_creators,contractBNB);
    }


    // Manual Token Process Trigger - Enter the percent of the tokens that you'd like to send to process
    function TokenProcessTrigger (uint256 percent_Of_Tokens_To_Process) public onlyOwner {
        // Do not trigger if already in swap
        require(!inSwapAndLiquify, "Currently processing, try later."); 
        if (percent_Of_Tokens_To_Process > 100){percent_Of_Tokens_To_Process == 100;}
        uint256 tokensOnContract = balanceOf(address(this));
        uint256 sendTokens = tokensOnContract*percent_Of_Tokens_To_Process/100;
        swapAndLiquify(sendTokens);
    }


    // Swapping tokens for ETH using Uniswap 
    function swapTokensForBNB(uint256 tokenAmount) private {

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


    // Remove random tokens from the contract and send to a wallet
    function RemoveTokens(address random_Token_Address, address send_to_wallet, uint256 number_of_tokens) public onlyOwner returns(bool _sent){
        require(random_Token_Address != address(this), "Can not remove native token");
        uint256 randomBalance = IERC20(random_Token_Address).balanceOf(address(this));
        if (number_of_tokens > randomBalance){number_of_tokens = randomBalance;}
        _sent = IERC20(random_Token_Address).transfer(send_to_wallet, number_of_tokens);
    }



    // Set new router and make the new pair address
    function SetNewRouterAndMakePair_CAI(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Pair = IUniswapV2Factory(_newPCSRouter.factory()).createPair(address(this), _newPCSRouter.WETH());
        uniswapV2Router = _newPCSRouter;
    }
   
    // Set new router
    function setNewRouterAddress_CAI(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Router = _newPCSRouter;
    }
    
    // Set new address - This will be the 'Cake LP' address for the token pairing
    function SetNewPairAddress_CAI(address newPair) public onlyOwner() {
        uniswapV2Pair = newPair;
    }

    // Check if token transfer needs to process fees
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        
        
        if(!takeFee){
            removeAllFee();
            } else {
                txCount++;
            }
            _transferTokens(sender, recipient, amount);
        
        if(!takeFee)
            restoreAllFee();
    }

    // Redistributing tokens and adding the fee to the contract address
    function _transferTokens(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tDev) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _tOwned[address(this)] = _tOwned[address(this)].add(tDev);   
        emit Transfer(sender, recipient, tTransferAmount);
    }


    // Calculating the fee in tokens
    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tDev = tAmount*_TotalFee/100;
        uint256 tTransferAmount = tAmount.sub(tDev);
        return (tTransferAmount, tDev);
    }


}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"ChangeWalletFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"random_Token_Address","type":"address"},{"internalType":"address","name":"send_to_wallet","type":"address"},{"internalType":"uint256","name":"number_of_tokens","type":"uint256"}],"name":"RemoveTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent_x100","type":"uint256"}],"name":"SetMaxTransaction_CAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_x100","type":"uint256"}],"name":"SetMaxWallet_CAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"SetNewPairAddress_CAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"SetNewRouterAndMakePair_CAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"number_of_transactions","type":"uint8"}],"name":"SetNumberOfTransactions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"SetSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"SetTransfersExceptFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_Of_Tokens_To_Process","type":"uint256"}],"name":"TokenProcessTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Wallet_Burn","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Wallet_zero","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contract_creators","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noFeeToTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buy_Fee","type":"uint256"},{"internalType":"uint256","name":"Sell_Fee","type":"uint256"}],"name":"setFeesTax_CAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouterAddress_CAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273f9d3d5fe35b8d849ad9bc1b9ae5209202d676cfa600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600f81526020017f436f736d6f73746174696f6e20414900000000000000000000000000000000008152506007908162000124919062000a68565b506040518060400160405280600381526020017f4341490000000000000000000000000000000000000000000000000000000000815250600890816200016b919062000a68565b506012600960006101000a81548160ff021916908360ff1602179055506a295be96e64066972000000600a556000600c60006101000a81548160ff021916908360ff1602179055506003600c60016101000a81548160ff021916908360ff160217905550605a600d556050600e556028600f556028601055600e54601155600f546012556010546013556200022c6064620002186002600a546200079560201b6200207f1790919060201c565b620007ad60201b620020951790919060201c565b6014556014546015556200026c6064620002586002600a546200079560201b6200207f1790919060201c565b620007ad60201b620020951790919060201c565b6016556016546017556001601960156101000a81548160ff0219169083151502179055506001601960166101000a81548160ff021916908315150217905550348015620002b857600080fd5b50734bcceed8f03cdd09e35a5c9e8b18ef083d1a95a86000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a54600160006200039f620007c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000468919062000bb9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f6919062000bb9565b6040518363ffffffff1660e01b81526004016200051592919062000bfc565b6020604051808303816000875af115801562000535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055b919062000bb9565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620005f2620007c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000725620007c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000786919062000c3a565b60405180910390a35062000d38565b60008183620007a5919062000c86565b905092915050565b60008183620007bd919062000d00565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200087057607f821691505b60208210810362000886576200088562000828565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008b1565b620008fc8683620008b1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000949620009436200093d8462000914565b6200091e565b62000914565b9050919050565b6000819050919050565b620009658362000928565b6200097d620009748262000950565b848454620008be565b825550505050565b600090565b6200099462000985565b620009a18184846200095a565b505050565b5b81811015620009c957620009bd6000826200098a565b600181019050620009a7565b5050565b601f82111562000a1857620009e2816200088c565b620009ed84620008a1565b81016020851015620009fd578190505b62000a1562000a0c85620008a1565b830182620009a6565b50505b505050565b600082821c905092915050565b600062000a3d6000198460080262000a1d565b1980831691505092915050565b600062000a58838362000a2a565b9150826002028217905092915050565b62000a7382620007ee565b67ffffffffffffffff81111562000a8f5762000a8e620007f9565b5b62000a9b825462000857565b62000aa8828285620009cd565b600060209050601f83116001811462000ae0576000841562000acb578287015190505b62000ad7858262000a4a565b86555062000b47565b601f19841662000af0866200088c565b60005b8281101562000b1a5784890151825560018201915060208501945060208101905062000af3565b8683101562000b3a578489015162000b36601f89168262000a2a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b818262000b54565b9050919050565b62000b938162000b74565b811462000b9f57600080fd5b50565b60008151905062000bb38162000b88565b92915050565b60006020828403121562000bd25762000bd162000b4f565b5b600062000be28482850162000ba2565b91505092915050565b62000bf68162000b74565b82525050565b600060408201905062000c13600083018562000beb565b62000c22602083018462000beb565b9392505050565b62000c348162000914565b82525050565b600060208201905062000c51600083018462000c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c938262000914565b915062000ca08362000914565b925082820262000cb08162000914565b9150828204841483151762000cca5762000cc962000c57565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d0d8262000914565b915062000d1a8362000914565b92508262000d2d5762000d2c62000cd1565b5b828204905092915050565b613daa8062000d486000396000f3fe60806040526004361061024a5760003560e01c8063768dc710116101395780638da5cb5b116100b6578063d954a9c01161007a578063d954a9c0146108a1578063dd62ed3e146108ca578063ea2f0b3714610907578063f1fa713d14610930578063f2fde38b14610959578063f47c79861461098257610251565b80638da5cb5b146107a857806395d89b41146107d3578063a457c2d7146107fe578063a9059cbb1461083b578063b990e23f1461087857610251565b80637d1db4a5116100fd5780637d1db4a5146106d7578063805c0e0f14610702578063818ab46d1461072d5780638a2e4aed146107565780638bcc108c1461077f57610251565b8063768dc710146105f457806378109e5414610631578063788d1d9b1461065c578063793d082a146106855780637ce1703c146106ae57610251565b806339509351116101c7578063590f897e1161018b578063590f897e146105215780636415bc7a1461054c57806370a082311461057757806370d0f7e0146105b4578063715018a6146105dd57610251565b8063395093511461043a57806340b9a54b14610477578063437823ec146104a257806349bd5a5e146104cb5780634a74bb02146104f657610251565b806318160ddd1161020e57806318160ddd1461033f578063220f66961461036a57806323b872dd146103955780632e9c3a76146103d2578063313ce5671461040f57610251565b806306fdde0314610256578063095ea7b31461028157806313fad07a146102be57806315a7cb10146102e95780631694505e1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109ab565b6040516102789190612ffa565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906130b5565b610a3d565b6040516102b59190613110565b60405180910390f35b3480156102ca57600080fd5b506102d3610a5b565b6040516102e09190613110565b60405180910390f35b3480156102f557600080fd5b506102fe610a6e565b60405161030b919061314c565b60405180910390f35b34801561032057600080fd5b50610329610a94565b60405161033691906131c6565b60405180910390f35b34801561034b57600080fd5b50610354610aba565b60405161036191906131f0565b60405180910390f35b34801561037657600080fd5b5061037f610ac4565b60405161038c9190613110565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b7919061320b565b610ad7565b6040516103c99190613110565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061320b565b610bb0565b6040516104069190613110565b60405180910390f35b34801561041b57600080fd5b50610424610dae565b604051610431919061327a565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c91906130b5565b610dc5565b60405161046e9190613110565b60405180910390f35b34801561048357600080fd5b5061048c610e78565b60405161049991906131f0565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613295565b610e7e565b005b3480156104d757600080fd5b506104e0610f55565b6040516104ed91906132d1565b60405180910390f35b34801561050257600080fd5b5061050b610f7b565b6040516105189190613110565b60405180910390f35b34801561052d57600080fd5b50610536610f8e565b60405161054391906131f0565b60405180910390f35b34801561055857600080fd5b50610561610f94565b60405161056e919061314c565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190613295565b610fba565b6040516105ab91906131f0565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190613318565b611003565b005b3480156105e957600080fd5b506105f261109c565b005b34801561060057600080fd5b5061061b60048036038101906106169190613295565b6111d6565b6040516106289190613110565b60405180910390f35b34801561063d57600080fd5b506106466111f6565b60405161065391906131f0565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190613295565b6111fc565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613345565b6112c2565b005b3480156106ba57600080fd5b506106d560048036038101906106d09190613295565b611362565b005b3480156106e357600080fd5b506106ec6115c2565b6040516106f991906131f0565b60405180910390f35b34801561070e57600080fd5b506107176115c8565b604051610724919061314c565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f919061339e565b6115ee565b005b34801561076257600080fd5b5061077d60048036038101906107789190613295565b611728565b005b34801561078b57600080fd5b506107a660048036038101906107a19190613318565b6117e8565b005b3480156107b457600080fd5b506107bd6118b8565b6040516107ca91906132d1565b60405180910390f35b3480156107df57600080fd5b506107e86118e1565b6040516107f59190612ffa565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906130b5565b611973565b6040516108329190613110565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d91906130b5565b611a40565b60405161086f9190613110565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613345565b611a5e565b005b3480156108ad57600080fd5b506108c860048036038101906108c39190613345565b611b61565b005b3480156108d657600080fd5b506108f160048036038101906108ec91906133cb565b611c01565b6040516108fe91906131f0565b60405180910390f35b34801561091357600080fd5b5061092e60048036038101906109299190613295565b611c88565b005b34801561093c57600080fd5b5061095760048036038101906109529190613437565b611d5f565b005b34801561096557600080fd5b50610980600480360381019061097b9190613295565b611df9565b005b34801561098e57600080fd5b506109a960048036038101906109a49190613464565b611fa1565b005b6060600780546109ba906134d3565b80601f01602080910402602001604051908101604052809291908181526020018280546109e6906134d3565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a51610a4a6120ab565b84846120b3565b6001905092915050565b601960169054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b601960149054906101000a900460ff1681565b6000610ae4848484612247565b610ba584610af06120ab565b610ba085604051806060016040528060288152602001613d2860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b566120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b600190509392505050565b6000610bba6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610bd86118b8565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590613550565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c93906135bc565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cd791906132d1565b602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906135f1565b905080831115610d26578092505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610d6192919061361e565b6020604051808303816000875af1158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061365c565b9150509392505050565b6000600960009054906101000a900460ff16905090565b6000610e6e610dd26120ab565b84610e698560026000610de36120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b6120b3565b6001905092915050565b600f5481565b610e866120ab565b73ffffffffffffffffffffffffffffffffffffffff16610ea46118b8565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613550565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960159054906101000a900460ff1681565b60105481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61100b6120ab565b73ffffffffffffffffffffffffffffffffffffffff166110296118b8565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690613550565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b6110a46120ab565b73ffffffffffffffffffffffffffffffffffffffff166110c26118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b60145481565b6112046120ab565b73ffffffffffffffffffffffffffffffffffffffff166112226118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613550565b60405180910390fd5b600081905080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6112ca6120ab565b73ffffffffffffffffffffffffffffffffffffffff166112e86118b8565b73ffffffffffffffffffffffffffffffffffffffff161461133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590613550565b60405180910390fd5b61271081600a5461134f91906136b8565b6113599190613729565b60148190555050565b61136a6120ab565b73ffffffffffffffffffffffffffffffffffffffff166113886118b8565b73ffffffffffffffffffffffffffffffffffffffff16146113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590613550565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611452919061376f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dd919061376f565b6040518363ffffffff1660e01b81526004016114fa92919061379c565b6020604051808303816000875af1158015611519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153d919061376f565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60165481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115f66120ab565b73ffffffffffffffffffffffffffffffffffffffff166116146118b8565b73ffffffffffffffffffffffffffffffffffffffff161461166a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166190613550565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117306120ab565b73ffffffffffffffffffffffffffffffffffffffff1661174e6118b8565b73ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613550565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117f06120ab565b73ffffffffffffffffffffffffffffffffffffffff1661180e6118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613550565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118ad9190613110565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546118f0906134d3565b80601f016020809104026020016040519081016040528092919081815260200182805461191c906134d3565b80156119695780601f1061193e57610100808354040283529160200191611969565b820191906000526020600020905b81548152906001019060200180831161194c57829003601f168201915b5050505050905090565b6000611a366119806120ab565b84611a3185604051806060016040528060258152602001613d5060259139600260006119aa6120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b6001905092915050565b6000611a54611a4d6120ab565b8484612247565b6001905092915050565b611a666120ab565b73ffffffffffffffffffffffffffffffffffffffff16611a846118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190613550565b60405180910390fd5b601960149054906101000a900460ff1615611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190613811565b60405180910390fd5b6000611b3530610fba565b9050600060648383611b4791906136b8565b611b519190613729565b9050611b5c816128ef565b505050565b611b696120ab565b73ffffffffffffffffffffffffffffffffffffffff16611b876118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490613550565b60405180910390fd5b61271081600a54611bee91906136b8565b611bf89190613729565b60168190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c906120ab565b73ffffffffffffffffffffffffffffffffffffffff16611cae6118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb90613550565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d676120ab565b73ffffffffffffffffffffffffffffffffffffffff16611d856118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290613550565b60405180910390fd5b80600c60016101000a81548160ff021916908360ff16021790555050565b611e016120ab565b73ffffffffffffffffffffffffffffffffffffffff16611e1f6118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb906138a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fa96120ab565b73ffffffffffffffffffffffffffffffffffffffff16611fc76118b8565b73ffffffffffffffffffffffffffffffffffffffff161461201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490613550565b60405180910390fd5b600d54818361202c91906138c3565b111561206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490613943565b60405180910390fd5b8060108190555081600f819055505050565b6000818361208d91906136b8565b905092915050565b600081836120a39190613729565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61215c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612153906139af565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161223a91906131f0565b60405180910390a3505050565b61224f6118b8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122d85750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561236a5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123c45750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240357506123d36118b8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561246757600061241383610fba565b9050601454828261242491906138c3565b1115612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90613a67565b60405180910390fd5b505b61246f6118b8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124dd57506124ad6118b8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561252857601654811115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90613af9565b60405180910390fd5b5b600c60019054906101000a900460ff1660ff16600c60009054906101000a900460ff1660ff16101580156125695750601960149054906101000a900460ff16155b80156125c35750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156125db5750601960159054906101000a900460ff165b1561262e576000600c60006101000a81548160ff021916908360ff160217905550600061260730610fba565b90506016548111156126195760165490505b600081111561262c5761262b816128ef565b5b505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126d55750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127a05750601960169054906101000a900460ff1680156127455750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561279f5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156127ae5760009050612872565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361281157600f54600e81905550612871565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287057601054600e819055505b5b5b61287e84848484612963565b50505050565b60008383111582906128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c39190612ffa565b60405180910390fd5b5082840390509392505050565b600081836128e791906138c3565b905092915050565b6001601960146101000a81548160ff021916908315150217905550612913816129cd565b6000479050612944600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612c10565b506000601960146101000a81548160ff02191690831515021790555050565b8061297557612970612c5b565b6129ae565b600c600081819054906101000a900460ff168092919061299490613b19565b91906101000a81548160ff021916908360ff160217905550505b6129b9848484612cb7565b806129c7576129c6612ef2565b5b50505050565b6000600267ffffffffffffffff8111156129ea576129e9613b42565b5b604051908082528060200260200182016040528015612a185781602001602082028036833780820191505090505b5090503081600081518110612a3057612a2f613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afb919061376f565b81600181518110612b0f57612b0e613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b7630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120b3565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bda959493929190613c99565b600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c56573d6000803e3d6000fd5b505050565b6000600e54148015612c6f57506000600f54145b8015612c7d57506000601054145b612cb557600f54601281905550601054601381905550600e546011819055506000600f8190555060006010819055506000600e819055505b565b600080612cc383612f0f565b91509150612d1983600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dae82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee391906131f0565b60405180910390a35050505050565b601154600e81905550601254600f81905550601354601081905550565b60008060006064600e5485612f2491906136b8565b612f2e9190613729565b90506000612f458286612f5490919063ffffffff16565b90508082935093505050915091565b60008183612f629190613cf3565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa4578082015181840152602081019050612f89565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fcc82612f6a565b612fd68185612f75565b9350612fe6818560208601612f86565b612fef81612fb0565b840191505092915050565b600060208201905081810360008301526130148184612fc1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061304c82613021565b9050919050565b61305c81613041565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b6000819050919050565b6130928161307f565b811461309d57600080fd5b50565b6000813590506130af81613089565b92915050565b600080604083850312156130cc576130cb61301c565b5b60006130da8582860161306a565b92505060206130eb858286016130a0565b9150509250929050565b60008115159050919050565b61310a816130f5565b82525050565b60006020820190506131256000830184613101565b92915050565b600061313682613021565b9050919050565b6131468161312b565b82525050565b6000602082019050613161600083018461313d565b92915050565b6000819050919050565b600061318c61318761318284613021565b613167565b613021565b9050919050565b600061319e82613171565b9050919050565b60006131b082613193565b9050919050565b6131c0816131a5565b82525050565b60006020820190506131db60008301846131b7565b92915050565b6131ea8161307f565b82525050565b600060208201905061320560008301846131e1565b92915050565b6000806000606084860312156132245761322361301c565b5b60006132328682870161306a565b93505060206132438682870161306a565b9250506040613254868287016130a0565b9150509250925092565b600060ff82169050919050565b6132748161325e565b82525050565b600060208201905061328f600083018461326b565b92915050565b6000602082840312156132ab576132aa61301c565b5b60006132b98482850161306a565b91505092915050565b6132cb81613041565b82525050565b60006020820190506132e660008301846132c2565b92915050565b6132f5816130f5565b811461330057600080fd5b50565b600081359050613312816132ec565b92915050565b60006020828403121561332e5761332d61301c565b5b600061333c84828501613303565b91505092915050565b60006020828403121561335b5761335a61301c565b5b6000613369848285016130a0565b91505092915050565b61337b8161312b565b811461338657600080fd5b50565b60008135905061339881613372565b92915050565b6000602082840312156133b4576133b361301c565b5b60006133c284828501613389565b91505092915050565b600080604083850312156133e2576133e161301c565b5b60006133f08582860161306a565b92505060206134018582860161306a565b9150509250929050565b6134148161325e565b811461341f57600080fd5b50565b6000813590506134318161340b565b92915050565b60006020828403121561344d5761344c61301c565b5b600061345b84828501613422565b91505092915050565b6000806040838503121561347b5761347a61301c565b5b6000613489858286016130a0565b925050602061349a858286016130a0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134eb57607f821691505b6020821081036134fe576134fd6134a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353a602083612f75565b915061354582613504565b602082019050919050565b600060208201905081810360008301526135698161352d565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000600082015250565b60006135a6601b83612f75565b91506135b182613570565b602082019050919050565b600060208201905081810360008301526135d581613599565b9050919050565b6000815190506135eb81613089565b92915050565b6000602082840312156136075761360661301c565b5b6000613615848285016135dc565b91505092915050565b600060408201905061363360008301856132c2565b61364060208301846131e1565b9392505050565b600081519050613656816132ec565b92915050565b6000602082840312156136725761367161301c565b5b600061368084828501613647565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136c38261307f565b91506136ce8361307f565b92508282026136dc8161307f565b915082820484148315176136f3576136f2613689565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137348261307f565b915061373f8361307f565b92508261374f5761374e6136fa565b5b828204905092915050565b60008151905061376981613053565b92915050565b6000602082840312156137855761378461301c565b5b60006137938482850161375a565b91505092915050565b60006040820190506137b160008301856132c2565b6137be60208301846132c2565b9392505050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b60006137fb602083612f75565b9150613806826137c5565b602082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388d602683612f75565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b60006138ce8261307f565b91506138d98361307f565b92508282019050808211156138f1576138f0613689565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b600061392d601083612f75565b9150613938826138f7565b602082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000613999601183612f75565b91506139a482613963565b602082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460008201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d6960208201527f7420666f72206f6e652077616c6c65742e000000000000000000000000000000604082015250565b6000613a51605183612f75565b9150613a5c826139cf565b606082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b7f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060008201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000602082015250565b6000613ae3603a83612f75565b9150613aee82613a87565b604082019050919050565b60006020820190508181036000830152613b1281613ad6565b9050919050565b6000613b248261325e565b915060ff8203613b3757613b36613689565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613bc5613bc0613bbb84613ba0565b613167565b61307f565b9050919050565b613bd581613baa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c1081613041565b82525050565b6000613c228383613c07565b60208301905092915050565b6000602082019050919050565b6000613c4682613bdb565b613c508185613be6565b9350613c5b83613bf7565b8060005b83811015613c8c578151613c738882613c16565b9750613c7e83613c2e565b925050600181019050613c5f565b5085935050505092915050565b600060a082019050613cae60008301886131e1565b613cbb6020830187613bcc565b8181036040830152613ccd8186613c3b565b9050613cdc60608301856132c2565b613ce960808301846131e1565b9695505050505050565b6000613cfe8261307f565b9150613d098361307f565b9250828203905081811115613d2157613d20613689565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a39e47a5198930c79ca605adb2a5e377379cca60e13ceaf4cc76bbf41a915e3b64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063768dc710116101395780638da5cb5b116100b6578063d954a9c01161007a578063d954a9c0146108a1578063dd62ed3e146108ca578063ea2f0b3714610907578063f1fa713d14610930578063f2fde38b14610959578063f47c79861461098257610251565b80638da5cb5b146107a857806395d89b41146107d3578063a457c2d7146107fe578063a9059cbb1461083b578063b990e23f1461087857610251565b80637d1db4a5116100fd5780637d1db4a5146106d7578063805c0e0f14610702578063818ab46d1461072d5780638a2e4aed146107565780638bcc108c1461077f57610251565b8063768dc710146105f457806378109e5414610631578063788d1d9b1461065c578063793d082a146106855780637ce1703c146106ae57610251565b806339509351116101c7578063590f897e1161018b578063590f897e146105215780636415bc7a1461054c57806370a082311461057757806370d0f7e0146105b4578063715018a6146105dd57610251565b8063395093511461043a57806340b9a54b14610477578063437823ec146104a257806349bd5a5e146104cb5780634a74bb02146104f657610251565b806318160ddd1161020e57806318160ddd1461033f578063220f66961461036a57806323b872dd146103955780632e9c3a76146103d2578063313ce5671461040f57610251565b806306fdde0314610256578063095ea7b31461028157806313fad07a146102be57806315a7cb10146102e95780631694505e1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109ab565b6040516102789190612ffa565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906130b5565b610a3d565b6040516102b59190613110565b60405180910390f35b3480156102ca57600080fd5b506102d3610a5b565b6040516102e09190613110565b60405180910390f35b3480156102f557600080fd5b506102fe610a6e565b60405161030b919061314c565b60405180910390f35b34801561032057600080fd5b50610329610a94565b60405161033691906131c6565b60405180910390f35b34801561034b57600080fd5b50610354610aba565b60405161036191906131f0565b60405180910390f35b34801561037657600080fd5b5061037f610ac4565b60405161038c9190613110565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b7919061320b565b610ad7565b6040516103c99190613110565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061320b565b610bb0565b6040516104069190613110565b60405180910390f35b34801561041b57600080fd5b50610424610dae565b604051610431919061327a565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c91906130b5565b610dc5565b60405161046e9190613110565b60405180910390f35b34801561048357600080fd5b5061048c610e78565b60405161049991906131f0565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613295565b610e7e565b005b3480156104d757600080fd5b506104e0610f55565b6040516104ed91906132d1565b60405180910390f35b34801561050257600080fd5b5061050b610f7b565b6040516105189190613110565b60405180910390f35b34801561052d57600080fd5b50610536610f8e565b60405161054391906131f0565b60405180910390f35b34801561055857600080fd5b50610561610f94565b60405161056e919061314c565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190613295565b610fba565b6040516105ab91906131f0565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190613318565b611003565b005b3480156105e957600080fd5b506105f261109c565b005b34801561060057600080fd5b5061061b60048036038101906106169190613295565b6111d6565b6040516106289190613110565b60405180910390f35b34801561063d57600080fd5b506106466111f6565b60405161065391906131f0565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190613295565b6111fc565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613345565b6112c2565b005b3480156106ba57600080fd5b506106d560048036038101906106d09190613295565b611362565b005b3480156106e357600080fd5b506106ec6115c2565b6040516106f991906131f0565b60405180910390f35b34801561070e57600080fd5b506107176115c8565b604051610724919061314c565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f919061339e565b6115ee565b005b34801561076257600080fd5b5061077d60048036038101906107789190613295565b611728565b005b34801561078b57600080fd5b506107a660048036038101906107a19190613318565b6117e8565b005b3480156107b457600080fd5b506107bd6118b8565b6040516107ca91906132d1565b60405180910390f35b3480156107df57600080fd5b506107e86118e1565b6040516107f59190612ffa565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906130b5565b611973565b6040516108329190613110565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d91906130b5565b611a40565b60405161086f9190613110565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613345565b611a5e565b005b3480156108ad57600080fd5b506108c860048036038101906108c39190613345565b611b61565b005b3480156108d657600080fd5b506108f160048036038101906108ec91906133cb565b611c01565b6040516108fe91906131f0565b60405180910390f35b34801561091357600080fd5b5061092e60048036038101906109299190613295565b611c88565b005b34801561093c57600080fd5b5061095760048036038101906109529190613437565b611d5f565b005b34801561096557600080fd5b50610980600480360381019061097b9190613295565b611df9565b005b34801561098e57600080fd5b506109a960048036038101906109a49190613464565b611fa1565b005b6060600780546109ba906134d3565b80601f01602080910402602001604051908101604052809291908181526020018280546109e6906134d3565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a51610a4a6120ab565b84846120b3565b6001905092915050565b601960169054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b601960149054906101000a900460ff1681565b6000610ae4848484612247565b610ba584610af06120ab565b610ba085604051806060016040528060288152602001613d2860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b566120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b600190509392505050565b6000610bba6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610bd86118b8565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590613550565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c93906135bc565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cd791906132d1565b602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906135f1565b905080831115610d26578092505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610d6192919061361e565b6020604051808303816000875af1158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061365c565b9150509392505050565b6000600960009054906101000a900460ff16905090565b6000610e6e610dd26120ab565b84610e698560026000610de36120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b6120b3565b6001905092915050565b600f5481565b610e866120ab565b73ffffffffffffffffffffffffffffffffffffffff16610ea46118b8565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613550565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960159054906101000a900460ff1681565b60105481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61100b6120ab565b73ffffffffffffffffffffffffffffffffffffffff166110296118b8565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690613550565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b6110a46120ab565b73ffffffffffffffffffffffffffffffffffffffff166110c26118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b60145481565b6112046120ab565b73ffffffffffffffffffffffffffffffffffffffff166112226118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613550565b60405180910390fd5b600081905080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6112ca6120ab565b73ffffffffffffffffffffffffffffffffffffffff166112e86118b8565b73ffffffffffffffffffffffffffffffffffffffff161461133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590613550565b60405180910390fd5b61271081600a5461134f91906136b8565b6113599190613729565b60148190555050565b61136a6120ab565b73ffffffffffffffffffffffffffffffffffffffff166113886118b8565b73ffffffffffffffffffffffffffffffffffffffff16146113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590613550565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611452919061376f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dd919061376f565b6040518363ffffffff1660e01b81526004016114fa92919061379c565b6020604051808303816000875af1158015611519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153d919061376f565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60165481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115f66120ab565b73ffffffffffffffffffffffffffffffffffffffff166116146118b8565b73ffffffffffffffffffffffffffffffffffffffff161461166a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166190613550565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117306120ab565b73ffffffffffffffffffffffffffffffffffffffff1661174e6118b8565b73ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613550565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117f06120ab565b73ffffffffffffffffffffffffffffffffffffffff1661180e6118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613550565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118ad9190613110565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546118f0906134d3565b80601f016020809104026020016040519081016040528092919081815260200182805461191c906134d3565b80156119695780601f1061193e57610100808354040283529160200191611969565b820191906000526020600020905b81548152906001019060200180831161194c57829003601f168201915b5050505050905090565b6000611a366119806120ab565b84611a3185604051806060016040528060258152602001613d5060259139600260006119aa6120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b6001905092915050565b6000611a54611a4d6120ab565b8484612247565b6001905092915050565b611a666120ab565b73ffffffffffffffffffffffffffffffffffffffff16611a846118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190613550565b60405180910390fd5b601960149054906101000a900460ff1615611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190613811565b60405180910390fd5b6000611b3530610fba565b9050600060648383611b4791906136b8565b611b519190613729565b9050611b5c816128ef565b505050565b611b696120ab565b73ffffffffffffffffffffffffffffffffffffffff16611b876118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490613550565b60405180910390fd5b61271081600a54611bee91906136b8565b611bf89190613729565b60168190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c906120ab565b73ffffffffffffffffffffffffffffffffffffffff16611cae6118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb90613550565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d676120ab565b73ffffffffffffffffffffffffffffffffffffffff16611d856118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290613550565b60405180910390fd5b80600c60016101000a81548160ff021916908360ff16021790555050565b611e016120ab565b73ffffffffffffffffffffffffffffffffffffffff16611e1f6118b8565b73ffffffffffffffffffffffffffffffffffffffff1614611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb906138a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fa96120ab565b73ffffffffffffffffffffffffffffffffffffffff16611fc76118b8565b73ffffffffffffffffffffffffffffffffffffffff161461201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490613550565b60405180910390fd5b600d54818361202c91906138c3565b111561206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490613943565b60405180910390fd5b8060108190555081600f819055505050565b6000818361208d91906136b8565b905092915050565b600081836120a39190613729565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61215c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612153906139af565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161223a91906131f0565b60405180910390a3505050565b61224f6118b8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122d85750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561236a5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123c45750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240357506123d36118b8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561246757600061241383610fba565b9050601454828261242491906138c3565b1115612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90613a67565b60405180910390fd5b505b61246f6118b8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124dd57506124ad6118b8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561252857601654811115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90613af9565b60405180910390fd5b5b600c60019054906101000a900460ff1660ff16600c60009054906101000a900460ff1660ff16101580156125695750601960149054906101000a900460ff16155b80156125c35750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156125db5750601960159054906101000a900460ff165b1561262e576000600c60006101000a81548160ff021916908360ff160217905550600061260730610fba565b90506016548111156126195760165490505b600081111561262c5761262b816128ef565b5b505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126d55750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127a05750601960169054906101000a900460ff1680156127455750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561279f5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156127ae5760009050612872565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361281157600f54600e81905550612871565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287057601054600e819055505b5b5b61287e84848484612963565b50505050565b60008383111582906128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c39190612ffa565b60405180910390fd5b5082840390509392505050565b600081836128e791906138c3565b905092915050565b6001601960146101000a81548160ff021916908315150217905550612913816129cd565b6000479050612944600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612c10565b506000601960146101000a81548160ff02191690831515021790555050565b8061297557612970612c5b565b6129ae565b600c600081819054906101000a900460ff168092919061299490613b19565b91906101000a81548160ff021916908360ff160217905550505b6129b9848484612cb7565b806129c7576129c6612ef2565b5b50505050565b6000600267ffffffffffffffff8111156129ea576129e9613b42565b5b604051908082528060200260200182016040528015612a185781602001602082028036833780820191505090505b5090503081600081518110612a3057612a2f613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afb919061376f565b81600181518110612b0f57612b0e613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b7630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120b3565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bda959493929190613c99565b600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c56573d6000803e3d6000fd5b505050565b6000600e54148015612c6f57506000600f54145b8015612c7d57506000601054145b612cb557600f54601281905550601054601381905550600e546011819055506000600f8190555060006010819055506000600e819055505b565b600080612cc383612f0f565b91509150612d1983600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dae82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee391906131f0565b60405180910390a35050505050565b601154600e81905550601254600f81905550601354601081905550565b60008060006064600e5485612f2491906136b8565b612f2e9190613729565b90506000612f458286612f5490919063ffffffff16565b90508082935093505050915091565b60008183612f629190613cf3565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa4578082015181840152602081019050612f89565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fcc82612f6a565b612fd68185612f75565b9350612fe6818560208601612f86565b612fef81612fb0565b840191505092915050565b600060208201905081810360008301526130148184612fc1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061304c82613021565b9050919050565b61305c81613041565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b6000819050919050565b6130928161307f565b811461309d57600080fd5b50565b6000813590506130af81613089565b92915050565b600080604083850312156130cc576130cb61301c565b5b60006130da8582860161306a565b92505060206130eb858286016130a0565b9150509250929050565b60008115159050919050565b61310a816130f5565b82525050565b60006020820190506131256000830184613101565b92915050565b600061313682613021565b9050919050565b6131468161312b565b82525050565b6000602082019050613161600083018461313d565b92915050565b6000819050919050565b600061318c61318761318284613021565b613167565b613021565b9050919050565b600061319e82613171565b9050919050565b60006131b082613193565b9050919050565b6131c0816131a5565b82525050565b60006020820190506131db60008301846131b7565b92915050565b6131ea8161307f565b82525050565b600060208201905061320560008301846131e1565b92915050565b6000806000606084860312156132245761322361301c565b5b60006132328682870161306a565b93505060206132438682870161306a565b9250506040613254868287016130a0565b9150509250925092565b600060ff82169050919050565b6132748161325e565b82525050565b600060208201905061328f600083018461326b565b92915050565b6000602082840312156132ab576132aa61301c565b5b60006132b98482850161306a565b91505092915050565b6132cb81613041565b82525050565b60006020820190506132e660008301846132c2565b92915050565b6132f5816130f5565b811461330057600080fd5b50565b600081359050613312816132ec565b92915050565b60006020828403121561332e5761332d61301c565b5b600061333c84828501613303565b91505092915050565b60006020828403121561335b5761335a61301c565b5b6000613369848285016130a0565b91505092915050565b61337b8161312b565b811461338657600080fd5b50565b60008135905061339881613372565b92915050565b6000602082840312156133b4576133b361301c565b5b60006133c284828501613389565b91505092915050565b600080604083850312156133e2576133e161301c565b5b60006133f08582860161306a565b92505060206134018582860161306a565b9150509250929050565b6134148161325e565b811461341f57600080fd5b50565b6000813590506134318161340b565b92915050565b60006020828403121561344d5761344c61301c565b5b600061345b84828501613422565b91505092915050565b6000806040838503121561347b5761347a61301c565b5b6000613489858286016130a0565b925050602061349a858286016130a0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134eb57607f821691505b6020821081036134fe576134fd6134a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353a602083612f75565b915061354582613504565b602082019050919050565b600060208201905081810360008301526135698161352d565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000600082015250565b60006135a6601b83612f75565b91506135b182613570565b602082019050919050565b600060208201905081810360008301526135d581613599565b9050919050565b6000815190506135eb81613089565b92915050565b6000602082840312156136075761360661301c565b5b6000613615848285016135dc565b91505092915050565b600060408201905061363360008301856132c2565b61364060208301846131e1565b9392505050565b600081519050613656816132ec565b92915050565b6000602082840312156136725761367161301c565b5b600061368084828501613647565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136c38261307f565b91506136ce8361307f565b92508282026136dc8161307f565b915082820484148315176136f3576136f2613689565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137348261307f565b915061373f8361307f565b92508261374f5761374e6136fa565b5b828204905092915050565b60008151905061376981613053565b92915050565b6000602082840312156137855761378461301c565b5b60006137938482850161375a565b91505092915050565b60006040820190506137b160008301856132c2565b6137be60208301846132c2565b9392505050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b60006137fb602083612f75565b9150613806826137c5565b602082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388d602683612f75565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b60006138ce8261307f565b91506138d98361307f565b92508282019050808211156138f1576138f0613689565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b600061392d601083612f75565b9150613938826138f7565b602082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000613999601183612f75565b91506139a482613963565b602082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460008201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d6960208201527f7420666f72206f6e652077616c6c65742e000000000000000000000000000000604082015250565b6000613a51605183612f75565b9150613a5c826139cf565b606082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b7f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060008201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000602082015250565b6000613ae3603a83612f75565b9150613aee82613a87565b604082019050919050565b60006020820190508181036000830152613b1281613ad6565b9050919050565b6000613b248261325e565b915060ff8203613b3757613b36613689565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613bc5613bc0613bbb84613ba0565b613167565b61307f565b9050919050565b613bd581613baa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c1081613041565b82525050565b6000613c228383613c07565b60208301905092915050565b6000602082019050919050565b6000613c4682613bdb565b613c508185613be6565b9350613c5b83613bf7565b8060005b83811015613c8c578151613c738882613c16565b9750613c7e83613c2e565b925050600181019050613c5f565b5085935050505092915050565b600060a082019050613cae60008301886131e1565b613cbb6020830187613bcc565b8181036040830152613ccd8186613c3b565b9050613cdc60608301856132c2565b613ce960808301846131e1565b9695505050505050565b6000613cfe8261307f565b9150613d098361307f565b9250828203905081811115613d2157613d20613689565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a39e47a5198930c79ca605adb2a5e377379cca60e13ceaf4cc76bbf41a915e3b64736f6c63430008120033

Deployed Bytecode Sourcemap

14341:13784:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17312:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18143:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20618:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14892:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16097:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17589:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16180:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18312:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25606:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17498:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18633:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15425:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19223:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16145:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16215:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15459:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14695:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17692:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20661:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6082:148;;;;;;;;;;;;;:::i;:::-;;14632:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15793:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26516:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21089:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26165:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15974:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14796:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19806:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26807:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20054:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5765:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17403;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18859:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17817:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24517:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20863:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17992:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19414:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20342:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6286:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19538:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17312:83;17349:13;17382:5;17375:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17312:83;:::o;18143:161::-;18218:4;18235:39;18244:12;:10;:12::i;:::-;18258:7;18267:6;18235:8;:39::i;:::-;18292:4;18285:11;;18143:161;;;;:::o;20618:34::-;;;;;;;;;;;;;:::o;14892:88::-;;;;;;;;;;;;;:::o;16097:41::-;;;;;;;;;;;;;:::o;17589:95::-;17642:7;17669;;17662:14;;17589:95;:::o;16180:28::-;;;;;;;;;;;;;:::o;18312:313::-;18410:4;18427:36;18437:6;18445:9;18456:6;18427:9;:36::i;:::-;18474:121;18483:6;18491:12;:10;:12::i;:::-;18505:89;18543:6;18505:89;;;;;;;;;;;;;;;;;:11;:19;18517:6;18505:19;;;;;;;;;;;;;;;:33;18525:12;:10;:12::i;:::-;18505:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18474:8;:121::i;:::-;18613:4;18606:11;;18312:313;;;;;:::o;25606:494::-;25733:10;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25795:4:::1;25763:37;;:20;:37;;::::0;25755:77:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25843:21;25874:20;25867:38;;;25914:4;25867:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25843:77;;25954:13;25935:16;:32;25931:72;;;25988:13;25969:32;;25931:72;26028:20;26021:37;;;26059:14;26075:16;26021:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26013:79;;25744:356;25606:494:::0;;;;;:::o;17498:83::-;17539:5;17564:9;;;;;;;;;;;17557:16;;17498:83;:::o;18633:218::-;18721:4;18738:83;18747:12;:10;:12::i;:::-;18761:7;18770:50;18809:10;18770:11;:25;18782:12;:10;:12::i;:::-;18770:25;;;;;;;;;;;;;;;:34;18796:7;18770:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18738:8;:83::i;:::-;18839:4;18832:11;;18633:218;;;;:::o;15425:27::-;;;;:::o;19223:111::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19322:4:::1;19292:18;:27;19311:7;19292:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19223:111:::0;:::o;16145:28::-;;;;;;;;;;;;;:::o;16215:40::-;;;;;;;;;;;;;:::o;15459:28::-;;;;:::o;14695:94::-;;;;;;;;;;;;;:::o;17692:117::-;17758:7;17785;:16;17793:7;17785:16;;;;;;;;;;;;;;;;17778:23;;17692:117;;;:::o;20661:121::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20761:13:::1;20743:15;;:31;;;;;;;;;;;;;;;;;;20661:121:::0;:::o;6082:148::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6189:1:::1;6152:40;;6173:6;::::0;::::1;;;;;;;;6152:40;;;;;;;;;;;;6220:1;6203:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6082:148::o:0;14632:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;15793:56::-;;;;:::o;26516:196::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26598:32:::1;26652:9;26598:64;;26691:13;26673:15;;:31;;;;;;;;;;;;;;;;;;26587:125;26516:196:::0;:::o;21089:146::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21222:5:::1;21202:19;21194:7;;:27;;;;:::i;:::-;:33;;;;:::i;:::-;21176:15;:51;;;;21089:146:::0;:::o;26165:317::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26251:32:::1;26305:9;26251:64;;26360:13;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26342:53;;;26404:4;26411:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26342:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26326:13;;:106;;;;;;;;;;;;;;;;;;26461:13;26443:15;;:31;;;;;;;;;;;;;;;;;;26240:242;26165:317:::0;:::o;15974:53::-;;;;:::o;14796:88::-;;;;;;;;;;;;;:::o;19806:168::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19905:6:::1;19885:17;;:26;;;;;;;;;;;;;;;;;;19962:4;19922:18;:37;19941:17;;;;;;;;;;;19922:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;19806:168:::0;:::o;26807:109::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26901:7:::1;26885:13;;:23;;;;;;;;;;;;;;;;;;26807:109:::0;:::o;20054:176::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20150:13:::1;20126:21;;:37;;;;;;;;;;;;;;;;;;20179:43;20208:13;20179:43;;;;;;:::i;:::-;;;;;;;;20054:176:::0;:::o;5765:87::-;5811:7;5838:6;;;;;;;;;;;5831:13;;5765:87;:::o;17403:::-;17442:13;17475:7;17468:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17403:87;:::o;18859:269::-;18952:4;18969:129;18978:12;:10;:12::i;:::-;18992:7;19001:96;19040:15;19001:96;;;;;;;;;;;;;;;;;:11;:25;19013:12;:10;:12::i;:::-;19001:25;;;;;;;;;;;;;;;:34;19027:7;19001:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18969:8;:129::i;:::-;19116:4;19109:11;;18859:269;;;;:::o;17817:167::-;17895:4;17912:42;17922:12;:10;:12::i;:::-;17936:9;17947:6;17912:9;:42::i;:::-;17972:4;17965:11;;17817:167;;;;:::o;24517:480::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24668:16:::1;;;;;;;;;;;24667:17;24659:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24820:24;24847;24865:4;24847:9;:24::i;:::-;24820:51;;24882:18;24949:3;24920:28;24903:16;:45;;;;:::i;:::-;:49;;;;:::i;:::-;24882:70;;24963:26;24978:10;24963:14;:26::i;:::-;24602:395;;24517:480:::0;:::o;20863:144::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20994:5:::1;20976:17;20968:7;;:25;;;;:::i;:::-;:31;;;;:::i;:::-;20953:12;:46;;;;20863:144:::0;:::o;17992:143::-;18073:7;18100:11;:18;18112:5;18100:18;;;;;;;;;;;;;;;:27;18119:7;18100:27;;;;;;;;;;;;;;;;18093:34;;17992:143;;;;:::o;19414:110::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19511:5:::1;19481:18;:27;19500:7;19481:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19414:110:::0;:::o;20342:135::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20447:22:::1;20433:11;;:36;;;;;;;;;;;;;;;;;;20342:135:::0;:::o;6286:244::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6395:1:::1;6375:22;;:8;:22;;::::0;6367:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6485:8;6456:38;;6477:6;::::0;::::1;;;;;;;;6456:38;;;;;;;;;;;;6514:8;6505:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6286:244:::0;:::o;19538:229::-;5961:12;:10;:12::i;:::-;5950:23;;:7;:5;:7::i;:::-;:23;;;5942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19664:14:::1;;19651:8;19641:7;:18;;;;:::i;:::-;19640:38;;19632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19721:8;19710;:19;;;;19750:7;19740;:17;;;;19538:229:::0;;:::o;1137:98::-;1195:7;1226:1;1222;:5;;;;:::i;:::-;1215:12;;1137:98;;;;:::o;1247:::-;1305:7;1336:1;1332;:5;;;;:::i;:::-;1325:12;;1247:98;;;;:::o;1826:::-;1879:7;1906:10;1899:17;;1826:98;:::o;21811:266::-;21923:1;21906:19;;:5;:19;;;;:44;;;;;21948:1;21929:21;;:7;:21;;;;21906:44;21898:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22013:6;21983:11;:18;21995:5;21983:18;;;;;;;;;;;;;;;:27;22002:7;21983:27;;;;;;;;;;;;;;;:36;;;;22051:7;22035:32;;22044:5;22035:32;;;22060:6;22035:32;;;;;;:::i;:::-;;;;;;;;21811:266;;;:::o;22085:1849::-;22252:7;:5;:7::i;:::-;22246:13;;:2;:13;;;;:53;;;;;22282:17;;;;;;;;;;;22276:23;;:2;:23;;;;22246:53;:89;;;;;22330:4;22316:19;;:2;:19;;;;22246:89;:125;;;;;22358:13;;;;;;;;;;;22352:19;;:2;:19;;;;22246:125;:159;;;;;22394:11;;;;;;;;;;;22388:17;;:2;:17;;;;22246:159;:191;;;;;22430:7;:5;:7::i;:::-;22422:15;;:4;:15;;;;22246:191;22242:395;;;22453:18;22474:13;22484:2;22474:9;:13::i;:::-;22453:34;;22535:15;;22524:6;22511:10;:19;;;;:::i;:::-;22510:40;;22502:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;22438:199;22242:395;22756:7;:5;:7::i;:::-;22748:15;;:4;:15;;;;:32;;;;;22773:7;:5;:7::i;:::-;22767:13;;:2;:13;;;;22748:32;22744:144;;;22813:12;;22803:6;:22;;22795:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;22744:144;23052:11;;;;;;;;;;;23041:22;;:7;;;;;;;;;;;:22;;;;:57;;;;;23082:16;;;;;;;;;;;23081:17;23041:57;:95;;;;;23123:13;;;;;;;;;;;23115:21;;:4;:21;;;;23041:95;:133;;;;;23153:21;;;;;;;;;;;23041:133;23024:497;;;23241:1;23231:7;;:11;;;;;;;;;;;;;;;;;;23257:28;23288:24;23306:4;23288:9;:24::i;:::-;23257:55;;23353:12;;23330:20;:35;23327:78;;;23391:12;;23368:35;;23327:78;23445:1;23422:20;:24;23419:91;;;23462:36;23477:20;23462:14;:36::i;:::-;23419:91;23200:321;23024:497;23555:12;23570:4;23555:19;;23599:18;:24;23618:4;23599:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23627:18;:22;23646:2;23627:22;;;;;;;;;;;;;;;;;;;;;;;;;23599:50;:119;;;;23654:15;;;;;;;;;;;:40;;;;;23681:13;;;;;;;;;;;23673:21;;:4;:21;;;;23654:40;:63;;;;;23704:13;;;;;;;;;;;23698:19;;:2;:19;;;;23654:63;23599:119;23596:272;;;23744:5;23734:15;;23596:272;;;23779:13;;;;;;;;;;;23771:21;;:4;:21;;;23767:101;;23806:7;;23794:9;:19;;;;23767:101;;;23831:13;;;;;;;;;;;23825:19;;:2;:19;;;23821:47;;23858:8;;23846:9;:20;;;;23821:47;23767:101;23596:272;23888:38;23903:4;23908:2;23911:6;23918:7;23888:14;:38::i;:::-;22188:1746;22085:1849;;;:::o;1353:206::-;1439:7;1497:1;1492;:6;;1500:12;1484:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1539:1;1535;:5;1528:12;;1353:206;;;;;:::o;925:98::-;983:7;1014:1;1010;:5;;;;:::i;:::-;1003:12;;925:98;;;;:::o;24152:249::-;16577:4;16558:16;;:23;;;;;;;;;;;;;;;;;;24247:38:::1;24264:20;24247:16;:38::i;:::-;24296:19;24318:21;24296:43;;24350;24363:17;;;;;;;;;;;24381:11;24350:12;:43::i;:::-;24226:175;16623:5:::0;16604:16;;:24;;;;;;;;;;;;;;;;;;24152:249;:::o;26978:360::-;27109:7;27105:107;;27132:14;:12;:14::i;:::-;27105:107;;;27187:7;;:9;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;27105:107;27226:42;27242:6;27250:9;27261:6;27226:15;:42::i;:::-;27293:7;27289:41;;27315:15;:13;:15::i;:::-;27289:41;26978:360;;;;:::o;25054:474::-;25122:21;25160:1;25146:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25122:40;;25191:4;25173;25178:1;25173:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25217:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25207:4;25212:1;25207:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25250:62;25267:4;25282:15;;;;;;;;;;;25300:11;25250:8;:62::i;:::-;25323:15;;;;;;;;;;;:66;;;25404:11;25430:1;25447:4;25474;25494:15;25323:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25109:419;25054:474;:::o;23982:120::-;24067:6;:15;;:23;24083:6;24067:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23982:120;;:::o;21271:300::-;21330:1;21317:9;;:14;:30;;;;;21346:1;21335:7;;:12;21317:30;:47;;;;;21363:1;21351:8;;:13;21317:47;21366:7;21314:59;21405:7;;21387:15;:25;;;;21443:8;;21424:16;:27;;;;21483:9;;21463:17;:29;;;;21513:1;21503:7;:11;;;;21536:1;21525:8;:12;;;;21560:1;21548:9;:13;;;;21271:300;:::o;27419:424::-;27516:23;27541:12;27557:19;27568:7;27557:10;:19::i;:::-;27515:61;;;;27605:28;27625:7;27605;:15;27613:6;27605:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27587:7;:15;27595:6;27587:15;;;;;;;;;;;;;;;:46;;;;27665:39;27688:15;27665:7;:18;27673:9;27665:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27644:7;:18;27652:9;27644:18;;;;;;;;;;;;;;;:60;;;;27740:32;27767:4;27740:7;:22;27756:4;27740:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;27715:7;:22;27731:4;27715:22;;;;;;;;;;;;;;;:57;;;;27808:9;27791:44;;27800:6;27791:44;;;27819:15;27791:44;;;;;;:::i;:::-;;;;;;;;27504:339;;27419:424;;;:::o;21608:153::-;21666:17;;21654:9;:29;;;;21700:15;;21690:7;:25;;;;21734:16;;21723:8;:27;;;;21608:153::o;27891:227::-;27950:7;27959;27979:12;28012:3;28002:9;;27994:7;:17;;;;:::i;:::-;:21;;;;:::i;:::-;27979:36;;28026:23;28052:17;28064:4;28052:7;:11;;:17;;;;:::i;:::-;28026:43;;28088:15;28105:4;28080:30;;;;;;27891:227;;;:::o;1031:98::-;1089:7;1120:1;1116;:5;;;;:::i;:::-;1109:12;;1031:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:104::-;3491:7;3520:24;3538:5;3520:24;:::i;:::-;3509:35;;3446:104;;;:::o;3556:142::-;3659:32;3685:5;3659:32;:::i;:::-;3654:3;3647:45;3556:142;;:::o;3704:254::-;3813:4;3851:2;3840:9;3836:18;3828:26;;3864:87;3948:1;3937:9;3933:17;3924:6;3864:87;:::i;:::-;3704:254;;;;:::o;3964:60::-;3992:3;4013:5;4006:12;;3964:60;;;:::o;4030:142::-;4080:9;4113:53;4131:34;4140:24;4158:5;4140:24;:::i;:::-;4131:34;:::i;:::-;4113:53;:::i;:::-;4100:66;;4030:142;;;:::o;4178:126::-;4228:9;4261:37;4292:5;4261:37;:::i;:::-;4248:50;;4178:126;;;:::o;4310:153::-;4387:9;4420:37;4451:5;4420:37;:::i;:::-;4407:50;;4310:153;;;:::o;4469:185::-;4583:64;4641:5;4583:64;:::i;:::-;4578:3;4571:77;4469:185;;:::o;4660:276::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:98;4926:1;4915:9;4911:17;4902:6;4831:98;:::i;:::-;4660:276;;;;:::o;4942:118::-;5029:24;5047:5;5029:24;:::i;:::-;5024:3;5017:37;4942:118;;:::o;5066:222::-;5159:4;5197:2;5186:9;5182:18;5174:26;;5210:71;5278:1;5267:9;5263:17;5254:6;5210:71;:::i;:::-;5066:222;;;;:::o;5294:619::-;5371:6;5379;5387;5436:2;5424:9;5415:7;5411:23;5407:32;5404:119;;;5442:79;;:::i;:::-;5404:119;5562:1;5587:53;5632:7;5623:6;5612:9;5608:22;5587:53;:::i;:::-;5577:63;;5533:117;5689:2;5715:53;5760:7;5751:6;5740:9;5736:22;5715:53;:::i;:::-;5705:63;;5660:118;5817:2;5843:53;5888:7;5879:6;5868:9;5864:22;5843:53;:::i;:::-;5833:63;;5788:118;5294:619;;;;;:::o;5919:86::-;5954:7;5994:4;5987:5;5983:16;5972:27;;5919:86;;;:::o;6011:112::-;6094:22;6110:5;6094:22;:::i;:::-;6089:3;6082:35;6011:112;;:::o;6129:214::-;6218:4;6256:2;6245:9;6241:18;6233:26;;6269:67;6333:1;6322:9;6318:17;6309:6;6269:67;:::i;:::-;6129:214;;;;:::o;6349:329::-;6408:6;6457:2;6445:9;6436:7;6432:23;6428:32;6425:119;;;6463:79;;:::i;:::-;6425:119;6583:1;6608:53;6653:7;6644:6;6633:9;6629:22;6608:53;:::i;:::-;6598:63;;6554:117;6349:329;;;;:::o;6684:118::-;6771:24;6789:5;6771:24;:::i;:::-;6766:3;6759:37;6684:118;;:::o;6808:222::-;6901:4;6939:2;6928:9;6924:18;6916:26;;6952:71;7020:1;7009:9;7005:17;6996:6;6952:71;:::i;:::-;6808:222;;;;:::o;7036:116::-;7106:21;7121:5;7106:21;:::i;:::-;7099:5;7096:32;7086:60;;7142:1;7139;7132:12;7086:60;7036:116;:::o;7158:133::-;7201:5;7239:6;7226:20;7217:29;;7255:30;7279:5;7255:30;:::i;:::-;7158:133;;;;:::o;7297:323::-;7353:6;7402:2;7390:9;7381:7;7377:23;7373:32;7370:119;;;7408:79;;:::i;:::-;7370:119;7528:1;7553:50;7595:7;7586:6;7575:9;7571:22;7553:50;:::i;:::-;7543:60;;7499:114;7297:323;;;;:::o;7626:329::-;7685:6;7734:2;7722:9;7713:7;7709:23;7705:32;7702:119;;;7740:79;;:::i;:::-;7702:119;7860:1;7885:53;7930:7;7921:6;7910:9;7906:22;7885:53;:::i;:::-;7875:63;;7831:117;7626:329;;;;:::o;7961:138::-;8042:32;8068:5;8042:32;:::i;:::-;8035:5;8032:43;8022:71;;8089:1;8086;8079:12;8022:71;7961:138;:::o;8105:155::-;8159:5;8197:6;8184:20;8175:29;;8213:41;8248:5;8213:41;:::i;:::-;8105:155;;;;:::o;8266:345::-;8333:6;8382:2;8370:9;8361:7;8357:23;8353:32;8350:119;;;8388:79;;:::i;:::-;8350:119;8508:1;8533:61;8586:7;8577:6;8566:9;8562:22;8533:61;:::i;:::-;8523:71;;8479:125;8266:345;;;;:::o;8617:474::-;8685:6;8693;8742:2;8730:9;8721:7;8717:23;8713:32;8710:119;;;8748:79;;:::i;:::-;8710:119;8868:1;8893:53;8938:7;8929:6;8918:9;8914:22;8893:53;:::i;:::-;8883:63;;8839:117;8995:2;9021:53;9066:7;9057:6;9046:9;9042:22;9021:53;:::i;:::-;9011:63;;8966:118;8617:474;;;;;:::o;9097:118::-;9168:22;9184:5;9168:22;:::i;:::-;9161:5;9158:33;9148:61;;9205:1;9202;9195:12;9148:61;9097:118;:::o;9221:135::-;9265:5;9303:6;9290:20;9281:29;;9319:31;9344:5;9319:31;:::i;:::-;9221:135;;;;:::o;9362:325::-;9419:6;9468:2;9456:9;9447:7;9443:23;9439:32;9436:119;;;9474:79;;:::i;:::-;9436:119;9594:1;9619:51;9662:7;9653:6;9642:9;9638:22;9619:51;:::i;:::-;9609:61;;9565:115;9362:325;;;;:::o;9693:474::-;9761:6;9769;9818:2;9806:9;9797:7;9793:23;9789:32;9786:119;;;9824:79;;:::i;:::-;9786:119;9944:1;9969:53;10014:7;10005:6;9994:9;9990:22;9969:53;:::i;:::-;9959:63;;9915:117;10071:2;10097:53;10142:7;10133:6;10122:9;10118:22;10097:53;:::i;:::-;10087:63;;10042:118;9693:474;;;;;:::o;10173:180::-;10221:77;10218:1;10211:88;10318:4;10315:1;10308:15;10342:4;10339:1;10332:15;10359:320;10403:6;10440:1;10434:4;10430:12;10420:22;;10487:1;10481:4;10477:12;10508:18;10498:81;;10564:4;10556:6;10552:17;10542:27;;10498:81;10626:2;10618:6;10615:14;10595:18;10592:38;10589:84;;10645:18;;:::i;:::-;10589:84;10410:269;10359:320;;;:::o;10685:182::-;10825:34;10821:1;10813:6;10809:14;10802:58;10685:182;:::o;10873:366::-;11015:3;11036:67;11100:2;11095:3;11036:67;:::i;:::-;11029:74;;11112:93;11201:3;11112:93;:::i;:::-;11230:2;11225:3;11221:12;11214:19;;10873:366;;;:::o;11245:419::-;11411:4;11449:2;11438:9;11434:18;11426:26;;11498:9;11492:4;11488:20;11484:1;11473:9;11469:17;11462:47;11526:131;11652:4;11526:131;:::i;:::-;11518:139;;11245:419;;;:::o;11670:177::-;11810:29;11806:1;11798:6;11794:14;11787:53;11670:177;:::o;11853:366::-;11995:3;12016:67;12080:2;12075:3;12016:67;:::i;:::-;12009:74;;12092:93;12181:3;12092:93;:::i;:::-;12210:2;12205:3;12201:12;12194:19;;11853:366;;;:::o;12225:419::-;12391:4;12429:2;12418:9;12414:18;12406:26;;12478:9;12472:4;12468:20;12464:1;12453:9;12449:17;12442:47;12506:131;12632:4;12506:131;:::i;:::-;12498:139;;12225:419;;;:::o;12650:143::-;12707:5;12738:6;12732:13;12723:22;;12754:33;12781:5;12754:33;:::i;:::-;12650:143;;;;:::o;12799:351::-;12869:6;12918:2;12906:9;12897:7;12893:23;12889:32;12886:119;;;12924:79;;:::i;:::-;12886:119;13044:1;13069:64;13125:7;13116:6;13105:9;13101:22;13069:64;:::i;:::-;13059:74;;13015:128;12799:351;;;;:::o;13156:332::-;13277:4;13315:2;13304:9;13300:18;13292:26;;13328:71;13396:1;13385:9;13381:17;13372:6;13328:71;:::i;:::-;13409:72;13477:2;13466:9;13462:18;13453:6;13409:72;:::i;:::-;13156:332;;;;;:::o;13494:137::-;13548:5;13579:6;13573:13;13564:22;;13595:30;13619:5;13595:30;:::i;:::-;13494:137;;;;:::o;13637:345::-;13704:6;13753:2;13741:9;13732:7;13728:23;13724:32;13721:119;;;13759:79;;:::i;:::-;13721:119;13879:1;13904:61;13957:7;13948:6;13937:9;13933:22;13904:61;:::i;:::-;13894:71;;13850:125;13637:345;;;;:::o;13988:180::-;14036:77;14033:1;14026:88;14133:4;14130:1;14123:15;14157:4;14154:1;14147:15;14174:410;14214:7;14237:20;14255:1;14237:20;:::i;:::-;14232:25;;14271:20;14289:1;14271:20;:::i;:::-;14266:25;;14326:1;14323;14319:9;14348:30;14366:11;14348:30;:::i;:::-;14337:41;;14527:1;14518:7;14514:15;14511:1;14508:22;14488:1;14481:9;14461:83;14438:139;;14557:18;;:::i;:::-;14438:139;14222:362;14174:410;;;;:::o;14590:180::-;14638:77;14635:1;14628:88;14735:4;14732:1;14725:15;14759:4;14756:1;14749:15;14776:185;14816:1;14833:20;14851:1;14833:20;:::i;:::-;14828:25;;14867:20;14885:1;14867:20;:::i;:::-;14862:25;;14906:1;14896:35;;14911:18;;:::i;:::-;14896:35;14953:1;14950;14946:9;14941:14;;14776:185;;;;:::o;14967:143::-;15024:5;15055:6;15049:13;15040:22;;15071:33;15098:5;15071:33;:::i;:::-;14967:143;;;;:::o;15116:351::-;15186:6;15235:2;15223:9;15214:7;15210:23;15206:32;15203:119;;;15241:79;;:::i;:::-;15203:119;15361:1;15386:64;15442:7;15433:6;15422:9;15418:22;15386:64;:::i;:::-;15376:74;;15332:128;15116:351;;;;:::o;15473:332::-;15594:4;15632:2;15621:9;15617:18;15609:26;;15645:71;15713:1;15702:9;15698:17;15689:6;15645:71;:::i;:::-;15726:72;15794:2;15783:9;15779:18;15770:6;15726:72;:::i;:::-;15473:332;;;;;:::o;15811:182::-;15951:34;15947:1;15939:6;15935:14;15928:58;15811:182;:::o;15999:366::-;16141:3;16162:67;16226:2;16221:3;16162:67;:::i;:::-;16155:74;;16238:93;16327:3;16238:93;:::i;:::-;16356:2;16351:3;16347:12;16340:19;;15999:366;;;:::o;16371:419::-;16537:4;16575:2;16564:9;16560:18;16552:26;;16624:9;16618:4;16614:20;16610:1;16599:9;16595:17;16588:47;16652:131;16778:4;16652:131;:::i;:::-;16644:139;;16371:419;;;:::o;16796:225::-;16936:34;16932:1;16924:6;16920:14;16913:58;17005:8;17000:2;16992:6;16988:15;16981:33;16796:225;:::o;17027:366::-;17169:3;17190:67;17254:2;17249:3;17190:67;:::i;:::-;17183:74;;17266:93;17355:3;17266:93;:::i;:::-;17384:2;17379:3;17375:12;17368:19;;17027:366;;;:::o;17399:419::-;17565:4;17603:2;17592:9;17588:18;17580:26;;17652:9;17646:4;17642:20;17638:1;17627:9;17623:17;17616:47;17680:131;17806:4;17680:131;:::i;:::-;17672:139;;17399:419;;;:::o;17824:191::-;17864:3;17883:20;17901:1;17883:20;:::i;:::-;17878:25;;17917:20;17935:1;17917:20;:::i;:::-;17912:25;;17960:1;17957;17953:9;17946:16;;17981:3;17978:1;17975:10;17972:36;;;17988:18;;:::i;:::-;17972:36;17824:191;;;;:::o;18021:166::-;18161:18;18157:1;18149:6;18145:14;18138:42;18021:166;:::o;18193:366::-;18335:3;18356:67;18420:2;18415:3;18356:67;:::i;:::-;18349:74;;18432:93;18521:3;18432:93;:::i;:::-;18550:2;18545:3;18541:12;18534:19;;18193:366;;;:::o;18565:419::-;18731:4;18769:2;18758:9;18754:18;18746:26;;18818:9;18812:4;18808:20;18804:1;18793:9;18789:17;18782:47;18846:131;18972:4;18846:131;:::i;:::-;18838:139;;18565:419;;;:::o;18990:167::-;19130:19;19126:1;19118:6;19114:14;19107:43;18990:167;:::o;19163:366::-;19305:3;19326:67;19390:2;19385:3;19326:67;:::i;:::-;19319:74;;19402:93;19491:3;19402:93;:::i;:::-;19520:2;19515:3;19511:12;19504:19;;19163:366;;;:::o;19535:419::-;19701:4;19739:2;19728:9;19724:18;19716:26;;19788:9;19782:4;19778:20;19774:1;19763:9;19759:17;19752:47;19816:131;19942:4;19816:131;:::i;:::-;19808:139;;19535:419;;;:::o;19960:305::-;20100:34;20096:1;20088:6;20084:14;20077:58;20169:34;20164:2;20156:6;20152:15;20145:59;20238:19;20233:2;20225:6;20221:15;20214:44;19960:305;:::o;20271:366::-;20413:3;20434:67;20498:2;20493:3;20434:67;:::i;:::-;20427:74;;20510:93;20599:3;20510:93;:::i;:::-;20628:2;20623:3;20619:12;20612:19;;20271:366;;;:::o;20643:419::-;20809:4;20847:2;20836:9;20832:18;20824:26;;20896:9;20890:4;20886:20;20882:1;20871:9;20867:17;20860:47;20924:131;21050:4;20924:131;:::i;:::-;20916:139;;20643:419;;;:::o;21068:245::-;21208:34;21204:1;21196:6;21192:14;21185:58;21277:28;21272:2;21264:6;21260:15;21253:53;21068:245;:::o;21319:366::-;21461:3;21482:67;21546:2;21541:3;21482:67;:::i;:::-;21475:74;;21558:93;21647:3;21558:93;:::i;:::-;21676:2;21671:3;21667:12;21660:19;;21319:366;;;:::o;21691:419::-;21857:4;21895:2;21884:9;21880:18;21872:26;;21944:9;21938:4;21934:20;21930:1;21919:9;21915:17;21908:47;21972:131;22098:4;21972:131;:::i;:::-;21964:139;;21691:419;;;:::o;22116:167::-;22153:3;22176:22;22192:5;22176:22;:::i;:::-;22167:31;;22220:4;22213:5;22210:15;22207:41;;22228:18;;:::i;:::-;22207:41;22275:1;22268:5;22264:13;22257:20;;22116:167;;;:::o;22289:180::-;22337:77;22334:1;22327:88;22434:4;22431:1;22424:15;22458:4;22455:1;22448:15;22475:180;22523:77;22520:1;22513:88;22620:4;22617:1;22610:15;22644:4;22641:1;22634:15;22661:85;22706:7;22735:5;22724:16;;22661:85;;;:::o;22752:158::-;22810:9;22843:61;22861:42;22870:32;22896:5;22870:32;:::i;:::-;22861:42;:::i;:::-;22843:61;:::i;:::-;22830:74;;22752:158;;;:::o;22916:147::-;23011:45;23050:5;23011:45;:::i;:::-;23006:3;22999:58;22916:147;;:::o;23069:114::-;23136:6;23170:5;23164:12;23154:22;;23069:114;;;:::o;23189:184::-;23288:11;23322:6;23317:3;23310:19;23362:4;23357:3;23353:14;23338:29;;23189:184;;;;:::o;23379:132::-;23446:4;23469:3;23461:11;;23499:4;23494:3;23490:14;23482:22;;23379:132;;;:::o;23517:108::-;23594:24;23612:5;23594:24;:::i;:::-;23589:3;23582:37;23517:108;;:::o;23631:179::-;23700:10;23721:46;23763:3;23755:6;23721:46;:::i;:::-;23799:4;23794:3;23790:14;23776:28;;23631:179;;;;:::o;23816:113::-;23886:4;23918;23913:3;23909:14;23901:22;;23816:113;;;:::o;23965:732::-;24084:3;24113:54;24161:5;24113:54;:::i;:::-;24183:86;24262:6;24257:3;24183:86;:::i;:::-;24176:93;;24293:56;24343:5;24293:56;:::i;:::-;24372:7;24403:1;24388:284;24413:6;24410:1;24407:13;24388:284;;;24489:6;24483:13;24516:63;24575:3;24560:13;24516:63;:::i;:::-;24509:70;;24602:60;24655:6;24602:60;:::i;:::-;24592:70;;24448:224;24435:1;24432;24428:9;24423:14;;24388:284;;;24392:14;24688:3;24681:10;;24089:608;;;23965:732;;;;:::o;24703:831::-;24966:4;25004:3;24993:9;24989:19;24981:27;;25018:71;25086:1;25075:9;25071:17;25062:6;25018:71;:::i;:::-;25099:80;25175:2;25164:9;25160:18;25151:6;25099:80;:::i;:::-;25226:9;25220:4;25216:20;25211:2;25200:9;25196:18;25189:48;25254:108;25357:4;25348:6;25254:108;:::i;:::-;25246:116;;25372:72;25440:2;25429:9;25425:18;25416:6;25372:72;:::i;:::-;25454:73;25522:3;25511:9;25507:19;25498:6;25454:73;:::i;:::-;24703:831;;;;;;;;:::o;25540:194::-;25580:4;25600:20;25618:1;25600:20;:::i;:::-;25595:25;;25634:20;25652:1;25634:20;:::i;:::-;25629:25;;25678:1;25675;25671:9;25663:17;;25702:1;25696:4;25693:11;25690:37;;;25707:18;;:::i;:::-;25690:37;25540:194;;;;:::o

Swarm Source

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