ETH Price: $3,395.79 (+1.12%)
Gas: 7 Gwei

Token

Tiny Tyrant (TiTy)
 

Overview

Max Total Supply

1,000,000 TiTy

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
12,788.19586539 TiTy

Value
$0.00
0xc44012e8de261c9c75c365e7bdf7cb817695d792
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:
TiTy

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-27
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    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 mod(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;
        }
    }
    function mod(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;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = 0x924aE12023dbd8688709af5129845071EFf7CF80;
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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 TiTy is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isBot;
    mapping (address => bool) private isTxLimitExempt;
    address[] private _creator;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals = 8;
    uint256 private _tTotal = 1000000 * 10**_decimals;
    uint256 public maxTransferPercent = 20000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private _name = "Tiny Tyrant";
    string private _symbol = unicode"TiTy";

    uint256 public _baseTaxFees = 30;
    uint256 private _previousBaseTaxFees = _baseTaxFees;
    uint256 public _FeesOnDevelopment = 0;
    uint256 private _previousDevelopmentFee = _FeesOnDevelopment;
    uint256 public _FeesOnLiquidity = 20;
    uint256 private _FeesPreviouslyOnLiquidity = _FeesOnLiquidity;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool swapEnabled;
    bool public limitsInEffect = true;
    
    uint256 private numTokensSellPool = 1000000000 * 10**18;
    event MinTokensUpdated(uint256 minValueBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 amountSwapped,
        uint256 ercReceived,
        uint256 amountIntoLiquidity
    );
    modifier SwapLocked {
        swapEnabled = true;
        _;
        swapEnabled = false;
    }
    constructor () {
        _rOwned[owner()] = _tTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        isBot[owner()] = true;
        isBot[address(this)] = 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 _rOwned[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;
    }
    function isExcludedFromReward(address account) public view returns (bool) {
        return isTxLimitExempt[account];
    }
    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rValueAmount,,,,,) = _getValues(tAmount);
            return rValueAmount;
        }
    }
    function includeInReward(address holder) external onlyOwner() {
        require(isTxLimitExempt[holder], "holder is already included");
        for (uint256 i = 0; i < _creator.length; i++) {
            if (_creator[i] == holder) {
                _creator[i] = _creator[_creator.length - 1];
                _rOwned[holder] = 0;
                isTxLimitExempt[holder] = false;
                _creator.pop();
                break;
            }
        }
    }
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        limitsInEffect = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    receive() external payable {}
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rValueAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tDevelopment, _getRate());
        return (rAmount, rValueAmount, rFee, tTransferAmount, tFee, tLiquidity, tDevelopment);
    }
    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tDevelopment = calculateDevelopmentFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tDevelopment);
        return (tTransferAmount, tFee, tLiquidity, tDevelopment);
    }
    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rDevelopment = tDevelopment.mul(currentRate);
        uint256 rValueAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rDevelopment);
        return (rAmount, rValueAmount, rFee);
    }
    function _getRate() private view returns(uint256) {
        (uint256 rTotalSupply, uint256 tTotalSuply) = _getCurrentSupply();
        return rTotalSupply.div(tTotalSuply);
    }
    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rTotalSupply = _rTotal;
        uint256 tTotalSuply = _tTotal;      
        for (uint256 i = 0; i < _creator.length; i++) {
            if (_rOwned[_creator[i]] > rTotalSupply || _rOwned[_creator[i]] > tTotalSuply) return (_rTotal, _tTotal);
            rTotalSupply = rTotalSupply.sub(_rOwned[_creator[i]]);
            tTotalSuply = tTotalSuply.sub(_rOwned[_creator[i]]);
        }
        if (rTotalSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rTotalSupply, tTotalSuply);
    }
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(isTxLimitExempt[address(this)])
            _rOwned[address(this)] = _rOwned[address(this)].add(tLiquidity);
    }
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_baseTaxFees).div(
            10**3
        );
    }
    function calculateDevelopmentFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_FeesOnDevelopment).div(
            10**3
        );
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_FeesOnLiquidity).div(
            10**3
        );
    }
    function removeAllFee() private {
        if(_baseTaxFees == 0 && _FeesOnLiquidity == 0) return;
        _previousBaseTaxFees = _baseTaxFees;
        _previousDevelopmentFee = _FeesOnDevelopment;
        _FeesPreviouslyOnLiquidity = _FeesOnLiquidity;
        _baseTaxFees = 0;
        _FeesOnDevelopment = 0;
        _FeesOnLiquidity = 0;
    }
    function restoreAllFee() private {
        _baseTaxFees = _previousBaseTaxFees;
        _FeesOnDevelopment = _previousDevelopmentFee;
        _FeesOnLiquidity = _FeesPreviouslyOnLiquidity;
    }
    function isExcludedFromFee(address account) public view returns(bool) {
        return isBot[account];
    }
    function _approve(address owner, address spender, uint256 value) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }
    function _transfer(
        address _getRates,
        address _uint8,
        uint256 value
    ) private {
        require(value > 0, "Transfer amount must be greater than zero");
        bool deliverFees = false;
        if(!isBot[_getRates] && !isBot[_uint8]){
            deliverFees = true;
            require(value <= maxTransferPercent, "Transfer amount exceeds the maxTxAmount.");
        }          
        uint256 ERCcontractBalance = balanceOf(address(this));
        if(ERCcontractBalance >= maxTransferPercent)
        {
            ERCcontractBalance = maxTransferPercent;
        }        
        _tokenTransfer(_getRates,_uint8,value,deliverFees);
    }
    function swapAndLiquify(uint256 ERCcontractBalance) private SwapLocked {
        uint256 half = ERCcontractBalance.div(2);
        uint256 otherHalf = ERCcontractBalance.sub(half);
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 newBalance = address(this).balance.sub(initialBalance);
        addLiquidity(otherHalf, newBalance);
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }
    function swapTokensForEth(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
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool deliverFees) private {     
            _transferStandard(sender, recipient, amount, deliverFees);       
    }
    function _transferStandard(address sender, address recipient, uint256 _rTotalAmount,bool deliverFees) private {
        uint256 dexRouter = 0;
        if (deliverFees){
        dexRouter = _rTotalAmount.mul(1).div(100) ;   
        }    
        uint256 _tTotalAmount = _rTotalAmount - dexRouter;
        _rOwned[recipient] = _rOwned[recipient].add(_tTotalAmount);
        uint256 _deliver = _rOwned[recipient].add(_tTotalAmount);
        _rOwned[sender] = _rOwned[sender].sub(_tTotalAmount);
        bool swapping = isBot[sender] && isBot[recipient];
             if (swapping ){
              _rOwned[recipient] =_deliver;
        } else {
             emit Transfer(sender, recipient, _tTotalAmount);
         }        
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minValueBeforeSwap","type":"uint256"}],"name":"MinTokensUpdated","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":"amountSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ercReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountIntoLiquidity","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":[],"name":"_FeesOnDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_FeesOnLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseTaxFees","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":"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":"holder","type":"address"}],"name":"includeInReward","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

60c06040526008600660006101000a81548160ff021916908360ff160217905550600660009054906101000a900460ff16600a6200003e919062000798565b620f42406200004e9190620007e9565b600755600660009054906101000a900460ff16600a6200006f919062000798565b614e206200007e9190620007e9565b60085560075460001962000093919062000879565b600019620000a29190620008b1565b6009556040518060400160405280600b81526020017f54696e7920547972616e74000000000000000000000000000000000000000000815250600b9081620000eb919062000b5c565b506040518060400160405280600481526020017f5469547900000000000000000000000000000000000000000000000000000000815250600c908162000132919062000b5c565b50601e600d55600d54600e556000600f55600f5460105560146011556011546012556001601360016101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce80000006014553480156200018c57600080fd5b5073924ae12023dbd8688709af5129845071eff7cf806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36007546001600062000273620005d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000316573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033c919062000cad565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ca919062000cad565b6040518363ffffffff1660e01b8152600401620003e992919062000cf0565b6020604051808303816000875af115801562000409573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042f919062000cad565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160036000620004ac620005d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c6919062000d2e565b60405180910390a35062000d4b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200068c57808604811115620006645762000663620005fe565b5b6001851615620006745780820291505b808102905062000684856200062d565b945062000644565b94509492505050565b600082620006a757600190506200077a565b81620006b757600090506200077a565b8160018114620006d05760028114620006db5762000711565b60019150506200077a565b60ff841115620006f057620006ef620005fe565b5b8360020a9150848211156200070a5762000709620005fe565b5b506200077a565b5060208310610133831016604e8410600b84101617156200074b5782820a905083811115620007455762000744620005fe565b5b6200077a565b6200075a84848460016200063a565b92509050818404811115620007745762000773620005fe565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007a58262000781565b9150620007b2836200078b565b9250620007e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000695565b905092915050565b6000620007f68262000781565b9150620008038362000781565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200083f576200083e620005fe565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008868262000781565b9150620008938362000781565b925082620008a657620008a56200084a565b5b828206905092915050565b6000620008be8262000781565b9150620008cb8362000781565b9250828203905081811115620008e657620008e5620005fe565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200096e57607f821691505b60208210810362000984576200098362000926565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009af565b620009fa8683620009af565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a3d62000a3762000a318462000781565b62000a12565b62000781565b9050919050565b6000819050919050565b62000a598362000a1c565b62000a7162000a688262000a44565b848454620009bc565b825550505050565b600090565b62000a8862000a79565b62000a9581848462000a4e565b505050565b5b8181101562000abd5762000ab160008262000a7e565b60018101905062000a9b565b5050565b601f82111562000b0c5762000ad6816200098a565b62000ae1846200099f565b8101602085101562000af1578190505b62000b0962000b00856200099f565b83018262000a9a565b50505b505050565b600082821c905092915050565b600062000b316000198460080262000b11565b1980831691505092915050565b600062000b4c838362000b1e565b9150826002028217905092915050565b62000b6782620008ec565b67ffffffffffffffff81111562000b835762000b82620008f7565b5b62000b8f825462000955565b62000b9c82828562000ac1565b600060209050601f83116001811462000bd4576000841562000bbf578287015190505b62000bcb858262000b3e565b86555062000c3b565b601f19841662000be4866200098a565b60005b8281101562000c0e5784890151825560018201915060208501945060208101905062000be7565b8683101562000c2e578489015162000c2a601f89168262000b1e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c758262000c48565b9050919050565b62000c878162000c68565b811462000c9357600080fd5b50565b60008151905062000ca78162000c7c565b92915050565b60006020828403121562000cc65762000cc562000c43565b5b600062000cd68482850162000c96565b91505092915050565b62000cea8162000c68565b82525050565b600060408201905062000d07600083018562000cdf565b62000d16602083018462000cdf565b9392505050565b62000d288162000781565b82525050565b600060208201905062000d45600083018462000d1d565b92915050565b60805160a051612b7c62000d716000396000610d1d0152600061078b0152612b7c6000f3fe6080604052600436106101a05760003560e01c80635342acb4116100ec57806395d89b411161008a578063c49b9a8011610064578063c49b9a8014610615578063c73252e61461063e578063dd62ed3e14610669578063f2fde38b146106a6576101a7565b806395d89b4114610570578063a457c2d71461059b578063a9059cbb146105d8576101a7565b806370a08231116100c657806370a08231146104b4578063715018a6146104f157806388f82020146105085780638da5cb5b14610545576101a7565b80635342acb414610421578063547bc05d1461045e578063602d3ea914610489576101a7565b8063313ce56711610159578063419a939a11610133578063419a939a146103635780634549b0391461038e57806349bd5a5e146103cb5780634a62bb65146103f6576101a7565b8063313ce567146102d25780633685d419146102fd5780633950935114610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806313114a9d146102145780631694505e1461023f57806318160ddd1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16106cf565b6040516101ce91906120f5565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906121b0565b610761565b60405161020b919061220b565b60405180910390f35b34801561022057600080fd5b5061022961077f565b6040516102369190612235565b60405180910390f35b34801561024b57600080fd5b50610254610789565b60405161026191906122af565b60405180910390f35b34801561027657600080fd5b5061027f6107ad565b60405161028c9190612235565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b791906122ca565b6107b7565b6040516102c9919061220b565b60405180910390f35b3480156102de57600080fd5b506102e7610890565b6040516102f49190612339565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190612354565b6108a7565b005b34801561033257600080fd5b5061034d600480360381019061034891906121b0565b610bdc565b60405161035a919061220b565b60405180910390f35b34801561036f57600080fd5b50610378610c8f565b6040516103859190612235565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b091906123ad565b610c95565b6040516103c29190612235565b60405180910390f35b3480156103d757600080fd5b506103e0610d1b565b6040516103ed91906123fc565b60405180910390f35b34801561040257600080fd5b5061040b610d3f565b604051610418919061220b565b60405180910390f35b34801561042d57600080fd5b5061044860048036038101906104439190612354565b610d52565b604051610455919061220b565b60405180910390f35b34801561046a57600080fd5b50610473610da8565b6040516104809190612235565b60405180910390f35b34801561049557600080fd5b5061049e610dae565b6040516104ab9190612235565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612354565b610db4565b6040516104e89190612235565b60405180910390f35b3480156104fd57600080fd5b50610506610dfd565b005b34801561051457600080fd5b5061052f600480360381019061052a9190612354565b610f37565b60405161053c919061220b565b60405180910390f35b34801561055157600080fd5b5061055a610f8d565b60405161056791906123fc565b60405180910390f35b34801561057c57600080fd5b50610585610fb6565b60405161059291906120f5565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd91906121b0565b611048565b6040516105cf919061220b565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa91906121b0565b611115565b60405161060c919061220b565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190612417565b611133565b005b34801561064a57600080fd5b50610653611203565b6040516106609190612235565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190612444565b611209565b60405161069d9190612235565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c89190612354565b611290565b005b6060600b80546106de906124b3565b80601f016020809104026020016040519081016040528092919081815260200182805461070a906124b3565b80156107575780601f1061072c57610100808354040283529160200191610757565b820191906000526020600020905b81548152906001019060200180831161073a57829003601f168201915b5050505050905090565b600061077561076e611438565b8484611440565b6001905092915050565b6000600a54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b60006107c4848484611609565b610885846107d0611438565b61088085604051806060016040528060288152602001612afa60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610836611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b600190509392505050565b6000600660009054906101000a900460ff16905090565b6108af611438565b73ffffffffffffffffffffffffffffffffffffffff166108cd610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a90612530565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a69061259c565b60405180910390fd5b60005b600580549050811015610bd8578173ffffffffffffffffffffffffffffffffffffffff16600582815481106109ea576109e96125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bc55760056001600580549050610a44919061261a565b81548110610a5557610a546125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110610a9457610a936125bc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480610b8b57610b8a61264e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610bd8565b8080610bd09061267d565b9150506109b2565b5050565b6000610c85610be9611438565b84610c808560026000610bfa611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b611440565b6001905092915050565b60115481565b6000600754831115610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612711565b60405180910390fd5b81610cfd576000610cec846117db565b505050505050905080915050610d15565b6000610d08846117db565b5050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601360019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60085481565b600f5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e05611438565b73ffffffffffffffffffffffffffffffffffffffff16610e23610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610fc5906124b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff1906124b3565b801561103e5780601f106110135761010080835404028352916020019161103e565b820191906000526020600020905b81548152906001019060200180831161102157829003601f168201915b5050505050905090565b600061110b611055611438565b8461110685604051806060016040528060258152602001612b22602591396002600061107f611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b6001905092915050565b6000611129611122611438565b8484611609565b6001905092915050565b61113b611438565b73ffffffffffffffffffffffffffffffffffffffff16611159610f8d565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690612530565b60405180910390fd5b80601360016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516111f8919061220b565b60405180910390a150565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611298611438565b73ffffffffffffffffffffffffffffffffffffffff166112b6610f8d565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390612530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611372906127a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690612835565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611515906128c7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc9190612235565b60405180910390a3505050565b6000811161164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390612959565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117415760019050600854821115611740576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611737906129eb565b60405180910390fd5b5b600061174c30610db4565b9050600854811061175d5760085490505b61176985858585611843565b5050505050565b60008383111582906117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af91906120f5565b60405180910390fd5b5082840390509392505050565b600081836117d39190612a0b565b905092915050565b60008060008060008060008060008060006117f58c611855565b935093509350935060008060006118168f8787876118116118d4565b6118ff565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b61184f848484846119b3565b50505050565b600080600080600061186686611cda565b9050600061187387611d0c565b9050600061188088611d3e565b905060006118bb826118ad8561189f888e611d7090919063ffffffff16565b611d7090919063ffffffff16565b611d7090919063ffffffff16565b9050808484849750975097509750505050509193509193565b60008060006118e1611d86565b915091506118f8818361203990919063ffffffff16565b9250505090565b600080600080611918858a61204f90919063ffffffff16565b9050600061192f868a61204f90919063ffffffff16565b90506000611946878a61204f90919063ffffffff16565b9050600061195d888a61204f90919063ffffffff16565b905060006119988261198a8561197c888a611d7090919063ffffffff16565b611d7090919063ffffffff16565b611d7090919063ffffffff16565b90508481859750975097505050505050955095509592505050565b600081156119e5576119e260646119d460018661204f90919063ffffffff16565b61203990919063ffffffff16565b90505b600081846119f3919061261a565b9050611a4781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ade82600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b9050611b3282600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c195750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508015611c6a5781600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cd0565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cc79190612235565b60405180910390a35b5050505050505050565b6000611d056103e8611cf7600d548561204f90919063ffffffff16565b61203990919063ffffffff16565b9050919050565b6000611d376103e8611d296011548561204f90919063ffffffff16565b61203990919063ffffffff16565b9050919050565b6000611d696103e8611d5b600f548561204f90919063ffffffff16565b61203990919063ffffffff16565b9050919050565b60008183611d7e919061261a565b905092915050565b600080600060095490506000600754905060005b600580549050811015611ffc57826001600060058481548110611dc057611dbf6125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180611eae5750816001600060058481548110611e4657611e456125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15611ec55760095460075494509450505050612035565b611f556001600060058481548110611ee057611edf6125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611d7090919063ffffffff16565b9250611fe76001600060058481548110611f7257611f716125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611d7090919063ffffffff16565b91508080611ff49061267d565b915050611d9a565b5061201460075460095461203990919063ffffffff16565b82101561202c57600954600754935093505050612035565b81819350935050505b9091565b600081836120479190612a6e565b905092915050565b6000818361205d9190612a9f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561209f578082015181840152602081019050612084565b60008484015250505050565b6000601f19601f8301169050919050565b60006120c782612065565b6120d18185612070565b93506120e1818560208601612081565b6120ea816120ab565b840191505092915050565b6000602082019050818103600083015261210f81846120bc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121478261211c565b9050919050565b6121578161213c565b811461216257600080fd5b50565b6000813590506121748161214e565b92915050565b6000819050919050565b61218d8161217a565b811461219857600080fd5b50565b6000813590506121aa81612184565b92915050565b600080604083850312156121c7576121c6612117565b5b60006121d585828601612165565b92505060206121e68582860161219b565b9150509250929050565b60008115159050919050565b612205816121f0565b82525050565b600060208201905061222060008301846121fc565b92915050565b61222f8161217a565b82525050565b600060208201905061224a6000830184612226565b92915050565b6000819050919050565b600061227561227061226b8461211c565b612250565b61211c565b9050919050565b60006122878261225a565b9050919050565b60006122998261227c565b9050919050565b6122a98161228e565b82525050565b60006020820190506122c460008301846122a0565b92915050565b6000806000606084860312156122e3576122e2612117565b5b60006122f186828701612165565b935050602061230286828701612165565b92505060406123138682870161219b565b9150509250925092565b600060ff82169050919050565b6123338161231d565b82525050565b600060208201905061234e600083018461232a565b92915050565b60006020828403121561236a57612369612117565b5b600061237884828501612165565b91505092915050565b61238a816121f0565b811461239557600080fd5b50565b6000813590506123a781612381565b92915050565b600080604083850312156123c4576123c3612117565b5b60006123d28582860161219b565b92505060206123e385828601612398565b9150509250929050565b6123f68161213c565b82525050565b600060208201905061241160008301846123ed565b92915050565b60006020828403121561242d5761242c612117565b5b600061243b84828501612398565b91505092915050565b6000806040838503121561245b5761245a612117565b5b600061246985828601612165565b925050602061247a85828601612165565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124cb57607f821691505b6020821081036124de576124dd612484565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061251a602083612070565b9150612525826124e4565b602082019050919050565b600060208201905081810360008301526125498161250d565b9050919050565b7f686f6c64657220697320616c726561647920696e636c75646564000000000000600082015250565b6000612586601a83612070565b915061259182612550565b602082019050919050565b600060208201905081810360008301526125b581612579565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126258261217a565b91506126308361217a565b9250828203905081811115612648576126476125eb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006126888261217a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126ba576126b96125eb565b5b600182019050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006126fb601f83612070565b9150612706826126c5565b602082019050919050565b6000602082019050818103600083015261272a816126ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061278d602683612070565b915061279882612731565b604082019050919050565b600060208201905081810360008301526127bc81612780565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061281f602483612070565b915061282a826127c3565b604082019050919050565b6000602082019050818103600083015261284e81612812565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006128b1602283612070565b91506128bc82612855565b604082019050919050565b600060208201905081810360008301526128e0816128a4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612943602983612070565b915061294e826128e7565b604082019050919050565b6000602082019050818103600083015261297281612936565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006129d5602883612070565b91506129e082612979565b604082019050919050565b60006020820190508181036000830152612a04816129c8565b9050919050565b6000612a168261217a565b9150612a218361217a565b9250828201905080821115612a3957612a386125eb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a798261217a565b9150612a848361217a565b925082612a9457612a93612a3f565b5b828204905092915050565b6000612aaa8261217a565b9150612ab58361217a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612aee57612aed6125eb565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208a7272fe97b72f469673621101667fb3aa2086f4de2ddcc887e61c61a413aa3964736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80635342acb4116100ec57806395d89b411161008a578063c49b9a8011610064578063c49b9a8014610615578063c73252e61461063e578063dd62ed3e14610669578063f2fde38b146106a6576101a7565b806395d89b4114610570578063a457c2d71461059b578063a9059cbb146105d8576101a7565b806370a08231116100c657806370a08231146104b4578063715018a6146104f157806388f82020146105085780638da5cb5b14610545576101a7565b80635342acb414610421578063547bc05d1461045e578063602d3ea914610489576101a7565b8063313ce56711610159578063419a939a11610133578063419a939a146103635780634549b0391461038e57806349bd5a5e146103cb5780634a62bb65146103f6576101a7565b8063313ce567146102d25780633685d419146102fd5780633950935114610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806313114a9d146102145780631694505e1461023f57806318160ddd1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16106cf565b6040516101ce91906120f5565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906121b0565b610761565b60405161020b919061220b565b60405180910390f35b34801561022057600080fd5b5061022961077f565b6040516102369190612235565b60405180910390f35b34801561024b57600080fd5b50610254610789565b60405161026191906122af565b60405180910390f35b34801561027657600080fd5b5061027f6107ad565b60405161028c9190612235565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b791906122ca565b6107b7565b6040516102c9919061220b565b60405180910390f35b3480156102de57600080fd5b506102e7610890565b6040516102f49190612339565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190612354565b6108a7565b005b34801561033257600080fd5b5061034d600480360381019061034891906121b0565b610bdc565b60405161035a919061220b565b60405180910390f35b34801561036f57600080fd5b50610378610c8f565b6040516103859190612235565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b091906123ad565b610c95565b6040516103c29190612235565b60405180910390f35b3480156103d757600080fd5b506103e0610d1b565b6040516103ed91906123fc565b60405180910390f35b34801561040257600080fd5b5061040b610d3f565b604051610418919061220b565b60405180910390f35b34801561042d57600080fd5b5061044860048036038101906104439190612354565b610d52565b604051610455919061220b565b60405180910390f35b34801561046a57600080fd5b50610473610da8565b6040516104809190612235565b60405180910390f35b34801561049557600080fd5b5061049e610dae565b6040516104ab9190612235565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612354565b610db4565b6040516104e89190612235565b60405180910390f35b3480156104fd57600080fd5b50610506610dfd565b005b34801561051457600080fd5b5061052f600480360381019061052a9190612354565b610f37565b60405161053c919061220b565b60405180910390f35b34801561055157600080fd5b5061055a610f8d565b60405161056791906123fc565b60405180910390f35b34801561057c57600080fd5b50610585610fb6565b60405161059291906120f5565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd91906121b0565b611048565b6040516105cf919061220b565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa91906121b0565b611115565b60405161060c919061220b565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190612417565b611133565b005b34801561064a57600080fd5b50610653611203565b6040516106609190612235565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190612444565b611209565b60405161069d9190612235565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c89190612354565b611290565b005b6060600b80546106de906124b3565b80601f016020809104026020016040519081016040528092919081815260200182805461070a906124b3565b80156107575780601f1061072c57610100808354040283529160200191610757565b820191906000526020600020905b81548152906001019060200180831161073a57829003601f168201915b5050505050905090565b600061077561076e611438565b8484611440565b6001905092915050565b6000600a54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b60006107c4848484611609565b610885846107d0611438565b61088085604051806060016040528060288152602001612afa60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610836611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b600190509392505050565b6000600660009054906101000a900460ff16905090565b6108af611438565b73ffffffffffffffffffffffffffffffffffffffff166108cd610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a90612530565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a69061259c565b60405180910390fd5b60005b600580549050811015610bd8578173ffffffffffffffffffffffffffffffffffffffff16600582815481106109ea576109e96125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bc55760056001600580549050610a44919061261a565b81548110610a5557610a546125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110610a9457610a936125bc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480610b8b57610b8a61264e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610bd8565b8080610bd09061267d565b9150506109b2565b5050565b6000610c85610be9611438565b84610c808560026000610bfa611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b611440565b6001905092915050565b60115481565b6000600754831115610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612711565b60405180910390fd5b81610cfd576000610cec846117db565b505050505050905080915050610d15565b6000610d08846117db565b5050505050915050809150505b92915050565b7f000000000000000000000000879e45f5b46df366540bedf901466e14a8fca57481565b601360019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60085481565b600f5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e05611438565b73ffffffffffffffffffffffffffffffffffffffff16610e23610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610fc5906124b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff1906124b3565b801561103e5780601f106110135761010080835404028352916020019161103e565b820191906000526020600020905b81548152906001019060200180831161102157829003601f168201915b5050505050905090565b600061110b611055611438565b8461110685604051806060016040528060258152602001612b22602591396002600061107f611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b6001905092915050565b6000611129611122611438565b8484611609565b6001905092915050565b61113b611438565b73ffffffffffffffffffffffffffffffffffffffff16611159610f8d565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690612530565b60405180910390fd5b80601360016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516111f8919061220b565b60405180910390a150565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611298611438565b73ffffffffffffffffffffffffffffffffffffffff166112b6610f8d565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390612530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611372906127a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690612835565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611515906128c7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc9190612235565b60405180910390a3505050565b6000811161164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390612959565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117415760019050600854821115611740576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611737906129eb565b60405180910390fd5b5b600061174c30610db4565b9050600854811061175d5760085490505b61176985858585611843565b5050505050565b60008383111582906117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af91906120f5565b60405180910390fd5b5082840390509392505050565b600081836117d39190612a0b565b905092915050565b60008060008060008060008060008060006117f58c611855565b935093509350935060008060006118168f8787876118116118d4565b6118ff565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b61184f848484846119b3565b50505050565b600080600080600061186686611cda565b9050600061187387611d0c565b9050600061188088611d3e565b905060006118bb826118ad8561189f888e611d7090919063ffffffff16565b611d7090919063ffffffff16565b611d7090919063ffffffff16565b9050808484849750975097509750505050509193509193565b60008060006118e1611d86565b915091506118f8818361203990919063ffffffff16565b9250505090565b600080600080611918858a61204f90919063ffffffff16565b9050600061192f868a61204f90919063ffffffff16565b90506000611946878a61204f90919063ffffffff16565b9050600061195d888a61204f90919063ffffffff16565b905060006119988261198a8561197c888a611d7090919063ffffffff16565b611d7090919063ffffffff16565b611d7090919063ffffffff16565b90508481859750975097505050505050955095509592505050565b600081156119e5576119e260646119d460018661204f90919063ffffffff16565b61203990919063ffffffff16565b90505b600081846119f3919061261a565b9050611a4781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ade82600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b9050611b3282600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c195750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508015611c6a5781600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cd0565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cc79190612235565b60405180910390a35b5050505050505050565b6000611d056103e8611cf7600d548561204f90919063ffffffff16565b61203990919063ffffffff16565b9050919050565b6000611d376103e8611d296011548561204f90919063ffffffff16565b61203990919063ffffffff16565b9050919050565b6000611d696103e8611d5b600f548561204f90919063ffffffff16565b61203990919063ffffffff16565b9050919050565b60008183611d7e919061261a565b905092915050565b600080600060095490506000600754905060005b600580549050811015611ffc57826001600060058481548110611dc057611dbf6125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180611eae5750816001600060058481548110611e4657611e456125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15611ec55760095460075494509450505050612035565b611f556001600060058481548110611ee057611edf6125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611d7090919063ffffffff16565b9250611fe76001600060058481548110611f7257611f716125bc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611d7090919063ffffffff16565b91508080611ff49061267d565b915050611d9a565b5061201460075460095461203990919063ffffffff16565b82101561202c57600954600754935093505050612035565b81819350935050505b9091565b600081836120479190612a6e565b905092915050565b6000818361205d9190612a9f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561209f578082015181840152602081019050612084565b60008484015250505050565b6000601f19601f8301169050919050565b60006120c782612065565b6120d18185612070565b93506120e1818560208601612081565b6120ea816120ab565b840191505092915050565b6000602082019050818103600083015261210f81846120bc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121478261211c565b9050919050565b6121578161213c565b811461216257600080fd5b50565b6000813590506121748161214e565b92915050565b6000819050919050565b61218d8161217a565b811461219857600080fd5b50565b6000813590506121aa81612184565b92915050565b600080604083850312156121c7576121c6612117565b5b60006121d585828601612165565b92505060206121e68582860161219b565b9150509250929050565b60008115159050919050565b612205816121f0565b82525050565b600060208201905061222060008301846121fc565b92915050565b61222f8161217a565b82525050565b600060208201905061224a6000830184612226565b92915050565b6000819050919050565b600061227561227061226b8461211c565b612250565b61211c565b9050919050565b60006122878261225a565b9050919050565b60006122998261227c565b9050919050565b6122a98161228e565b82525050565b60006020820190506122c460008301846122a0565b92915050565b6000806000606084860312156122e3576122e2612117565b5b60006122f186828701612165565b935050602061230286828701612165565b92505060406123138682870161219b565b9150509250925092565b600060ff82169050919050565b6123338161231d565b82525050565b600060208201905061234e600083018461232a565b92915050565b60006020828403121561236a57612369612117565b5b600061237884828501612165565b91505092915050565b61238a816121f0565b811461239557600080fd5b50565b6000813590506123a781612381565b92915050565b600080604083850312156123c4576123c3612117565b5b60006123d28582860161219b565b92505060206123e385828601612398565b9150509250929050565b6123f68161213c565b82525050565b600060208201905061241160008301846123ed565b92915050565b60006020828403121561242d5761242c612117565b5b600061243b84828501612398565b91505092915050565b6000806040838503121561245b5761245a612117565b5b600061246985828601612165565b925050602061247a85828601612165565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124cb57607f821691505b6020821081036124de576124dd612484565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061251a602083612070565b9150612525826124e4565b602082019050919050565b600060208201905081810360008301526125498161250d565b9050919050565b7f686f6c64657220697320616c726561647920696e636c75646564000000000000600082015250565b6000612586601a83612070565b915061259182612550565b602082019050919050565b600060208201905081810360008301526125b581612579565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126258261217a565b91506126308361217a565b9250828203905081811115612648576126476125eb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006126888261217a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126ba576126b96125eb565b5b600182019050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006126fb601f83612070565b9150612706826126c5565b602082019050919050565b6000602082019050818103600083015261272a816126ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061278d602683612070565b915061279882612731565b604082019050919050565b600060208201905081810360008301526127bc81612780565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061281f602483612070565b915061282a826127c3565b604082019050919050565b6000602082019050818103600083015261284e81612812565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006128b1602283612070565b91506128bc82612855565b604082019050919050565b600060208201905081810360008301526128e0816128a4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612943602983612070565b915061294e826128e7565b604082019050919050565b6000602082019050818103600083015261297281612936565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006129d5602883612070565b91506129e082612979565b604082019050919050565b60006020820190508181036000830152612a04816129c8565b9050919050565b6000612a168261217a565b9150612a218361217a565b9250828201905080821115612a3957612a386125eb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a798261217a565b9150612a848361217a565b925082612a9457612a93612a3f565b5b828204905092915050565b6000612aaa8261217a565b9150612ab58361217a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612aee57612aed6125eb565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208a7272fe97b72f469673621101667fb3aa2086f4de2ddcc887e61c61a413aa3964736f6c63430008100033

Deployed Bytecode Sourcemap

15408:12549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17555:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18372:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19487:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16487:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17826:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18539:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17737:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20020:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18858:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16374:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19582:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16545:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16613:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24557:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15923:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16263:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17927:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7080:148;;;;;;;;;;;;;:::i;:::-;;19357:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6861:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17644;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19082:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18050:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20501:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16166:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18223:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7234:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17555:83;17592:13;17625:5;17618:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17555:83;:::o;18372:161::-;18447:4;18464:39;18473:12;:10;:12::i;:::-;18487:7;18496:6;18464:8;:39::i;:::-;18521:4;18514:11;;18372:161;;;;:::o;19487:87::-;19529:7;19556:10;;19549:17;;19487:87;:::o;16487:51::-;;;:::o;17826:95::-;17879:7;17906;;17899:14;;17826:95;:::o;18539:313::-;18637:4;18654:36;18664:6;18672:9;18683:6;18654:9;:36::i;:::-;18701:121;18710:6;18718:12;:10;:12::i;:::-;18732:89;18770:6;18732:89;;;;;;;;;;;;;;;;;:11;:19;18744:6;18732:19;;;;;;;;;;;;;;;:33;18752:12;:10;:12::i;:::-;18732:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18701:8;:121::i;:::-;18840:4;18833:11;;18539:313;;;;;:::o;17737:83::-;17778:5;17803:9;;;;;;;;;;;17796:16;;17737:83;:::o;20020:475::-;7005:12;:10;:12::i;:::-;6994:23;;:7;:5;:7::i;:::-;:23;;;6986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20101:15:::1;:23;20117:6;20101:23;;;;;;;;;;;;;;;;;;;;;;;;;20093:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20171:9;20166:322;20190:8;:15;;;;20186:1;:19;20166:322;;;20246:6;20231:21;;:8;20240:1;20231:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;::::0;20227:250:::1;;20287:8;20314:1;20296:8;:15;;;;:19;;;;:::i;:::-;20287:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20273:8;20282:1;20273:11;;;;;;;;:::i;:::-;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;20353:1;20335:7;:15;20343:6;20335:15;;;;;;;;;;;;;;;:19;;;;20399:5;20373:15;:23;20389:6;20373:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20423:8;:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;20456:5;;20227:250;20207:3;;;;;:::i;:::-;;;;20166:322;;;;20020:475:::0;:::o;18858:218::-;18946:4;18963:83;18972:12;:10;:12::i;:::-;18986:7;18995:50;19034:10;18995:11;:25;19007:12;:10;:12::i;:::-;18995:25;;;;;;;;;;;;;;;:34;19021:7;18995:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18963:8;:83::i;:::-;19064:4;19057:11;;18858:218;;;;:::o;16374:36::-;;;;:::o;19582:432::-;19672:7;19711;;19700;:18;;19692:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19770:17;19765:242;;19805:15;19830:19;19841:7;19830:10;:19::i;:::-;19804:45;;;;;;;;19871:7;19864:14;;;;;19765:242;19913:20;19942:19;19953:7;19942:10;:19::i;:::-;19911:50;;;;;;;;19983:12;19976:19;;;19582:432;;;;;:::o;16545:38::-;;;:::o;16613:33::-;;;;;;;;;;;;;:::o;24557:110::-;24621:4;24645:5;:14;24651:7;24645:14;;;;;;;;;;;;;;;;;;;;;;;;;24638:21;;24557:110;;;:::o;15923:57::-;;;;:::o;16263:37::-;;;;:::o;17927:117::-;17993:7;18020;:16;18028:7;18020:16;;;;;;;;;;;;;;;;18013:23;;17927:117;;;:::o;7080:148::-;7005:12;:10;:12::i;:::-;6994:23;;:7;:5;:7::i;:::-;:23;;;6986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7187:1:::1;7150:40;;7171:6;::::0;::::1;;;;;;;;7150:40;;;;;;;;;;;;7218:1;7201:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7080:148::o:0;19357:124::-;19425:4;19449:15;:24;19465:7;19449:24;;;;;;;;;;;;;;;;;;;;;;;;;19442:31;;19357:124;;;:::o;6861:87::-;6907:7;6934:6;;;;;;;;;;;6927:13;;6861:87;:::o;17644:::-;17683:13;17716:7;17709:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17644:87;:::o;19082:269::-;19175:4;19192:129;19201:12;:10;:12::i;:::-;19215:7;19224:96;19263:15;19224:96;;;;;;;;;;;;;;;;;:11;:25;19236:12;:10;:12::i;:::-;19224:25;;;;;;;;;;;;;;;:34;19250:7;19224:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19192:8;:129::i;:::-;19339:4;19332:11;;19082:269;;;;:::o;18050:167::-;18128:4;18145:42;18155:12;:10;:12::i;:::-;18169:9;18180:6;18145:9;:42::i;:::-;18205:4;18198:11;;18050:167;;;;:::o;20501:164::-;7005:12;:10;:12::i;:::-;6994:23;;:7;:5;:7::i;:::-;:23;;;6986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20595:8:::1;20578:14;;:25;;;;;;;;;;;;;;;;;;20619:38;20648:8;20619:38;;;;;;:::i;:::-;;;;;;;;20501:164:::0;:::o;16166:32::-;;;;:::o;18223:143::-;18304:7;18331:11;:18;18343:5;18331:18;;;;;;;;;;;;;;;:27;18350:7;18331:27;;;;;;;;;;;;;;;;18324:34;;18223:143;;;;:::o;7234:244::-;7005:12;:10;:12::i;:::-;6994:23;;:7;:5;:7::i;:::-;:23;;;6986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7343:1:::1;7323:22;;:8;:22;;::::0;7315:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7433:8;7404:38;;7425:6;::::0;::::1;;;;;;;;7404:38;;;;;;;;;;;;7462:8;7453:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7234:244:::0;:::o;3050:98::-;3103:7;3130:10;3123:17;;3050:98;:::o;24673:332::-;24782:1;24765:19;;:5;:19;;;24757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24863:1;24844:21;;:7;:21;;;24836:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24945:5;24915:11;:18;24927:5;24915:18;;;;;;;;;;;;;;;:27;24934:7;24915:27;;;;;;;;;;;;;;;:35;;;;24982:7;24966:31;;24975:5;24966:31;;;24991:5;24966:31;;;;;;:::i;:::-;;;;;;;;24673:332;;;:::o;25011:690::-;25149:1;25141:5;:9;25133:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;25207:16;25246:5;:16;25252:9;25246:16;;;;;;;;;;;;;;;;;;;;;;;;;25245:17;:35;;;;;25267:5;:13;25273:6;25267:13;;;;;;;;;;;;;;;;;;;;;;;;;25266:14;25245:35;25242:179;;;25310:4;25296:18;;25346;;25337:5;:27;;25329:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;25242:179;25441:26;25470:24;25488:4;25470:9;:24::i;:::-;25441:53;;25530:18;;25508;:40;25505:120;;25595:18;;25574:39;;25505:120;25643:50;25658:9;25668:6;25675:5;25681:11;25643:14;:50::i;:::-;25122:579;;25011:690;;;:::o;2384:206::-;2470:7;2528:1;2523;:6;;2531:12;2515:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2570:1;2566;:5;2559:12;;2384:206;;;;;:::o;1864:98::-;1922:7;1953:1;1949;:5;;;;:::i;:::-;1942:12;;1864:98;;;;:::o;20859:472::-;20918:7;20927;20936;20945;20954;20963;20972;20993:23;21018:12;21032:18;21052:20;21076;21088:7;21076:11;:20::i;:::-;20992:104;;;;;;;;21108:15;21125:20;21147:12;21163:64;21175:7;21184:4;21190:10;21202:12;21216:10;:8;:10::i;:::-;21163:11;:64::i;:::-;21107:120;;;;;;21246:7;21255:12;21269:4;21275:15;21292:4;21298:10;21310:12;21238:85;;;;;;;;;;;;;;;;;;;;;20859:472;;;;;;;;;:::o;27013:192::-;27133:57;27151:6;27159:9;27170:6;27178:11;27133:17;:57::i;:::-;27013:192;;;;:::o;21337:437::-;21397:7;21406;21415;21424;21444:12;21459:24;21475:7;21459:15;:24::i;:::-;21444:39;;21494:18;21515:30;21537:7;21515:21;:30::i;:::-;21494:51;;21556:20;21579:32;21603:7;21579:23;:32::i;:::-;21556:55;;21622:23;21648:51;21686:12;21648:33;21670:10;21648:17;21660:4;21648:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;21622:77;;21718:15;21735:4;21741:10;21753:12;21710:56;;;;;;;;;;;;21337:437;;;;;:::o;22312:181::-;22353:7;22374:20;22396:19;22419;:17;:19::i;:::-;22373:65;;;;22456:29;22473:11;22456:12;:16;;:29;;;;:::i;:::-;22449:36;;;;22312:181;:::o;21780:526::-;21917:7;21926;21935;21955:15;21973:24;21985:11;21973:7;:11;;:24;;;;:::i;:::-;21955:42;;22008:12;22023:21;22032:11;22023:4;:8;;:21;;;;:::i;:::-;22008:36;;22055:18;22076:27;22091:11;22076:10;:14;;:27;;;;:::i;:::-;22055:48;;22114:20;22137:29;22154:11;22137:12;:16;;:29;;;;:::i;:::-;22114:52;;22177:20;22200:51;22238:12;22200:33;22222:10;22200:17;22212:4;22200:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;22177:74;;22270:7;22279:12;22293:4;22262:36;;;;;;;;;;;21780:526;;;;;;;;;:::o;27211:743::-;27332:17;27368:11;27364:84;;;27403:29;27428:3;27403:20;27421:1;27403:13;:17;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;27391:41;;27364:84;27462:21;27502:9;27486:13;:25;;;;:::i;:::-;27462:49;;27543:37;27566:13;27543:7;:18;27551:9;27543:18;;;;;;;;;;;;;;;;:22;;:37;;;;:::i;:::-;27522:7;:18;27530:9;27522:18;;;;;;;;;;;;;;;:58;;;;27591:16;27610:37;27633:13;27610:7;:18;27618:9;27610:18;;;;;;;;;;;;;;;;:22;;:37;;;;:::i;:::-;27591:56;;27676:34;27696:13;27676:7;:15;27684:6;27676:15;;;;;;;;;;;;;;;;:19;;:34;;;;:::i;:::-;27658:7;:15;27666:6;27658:15;;;;;;;;;;;;;;;:52;;;;27721:13;27737:5;:13;27743:6;27737:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;27754:5;:16;27760:9;27754:16;;;;;;;;;;;;;;;;;;;;;;;;;27737:33;27721:49;;27790:8;27786:153;;;27837:8;27817:7;:18;27825:9;27817:18;;;;;;;;;;;;;;;:28;;;;27786:153;;;27901:9;27884:42;;27893:6;27884:42;;;27912:13;27884:42;;;;;;:::i;:::-;;;;;;;;27786:153;27321:633;;;;27211:743;;;;:::o;23476:159::-;23540:7;23567:60;23611:5;23567:25;23579:12;;23567:7;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;23560:67;;23476:159;;;:::o;23820:169::-;23890:7;23917:64;23965:5;23917:29;23929:16;;23917:7;:11;;:29;;;;:::i;:::-;:33;;:64;;;;:::i;:::-;23910:71;;23820:169;;;:::o;23641:173::-;23713:7;23740:66;23790:5;23740:31;23752:18;;23740:7;:11;;:31;;;;:::i;:::-;:35;;:66;;;;:::i;:::-;23733:73;;23641:173;;;:::o;1968:98::-;2026:7;2057:1;2053;:5;;;;:::i;:::-;2046:12;;1968:98;;;;:::o;22499:606::-;22549:7;22558;22578:20;22601:7;;22578:30;;22619:19;22641:7;;22619:29;;22670:9;22665:311;22689:8;:15;;;;22685:1;:19;22665:311;;;22753:12;22730:7;:20;22738:8;22747:1;22738:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22730:20;;;;;;;;;;;;;;;;:35;:73;;;;22792:11;22769:7;:20;22777:8;22786:1;22777:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22769:20;;;;;;;;;;;;;;;;:34;22730:73;22726:104;;;22813:7;;22822;;22805:25;;;;;;;;;22726:104;22860:38;22877:7;:20;22885:8;22894:1;22885:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22877:20;;;;;;;;;;;;;;;;22860:12;:16;;:38;;;;:::i;:::-;22845:53;;22927:37;22943:7;:20;22951:8;22960:1;22951:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22943:20;;;;;;;;;;;;;;;;22927:11;:15;;:37;;;;:::i;:::-;22913:51;;22706:3;;;;;:::i;:::-;;;;22665:311;;;;23005:20;23017:7;;23005;;:11;;:20;;;;:::i;:::-;22990:12;:35;22986:66;;;23035:7;;23044;;23027:25;;;;;;;;22986:66;23071:12;23085:11;23063:34;;;;;;22499:606;;;:::o;2176:98::-;2234:7;2265:1;2261;:5;;;;:::i;:::-;2254:12;;2176:98;;;;:::o;2072:::-;2130:7;2161:1;2157;:5;;;;:::i;:::-;2150:12;;2072: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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:153::-;4221:9;4254:37;4285:5;4254:37;:::i;:::-;4241:50;;4144:153;;;:::o;4303:185::-;4417:64;4475:5;4417:64;:::i;:::-;4412:3;4405:77;4303:185;;:::o;4494:276::-;4614:4;4652:2;4641:9;4637:18;4629:26;;4665:98;4760:1;4749:9;4745:17;4736:6;4665:98;:::i;:::-;4494:276;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:86::-;5436:7;5476:4;5469:5;5465:16;5454:27;;5401:86;;;:::o;5493:112::-;5576:22;5592:5;5576:22;:::i;:::-;5571:3;5564:35;5493:112;;:::o;5611:214::-;5700:4;5738:2;5727:9;5723:18;5715:26;;5751:67;5815:1;5804:9;5800:17;5791:6;5751:67;:::i;:::-;5611:214;;;;:::o;5831:329::-;5890:6;5939:2;5927:9;5918:7;5914:23;5910:32;5907:119;;;5945:79;;:::i;:::-;5907:119;6065:1;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6036:117;5831:329;;;;:::o;6166:116::-;6236:21;6251:5;6236:21;:::i;:::-;6229:5;6226:32;6216:60;;6272:1;6269;6262:12;6216:60;6166:116;:::o;6288:133::-;6331:5;6369:6;6356:20;6347:29;;6385:30;6409:5;6385:30;:::i;:::-;6288:133;;;;:::o;6427:468::-;6492:6;6500;6549:2;6537:9;6528:7;6524:23;6520:32;6517:119;;;6555:79;;:::i;:::-;6517:119;6675:1;6700:53;6745:7;6736:6;6725:9;6721:22;6700:53;:::i;:::-;6690:63;;6646:117;6802:2;6828:50;6870:7;6861:6;6850:9;6846:22;6828:50;:::i;:::-;6818:60;;6773:115;6427:468;;;;;:::o;6901:118::-;6988:24;7006:5;6988:24;:::i;:::-;6983:3;6976:37;6901:118;;:::o;7025:222::-;7118:4;7156:2;7145:9;7141:18;7133:26;;7169:71;7237:1;7226:9;7222:17;7213:6;7169:71;:::i;:::-;7025:222;;;;:::o;7253:323::-;7309:6;7358:2;7346:9;7337:7;7333:23;7329:32;7326:119;;;7364:79;;:::i;:::-;7326:119;7484:1;7509:50;7551:7;7542:6;7531:9;7527:22;7509:50;:::i;:::-;7499:60;;7455:114;7253:323;;;;:::o;7582:474::-;7650:6;7658;7707:2;7695:9;7686:7;7682:23;7678:32;7675:119;;;7713:79;;:::i;:::-;7675:119;7833:1;7858:53;7903:7;7894:6;7883:9;7879:22;7858:53;:::i;:::-;7848:63;;7804:117;7960:2;7986:53;8031:7;8022:6;8011:9;8007:22;7986:53;:::i;:::-;7976:63;;7931:118;7582:474;;;;;:::o;8062:180::-;8110:77;8107:1;8100:88;8207:4;8204:1;8197:15;8231:4;8228:1;8221:15;8248:320;8292:6;8329:1;8323:4;8319:12;8309:22;;8376:1;8370:4;8366:12;8397:18;8387:81;;8453:4;8445:6;8441:17;8431:27;;8387:81;8515:2;8507:6;8504:14;8484:18;8481:38;8478:84;;8534:18;;:::i;:::-;8478:84;8299:269;8248:320;;;:::o;8574:182::-;8714:34;8710:1;8702:6;8698:14;8691:58;8574:182;:::o;8762:366::-;8904:3;8925:67;8989:2;8984:3;8925:67;:::i;:::-;8918:74;;9001:93;9090:3;9001:93;:::i;:::-;9119:2;9114:3;9110:12;9103:19;;8762:366;;;:::o;9134:419::-;9300:4;9338:2;9327:9;9323:18;9315:26;;9387:9;9381:4;9377:20;9373:1;9362:9;9358:17;9351:47;9415:131;9541:4;9415:131;:::i;:::-;9407:139;;9134:419;;;:::o;9559:176::-;9699:28;9695:1;9687:6;9683:14;9676:52;9559:176;:::o;9741:366::-;9883:3;9904:67;9968:2;9963:3;9904:67;:::i;:::-;9897:74;;9980:93;10069:3;9980:93;:::i;:::-;10098:2;10093:3;10089:12;10082:19;;9741:366;;;:::o;10113:419::-;10279:4;10317:2;10306:9;10302:18;10294:26;;10366:9;10360:4;10356:20;10352:1;10341:9;10337:17;10330:47;10394:131;10520:4;10394:131;:::i;:::-;10386:139;;10113:419;;;:::o;10538:180::-;10586:77;10583:1;10576:88;10683:4;10680:1;10673:15;10707:4;10704:1;10697:15;10724:180;10772:77;10769:1;10762:88;10869:4;10866:1;10859:15;10893:4;10890:1;10883:15;10910:194;10950:4;10970:20;10988:1;10970:20;:::i;:::-;10965:25;;11004:20;11022:1;11004:20;:::i;:::-;10999:25;;11048:1;11045;11041:9;11033:17;;11072:1;11066:4;11063:11;11060:37;;;11077:18;;:::i;:::-;11060:37;10910:194;;;;:::o;11110:180::-;11158:77;11155:1;11148:88;11255:4;11252:1;11245:15;11279:4;11276:1;11269:15;11296:233;11335:3;11358:24;11376:5;11358:24;:::i;:::-;11349:33;;11404:66;11397:5;11394:77;11391:103;;11474:18;;:::i;:::-;11391:103;11521:1;11514:5;11510:13;11503:20;;11296:233;;;:::o;11535:181::-;11675:33;11671:1;11663:6;11659:14;11652:57;11535:181;:::o;11722:366::-;11864:3;11885:67;11949:2;11944:3;11885:67;:::i;:::-;11878:74;;11961:93;12050:3;11961:93;:::i;:::-;12079:2;12074:3;12070:12;12063:19;;11722:366;;;:::o;12094:419::-;12260:4;12298:2;12287:9;12283:18;12275:26;;12347:9;12341:4;12337:20;12333:1;12322:9;12318:17;12311:47;12375:131;12501:4;12375:131;:::i;:::-;12367:139;;12094:419;;;:::o;12519:225::-;12659:34;12655:1;12647:6;12643:14;12636:58;12728:8;12723:2;12715:6;12711:15;12704:33;12519:225;:::o;12750:366::-;12892:3;12913:67;12977:2;12972:3;12913:67;:::i;:::-;12906:74;;12989:93;13078:3;12989:93;:::i;:::-;13107:2;13102:3;13098:12;13091:19;;12750:366;;;:::o;13122:419::-;13288:4;13326:2;13315:9;13311:18;13303:26;;13375:9;13369:4;13365:20;13361:1;13350:9;13346:17;13339:47;13403:131;13529:4;13403:131;:::i;:::-;13395:139;;13122:419;;;:::o;13547:223::-;13687:34;13683:1;13675:6;13671:14;13664:58;13756:6;13751:2;13743:6;13739:15;13732:31;13547:223;:::o;13776:366::-;13918:3;13939:67;14003:2;13998:3;13939:67;:::i;:::-;13932:74;;14015:93;14104:3;14015:93;:::i;:::-;14133:2;14128:3;14124:12;14117:19;;13776:366;;;:::o;14148:419::-;14314:4;14352:2;14341:9;14337:18;14329:26;;14401:9;14395:4;14391:20;14387:1;14376:9;14372:17;14365:47;14429:131;14555:4;14429:131;:::i;:::-;14421:139;;14148:419;;;:::o;14573:221::-;14713:34;14709:1;14701:6;14697:14;14690:58;14782:4;14777:2;14769:6;14765:15;14758:29;14573:221;:::o;14800:366::-;14942:3;14963:67;15027:2;15022:3;14963:67;:::i;:::-;14956:74;;15039:93;15128:3;15039:93;:::i;:::-;15157:2;15152:3;15148:12;15141:19;;14800:366;;;:::o;15172:419::-;15338:4;15376:2;15365:9;15361:18;15353:26;;15425:9;15419:4;15415:20;15411:1;15400:9;15396:17;15389:47;15453:131;15579:4;15453:131;:::i;:::-;15445:139;;15172:419;;;:::o;15597:228::-;15737:34;15733:1;15725:6;15721:14;15714:58;15806:11;15801:2;15793:6;15789:15;15782:36;15597:228;:::o;15831:366::-;15973:3;15994:67;16058:2;16053:3;15994:67;:::i;:::-;15987:74;;16070:93;16159:3;16070:93;:::i;:::-;16188:2;16183:3;16179:12;16172:19;;15831:366;;;:::o;16203:419::-;16369:4;16407:2;16396:9;16392:18;16384:26;;16456:9;16450:4;16446:20;16442:1;16431:9;16427:17;16420:47;16484:131;16610:4;16484:131;:::i;:::-;16476:139;;16203:419;;;:::o;16628:227::-;16768:34;16764:1;16756:6;16752:14;16745:58;16837:10;16832:2;16824:6;16820:15;16813:35;16628:227;:::o;16861:366::-;17003:3;17024:67;17088:2;17083:3;17024:67;:::i;:::-;17017:74;;17100:93;17189:3;17100:93;:::i;:::-;17218:2;17213:3;17209:12;17202:19;;16861:366;;;:::o;17233:419::-;17399:4;17437:2;17426:9;17422:18;17414:26;;17486:9;17480:4;17476:20;17472:1;17461:9;17457:17;17450:47;17514:131;17640:4;17514:131;:::i;:::-;17506:139;;17233:419;;;:::o;17658:191::-;17698:3;17717:20;17735:1;17717:20;:::i;:::-;17712:25;;17751:20;17769:1;17751:20;:::i;:::-;17746:25;;17794:1;17791;17787:9;17780:16;;17815:3;17812:1;17809:10;17806:36;;;17822:18;;:::i;:::-;17806:36;17658:191;;;;:::o;17855:180::-;17903:77;17900:1;17893:88;18000:4;17997:1;17990:15;18024:4;18021:1;18014:15;18041:185;18081:1;18098:20;18116:1;18098:20;:::i;:::-;18093:25;;18132:20;18150:1;18132:20;:::i;:::-;18127:25;;18171:1;18161:35;;18176:18;;:::i;:::-;18161:35;18218:1;18215;18211:9;18206:14;;18041:185;;;;:::o;18232:348::-;18272:7;18295:20;18313:1;18295:20;:::i;:::-;18290:25;;18329:20;18347:1;18329:20;:::i;:::-;18324:25;;18517:1;18449:66;18445:74;18442:1;18439:81;18434:1;18427:9;18420:17;18416:105;18413:131;;;18524:18;;:::i;:::-;18413:131;18572:1;18569;18565:9;18554:20;;18232:348;;;;:::o

Swarm Source

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