ETH Price: $3,129.12 (+0.90%)

Token

Happy Land (HPL)
 

Overview

Max Total Supply

10,000,000,000 HPL

Holders

5

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
benyy.eth
Balance
46,799,475.366886836 HPL

Value
$0.00
0xd6c4FDf4B8BcbA11cCb8Fb8af0F684e320AF3C1e
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:
HappyLand

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-04
*/

/*
HappyLand Gaming 
https://happyland.finance
Join Our Discord: https://discord.gg/bXgsSykzby
Our Telegram: https://t.me/HappyLand_HPL
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;
pragma experimental ABIEncoderV2;


interface IERC20 {

    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
 
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
 
library Address {
 
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
 
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
 
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
 
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
 
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
 
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
 
contract Ownable is Context {
    address payable private _owner;
    address payable private _previousOwner;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor () {
        _owner = payable(msg.sender);
        emit OwnershipTransferred(address(0), _owner);
    }
 
    function owner() public view 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 = payable(address(0));
    }
 
    function transferOwnership(address payable newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = payable(address(0));
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until defined days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
        _previousOwner = payable(address(0));
    }
}

interface uniSwapFactory {
    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 IPancakePair {
    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 IPancakeRouter01 {
    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 uniSwapRouter02 is IPancakeRouter01 {
    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;
}

library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        uniSwapRouter02 uniSwapRouter = uniSwapRouter02(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniSwapRouter.WETH();

        // make the swap
        uniSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            address(this),
            block.timestamp + 360
        );
    }

    function swapETHForTokens(
        address routerAddress,
        address recipient,
        uint256 ethAmount
    ) internal {
        uniSwapRouter02 uniSwapRouter = uniSwapRouter02(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniSwapRouter.WETH();
        path[1] = address(this);

        // make the swap
        uniSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of BNB
            path,
            address(recipient),
            block.timestamp + 360
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        uniSwapRouter02 uniSwapRouter = uniSwapRouter02(routerAddress);

        // add the liquidity
        uniSwapRouter.addLiquidityETH{value : ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp + 360
        );
    }
}
 
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }
 
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    modifier isHuman() {
        require(tx.origin == msg.sender, "sorry humans only");
        _;
    }
}
contract HappyLand is  Context, IERC20, Ownable, ReentrancyGuard {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e10 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;

    string private constant _name = "Happy Land";
    string private constant _symbol = "HPL";
    uint8 private constant _decimals = 9;

    uniSwapRouter02 public uniSwapRouter;
    address public  uniSwapPair;

    bool private _antiwhale = true; //once switched on, can never be switched off.
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event antiWaleUpdate(bool enabled);

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _feeAddrWallet1 = payable(0x008ad8Ae5da929c76C49DCfE3E598B5D4686C554);
        _feeAddrWallet2 = payable(0x008ad8Ae5da929c76C49DCfE3E598B5D4686C554);
        _rOwned[_msgSender()] = _rTotal;

        uniSwapRouter02 _pancakeRouter = uniSwapRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pancake pair for this new token
        uniSwapPair = uniSwapFactory(_pancakeRouter.factory())
        .createPair(address(this), _pancakeRouter.WETH());

        // set the rest of the contract variables
        uniSwapRouter = _pancakeRouter;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;

        emit Transfer(address(0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_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 setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        _feeAddr1 = 3;
        _feeAddr2 = 3;

        if (!_antiwhale) {
            require(to != uniSwapPair, "ERC20: antiwhale is not enabled yet");
        }

        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (
                from == uniSwapPair &&
                to != address(uniSwapRouter) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (
                to == uniSwapPair &&
                from != address(uniSwapRouter) &&
                !_isExcludedFromFee[from]
            ) {
                _feeAddr1 = 3;
                _feeAddr2 = 3;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniSwapPair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _tokenTransfer(from, to, amount);
    }

    function antiWhaleStatus(bool _state) public onlyOwner {
        _antiwhale = _state;
        emit antiWaleUpdate(_state);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniSwapRouter.WETH();
        _approve(address(this), address(uniSwapRouter), tokenAmount);
        uniSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet2.transfer(amount);
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniSwapRouter02 _uniswapV2Router = uniSwapRouter02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniSwapRouter = _uniswapV2Router;
        _approve(address(this), address(uniSwapRouter), _tTotal);
        uniSwapPair = uniSwapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniSwapRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 20000000000 * 10 ** 9;
        tradingOpen = true;
        IERC20(uniSwapPair).approve(
            address(uniSwapRouter),
            type(uint256).max
        );
    }

    function nonosquare(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"antiWaleUpdate","type":"event"},{"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":"bool","name":"_state","type":"bool"}],"name":"antiWhaleStatus","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"nonosquare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniSwapRouter","outputs":[{"internalType":"contract uniSwapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a678ac7230489e800006000196200041f565b6200002890600019620003f9565b600a556011805464ffffff00ff60a01b1916600160a01b179055678ac7230489e800006012553480156200005b57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600355600e8054728ad8ae5da929c76c49dcfe3e598b5d4686c5546001600160a01b03199182168117909255600f80549091169091179055600a5460046000620000e43390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200015b57600080fd5b505afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001969190620003c7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001df57600080fd5b505afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a9190620003c7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200026357600080fd5b505af115801562000278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029e9190620003c7565b601180546001600160a01b03199081166001600160a01b039384161790915560108054909116918316919091179055600160076000620002e66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155600e54821684528284208054861682179055600f54909116835291208054909216179055620003573390565b6001600160a01b031673767fe9edc9e0df98e07454847909b5e959d7ca0e6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620003b891815260200190565b60405180910390a35062000442565b600060208284031215620003da57600080fd5b81516001600160a01b0381168114620003f257600080fd5b9392505050565b6000828210156200041a57634e487b7160e01b600052601160045260246000fd5b500390565b6000826200043d57634e487b7160e01b600052601260045260246000fd5b500690565b611e7080620004526000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063c3c8cd801161006f578063c3c8cd80146103c9578063c9567bf9146103de578063d837df05146103f3578063dd46706414610413578063dd62ed3e14610433578063f2fde38b1461047957600080fd5b8063715018a6146103205780638da5cb5b1461033557806395d89b4114610353578063a69df4b51461037f578063a9059cbb14610394578063b6c52324146103b457600080fd5b8063313ce56711610108578063313ce567146102575780635932ead1146102735780635d01ff3d146102935780636b79ad04146102cb5780636fc3eaec146102eb57806370a082311461030057600080fd5b806306fdde031461015b578063095ea7b3146101a057806318160ddd146101d05780631b3f71ae146101f557806323b872dd14610217578063273123b71461023757600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600a81526912185c1c1e4813185b9960b21b60208201525b6040516101979190611c07565b60405180910390f35b3480156101ac57600080fd5b506101c06101bb366004611a8e565b610499565b6040519015158152602001610197565b3480156101dc57600080fd5b50678ac7230489e800005b604051908152602001610197565b34801561020157600080fd5b50610215610210366004611aba565b6104b0565b005b34801561022357600080fd5b506101c0610232366004611a4d565b61054f565b34801561024357600080fd5b506102156102523660046119da565b6105b8565b34801561026357600080fd5b5060405160098152602001610197565b34801561027f57600080fd5b5061021561028e366004611b86565b610603565b34801561029f57600080fd5b506010546102b3906001600160a01b031681565b6040516001600160a01b039091168152602001610197565b3480156102d757600080fd5b506102156102e6366004611b86565b61064b565b3480156102f757600080fd5b506102156106cd565b34801561030c57600080fd5b506101e761031b3660046119da565b6106fa565b34801561032c57600080fd5b5061021561071c565b34801561034157600080fd5b506000546001600160a01b03166102b3565b34801561035f57600080fd5b5060408051808201909152600381526212141360ea1b602082015261018a565b34801561038b57600080fd5b5061021561077e565b3480156103a057600080fd5b506101c06103af366004611a8e565b610895565b3480156103c057600080fd5b506002546101e7565b3480156103d557600080fd5b506102156108a2565b3480156103ea57600080fd5b506102156108d8565b3480156103ff57600080fd5b506011546102b3906001600160a01b031681565b34801561041f57600080fd5b5061021561042e366004611bc0565b610c9b565b34801561043f57600080fd5b506101e761044e366004611a14565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561048557600080fd5b506102156104943660046119da565b610d20565b60006104a6338484610df8565b5060015b92915050565b6000546001600160a01b031633146104e35760405162461bcd60e51b81526004016104da90611c5c565b60405180910390fd5b60005b815181101561054b5760016008600084848151811061050757610507611da3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061054381611d72565b9150506104e6565b5050565b600061055c848484610f1c565b6105ae84336105a985604051806060016040528060288152602001611df3602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906112e4565b610df8565b5060019392505050565b6000546001600160a01b031633146105e25760405162461bcd60e51b81526004016104da90611c5c565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b0316331461062d5760405162461bcd60e51b81526004016104da90611c5c565b60118054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146106755760405162461bcd60e51b81526004016104da90611c5c565b60118054821515600160a01b0260ff60a01b199091161790556040517f05665953dcd96697af2fd47f7b4acf930f3936c777e229cd6f98db953ef336ea906106c290831515815260200190565b60405180910390a150565b600e546001600160a01b0316336001600160a01b0316146106ed57600080fd5b476106f78161131e565b50565b6001600160a01b0381166000908152600460205260408120546104aa90611358565b6000546001600160a01b031633146107465760405162461bcd60e51b81526004016104da90611c5c565b600080546040516001600160a01b0390911690600080516020611e1b833981519152908390a3600080546001600160a01b0319169055565b6001546001600160a01b031633146107e45760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016104da565b60025442116108435760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b60648201526084016104da565b600154600080546040516001600160a01b039384169390911691600080516020611e1b83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006104a6338484610f1c565b600e546001600160a01b0316336001600160a01b0316146108c257600080fd5b60006108cd306106fa565b90506106f7816113dc565b6000546001600160a01b031633146109025760405162461bcd60e51b81526004016104da90611c5c565b601154600160a81b900460ff161561095c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104da565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109983082678ac7230489e80000610df8565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d157600080fd5b505afa1580156109e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0991906119f7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5157600080fd5b505afa158015610a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8991906119f7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0991906119f7565b601180546001600160a01b0319166001600160a01b039283161790556010541663f305d7194730610b39816106fa565b600080610b4e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610bb157600080fd5b505af1158015610bc5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bea9190611bd9565b5050601180546801158e460913d0000060125563ffff00ff60a81b198116630101000160a81b1790915560105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610c6357600080fd5b505af1158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054b9190611ba3565b6000546001600160a01b03163314610cc55760405162461bcd60e51b81526004016104da90611c5c565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055610cf48142611d02565b600255600080546040516001600160a01b0390911690600080516020611e1b833981519152908390a350565b6000546001600160a01b03163314610d4a5760405162461bcd60e51b81526004016104da90611c5c565b6001600160a01b038116610daf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104da565b600080546040516001600160a01b0380851693921691600080516020611e1b83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e5a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104da565b6001600160a01b038216610ebb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104da565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104da565b6001600160a01b038216610fe25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104da565b600081116110445760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104da565b6003600c819055600d55601154600160a01b900460ff166110c9576011546001600160a01b03838116911614156110c95760405162461bcd60e51b815260206004820152602360248201527f45524332303a20616e74697768616c65206973206e6f7420656e61626c6564206044820152621e595d60ea1b60648201526084016104da565b6000546001600160a01b038481169116148015906110f557506000546001600160a01b03838116911614155b156112d4576001600160a01b03831660009081526008602052604090205460ff1615801561113c57506001600160a01b03821660009081526008602052604090205460ff16155b61114557600080fd5b6011546001600160a01b03848116911614801561117057506010546001600160a01b03838116911614155b801561119557506001600160a01b03821660009081526007602052604090205460ff16155b80156111aa5750601154600160c01b900460ff165b15611207576012548111156111be57600080fd5b6001600160a01b03821660009081526009602052604090205442116111e257600080fd5b6111ed42601e611d02565b6001600160a01b0383166000908152600960205260409020555b6011546001600160a01b03838116911614801561123257506010546001600160a01b03848116911614155b801561125757506001600160a01b03831660009081526007602052604090205460ff16155b15611267576003600c819055600d555b6000611272306106fa565b601154909150600160b01b900460ff1615801561129d57506011546001600160a01b03858116911614155b80156112b25750601154600160b81b900460ff165b156112d2576112c0816113dc565b4780156112d0576112d04761131e565b505b505b6112df838383611565565b505050565b600081848411156113085760405162461bcd60e51b81526004016104da9190611c07565b5060006113158486611d5b565b95945050505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561054b573d6000803e3d6000fd5b6000600a548211156113bf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104da565b60006113c9611570565b90506113d58382611593565b9392505050565b6011805460ff60b01b1916600160b01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061142457611424611da3565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561147857600080fd5b505afa15801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b091906119f7565b816001815181106114c3576114c3611da3565b6001600160a01b0392831660209182029290920101526010546114e99130911684610df8565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790611522908590600090869030904290600401611c91565b600060405180830381600087803b15801561153c57600080fd5b505af1158015611550573d6000803e3d6000fd5b50506011805460ff60b01b1916905550505050565b6112df8383836115d5565b600080600061157d6116cc565b909250905061158c8282611593565b9250505090565b60006113d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061170c565b6000806000806000806115e78761173a565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506116199087611797565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461164890866117d9565b6001600160a01b03891660009081526004602052604090205561166a81611838565b6116748483611882565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116b991815260200190565b60405180910390a3505050505050505050565b600a546000908190678ac7230489e800006116e78282611593565b821015611703575050600a5492678ac7230489e8000092509050565b90939092509050565b6000818361172d5760405162461bcd60e51b81526004016104da9190611c07565b5060006113158486611d1a565b60008060008060008060008060006117578a600c54600d546118a6565b9250925092506000611767611570565b9050600080600061177a8e8787876118fb565b919e509c509a509598509396509194505050505091939550919395565b60006113d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e4565b6000806117e68385611d02565b9050838110156113d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104da565b6000611842611570565b90506000611850838361194b565b3060009081526004602052604090205490915061186d90826117d9565b30600090815260046020526040902055505050565b600a5461188f9083611797565b600a55600b5461189f90826117d9565b600b555050565b60008080806118c060646118ba898961194b565b90611593565b905060006118d360646118ba8a8961194b565b905060006118eb826118e58b86611797565b90611797565b9992985090965090945050505050565b600080808061190a888661194b565b90506000611918888761194b565b90506000611926888861194b565b90506000611938826118e58686611797565b939b939a50919850919650505050505050565b60008261195a575060006104aa565b60006119668385611d3c565b9050826119738583611d1a565b146113d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104da565b80356119d581611dcf565b919050565b6000602082840312156119ec57600080fd5b81356113d581611dcf565b600060208284031215611a0957600080fd5b81516113d581611dcf565b60008060408385031215611a2757600080fd5b8235611a3281611dcf565b91506020830135611a4281611dcf565b809150509250929050565b600080600060608486031215611a6257600080fd5b8335611a6d81611dcf565b92506020840135611a7d81611dcf565b929592945050506040919091013590565b60008060408385031215611aa157600080fd5b8235611aac81611dcf565b946020939093013593505050565b60006020808385031215611acd57600080fd5b823567ffffffffffffffff80821115611ae557600080fd5b818501915085601f830112611af957600080fd5b813581811115611b0b57611b0b611db9565b8060051b604051601f19603f83011681018181108582111715611b3057611b30611db9565b604052828152858101935084860182860187018a1015611b4f57600080fd5b600095505b83861015611b7957611b65816119ca565b855260019590950194938601938601611b54565b5098975050505050505050565b600060208284031215611b9857600080fd5b81356113d581611de4565b600060208284031215611bb557600080fd5b81516113d581611de4565b600060208284031215611bd257600080fd5b5035919050565b600080600060608486031215611bee57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611c3457858101830151858201604001528201611c18565b81811115611c46576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ce15784516001600160a01b031683529383019391830191600101611cbc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611d1557611d15611d8d565b500190565b600082611d3757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611d5657611d56611d8d565b500290565b600082821015611d6d57611d6d611d8d565b500390565b6000600019821415611d8657611d86611d8d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106f757600080fd5b80151581146106f757600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220ac8e9212a0898c74e88f2e9a69686e54e006e101fb485f050edc2ba461418e9064736f6c63430008070033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063c3c8cd801161006f578063c3c8cd80146103c9578063c9567bf9146103de578063d837df05146103f3578063dd46706414610413578063dd62ed3e14610433578063f2fde38b1461047957600080fd5b8063715018a6146103205780638da5cb5b1461033557806395d89b4114610353578063a69df4b51461037f578063a9059cbb14610394578063b6c52324146103b457600080fd5b8063313ce56711610108578063313ce567146102575780635932ead1146102735780635d01ff3d146102935780636b79ad04146102cb5780636fc3eaec146102eb57806370a082311461030057600080fd5b806306fdde031461015b578063095ea7b3146101a057806318160ddd146101d05780631b3f71ae146101f557806323b872dd14610217578063273123b71461023757600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600a81526912185c1c1e4813185b9960b21b60208201525b6040516101979190611c07565b60405180910390f35b3480156101ac57600080fd5b506101c06101bb366004611a8e565b610499565b6040519015158152602001610197565b3480156101dc57600080fd5b50678ac7230489e800005b604051908152602001610197565b34801561020157600080fd5b50610215610210366004611aba565b6104b0565b005b34801561022357600080fd5b506101c0610232366004611a4d565b61054f565b34801561024357600080fd5b506102156102523660046119da565b6105b8565b34801561026357600080fd5b5060405160098152602001610197565b34801561027f57600080fd5b5061021561028e366004611b86565b610603565b34801561029f57600080fd5b506010546102b3906001600160a01b031681565b6040516001600160a01b039091168152602001610197565b3480156102d757600080fd5b506102156102e6366004611b86565b61064b565b3480156102f757600080fd5b506102156106cd565b34801561030c57600080fd5b506101e761031b3660046119da565b6106fa565b34801561032c57600080fd5b5061021561071c565b34801561034157600080fd5b506000546001600160a01b03166102b3565b34801561035f57600080fd5b5060408051808201909152600381526212141360ea1b602082015261018a565b34801561038b57600080fd5b5061021561077e565b3480156103a057600080fd5b506101c06103af366004611a8e565b610895565b3480156103c057600080fd5b506002546101e7565b3480156103d557600080fd5b506102156108a2565b3480156103ea57600080fd5b506102156108d8565b3480156103ff57600080fd5b506011546102b3906001600160a01b031681565b34801561041f57600080fd5b5061021561042e366004611bc0565b610c9b565b34801561043f57600080fd5b506101e761044e366004611a14565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561048557600080fd5b506102156104943660046119da565b610d20565b60006104a6338484610df8565b5060015b92915050565b6000546001600160a01b031633146104e35760405162461bcd60e51b81526004016104da90611c5c565b60405180910390fd5b60005b815181101561054b5760016008600084848151811061050757610507611da3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061054381611d72565b9150506104e6565b5050565b600061055c848484610f1c565b6105ae84336105a985604051806060016040528060288152602001611df3602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906112e4565b610df8565b5060019392505050565b6000546001600160a01b031633146105e25760405162461bcd60e51b81526004016104da90611c5c565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b0316331461062d5760405162461bcd60e51b81526004016104da90611c5c565b60118054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146106755760405162461bcd60e51b81526004016104da90611c5c565b60118054821515600160a01b0260ff60a01b199091161790556040517f05665953dcd96697af2fd47f7b4acf930f3936c777e229cd6f98db953ef336ea906106c290831515815260200190565b60405180910390a150565b600e546001600160a01b0316336001600160a01b0316146106ed57600080fd5b476106f78161131e565b50565b6001600160a01b0381166000908152600460205260408120546104aa90611358565b6000546001600160a01b031633146107465760405162461bcd60e51b81526004016104da90611c5c565b600080546040516001600160a01b0390911690600080516020611e1b833981519152908390a3600080546001600160a01b0319169055565b6001546001600160a01b031633146107e45760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016104da565b60025442116108435760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b60648201526084016104da565b600154600080546040516001600160a01b039384169390911691600080516020611e1b83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006104a6338484610f1c565b600e546001600160a01b0316336001600160a01b0316146108c257600080fd5b60006108cd306106fa565b90506106f7816113dc565b6000546001600160a01b031633146109025760405162461bcd60e51b81526004016104da90611c5c565b601154600160a81b900460ff161561095c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104da565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109983082678ac7230489e80000610df8565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d157600080fd5b505afa1580156109e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0991906119f7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5157600080fd5b505afa158015610a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8991906119f7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0991906119f7565b601180546001600160a01b0319166001600160a01b039283161790556010541663f305d7194730610b39816106fa565b600080610b4e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610bb157600080fd5b505af1158015610bc5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bea9190611bd9565b5050601180546801158e460913d0000060125563ffff00ff60a81b198116630101000160a81b1790915560105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610c6357600080fd5b505af1158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054b9190611ba3565b6000546001600160a01b03163314610cc55760405162461bcd60e51b81526004016104da90611c5c565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055610cf48142611d02565b600255600080546040516001600160a01b0390911690600080516020611e1b833981519152908390a350565b6000546001600160a01b03163314610d4a5760405162461bcd60e51b81526004016104da90611c5c565b6001600160a01b038116610daf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104da565b600080546040516001600160a01b0380851693921691600080516020611e1b83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e5a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104da565b6001600160a01b038216610ebb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104da565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104da565b6001600160a01b038216610fe25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104da565b600081116110445760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104da565b6003600c819055600d55601154600160a01b900460ff166110c9576011546001600160a01b03838116911614156110c95760405162461bcd60e51b815260206004820152602360248201527f45524332303a20616e74697768616c65206973206e6f7420656e61626c6564206044820152621e595d60ea1b60648201526084016104da565b6000546001600160a01b038481169116148015906110f557506000546001600160a01b03838116911614155b156112d4576001600160a01b03831660009081526008602052604090205460ff1615801561113c57506001600160a01b03821660009081526008602052604090205460ff16155b61114557600080fd5b6011546001600160a01b03848116911614801561117057506010546001600160a01b03838116911614155b801561119557506001600160a01b03821660009081526007602052604090205460ff16155b80156111aa5750601154600160c01b900460ff165b15611207576012548111156111be57600080fd5b6001600160a01b03821660009081526009602052604090205442116111e257600080fd5b6111ed42601e611d02565b6001600160a01b0383166000908152600960205260409020555b6011546001600160a01b03838116911614801561123257506010546001600160a01b03848116911614155b801561125757506001600160a01b03831660009081526007602052604090205460ff16155b15611267576003600c819055600d555b6000611272306106fa565b601154909150600160b01b900460ff1615801561129d57506011546001600160a01b03858116911614155b80156112b25750601154600160b81b900460ff165b156112d2576112c0816113dc565b4780156112d0576112d04761131e565b505b505b6112df838383611565565b505050565b600081848411156113085760405162461bcd60e51b81526004016104da9190611c07565b5060006113158486611d5b565b95945050505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561054b573d6000803e3d6000fd5b6000600a548211156113bf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104da565b60006113c9611570565b90506113d58382611593565b9392505050565b6011805460ff60b01b1916600160b01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061142457611424611da3565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561147857600080fd5b505afa15801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b091906119f7565b816001815181106114c3576114c3611da3565b6001600160a01b0392831660209182029290920101526010546114e99130911684610df8565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790611522908590600090869030904290600401611c91565b600060405180830381600087803b15801561153c57600080fd5b505af1158015611550573d6000803e3d6000fd5b50506011805460ff60b01b1916905550505050565b6112df8383836115d5565b600080600061157d6116cc565b909250905061158c8282611593565b9250505090565b60006113d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061170c565b6000806000806000806115e78761173a565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506116199087611797565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461164890866117d9565b6001600160a01b03891660009081526004602052604090205561166a81611838565b6116748483611882565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116b991815260200190565b60405180910390a3505050505050505050565b600a546000908190678ac7230489e800006116e78282611593565b821015611703575050600a5492678ac7230489e8000092509050565b90939092509050565b6000818361172d5760405162461bcd60e51b81526004016104da9190611c07565b5060006113158486611d1a565b60008060008060008060008060006117578a600c54600d546118a6565b9250925092506000611767611570565b9050600080600061177a8e8787876118fb565b919e509c509a509598509396509194505050505091939550919395565b60006113d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e4565b6000806117e68385611d02565b9050838110156113d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104da565b6000611842611570565b90506000611850838361194b565b3060009081526004602052604090205490915061186d90826117d9565b30600090815260046020526040902055505050565b600a5461188f9083611797565b600a55600b5461189f90826117d9565b600b555050565b60008080806118c060646118ba898961194b565b90611593565b905060006118d360646118ba8a8961194b565b905060006118eb826118e58b86611797565b90611797565b9992985090965090945050505050565b600080808061190a888661194b565b90506000611918888761194b565b90506000611926888861194b565b90506000611938826118e58686611797565b939b939a50919850919650505050505050565b60008261195a575060006104aa565b60006119668385611d3c565b9050826119738583611d1a565b146113d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104da565b80356119d581611dcf565b919050565b6000602082840312156119ec57600080fd5b81356113d581611dcf565b600060208284031215611a0957600080fd5b81516113d581611dcf565b60008060408385031215611a2757600080fd5b8235611a3281611dcf565b91506020830135611a4281611dcf565b809150509250929050565b600080600060608486031215611a6257600080fd5b8335611a6d81611dcf565b92506020840135611a7d81611dcf565b929592945050506040919091013590565b60008060408385031215611aa157600080fd5b8235611aac81611dcf565b946020939093013593505050565b60006020808385031215611acd57600080fd5b823567ffffffffffffffff80821115611ae557600080fd5b818501915085601f830112611af957600080fd5b813581811115611b0b57611b0b611db9565b8060051b604051601f19603f83011681018181108582111715611b3057611b30611db9565b604052828152858101935084860182860187018a1015611b4f57600080fd5b600095505b83861015611b7957611b65816119ca565b855260019590950194938601938601611b54565b5098975050505050505050565b600060208284031215611b9857600080fd5b81356113d581611de4565b600060208284031215611bb557600080fd5b81516113d581611de4565b600060208284031215611bd257600080fd5b5035919050565b600080600060608486031215611bee57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611c3457858101830151858201604001528201611c18565b81811115611c46576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ce15784516001600160a01b031683529383019391830191600101611cbc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611d1557611d15611d8d565b500190565b600082611d3757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611d5657611d56611d8d565b500290565b600082821015611d6d57611d6d611d8d565b500390565b6000600019821415611d8657611d86611d8d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106f757600080fd5b80151581146106f757600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220ac8e9212a0898c74e88f2e9a69686e54e006e101fb485f050edc2ba461418e9064736f6c63430008070033

Deployed Bytecode Sourcemap

18607:12286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20996:83;;;;;;;;;;-1:-1:-1;21066:5:0;;;;;;;;;;;;-1:-1:-1;;;21066:5:0;;;;20996:83;;;;;;;:::i;:::-;;;;;;;;21921:193;;;;;;;;;;-1:-1:-1;21921:193:0;;;;;:::i;:::-;;:::i;:::-;;;5797:14:1;;5790:22;5772:41;;5760:2;5745:18;21921:193:0;5632:187:1;21273:95:0;;;;;;;;;;-1:-1:-1;19123:12:0;21273:95;;;12335:25:1;;;12323:2;12308:18;21273:95:0;12189:177:1;26836:170:0;;;;;;;;;;-1:-1:-1;26836:170:0;;;;;:::i;:::-;;:::i;:::-;;22122:446;;;;;;;;;;-1:-1:-1;22122:446:0;;;;;:::i;:::-;;:::i;27014:88::-;;;;;;;;;;-1:-1:-1;27014:88:0;;;;;:::i;:::-;;:::i;21182:83::-;;;;;;;;;;-1:-1:-1;21182:83:0;;19523:1;13498:36:1;;13486:2;13471:18;21182:83:0;13356:184:1;22576:101:0;;;;;;;;;;-1:-1:-1;22576:101:0;;;;;:::i;:::-;;:::i;19533:36::-;;;;;;;;;;-1:-1:-1;19533:36:0;;;;-1:-1:-1;;;;;19533:36:0;;;;;;-1:-1:-1;;;;;4388:32:1;;;4370:51;;4358:2;4343:18;19533:36:0;4224:203:1;25131:131:0;;;;;;;;;;-1:-1:-1;25131:131:0;;;;;:::i;:::-;;:::i;28530:194::-;;;;;;;;;;;;;:::i;21376:138::-;;;;;;;;;;-1:-1:-1;21376:138:0;;;;;:::i;:::-;;:::i;6714:157::-;;;;;;;;;;;;;:::i;6498:79::-;;;;;;;;;;-1:-1:-1;6536:7:0;6563:6;-1:-1:-1;;;;;6563:6:0;6498:79;;21087:87;;;;;;;;;;-1:-1:-1;21159:7:0;;;;;;;;;;;;-1:-1:-1;;;21159:7:0;;;;21087:87;;7612:358;;;;;;;;;;;;;:::i;21522:199::-;;;;;;;;;;-1:-1:-1;21522:199:0;;;;;:::i;:::-;;:::i;7140:89::-;;;;;;;;;;-1:-1:-1;7212:9:0;;7140:89;;28327:195;;;;;;;;;;;;;:::i;25860:968::-;;;;;;;;;;;;;:::i;19576:27::-;;;;;;;;;;-1:-1:-1;19576:27:0;;;;-1:-1:-1;;;;;19576:27:0;;;7305:235;;;;;;;;;;-1:-1:-1;7305:235:0;;;;;:::i;:::-;;:::i;21729:184::-;;;;;;;;;;-1:-1:-1;21729:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;21878:18:0;;;21846:7;21878:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21729:184;6880:252;;;;;;;;;;-1:-1:-1;6880:252:0;;;;;:::i;:::-;;:::i;21921:193::-;22023:4;22045:39;2864:10;22068:7;22077:6;22045:8;:39::i;:::-;-1:-1:-1;22102:4:0;21921:193;;;;;:::o;26836:170::-;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;;;;;;;;;26913:9:::1;26908:91;26932:5;:12;26928:1;:16;26908:91;;;26983:4;26966;:14;26971:5;26977:1;26971:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26966:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26966:14:0;:21;;-1:-1:-1;;26966:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26946:3;::::1;::::0;::::1;:::i;:::-;;;;26908:91;;;;26836:170:::0;:::o;22122:446::-;22254:4;22271:36;22281:6;22289:9;22300:6;22271:9;:36::i;:::-;22318:220;22341:6;2864:10;22389:138;22445:6;22389:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22389:19:0;;;;;;:11;:19;;;;;;;;2864:10;22389:33;;;;;;;;;;:37;:138::i;:::-;22318:8;:220::i;:::-;-1:-1:-1;22556:4:0;22122:446;;;;;:::o;27014:88::-;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27074:12:0::1;27089:5;27074:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;27074:20:0::1;::::0;;27014:88::o;22576:101::-;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;22646:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;22646:23:0::1;-1:-1:-1::0;;;;22646:23:0;;::::1;::::0;;;::::1;::::0;;22576:101::o;25131:131::-;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;25197:10:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;25197:19:0::1;-1:-1:-1::0;;;;25197:19:0;;::::1;;::::0;;25232:22:::1;::::0;::::1;::::0;::::1;::::0;25210:6;5797:14:1;5790:22;5772:41;;5760:2;5745:18;;5632:187;25232:22:0::1;;;;;;;;25131:131:::0;:::o;28530:194::-;28596:15;;-1:-1:-1;;;;;28596:15:0;2864:10;-1:-1:-1;;;;;28580:31:0;;28572:40;;;;;;28652:21;28684:32;28652:21;28684:12;:32::i;:::-;28561:163;28530:194::o;21376:138::-;-1:-1:-1;;;;;21489:16:0;;21442:7;21489:16;;;:7;:16;;;;;;21469:37;;:19;:37::i;6714:157::-;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;6821:1:::1;6805:6:::0;;6784:40:::1;::::0;-1:-1:-1;;;;;6805:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6784:40:0;6821:1;;6784:40:::1;6860:1;6835:28:::0;;-1:-1:-1;;;;;;6835:28:0::1;::::0;;6714:157::o;7612:358::-;7664:14;;-1:-1:-1;;;;;7664:14:0;7682:10;7664:28;7656:76;;;;-1:-1:-1;;;7656:76:0;;11987:2:1;7656:76:0;;;11969:21:1;12026:2;12006:18;;;11999:30;12065:34;12045:18;;;12038:62;-1:-1:-1;;;12116:18:1;;;12109:33;12159:19;;7656:76:0;11785:399:1;7656:76:0;7769:9;;7751:15;:27;7743:78;;;;-1:-1:-1;;;7743:78:0;;7264:2:1;7743:78:0;;;7246:21:1;7303:2;7283:18;;;7276:30;7342:34;7322:18;;;7315:62;-1:-1:-1;;;7393:18:1;;;7386:35;7438:19;;7743:78:0;7062:401:1;7743:78:0;7866:14;;;7858:6;;7837:44;;-1:-1:-1;;;;;7866:14:0;;;;7858:6;;;;-1:-1:-1;;;;;;;;;;;7837:44:0;;7901:14;;;;7892:23;;-1:-1:-1;;;;;;7892:23:0;;;-1:-1:-1;;;;;7901:14:0;;7892:23;;;;7926:36;;;7612:358::o;21522:199::-;21627:4;21649:42;2864:10;21673:9;21684:6;21649:9;:42::i;28327:195::-;28393:15;;-1:-1:-1;;;;;28393:15:0;2864:10;-1:-1:-1;;;;;28377:31:0;;28369:40;;;;;;28420:23;28446:24;28464:4;28446:9;:24::i;:::-;28420:50;;28481:33;28498:15;28481:16;:33::i;25860:968::-;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;25922:11:::1;::::0;-1:-1:-1;;;25922:11:0;::::1;;;25921:12;25913:48;;;::::0;-1:-1:-1;;;25913:48:0;;11635:2:1;25913:48:0::1;::::0;::::1;11617:21:1::0;11674:2;11654:18;;;11647:30;11713:25;11693:18;;;11686:53;11756:18;;25913:48:0::1;11433:347:1::0;25913:48:0::1;26101:13;:32:::0;;-1:-1:-1;;;;;;26101:32:0::1;26037:42;26101:32:::0;;::::1;::::0;;;26144:56:::1;26161:4;26037:42:::0;19123:12:::1;26144:8;:56::i;:::-;26240:16;-1:-1:-1::0;;;;;26240:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26225:67:0::1;;26301:4;26308:16;-1:-1:-1::0;;;;;26308:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26225:107;::::0;-1:-1:-1;;;;;;26225:107:0::1;::::0;;;;;;-1:-1:-1;;;;;4662:15:1;;;26225:107:0::1;::::0;::::1;4644:34:1::0;4714:15;;4694:18;;;4687:43;4579:18;;26225:107:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26211:11;:121:::0;;-1:-1:-1;;;;;;26211:121:0::1;-1:-1:-1::0;;;;;26211:121:0;;::::1;;::::0;;26343:13:::1;::::0;::::1;:29;26380:21;26425:4;26445:24;26425:4:::0;26445:9:::1;:24::i;:::-;26484:1;26500::::0;26516:7:::1;6536::::0;6563:6;-1:-1:-1;;;;;6563:6:0;;6498:79;26516:7:::1;26343:221;::::0;::::1;::::0;;;-1:-1:-1;;;;;;26343:221:0;;;-1:-1:-1;;;;;5379:15:1;;;26343:221:0::1;::::0;::::1;5361:34:1::0;5411:18;;;5404:34;;;;5454:18;;;5447:34;;;;5497:18;;;5490:34;5561:15;;;5540:19;;;5533:44;26538:15:0::1;5593:19:1::0;;;5586:35;5295:19;;26343:221:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;26575:11:0::1;:18:::0;;26652:21:::1;26637:12;:36:::0;-1:-1:-1;;;;26684:18:0;;-1:-1:-1;;;26684:18:0;;;;26763:13:::1;::::0;26713:107:::1;::::0;-1:-1:-1;;;26713:107:0;;-1:-1:-1;;;;;26763:13:0;;::::1;26713:107;::::0;::::1;4915:51:1::0;-1:-1:-1;;4982:18:1;;;4975:34;26720:11:0;;;-1:-1:-1;26713:27:0::1;::::0;4888:18:1;;26713:107:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7305:235::-:0;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;7386:6:::1;::::0;;;7369:23;;-1:-1:-1;;;;;;7369:23:0;;::::1;-1:-1:-1::0;;;;;7386:6:0;::::1;7369:23;::::0;;;7403:28:::1;::::0;;7454:22:::1;7472:4:::0;7454:15:::1;:22;:::i;:::-;7442:9;:34:::0;7529:1:::1;7513:6:::0;;7492:40:::1;::::0;-1:-1:-1;;;;;7513:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7492:40:0;7529:1;;7492:40:::1;7305:235:::0;:::o;6880:252::-;6626:6;;-1:-1:-1;;;;;6626:6:0;2864:10;6626:22;6618:67;;;;-1:-1:-1;;;6618:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6977:22:0;::::1;6969:73;;;::::0;-1:-1:-1;;;6969:73:0;;8081:2:1;6969:73:0::1;::::0;::::1;8063:21:1::0;8120:2;8100:18;;;8093:30;8159:34;8139:18;;;8132:62;-1:-1:-1;;;8210:18:1;;;8203:36;8256:19;;6969:73:0::1;7879:402:1::0;6969:73:0::1;7079:6;::::0;;7058:38:::1;::::0;-1:-1:-1;;;;;7058:38:0;;::::1;::::0;7079:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;7058:38:0;::::1;7107:6;:17:::0;;-1:-1:-1;;;;;;7107:17:0::1;-1:-1:-1::0;;;;;7107:17:0;;;::::1;::::0;;;::::1;::::0;;6880:252::o;23016:369::-;-1:-1:-1;;;;;23143:19:0;;23135:68;;;;-1:-1:-1;;;23135:68:0;;11230:2:1;23135:68:0;;;11212:21:1;11269:2;11249:18;;;11242:30;11308:34;11288:18;;;11281:62;-1:-1:-1;;;11359:18:1;;;11352:34;11403:19;;23135:68:0;11028:400:1;23135:68:0;-1:-1:-1;;;;;23222:21:0;;23214:68;;;;-1:-1:-1;;;23214:68:0;;8488:2:1;23214:68:0;;;8470:21:1;8527:2;8507:18;;;8500:30;8566:34;8546:18;;;8539:62;-1:-1:-1;;;8617:18:1;;;8610:32;8659:19;;23214:68:0;8286:398:1;23214:68:0;-1:-1:-1;;;;;23293:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23345:32;;12335:25:1;;;23345:32:0;;12308:18:1;23345:32:0;;;;;;;23016:369;;;:::o;23393:1730::-;-1:-1:-1;;;;;23515:18:0;;23507:68;;;;-1:-1:-1;;;23507:68:0;;10420:2:1;23507:68:0;;;10402:21:1;10459:2;10439:18;;;10432:30;10498:34;10478:18;;;10471:62;-1:-1:-1;;;10549:18:1;;;10542:35;10594:19;;23507:68:0;10218:401:1;23507:68:0;-1:-1:-1;;;;;23594:16:0;;23586:64;;;;-1:-1:-1;;;23586:64:0;;6860:2:1;23586:64:0;;;6842:21:1;6899:2;6879:18;;;6872:30;6938:34;6918:18;;;6911:62;-1:-1:-1;;;6989:18:1;;;6982:33;7032:19;;23586:64:0;6658:399:1;23586:64:0;23678:1;23669:6;:10;23661:64;;;;-1:-1:-1;;;23661:64:0;;10010:2:1;23661:64:0;;;9992:21:1;10049:2;10029:18;;;10022:30;10088:34;10068:18;;;10061:62;-1:-1:-1;;;10139:18:1;;;10132:39;10188:19;;23661:64:0;9808:405:1;23661:64:0;23748:1;23736:9;:13;;;23760:9;:13;23791:10;;-1:-1:-1;;;23791:10:0;;;;23786:109;;23832:11;;-1:-1:-1;;;;;23826:17:0;;;23832:11;;23826:17;;23818:65;;;;-1:-1:-1;;;23818:65:0;;10826:2:1;23818:65:0;;;10808:21:1;10865:2;10845:18;;;10838:30;10904:34;10884:18;;;10877:62;-1:-1:-1;;;10955:18:1;;;10948:33;10998:19;;23818:65:0;10624:399:1;23818:65:0;6536:7;6563:6;-1:-1:-1;;;;;23911:15:0;;;6563:6;;23911:15;;;;:32;;-1:-1:-1;6536:7:0;6563:6;-1:-1:-1;;;;;23930:13:0;;;6563:6;;23930:13;;23911:32;23907:1164;;;-1:-1:-1;;;;;23969:10:0;;;;;;:4;:10;;;;;;;;23968:11;:24;;;;-1:-1:-1;;;;;;23984:8:0;;;;;;:4;:8;;;;;;;;23983:9;23968:24;23960:33;;;;;;24038:11;;-1:-1:-1;;;;;24030:19:0;;;24038:11;;24030:19;:68;;;;-1:-1:-1;24084:13:0;;-1:-1:-1;;;;;24070:28:0;;;24084:13;;24070:28;;24030:68;:112;;;;-1:-1:-1;;;;;;24120:22:0;;;;;;:18;:22;;;;;;;;24119:23;24030:112;:148;;;;-1:-1:-1;24163:15:0;;-1:-1:-1;;;24163:15:0;;;;24030:148;24008:403;;;24260:12;;24250:6;:22;;24242:31;;;;;;-1:-1:-1;;;;;24300:12:0;;;;;;:8;:12;;;;;;24315:15;-1:-1:-1;24292:39:0;;;;;;24365:30;:15;24384:10;24365:30;:::i;:::-;-1:-1:-1;;;;;24350:12:0;;;;;;:8;:12;;;;;:45;24008:403;24455:11;;-1:-1:-1;;;;;24449:17:0;;;24455:11;;24449:17;:68;;;;-1:-1:-1;24503:13:0;;-1:-1:-1;;;;;24487:30:0;;;24503:13;;24487:30;;24449:68;:114;;;;-1:-1:-1;;;;;;24539:24:0;;;;;;:18;:24;;;;;;;;24538:25;24449:114;24427:232;;;24610:1;24598:9;:13;;;24630:9;:13;24427:232;24673:28;24704:24;24722:4;24704:9;:24::i;:::-;24748:6;;24673:55;;-1:-1:-1;;;;24748:6:0;;;;24747:7;:30;;;;-1:-1:-1;24766:11:0;;-1:-1:-1;;;;;24758:19:0;;;24766:11;;24758:19;;24747:30;:45;;;;-1:-1:-1;24781:11:0;;-1:-1:-1;;;24781:11:0;;;;24747:45;24743:317;;;24813:38;24830:20;24813:16;:38::i;:::-;24899:21;24943:22;;24939:106;;24990:35;25003:21;24990:12;:35::i;:::-;24794:266;24743:317;23945:1126;23907:1164;25083:32;25098:4;25104:2;25108:6;25083:14;:32::i;:::-;23393:1730;;;:::o;1314:192::-;1400:7;1436:12;1428:6;;;;1420:29;;;;-1:-1:-1;;;1420:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1460:9:0;1472:5;1476:1;1472;:5;:::i;:::-;1460:17;1314:192;-1:-1:-1;;;;;1314:192:0:o;25755:97::-;25812:15;;:32;;-1:-1:-1;;;;;25812:15:0;;;;:32;;;;;25837:6;;25812:15;:32;:15;:32;25837:6;25812:15;:32;;;;;;;;;;;;;;;;;;;22685:323;22780:7;22838;;22827;:18;;22805:110;;;;-1:-1:-1;;;22805:110:0;;7670:2:1;22805:110:0;;;7652:21:1;7709:2;7689:18;;;7682:30;7748:34;7728:18;;;7721:62;-1:-1:-1;;;7799:18:1;;;7792:40;7849:19;;22805:110:0;7468:406:1;22805:110:0;22926:19;22948:10;:8;:10::i;:::-;22926:32;-1:-1:-1;22976:24:0;:7;22926:32;22976:11;:24::i;:::-;22969:31;22685:323;-1:-1:-1;;;22685:323:0:o;25270:477::-;20018:6;:13;;-1:-1:-1;;;;20018:13:0;-1:-1:-1;;;20018:13:0;;;25372:16:::1;::::0;;25386:1:::1;25372:16:::0;;;;;::::1;::::0;;-1:-1:-1;;25372:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25372:16:0::1;25348:40;;25417:4;25399;25404:1;25399:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25399:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;25443:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;25443:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;25399:7;;25443:20;;;;;:13;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25433:4;25438:1;25433:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25433:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;25506:13:::1;::::0;25474:60:::1;::::0;25491:4:::1;::::0;25506:13:::1;25522:11:::0;25474:8:::1;:60::i;:::-;25545:13;::::0;:194:::1;::::0;-1:-1:-1;;;25545:194:0;;-1:-1:-1;;;;;25545:13:0;;::::1;::::0;:64:::1;::::0;:194:::1;::::0;25624:11;;25545:13:::1;::::0;25666:4;;25693::::1;::::0;25713:15:::1;::::0;25545:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20054:6:0;:14;;-1:-1:-1;;;;20054:14:0;;;-1:-1:-1;;;;25270:477:0:o;27110:180::-;27238:44;27256:6;27264:9;27275:6;27238:17;:44::i;30461:164::-;30503:7;30524:15;30541;30560:19;:17;:19::i;:::-;30523:56;;-1:-1:-1;30523:56:0;-1:-1:-1;30597:20:0;30523:56;;30597:11;:20::i;:::-;30590:27;;;;30461:164;:::o;1995:132::-;2053:7;2080:39;2084:1;2087;2080:39;;;;;;;;;;;;;;;;;:3;:39::i;27298:610::-;27445:15;27475:23;27513:12;27540:23;27578:12;27605:13;27632:19;27643:7;27632:10;:19::i;:::-;-1:-1:-1;;;;;27680:15:0;;;;;;:7;:15;;;;;;27430:221;;-1:-1:-1;27430:221:0;;-1:-1:-1;27430:221:0;;-1:-1:-1;27430:221:0;-1:-1:-1;27430:221:0;-1:-1:-1;27430:221:0;-1:-1:-1;27680:28:0;;27430:221;27680:19;:28::i;:::-;-1:-1:-1;;;;;27662:15:0;;;;;;;:7;:15;;;;;;:46;;;;27740:18;;;;;;;:39;;27763:15;27740:22;:39::i;:::-;-1:-1:-1;;;;;27719:18:0;;;;;;:7;:18;;;;;:60;27790:16;27800:5;27790:9;:16::i;:::-;27817:23;27829:4;27835;27817:11;:23::i;:::-;27873:9;-1:-1:-1;;;;;27856:44:0;27865:6;-1:-1:-1;;;;;27856:44:0;;27884:15;27856:44;;;;12335:25:1;;12323:2;12308:18;;12189:177;27856:44:0;;;;;;;;27419:489;;;;;;27298:610;;;:::o;30633:257::-;30731:7;;30684;;;;19123:12;30799:20;30731:7;19123:12;30799:11;:20::i;:::-;30789:7;:30;30785:61;;;-1:-1:-1;;30829:7:0;;;19123:12;;-1:-1:-1;30633:257:0;-1:-1:-1;30633:257:0:o;30785:61::-;30865:7;;30874;;-1:-1:-1;30633:257:0;-1:-1:-1;30633:257:0:o;2136:278::-;2222:7;2257:12;2250:5;2242:28;;;;-1:-1:-1;;;2242:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2281:9:0;2293:5;2297:1;2293;:5;:::i;28732:704::-;28832:7;28854;28876;28898;28920;28942;28978:23;29003:12;29017:13;29034:92;29060:7;29082:9;;29106;;29034:11;:92::i;:::-;28977:149;;;;;;29137:19;29159:10;:8;:10::i;:::-;29137:32;;29181:15;29198:23;29223:12;29239:109;29265:7;29287:4;29306:5;29326:11;29239;:109::i;:::-;29180:168;;-1:-1:-1;29180:168:0;-1:-1:-1;29180:168:0;-1:-1:-1;29399:15:0;;-1:-1:-1;29416:4:0;;-1:-1:-1;29422:5:0;;-1:-1:-1;;;;;28732:704:0;;;;;;;:::o;1169:136::-;1227:7;1254:43;1258:1;1261;1254:43;;;;;;;;;;;;;;;;;:3;:43::i;979:181::-;1037:7;;1069:5;1073:1;1069;:5;:::i;:::-;1057:17;;1098:1;1093;:6;;1085:46;;;;-1:-1:-1;;;1085:46:0;;8891:2:1;1085:46:0;;;8873:21:1;8930:2;8910:18;;;8903:30;8969:29;8949:18;;;8942:57;9016:18;;1085:46:0;8689:351:1;27916:211:0;27969:19;27991:10;:8;:10::i;:::-;27969:32;-1:-1:-1;28012:13:0;28028:22;:5;27969:32;28028:9;:22::i;:::-;28102:4;28086:22;;;;:7;:22;;;;;;28012:38;;-1:-1:-1;28086:33:0;;28012:38;28086:26;:33::i;:::-;28077:4;28061:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;27916:211:0:o;28135:147::-;28213:7;;:17;;28225:4;28213:11;:17::i;:::-;28203:7;:27;28254:10;;:20;;28269:4;28254:14;:20::i;:::-;28241:10;:33;-1:-1:-1;;28135:147:0:o;29444:467::-;29612:7;;;;29706:28;29730:3;29706:19;:7;29718:6;29706:11;:19::i;:::-;:23;;:28::i;:::-;29691:43;-1:-1:-1;29745:13:0;29761:29;29786:3;29761:20;:7;29773;29761:11;:20::i;:29::-;29745:45;-1:-1:-1;29801:23:0;29827:28;29745:45;29827:17;:7;29839:4;29827:11;:17::i;:::-;:21;;:28::i;:::-;29801:54;29891:4;;-1:-1:-1;29897:5:0;;-1:-1:-1;29444:467:0;;-1:-1:-1;;;;;29444:467:0:o;29919:534::-;30113:7;;;;30210:24;:7;30222:11;30210;:24::i;:::-;30192:42;-1:-1:-1;30245:12:0;30260:21;:4;30269:11;30260:8;:21::i;:::-;30245:36;-1:-1:-1;30292:13:0;30308:22;:5;30318:11;30308:9;:22::i;:::-;30292:38;-1:-1:-1;30341:23:0;30367:28;30292:38;30367:17;:7;30379:4;30367:11;:17::i;:28::-;30414:7;;;;-1:-1:-1;30440:4:0;;-1:-1:-1;29919:534:0;;-1:-1:-1;;;;;;;29919:534:0:o;1515:471::-;1573:7;1818:6;1814:47;;-1:-1:-1;1848:1:0;1841:8;;1814:47;1873:9;1885:5;1889:1;1885;:5;:::i;:::-;1873:17;-1:-1:-1;1918:1:0;1909:5;1913:1;1873:17;1909:5;:::i;:::-;:10;1901:56;;;;-1:-1:-1;;;1901:56:0;;9247:2:1;1901:56:0;;;9229:21:1;9286:2;9266:18;;;9259:30;9325:34;9305:18;;;9298:62;-1:-1:-1;;;9376:18:1;;;9369:31;9417:19;;1901:56:0;9045:397:1;14:134;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:247::-;212:6;265:2;253:9;244:7;240:23;236:32;233:52;;;281:1;278;271:12;233:52;320:9;307:23;339:31;364:5;339:31;:::i;405:251::-;475:6;528:2;516:9;507:7;503:23;499:32;496:52;;;544:1;541;534:12;496:52;576:9;570:16;595:31;620:5;595:31;:::i;921:388::-;989:6;997;1050:2;1038:9;1029:7;1025:23;1021:32;1018:52;;;1066:1;1063;1056:12;1018:52;1105:9;1092:23;1124:31;1149:5;1124:31;:::i;:::-;1174:5;-1:-1:-1;1231:2:1;1216:18;;1203:32;1244:33;1203:32;1244:33;:::i;:::-;1296:7;1286:17;;;921:388;;;;;:::o;1314:456::-;1391:6;1399;1407;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;1515:9;1502:23;1534:31;1559:5;1534:31;:::i;:::-;1584:5;-1:-1:-1;1641:2:1;1626:18;;1613:32;1654:33;1613:32;1654:33;:::i;:::-;1314:456;;1706:7;;-1:-1:-1;;;1760:2:1;1745:18;;;;1732:32;;1314:456::o;1775:315::-;1843:6;1851;1904:2;1892:9;1883:7;1879:23;1875:32;1872:52;;;1920:1;1917;1910:12;1872:52;1959:9;1946:23;1978:31;2003:5;1978:31;:::i;:::-;2028:5;2080:2;2065:18;;;;2052:32;;-1:-1:-1;;;1775:315:1:o;2095:1132::-;2179:6;2210:2;2253;2241:9;2232:7;2228:23;2224:32;2221:52;;;2269:1;2266;2259:12;2221:52;2309:9;2296:23;2338:18;2379:2;2371:6;2368:14;2365:34;;;2395:1;2392;2385:12;2365:34;2433:6;2422:9;2418:22;2408:32;;2478:7;2471:4;2467:2;2463:13;2459:27;2449:55;;2500:1;2497;2490:12;2449:55;2536:2;2523:16;2558:2;2554;2551:10;2548:36;;;2564:18;;:::i;:::-;2610:2;2607:1;2603:10;2642:2;2636:9;2705:2;2701:7;2696:2;2692;2688:11;2684:25;2676:6;2672:38;2760:6;2748:10;2745:22;2740:2;2728:10;2725:18;2722:46;2719:72;;;2771:18;;:::i;:::-;2807:2;2800:22;2857:18;;;2891:15;;;;-1:-1:-1;2926:11:1;;;2956;;;2952:20;;2949:33;-1:-1:-1;2946:53:1;;;2995:1;2992;2985:12;2946:53;3017:1;3008:10;;3027:169;3041:2;3038:1;3035:9;3027:169;;;3098:23;3117:3;3098:23;:::i;:::-;3086:36;;3059:1;3052:9;;;;;3142:12;;;;3174;;3027:169;;;-1:-1:-1;3215:6:1;2095:1132;-1:-1:-1;;;;;;;;2095:1132:1:o;3232:241::-;3288:6;3341:2;3329:9;3320:7;3316:23;3312:32;3309:52;;;3357:1;3354;3347:12;3309:52;3396:9;3383:23;3415:28;3437:5;3415:28;:::i;3478:245::-;3545:6;3598:2;3586:9;3577:7;3573:23;3569:32;3566:52;;;3614:1;3611;3604:12;3566:52;3646:9;3640:16;3665:28;3687:5;3665:28;:::i;3728:180::-;3787:6;3840:2;3828:9;3819:7;3815:23;3811:32;3808:52;;;3856:1;3853;3846:12;3808:52;-1:-1:-1;3879:23:1;;3728:180;-1:-1:-1;3728:180:1:o;3913:306::-;4001:6;4009;4017;4070:2;4058:9;4049:7;4045:23;4041:32;4038:52;;;4086:1;4083;4076:12;4038:52;4115:9;4109:16;4099:26;;4165:2;4154:9;4150:18;4144:25;4134:35;;4209:2;4198:9;4194:18;4188:25;4178:35;;3913:306;;;;;:::o;6056:597::-;6168:4;6197:2;6226;6215:9;6208:21;6258:6;6252:13;6301:6;6296:2;6285:9;6281:18;6274:34;6326:1;6336:140;6350:6;6347:1;6344:13;6336:140;;;6445:14;;;6441:23;;6435:30;6411:17;;;6430:2;6407:26;6400:66;6365:10;;6336:140;;;6494:6;6491:1;6488:13;6485:91;;;6564:1;6559:2;6550:6;6539:9;6535:22;6531:31;6524:42;6485:91;-1:-1:-1;6637:2:1;6616:15;-1:-1:-1;;6612:29:1;6597:45;;;;6644:2;6593:54;;6056:597;-1:-1:-1;;;6056:597:1:o;9447:356::-;9649:2;9631:21;;;9668:18;;;9661:30;9727:34;9722:2;9707:18;;9700:62;9794:2;9779:18;;9447:356::o;12371:980::-;12633:4;12681:3;12670:9;12666:19;12712:6;12701:9;12694:25;12738:2;12776:6;12771:2;12760:9;12756:18;12749:34;12819:3;12814:2;12803:9;12799:18;12792:31;12843:6;12878;12872:13;12909:6;12901;12894:22;12947:3;12936:9;12932:19;12925:26;;12986:2;12978:6;12974:15;12960:29;;13007:1;13017:195;13031:6;13028:1;13025:13;13017:195;;;13096:13;;-1:-1:-1;;;;;13092:39:1;13080:52;;13187:15;;;;13152:12;;;;13128:1;13046:9;13017:195;;;-1:-1:-1;;;;;;;13268:32:1;;;;13263:2;13248:18;;13241:60;-1:-1:-1;;;13332:3:1;13317:19;13310:35;13229:3;12371:980;-1:-1:-1;;;12371:980:1:o;13545:128::-;13585:3;13616:1;13612:6;13609:1;13606:13;13603:39;;;13622:18;;:::i;:::-;-1:-1:-1;13658:9:1;;13545:128::o;13678:217::-;13718:1;13744;13734:132;;13788:10;13783:3;13779:20;13776:1;13769:31;13823:4;13820:1;13813:15;13851:4;13848:1;13841:15;13734:132;-1:-1:-1;13880:9:1;;13678:217::o;13900:168::-;13940:7;14006:1;14002;13998:6;13994:14;13991:1;13988:21;13983:1;13976:9;13969:17;13965:45;13962:71;;;14013:18;;:::i;:::-;-1:-1:-1;14053:9:1;;13900:168::o;14073:125::-;14113:4;14141:1;14138;14135:8;14132:34;;;14146:18;;:::i;:::-;-1:-1:-1;14183:9:1;;14073:125::o;14203:135::-;14242:3;-1:-1:-1;;14263:17:1;;14260:43;;;14283:18;;:::i;:::-;-1:-1:-1;14330:1:1;14319:13;;14203:135::o;14343:127::-;14404:10;14399:3;14395:20;14392:1;14385:31;14435:4;14432:1;14425:15;14459:4;14456:1;14449:15;14475:127;14536:10;14531:3;14527:20;14524:1;14517:31;14567:4;14564:1;14557:15;14591:4;14588:1;14581:15;14607:127;14668:10;14663:3;14659:20;14656:1;14649:31;14699:4;14696:1;14689:15;14723:4;14720:1;14713:15;14739:131;-1:-1:-1;;;;;14814:31:1;;14804:42;;14794:70;;14860:1;14857;14850:12;14875:118;14961:5;14954:13;14947:21;14940:5;14937:32;14927:60;;14983:1;14980;14973:12

Swarm Source

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